vcomply-workflow-engine 6.4.7 → 6.4.8
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.
|
@@ -653,7 +653,7 @@ export class WorkflowPolicyComponent {
|
|
|
653
653
|
let data = {
|
|
654
654
|
type: obj[item]?.name ?? obj[item]?.type,
|
|
655
655
|
approvers: obj[item]?.approvers,
|
|
656
|
-
approval_done: false,
|
|
656
|
+
approval_done: obj[item]?.approval_done ?? false,
|
|
657
657
|
level1: obj[item]?.level1 || item,
|
|
658
658
|
alias_name: obj[item]?.alias_name,
|
|
659
659
|
};
|
|
@@ -2101,4 +2101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2101
2101
|
type: HostListener,
|
|
2102
2102
|
args: ['document:click', ['$event']]
|
|
2103
2103
|
}] } });
|
|
2104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVzNDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUtuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9qRCxNQUFNLE9BQU8sdUJBQXVCO0lBMktsQyxZQUNVLGFBQTRCLEVBQzVCLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QixF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NkVVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHd6QkFtQkQsVUFBVSw2QkM5RDdDLDZpeElBaXJIQTs7NEZEdG9IYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO3lqQkFRckIsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0kscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNrQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ2IsY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFdUIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBRTNCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBdTJFNUQsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvbGljeUZvcm0gfSBmcm9tICcuLi93b3JrZmxvdy1pbnRlcmZhY2VzL2NyZWF0ZS1wb2xpY3ktZm9ybSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBQb2xpY3lTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcG9saWN5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZm9ybWF0LWFuZC1ldmlkZW5jZS9mb3JtYXQtYW5kLWV2aWRlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXN0QXBpU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvbGluay1wcm9ncmFtL3Jlc3RhcGkuc2VydmljZSc7XG5pbXBvcnQgeyBERUZBVUxUXzI0SFIsIERFRkFVTFRfVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uVXNlclNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL2NvbXBsaWFuY2UtY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnLi4vbGluay1yZWxhdGVkLXBvbGljaWVzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xuaW1wb3J0IHsgSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2lmcmFtZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXBvbGljeScsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1BvbGljeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgQ09OU1RBTlRTOiBhbnkgPSBDT05TVEFOVFM7XG4gIExJTktTOiBhbnkgPSBMSU5LUztcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcbiAgQElucHV0KCkgcG9saWN5SWQgPSAnJztcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBAT3V0cHV0KCkgc2hvd0NvbmZpcm1hdGlvbkFsZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2hpZnRUb0VkaXRNb2RlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBjb252ZXJ0RmlsZURhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3J5ID0gJyc7XG4gIEBJbnB1dCgpIGlzU2VuZEZvckF0dGVzdGF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRlbXBsYXRlSWQ6IHN0cmluZyA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1hdEV2aWRlbmNlJykgZm9ybWF0RXZpZGVuY2UhOiBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBkYXRlUGlja2VyUG9wVXAhOiBFbGVtZW50UmVmO1xuXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XG4gICAgbW9kZTogJ3ByaW1lJyxcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgbGluazogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIHBvbGljeS4nLFxuICB9O1xuICB3b3JrZmxvd1R5cGUgPSAnU0VRVUVOVElBTCc7XG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gIG5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZmFsc2U7XG5cbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcbiAgcmNMaXN0OiBhbnkgPSBbXTtcbiAgdXNlcnNMaXN0OiBhbnkgPSBbXTtcbiAgYWxsQXBwcm92ZXJzOiBhbnkgPSBbXTtcbiAgYWxsUmV2aWV3ZXJzOiBhbnkgPSBbXTtcbiAgYXNzaWduZWVzTGlzdDogYW55ID0gW107XG4gIG93bmVybGlzdDogYW55ID0gW107XG4gIHJldmlld2Vyc0xpc3Q6IGFueSA9IFtdO1xuICBvdmVyc2VlcnNMaXN0OiBhbnkgPSBbXTtcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIHVzZXJzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBjYXRlZ29yeUxpc3Q6IGFueSA9IFtdO1xuICBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xuICB3b3JrRmxvd0xpc3Q6IGFueVtdID0gW107XG4gIGFwcHJvdmVyV29ya0Zsb3dMaXN0OiBhbnlbXSA9IFtdO1xuICBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgY2NFbWFpbE9iaklkczogYW55W10gPSBbXTtcbiAgY2NGYWlsR3JvdXBPYmpJZHM6IGFueVtdID0gW107XG4gIHVzZXJzQWNjZXNzTGlzdDogYW55W10gPSBbXTtcbiAgdXNlcnNBY2Nlc3NMaXN0SWRzOiBhbnlbXSA9IFtdO1xuICBncm91cHNBY2Nlc3NMaXN0SWRzOiBhbnlbXSA9IFtdO1xuICBncm91cHNBY2Nlc3NMaXN0OiBhbnlbXSA9IFtdO1xuICBTZWxlY3RlZExpc3RPZlBvbGljaWVzOiBhbnlbXSA9IFtdO1xuXG4gIGxvYWRlciA9IGZhbHNlO1xuICBjYXRlZ29yaWVzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBncm91cHNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGNhdGVnb3J5Q29uZmlnID0ge1xuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgUG9saWN5IENhdGVnb3J5JyxcbiAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1BvbGljeSBDYXRlZ29yeSBTZWxlY3RlZCcsXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnUG9saWN5IENhdGVnb3JpZXMgU2VsZWN0ZWQnLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFBvbGljeSBDYXRlZ29yeScsXG4gICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxuICAgIHdvcmtmbG93OiAncG9saWN5JyxcbiAgfTtcbiAgYXBwcm92YWxXb3JrZmxvd0NvbmZpZyA9IHtcbiAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IHVzZXIocyknLFxuICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnVXNlciBzZWxlY3RlZCcsXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnVXNlcnMgc2VsZWN0ZWQnLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFVzZXInLFxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXG4gICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZSxcbiAgfTtcblxuICBhZGRNb3JlTGV2ZWxzID0gZmFsc2U7XG4gIGFwcHJvdmVyc0xpc3RJbmRleCA9IDA7XG4gIHdvcmtmbG93TGlzdCA9IFsnU0VRVUVOVElBTCcsICdST1VORC1ST0JJTicsICdBTlkgT05FJ107XG4gIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG4gIGRhdGVDb25maWcgPSB7XG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcbiAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxuICB9O1xuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xuICAgIHBhdHRlcm46ICcnLFxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHdpbmRvdzogMCxcbiAgICBmYWlsZWQ6IDAsXG4gICAgdGltZTogREVGQVVMVF9USU1FLFxuICAgIGZhaWxlZFRpbWU6ICcnLFxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gIH07XG4gIHJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzLFxuICB9O1xuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGF0IGlzIHRoZSBhdHRlc3RhdGlvbiBzY2hlZHVsZSBmb3IgdGhpcyBwb2xpY3k/JztcbiAgcmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZD8nO1xuXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzID0gW1xuICAgICdhcHByb3ZhbFdvcmtmbG93JyxcbiAgICAnYXNzaWduZWVzJyxcbiAgICAnYXBwcm92ZXJzJyxcbiAgICAncmV2aWV3ZXInLFxuICAgICdjY0VtYWlsJyxcbiAgICAnY2NGYWlsJyxcbiAgICAncmMnLFxuICAgICdjYXRlZ29yeScsXG4gICAgJ2ZyZXF1ZW5jeScsXG4gICAgJ3Jldmlld2VyRnJlcXVlbmN5JyxcbiAgICAnY2hlY2twb2ludHMnLFxuICAgICdsaW5rUHJvZ3JhbScsXG4gICAgJ2lzQXNzZXNzbWVudCcsXG4gICAgJ2lzTGlua2VkUG9saWNlcycsXG4gICAgJ293bmVycycsXG4gICAgJ3BvbGljeUFjY2VzcycsXG4gIF07XG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcbiAgICB7IG5hbWU6ICdMT1cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXG4gICAgeyBuYW1lOiAnTE9XLU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfSxcbiAgXTtcbiAgc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IHRydWU7XG4gIHNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcbiAgb3JnYW5pemF0aW9uX2lkID0gJyc7XG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcbiAgbWVtYmVySWQgPSAwO1xuICB1c2VySW5mbyE6IGFueTtcblxuICBwb2xpY3lBcHByb3ZhbEZsYWcgPSAwO1xuICBiYXNlVVJMID0gJyc7XG4gIGdyb3VwRW5hYmxlZDogYW55ID0gdHJ1ZTtcbiAgb3ZlcnNlZXJHcm91cHNMaXN0OiBhbnlbXSA9IFtdO1xuICBlbmFibGVBcHByb3ZhbFdvcmtmbG93OiBib29sZWFuID0gZmFsc2U7XG4gIGlzVmVyc2lvblZhbGlkOiBib29sZWFuID0gdHJ1ZTtcbiAgc2VsZWN0ZWRMaW5rUHJvZ3JhbTogYW55ID0ge307XG4gIHZlcnNpb25FcnJvck1lc3NhZ2U6IHN0cmluZyA9XG4gICAgJ1lvdSBoYXZlIGVudGVyZWQgYW4gaW5jb3JyZWN0IGZvcm1hdC4gVGhlIHZlcnNpb24gZmllbGQgY2FuIGVpdGhlciBpbmNsdWRlIG51bWJlcnMsIGFscGhhYmV0cywgaHlwaGVuIG9yIGRvdHMuJztcbiAgc2VsZWN0ZWRXb3JrZmxvdzogYW55W10gPSBbXTtcbiAgZWRpdEFwcHJvdmFsV29ya2Zsb3chOiBhbnk7XG4gIGFwcHJvdmFsV29ya2Zsb3dJZHM6IGFueVtdID0gW107XG4gIGRlZmF1bHRFZGl0QXBwcm92ZXJzOiBhbnkgPSB7fTtcbiAgY3JlYXRlQXBwcm92YWxDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuICBlZGl0V29ya2Zsb3dMZXZlbCA9IHt9O1xuICBub1dvcmtmbG93U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGVtcGxhdGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIHRlbXBsYXRlVXJsOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvbGljeVNlcnZpY2U6IFBvbGljeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcbiAgICBwbGF0Zm9ybUxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Vc2VyU2VydmljZTogT3JnYW5pemF0aW9uVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Db21tb25TZXJ2aWNlOiBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tcGxpYW5jZUNvbW1vblNlcnZpY2U6IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLmJhc2VVUkwgPSBsb2NhdGlvbj8ub3JpZ2luO1xuICAgIGlmICh0aGlzLmJhc2VVUkwgPT0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMCcpIHtcbiAgICAgIHRoaXMuYmFzZVVSTCA9ICdodHRwczovL2Rldi52LWNvbXBseS5jb20nO1xuICAgIH1cbiAgfVxuICBwb2xpY3lGb3JtOiBQb2xpY3lGb3JtID0ge1xuICAgIHBvbGljeU5hbWU6ICcnLFxuICAgIHBvbGljeU5vdGVzOiAnJyxcbiAgICBzZWxlY3RlZENhdGVnb3JpZXM6IFtdLFxuICAgIHNlbGVjdGVkQXBwcm92ZXJzOiBbXSxcbiAgICBzZWxlY3RlZEFzc2lnbmVlczogW10sIC8vZG91YnQgaW4gbmFtZVxuICAgIHNlbGVjdGVkR3JvdXBBc3NpZ25lZTogW10sXG4gICAgc2VsZWN0ZWRSZXZpZXdlcnM6IFtdLFxuXG4gICAgc2VsZWN0ZWRSQ3M6IFtdLFxuICAgIENDRmFpbEVtYWlsOiBbXSxcbiAgICBDQ0ZhaWxFbWFpbEdyb3VwOiBbXSxcbiAgICBDQ0VtYWlsOiBbXSxcbiAgICBDQ0dyb3VwRW1haWw6IFtdLFxuICAgIGF2YWlsYWJsZU9uUG9ydGFsOiBmYWxzZSxcbiAgICBhY2NlcHRTdWdnZXN0aW9uczogZmFsc2UsXG4gICAgcmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbjogZmFsc2UsXG4gICAgcmlza1JhdGluZzogMSxcbiAgICBhc3NvY2lhdGVkRG9jdW1lbnRzOiB7XG4gICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgfSxcbiAgICBwb2xpY3lEdWVEYXRlOiBtb21lbnQoKSxcbiAgICBjdXN0b21UYWdzOiBbXSxcbiAgICBjaGVja3BvaW50RGV0YWlsczogW10sXG4gICAgTGlua2VkUG9saWNpZXM6IFtdLFxuICAgIHRvdGFsUXVlc3Rpb246IDAsXG4gICAgcGFzc2luZ01hcmtzOiAwLFxuICAgIGRvY3VtZW50c0FuZExpbmtzOiB7XG4gICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgICBmb3JtYXRMaW5rczogW10sXG4gICAgfSxcbiAgICBhZGRSZXNwb25zaWJpbGl0eUNlbnRlcnM6IGZhbHNlLFxuICAgIGFkZFJldmlld2VyczogZmFsc2UsXG4gICAgYWRkQ2hlY2twb2ludHM6IGZhbHNlLFxuICAgIGFkZE92ZXJzZWVyczogZmFsc2UsXG4gICAgYWRkQXNzb2NpYXRlZERvY3VtZW50czogZmFsc2UsXG4gICAgYWRkVmVyc2lvbjogZmFsc2UsXG4gICAgYWRkTGlua0Fzc2Vzc21lbnQ6IGZhbHNlLFxuICAgIGFkZExpbmtQcm9ncmFtOiBmYWxzZSxcbiAgICBhZGRMaW5rUG9saWNpZXM6IGZhbHNlLFxuICAgIGlzUG9ydGFsRGlzcGxheUVuYWJsZWQ6IGZhbHNlLFxuXG4gICAgZmFpbGVkX3RpbWU6ICcnLFxuICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcbiAgICBmcmVxdWVuY3lfdGV4dDogJycsXG4gICAgbWFya19mYWlsZWRfYWZ0ZXI6IDAsXG4gICAgcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAwLFxuXG4gICAgcmV2aWV3RmFpbGVkQWZ0ZXI6IDAsXG4gICAgcmV2aWV3RmFpbGVkVGltZTogJycsXG4gICAgcmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcbiAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6ICcnLFxuICAgIHJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IDAsXG4gICAgcmV2aWV3OiBmYWxzZSxcbiAgICBsaW5rUHJvZ3JhbToge30sXG4gICAgcHJvZ3JhbVNlbGVjdGVkVmFsdWVzOiB7fSxcbiAgICBhc3NpZ25lZV9zdGFydF9kYXRlOiAnJywgLy9UaHUgRmViIDIyIDIwMjRcbiAgICByZXZpZXdlcl9zdGFydF9kYXRlOiAnJywgLy9UaHUgRmViIDIyIDIwMjRcbiAgICBwb2xpY3lfdmVyc2lvbjogJycsIC8vIGl0IHdpbGwgYWNjZXB0IG1hdGNoZXMgYWxwaGFiZXRzLCBoeXBoZW5zICgtKSwgZG90cyAoLiksIGFuZCBudW1lcmljIHZhbHVlcyBvbmx5IGFuZCBzaG91bGQgYmUgc21hbGxlciBvciBlcXVhbCB0byA2IGNoYXJhY3RlcnNcbiAgICBhc3Nlc3NtZW50OiBbXSxcbiAgICBwb2xpY3lfb3duZXJzOiBbXSxcbiAgICBwb2xpY3lfZ3JvdXBfb3duZXJzOiBbXSxcbiAgICBidXNpbmVzc0N5Y2xlOiB7fSxcbiAgICBwb2xpY3lfaWQ6IDAsXG4gICAgcG9saWN5X2FjY2Vzc190eXBlOiAwLFxuICAgIHBvbGljeV9hY2Nlc3Nfb3duZXJzOiBbXSxcbiAgICBwb2xpY3lfYWNjZXNzX2dyb3VwczogW10sXG4gIH07XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2luaXRpYXRlQVBJKCk7XG4gICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xuICB9XG5cbiAgX2luaXRpYXRlQVBJKCkge1xuICAgIHRoaXMuZ3JvdXBFbmFibGVkID1cbiAgICAgIHRoaXMuZmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZCgnZmZfcG9saWN5X2dyb3VwcycpIHx8IHRydWU7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLl9pbml0aWF0ZUVkaXRBUEkoKTtcbiAgICB9XG4gICAgdGhpcy5nZXRVc2Vyc0xpc3QoKTtcbiAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XG4gICAgdGhpcy5sb2FkZXIgPSB0aGlzLm1vZGUgPT09ICdFRElUJyA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLmdldE9yZ0RldGFpbHMoKTtcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRVc2VyRGV0YWlscygpPy5faWQ7XG4gICAgdGhpcy51c2VySW5mbyA9IHRoaXMuYXV0aFNlcnZpY2U/LmdldFVzZXJEZXRhaWxzKCk/LnVzZXI7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2U/LmdldE1lbWJlcklkKCk7XG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMucG9saWN5Rm9ybS5idXNpbmVzc0N5Y2xlID0gdGhpcy5yZXN0QXBpU2VydmljZT8uZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICAgIC8vdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcbiAgfVxuXG4gIF9pbml0aWF0ZUVkaXRBUEkoKSB7XG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XG4gICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICB9XG5cbiAgZ2V0T3JnRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U/LmdldE9yZ0RldGFpbHNJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFyZXM/LmVuYWJsZV9yaXNrY2xhc3MpIHtcbiAgICAgICAgICB0aGlzLnNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5faWQpIHtcbiAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbl9pZCA9IHJlcz8uX2lkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRMaW5rZWRQb2xpY2llcyhwb2xpY3lJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLkxpbmtlZFBvbGljaWVzTGlzdChwb2xpY3lJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcyA9IFsuLi5uZXcgU2V0KHJlc3BvbnNlPy5kYXRhKV0ucmV2ZXJzZSgpO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcyA9IHRoaXMuU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcz8uZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiBpdGVtPy5jb250cmFjdF9pZFxuICAgICAgICApLm1hcCgoaXRlbSkgPT4gaXRlbT8uY29udHJhY3RfaWQpO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uaXNQb3J0YWxEaXNwbGF5RW5hYmxlZCA9IHJlc3BvbnNlPy5kaXNwbGF5T25Qb3J0YWw7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUG9saWNpZXMgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUG9saWNpZXMgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIGxpc3RpbmcgcGFnZXMgdGhlIGxlZnQgc2lkZSBvZiBwb2xpY3kgZm9ybSB0byBzZXQgYW5kIGVkaXQgdGhlIGRyb3Bkb3duIGZpZWxkcyB2YWx1ZXNcbiAgICogQHBhcmFtIHR5cGUgaG9sZHMgbmFtZSBvZiBwYXJ0aWN1bGFyIGxpc3QgaXMgdG8gYmUgZGlzcGxheWVkXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBib29sZWFuIHZhbHVlIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb3Igbm90XG4gICAqIEBwYXJhbSB3b3JrZmxvd1R5cGUgaXQgc2V0cyB0aGUgYXBwcm92YWwgd29ya2Zsb3cgdHlwZSB3aGlsZSBlZGl0aW5nIHRoZSBhcHByb3ZhbCB3b3JrZmxvdy5cbiAgICovXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbiwgd29ya2Zsb3dUeXBlPzogYW55KSB7XG4gICAgaWYgKHdvcmtmbG93VHlwZSkge1xuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgPSB3b3JrZmxvd1R5cGU7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3JjJzpcbiAgICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjY0VtYWlsJzpcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcbiAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBsaXN0aW5nIHBhZ2VzXG4gICAqL1xuICBkaXNhYmxlU2VsZWN0b3IoKSB7XG4gICAgdGhpcy5hZGRNb3JlTGV2ZWxzID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIFJlc3BvbnNpYmlsaXR5IGNlbnRlcnMgbGlzdFxuICAgKi9cbiAgZ2V0UkNMaXN0KCkge1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2U/LmdldFJjTGlzdEluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJjTGlzdCA9IHJlcztcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgbGlzdFxuICAgKi9cbiAgZ2V0VXNlcnNMaXN0KCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uVXNlclNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uVXNlcnMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy51c2Vyc0xpc3QgPSB0aGlzLnVwZGF0ZU1lbWJlcklkS2V5KHJlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51c2Vyc0xpc3QgPSByZXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIHJlcGxhY2UgbWVtYmVyX2lkIHZhbHVlIHRvIG15X21lbWJlcl9pZFxuICB1cGRhdGVNZW1iZXJJZEtleShsaXN0OiBhbnkpIHtcbiAgICBsZXQgdXBkYXRlZExpc3QgPSBsaXN0Lm1hcCgoZWxlOiBhbnkpID0+ICh7XG4gICAgICAuLi5lbGUsXG4gICAgICBtZW1iZXJfaWQ6IGVsZT8ubXlfbWVtYmVyX2lkLFxuICAgIH0pKTtcbiAgICByZXR1cm4gdXBkYXRlZExpc3Q7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBQb2xpY3kgQ2F0ZWdvcmllcyBsaXN0XG4gICAqL1xuICBnZXRDYXRlZ29yaWVzTGlzdCgpIHtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3QoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3QgPSByZXM7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIG9yZ2FuaXphdGlvbiB1c2VycyBncm91cHMgbGlzdFxuICAgKi9cbiAgZ2V0R3JvdXBzTGlzdCgpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRPcmdhbml6YXRpb25Qb2xpY3lHcm91cHMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhO1xuICAgICAgICBjb25zdCBncm91cHM6IGFueSA9IFtdO1xuICAgICAgICBkYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgICAgICBncm91cE5hbWU6IGVsZW1lbnQuZ3JvdXBfbmFtZSxcbiAgICAgICAgICAgIHVzZXJJZHM6IGVsZW1lbnQubWVtYmVyX2lkcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGdyb3Vwcy5wdXNoKG9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBncm91cHM7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy9HZXQgdGhlIGxpc3Qgb2Ygb3ZlcnNlZXJzIGdyb3VwLlxuICBvdmVyc2Vlckdyb3VwTGlzdCgpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZT8uZ2V0T3JnYW5pemF0aW9uT3ZlcnNlZXJzR3JvdXBzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0ID0gcmVzPy5kYXRhO1xuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYXBwcm92ZXJzIHdvcmtmbG93IGZyb20gdGhlIHNlbGVjdGVkIHdvcmtmbG93IG9uIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0XG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBwcmVkZWZpbmVkIHdvcmtmbG93XG4gICAqL1xuICBzZWxlY3RlZFdvcmtmbG93Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQgPT09IC0xKSB7XG4gICAgICAvLyB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcbiAgICAgIC8vIHRoaXMuYWRkTW9yZUxldmVscyA9IHRydWVcbiAgICAgIC8vIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkYXRhID0gY2xvbmVEZWVwKGV2ZW50LmFwcHJvdmFsX3dvcmtmbG93KTtcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpdGVtLm5hbWUgPSBpdGVtLnR5cGU7XG4gICAgICAgIGNvbnN0IGlkcyA9IGl0ZW0uYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkKTtcbiAgICAgICAgaXRlbS5hcHByb3ZlcnMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIGlkcywgJ21lbWJlcl9pZCcpO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gdGhpcy5wcmVzZXJ2ZUFwcHJvdmFsRmxhZ3MobmV3QXJyYXksIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgYXBwcm92ZXJzIGZyb20gbmV3TGV2ZWxzIHdpdGggYXBwcm92ZXJzIGZyb20gY3VycmVudExldmVsc1xuICAgKiB3aGlsZSBwcmVzZXJ2aW5nIGFwcHJvdmFsLXJlbGF0ZWQgZmxhZ3MuXG4gICAqIEFsc28gZmlsdGVycyBvdXQgbGV2ZWxzIHRoYXQgZW5kIHVwIHdpdGggbm8gYXBwcm92ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gbmV3TGV2ZWxzIC0gQXJyYXkgb2YgbmV3IGxldmVscyB3aXRoIGFwcHJvdmVycy5cbiAgICogQHBhcmFtIGN1cnJlbnRMZXZlbHMgLSBPYmplY3QgY29udGFpbmluZyBleGlzdGluZyBsZXZlbHMuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFycmF5IG9mIGxldmVscyB3aXRoIG1lcmdlZCBhcHByb3ZlcnMgYW5kIHByZXNlcnZlZCBmbGFncy5cbiAgICovXG4gIHByaXZhdGUgcHJlc2VydmVBcHByb3ZhbEZsYWdzKG5ld0xldmVsczogYW55W10sIGN1cnJlbnRMZXZlbHM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBhbnlbXSB7XG4gICAgcmV0dXJuIChuZXdMZXZlbHMgfHwgW10pLnJlZHVjZTxhbnlbXT4oKGFjYzogYW55W10sIGxldmVsOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGxldmVsS2V5ID0gYGxldmVsJHtpbmRleCArIDF9YDtcbiAgICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IGN1cnJlbnRMZXZlbHM/LltsZXZlbEtleV07XG5cbiAgICAgIC8vIFByZXNlcnZlIGZsYWdzIGlmIGFwcHJvdmVyIGFscmVhZHkgZXhpc3RzIGluIGN1cnJlbnRMZXZlbFxuICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5tZXJnZUFwcHJvdmVyc0ZvckxldmVsKGxldmVsPy5hcHByb3ZlcnMsIGN1cnJlbnRMZXZlbCk7XG5cbiAgICAgIC8vIE9ubHkgaW5jbHVkZSB0aGlzIGxldmVsIGlmIGl0IGhhcyBhdCBsZWFzdCBvbmUgYXBwcm92ZXJcbiAgICAgIGlmIChhcHByb3ZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgLi4ubGV2ZWwsXG4gICAgICAgICAgYXBwcm92ZXJzLFxuICAgICAgICAgIGFwcHJvdmFsX2RvbmU6IGN1cnJlbnRMZXZlbD8uYXBwcm92YWxfZG9uZSA/PyBsZXZlbD8uYXBwcm92YWxfZG9uZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBBcHByb3ZlcnMgd29ya2Zsb3cgbGlzdCBiYXNlZCBvbiBzZWxlY3RlZCBwb2xpY3kgY2F0ZWdvcmllc1xuICAgKiBAcGFyYW0gaWQgY29udGFpbnMgc2VsZWN0ZWQgY2F0ZWdvcmllcyBpZCdzXG4gICAqL1xuICBnZXRBcHByb3ZlcldvcmtGbG93KGlkOiBhbnksIGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldFdvcmtmbG93TGlzdChpZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+PSAwKSB7XG4gICAgICAgICAgdGhpcy5hcHByb3ZlcldvcmtGbG93TGlzdCA9IHJlczsgLy8gZ2V0dGluZyBhbGwgYXBwcm92ZXIgc2F2ZWQgd29ya2Zsb3dzXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW107XG4gICAgICAgICAgdGhpcy5hcHByb3ZlcldvcmtGbG93TGlzdD8uZm9yRWFjaCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcHJvdmFsV29ya2Zsb3dJZHM/LmluY2x1ZGVzKHdvcmtmbG93Py5faWQpKSB7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlRGVmYXVsdFdvcmtmbG93KHdvcmtmbG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGFwcHJvdmFsRGF0YTogYW55ID0gW107XG4gICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ub1dvcmtmbG93U2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IGFwcHJvdmFsV29ya2Zsb3c6IGFueVtdID0gW107XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVdvcmtmbG93KCk7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzKS5mb3JFYWNoKChhcHByb3ZlcnNMZXZlbCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzW2FwcHJvdmVyc0xldmVsXS5hcHByb3ZlcnMgPVxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdPy5hcHByb3ZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAgIChhcHA6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFwcC5tZW1iZXJfbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVyVXNlciA9IHRoaXMudXNlcnNMaXN0Py5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXI6IGFueSkgPT4gdXNlci5teV9tZW1iZXJfaWQgPT0gYXBwLm1lbWJlcl9pZFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcHJvdmVyVXNlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLm1lbWJlcl9uYW1lID0gYXBwcm92ZXJVc2VyPy5tZW1iZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbEFwcHJvdmFsU3RhdHVzID0gdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVyc1thcHByb3ZlcnNMZXZlbF0/LmFwcHJvdmFsX2RvbmUgPz8gZmFsc2U7XG4gICAgICAgICAgICAgIGNvbnN0IGxldmVsRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBsZXZlbDE6IGFwcHJvdmVyc0xldmVsLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdLFxuICAgICAgICAgICAgICAgIGFwcHJvdmFsX2RvbmU6IG9yaWdpbmFsQXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGFwcHJvdmFsV29ya2Zsb3cucHVzaChsZXZlbERhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcHByb3ZhbERhdGEucHVzaCh7XG4gICAgICAgICAgICAgIHdvcmtmbG93X25hbWU6ICcnLFxuICAgICAgICAgICAgICB3b3JrZmxvd19tb2R1bGU6ICdQT0xJQ1knLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoge30sXG4gICAgICAgICAgICAgIGFwcHJvdmFsX3dvcmtmbG93OiBhcHByb3ZhbFdvcmtmbG93LFxuICAgICAgICAgICAgICBjYXRlZ29yeV9hcnI6IFtdLFxuICAgICAgICAgICAgICBjcmVhdG9yOiB7fSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFdvcmtmbG93Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93ID0gYXBwcm92YWxEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3c7XG4gICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIFtkYXRhLlJldmlld2VyTWVtYmVySWRdLFxuICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZURlZmF1bHRXb3JrZmxvdyh3b3JrZmxvdzogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnMgJiYgd29ya2Zsb3c/LmFwcHJvdmFsX3dvcmtmbG93KSB7XG4gICAgICBjb25zdCB1cGRhdGVkV29ya2Zsb3cgPSB7IC4uLndvcmtmbG93IH07XG4gICAgICB1cGRhdGVkV29ya2Zsb3cuYXBwcm92YWxfd29ya2Zsb3cgPSB3b3JrZmxvdy5hcHByb3ZhbF93b3JrZmxvdy5tYXAoKGxldmVsOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgbGV2ZWxLZXkgPSBgbGV2ZWwke2luZGV4ICsgMX1gO1xuICAgICAgICBjb25zdCBjdXJyZW50UG9saWN5TGV2ZWwgPSB0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzW2xldmVsS2V5XTtcblxuICAgICAgICAvLyBJZiBhcHByb3ZhbCBzdGF0dXMgZXhpc3RzLCBwcmVzZXJ2ZSBpdDsgb3RoZXJ3aXNlLCBrZWVwIHRoZSBleGlzdGluZyBzdGF0dXMgaW4gd29ya2Zsb3dcbiAgICAgICAgaWYgKGN1cnJlbnRQb2xpY3lMZXZlbCkge1xuICAgICAgICAgIGNvbnN0IG1lcmdlZEFwcHJvdmVycyA9IHRoaXMubWVyZ2VBcHByb3ZlcnNGb3JMZXZlbChsZXZlbC5hcHByb3ZlcnMsIGN1cnJlbnRQb2xpY3lMZXZlbCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmxldmVsLFxuICAgICAgICAgICAgYXBwcm92ZXJzOiBtZXJnZWRBcHByb3ZlcnMsXG4gICAgICAgICAgICBhcHByb3ZhbF9kb25lOiBjdXJyZW50UG9saWN5TGV2ZWwuYXBwcm92YWxfZG9uZSA/IGN1cnJlbnRQb2xpY3lMZXZlbC5hcHByb3ZhbF9kb25lIDogbGV2ZWwuYXBwcm92YWxfZG9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxldmVsOyBcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93Py5wdXNoKHVwZGF0ZWRXb3JrZmxvdyk7XG4gICAgfWVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93Py5wdXNoKHdvcmtmbG93KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQXBwcm92ZXJzRm9yTGV2ZWwobGV2ZWxBcHByb3ZlcnM6IGFueVtdLCBjdXJyZW50TGV2ZWw6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gKGxldmVsQXBwcm92ZXJzIHx8IFtdKS5tYXAoKGFwcHJvdmVyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gY3VycmVudExldmVsPy5hcHByb3ZlcnM/LmZpbmQoXG4gICAgICAgIChhOiBhbnkpID0+IGE/Lm1lbWJlcl9pZCA9PT0gYXBwcm92ZXI/Lm1lbWJlcl9pZFxuICAgICAgKTtcbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmFwcHJvdmVyLFxuICAgICAgICAgIGFwcHJvdmFsX2ZsYWc6IGV4aXN0aW5nLmFwcHJvdmFsX2ZsYWcgPz8gYXBwcm92ZXIuYXBwcm92YWxfZmxhZyxcbiAgICAgICAgICByZWplY3RfZmxhZzogZXhpc3RpbmcucmVqZWN0X2ZsYWcgPz8gYXBwcm92ZXIucmVqZWN0X2ZsYWcsXG4gICAgICAgICAgcmVtb3ZlX2ZsYWc6IGV4aXN0aW5nLnJlbW92ZV9mbGFnID8/IGFwcHJvdmVyLnJlbW92ZV9mbGFnXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXBwcm92ZXI7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVXb3JrZmxvdygpIHtcbiAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dJZHMgPSBbXTtcbiAgICB0aGlzLmVkaXRBcHByb3ZhbFdvcmtmbG93ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgQXBwcm92ZXJzIGFuZCByZXZpZXdlcnMgbGlzdCBiYXNlZCBvbiBzZWxlY3RlZCBwb2xpY3kgY2F0ZWdvcmllc1xuICAgKiBAcGFyYW0gY2F0ZWdvcnlJZHMgY29udGFpbnMgc2VsZWN0ZWQgY2F0ZWdvcmllcyBpZCdzXG4gICAqL1xuICBnZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KFxuICAgIGNhdGVnb3J5SWRzOiBhbnksXG4gICAgYXBwcm92ZXJJZHM/OiBhbnksXG4gICAgcmV2aWV3ZXJJZHM/OiBhbnksXG4gICAgcG9saWN5PzogYW55XG4gICkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmFsbEFwcHJvdmVycyA9IFtdO1xuICAgIHRoaXMuYWxsUmV2aWV3ZXJzID0gW107XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldFJldmlld2VycyhjYXRlZ29yeUlkcykuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+PSAwKSB7XG4gICAgICAgICAgcmVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMgPSB1bmlxQnkoXG4gICAgICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLmNvbmNhdChlbGVtZW50LmFsbF9hcHByb3ZlcnMpLFxuICAgICAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzID0gdW5pcUJ5KFxuICAgICAgICAgICAgICBlbGVtZW50LmFsbF9hcHByb3ZlcnMuY29uY2F0KFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQuYWxsX2F1dGhvcnNcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnQ1JFQVRFJykgdGhpcy5zZXRPd25lcnNPbkxvYWQoKTtcbiAgICAgICAgICAgIGlmIChwb2xpY3k/LnBvbGljeV9vd25lcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgICAgICAgICAgIHBvbGljeT8ucG9saWN5X293bmVycyA/PyBbXSxcbiAgICAgICAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRVc2Vyc0FjY2Vzc0xpc3RCeUNhdGVnb3J5KGVsZW1lbnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcHByb3Zlcklkcz8uYXBwcm92ZXJzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzV29ya2Zsb3dDaGFuZ2VzKGFwcHJvdmVySWRzKSkge1xuICAgICAgICAgICAgbGV0IG9iaiA9IGFwcHJvdmVySWRzPy5hcHByb3ZlcnM7XG4gICAgICAgICAgICBsZXQgYXBwcm92ZXJMZXZlbHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGl0ZW0gaW4gb2JqKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlkcyA9IG9ialtpdGVtXT8uYXBwcm92ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBvYmpbaXRlbV0/Lm5hbWUgPz8gb2JqW2l0ZW1dPy50eXBlLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVyczogb2JqW2l0ZW1dPy5hcHByb3ZlcnMsXG4gICAgICAgICAgICAgICAgYXBwcm92YWxfZG9uZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGV2ZWwxOiBvYmpbaXRlbV0/LmxldmVsMSB8fCBpdGVtLFxuICAgICAgICAgICAgICAgIGFsaWFzX25hbWU6IG9ialtpdGVtXT8uYWxpYXNfbmFtZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYXBwcm92ZXJMZXZlbHMucHVzaChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3cgPSBhcHByb3ZlckxldmVscztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcHByb3ZhbF93b3JrZmxvdzogYXBwcm92ZXJMZXZlbHMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IHRoaXMuc2VsZWN0ZWRXb3JrZmxvdztcbiAgICAgICAgICB9XG4gICAgICAgIH0gICAgICBcbiAgICAgICAgaWYgKHJldmlld2VySWRzKSB7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXG4gICAgICAgICAgICByZXZpZXdlcklkcyxcbiAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzV29ya2Zsb3dDaGFuZ2VzKG5ld0FwcHJvdmVySWRzOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBubyB3b3JrZmxvdyBzZWxlY3RlZFxuICAgIGlmICghdGhpcy5zZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggfHwgIXRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3cpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nV29ya2Zsb3cgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93O1xuICAgIGNvbnN0IG5ld0FwcHJvdmVycyA9IG5ld0FwcHJvdmVySWRzPy5hcHByb3ZlcnM7XG5cbiAgICAvLyBDaGVjayBpZiBuZXcgYXBwcm92ZXJzIGV4aXN0IGFuZCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBsZXZlbHMgXG4gICAgaWYgKCFuZXdBcHByb3ZlcnMgfHwgT2JqZWN0LmtleXMobmV3QXBwcm92ZXJzKS5sZW5ndGggIT09IGV4aXN0aW5nV29ya2Zsb3cubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvL0NvbXBhcmUgZWFjaCBsZXZlbCBpbiB0aGUgd29ya2Zsb3dcbiAgICBmb3IgKGNvbnN0IGxldmVsS2V5IGluIG5ld0FwcHJvdmVycykge1xuICAgICAgY29uc3QgbmV3TGV2ZWwgPSBuZXdBcHByb3ZlcnNbbGV2ZWxLZXldO1xuICAgICAgbGV0IGV4aXN0aW5nTGV2ZWwgPSBleGlzdGluZ1dvcmtmbG93LmZpbmQoXG4gICAgICAgIChsZXZlbDogYW55KSA9PiBsZXZlbC5sZXZlbDEgPT09IG5ld0xldmVsLmxldmVsMVxuICAgICAgKTtcbiAgICAgIGlmICghZXhpc3RpbmdMZXZlbCAmJiBleGlzdGluZ1dvcmtmbG93W3BhcnNlSW50KGxldmVsS2V5LnJlcGxhY2UoJ2xldmVsJywgJycpKSAtIDFdKSB7XG4gICAgICAgIGV4aXN0aW5nTGV2ZWwgPSBleGlzdGluZ1dvcmtmbG93W3BhcnNlSW50KGxldmVsS2V5LnJlcGxhY2UoJ2xldmVsJywgJycpKSAtIDFdO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBJZiBubyBleGlzdGluZyBsZXZlbCBmb3VuZCwgY29uc2lkZXIgdGhpcyBhcyBhIG5ldyBsZXZlbFxuICAgICAgaWYgKCFleGlzdGluZ0xldmVsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiB0aGUgYXBwcm92YWwgdHlwZSBoYXMgY2hhbmdlZFxuICAgICAgaWYgKGV4aXN0aW5nTGV2ZWwgJiYgbmV3TGV2ZWwudHlwZSAhPT0gZXhpc3RpbmdMZXZlbC50eXBlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiB0aGUgYXBwcm92ZXIgbmFtZSBoYXMgY2hhbmdlZFxuICAgICAgaWYgKGV4aXN0aW5nTGV2ZWwgJiYgbmV3TGV2ZWwuYWxpYXNfbmFtZSAhPT0gZXhpc3RpbmdMZXZlbC5hbGlhc19uYW1lKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdNZW1iZXJJZHMgPSAobmV3TGV2ZWw/LmFwcHJvdmVycyB8fCBbXSlcbiAgICAgIC5tYXAoKGE6IGFueSkgPT4gYT8ubWVtYmVyX2lkKVxuICAgICAgLmZpbHRlcigoaWQ6IGFueSkgPT4gaWQgIT0gbnVsbCk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nTWVtYmVySWRzID0gKGV4aXN0aW5nTGV2ZWw/LmFwcHJvdmVycyB8fCBbXSlcbiAgICAgICAgLm1hcCgoYTogYW55KSA9PiBhPy5tZW1iZXJfaWQpXG4gICAgICAgIC5maWx0ZXIoKGlkOiBhbnkpID0+IGlkICE9IG51bGwpO1xuXG4gICAgICAvLyBJZiBtZW1iZXIgY291bnQgb2YgYXBwcm92ZXJzIGRpZmZlcnNcbiAgICAgIGlmIChuZXdNZW1iZXJJZHMubGVuZ3RoICE9PSBleGlzdGluZ01lbWJlcklkcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbXBhcmUgbWVtYmVycyBwZXIgbGV2ZWxcbiAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQobmV3TWVtYmVySWRzKTtcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgZXhpc3RpbmdNZW1iZXJJZHMpIHtcbiAgICAgICAgaWYgKCFuZXdTZXQuaGFzKGlkKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKioqKioqXG4gICAqIEl0IGlzIHRvIHBvcHVsYXRlIG1vcmUgb3B0aW9ucyBlbGVtZW50cyB3aGlsZSBlZGl0aW5nIHRoZSBwb2xpY3kgZm9ybVxuICAgKi9cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJyk7XG4gICAgfVxuICAgIC8vIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVWSUVXRVInKTsgfVxuICAgIC8vIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UUycpOyB9XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFTEFURURfRE9DVU1FTlRTJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnVkVSU0lPTicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudC5sZW5ndGgpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19BU1NFU1NNRU5UUycpO1xuICAgICAgdGhpcy5nZXRBc3Nlc3NtZW50RGV0YWlscyh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudFswXSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtICYmXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcbiAgICApIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19QUk9HUkFNX1JFU1BPTlNJQklMSVRJRVMnKTtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUHJvZ3JhbSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdMSU5LX1JFTEFURURfUE9MSUNJRVMnKTtcbiAgICB9XG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xuICB9XG4gIC8qKlxuICAgKiBJdCBpcyB0byBhZGQgYW5kIHJlbW92ZSB0aGUgZWxlbWVudHMgZnJvbSBNb3JlIG9wdGlvbiB0byB0aGUgcG9saWN5IEZvcm1cbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGRldGFpbHMgcmVsYXRlZCB0byBjaGVja2VkIHZhbHVlLCBjb2RlIHBhcnRpY3VsYXIgZWxlbWVudHMgZnJvbSBNb3JlIG9wdGlvbnNcbiAgICovXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgIGNhc2UgJ1JFU1BPTlNJQklMSVRZX0NFTlRFUic6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIGNhc2UgJ1JFVklFV0VSJzpcbiAgICAgIC8vICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAvLyAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0hFQ0tQT0lOVFMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUkVMQVRFRF9ET0NVTUVOVFMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVkVSU0lPTic6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRWZXJzaW9uID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdMSU5LX1BST0dSQU1fUkVTUE9OU0lCSUxJVElFUyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUHJvZ3JhbSA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTElOS19BU1NFU1NNRU5UUyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rQXNzZXNzbWVudCA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTElOS19SRUxBVEVEX1BPTElDSUVTJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtQb2xpY2llcyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxuICAgKi9cbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XG4gICAgY29uc3QgZWRpdExvYWRlciA9XG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJ1xuICAgICAgICA/IHRoaXMucmNMaXN0TG9hZGVkICYmXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgJiZcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkXG4gICAgICAgIDogdHJ1ZTtcbiAgICBpZiAodGhpcy51c2Vyc0xpc3RMb2FkZWQgJiYgZWRpdExvYWRlcikge1xuICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YSAmJiB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZSkge1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLnN1YnN0cmluZyhcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJylcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWQpIHtcbiAgICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWRdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSkge1xuICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuc2VsZWN0ZWRDYXRlZ29yeV0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgIHRoaXMuZWRpdFBvbGljeSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBjb25maXJtYXRpb24gcG9wdXAgd2hlbiBhdmFpbGFiaWxpdHkgb24gUG9saWN5IHBvcnRhbCB0b2dnbGUgaW4gT05cbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHRvZ2dsZSB2YWx1ZSB3aGljaCBpcyBhbHdheXMgdHJ1ZSBvciBmYWxzZVxuICAgKi9cbiAgYXZhaWxhYmlsaXR5T25Qb3J0YWwoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgY29uc3QgY29uZmlybWF0aW9uRGV0YWlsczogQ29uZmlybWF0aW9uQWxlcnQgPSB7XG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZTogYFRoZSBwb2xpY2llcyB0aGF0IHlvdSBpbnRlbmQgdG8gbWFrZSBhY2Nlc3NpYmxlIHRvIHRoZSBlbnRpcmUgb3JnYW5pemF0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUgcG9saWN5IHBvcnRhbC5cbiAgICAgICAgSXQgaXMgbGlrZSBhIHNoYXJlZCBjYXRhbG9nIG9mIGFsbCBhY3RpdmUgJiB1cGRhdGVkIHBvbGljaWVzIHRoYXQgYW55IGxvZ2dlZCBpbiB1c2VyIGNhbiByZWFkLyBkb3dubG9hZCBmb3IgcmVmZXJlbmNlLlxuICAgICAgICBIZW5jZSwgaWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgeW91IHRvIHNldCB1cCBhbiBhdHRlc3RhdGlvbiBzY2hlZHVsZSBvciBzZWxlY3RcbiAgICAgICAgcmVhZGVycyB0byBhdHRlc3QgdGhlIHBvbGljaWVzLmAsXG4gICAgICAgIGFjdGlvbjogJ1BPTElDWV9QT1JUQUwnLFxuICAgICAgfTtcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbkFsZXJ0LmVtaXQoY29uZmlybWF0aW9uRGV0YWlscyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlY2VpdmVzIHRoZSBpbnB1dCBmcm9tIHRoZSBDb25maXJtYXRpb24gZGlhbG9nIG9mIGF2YWlsYWJsZSBvbiBQb2xpY3kgcG9ydGFsXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBvcHRpb24gZnJvbSB0aGUgY29uZmlybWF0aW9uIGRpYWxvZyB3aGljaCBpcyBhbHdheXMgZWl0aGVyICdZRVMnIG9yICdOTydcbiAgICovXG4gIGNvbmZpcm1Qb2xpY3lQb3J0YWwoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCA9IGV2ZW50ID09ICdZRVMnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmIChldmVudCA9PSAnTk8nKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcG9saWN5Rm9ybSB3aXRoIHNlbGVjdGVkIGVsZW1lbnRzIGZyb20gdGhlIGxpc3RpbmcsIGZyZXF1ZW5jeSwgZmlsZSB1cGxvYWQgY29tcG9uZW50c1xuICAgKiBAcGFyYW0gdHlwZSBkZWZpbmVzIHRoZSBwYXJ0aWN1bGFyIGZpZWxkIG9uIFBvbGljeSBmb3JtLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtcyBjb250YWlucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBpdGVtcyBmcm9tIHRoZSBsaXN0XG4gICAqL1xuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLnJjTGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdpdGVtX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdfaWQnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXG4gICAgICAgICAgJ19pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IFtdO1xuICAgICAgICB0aGlzLnJlc2V0UG9saWN5QWNjZXNzRGV0YWlscygpO1xuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhZyA9IGVsZW1lbnQuY3VzdG9tX3RhZ3M7XG4gICAgICAgICAgaWYgKHRhZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnbmFtZSA9PSB0YWdEYXRhLnRhZ25hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGxldCB1c2VySWRzLCBncm91cElkcztcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgdXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMudXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgICAgICBncm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMuZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVzZXJJZHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgdXNlcklkcyxcbiAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxuICAgICAgICBsZXQgc2VsZWN0ZWRVc2VySWRzLCBzZWxlY3RlZEdyb3VwSWRzO1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy5ncm91cHMsICdncm91cF9pZCcpO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRVc2VySWRzLFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NGYWlsJzpcbiAgICAgICAgbGV0IHNlbGVjdGVkRmFpbFVzZXJJZHMsIHNlbGVjdGVkRmFpbEdyb3VwSWRzO1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy51c2VycyxcbiAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkRmFpbEdyb3VwSWRzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy51c2Vyc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzLFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9yZUxldmVscykge1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLFxuICAgICAgICAgICAgYXBwcm92ZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1t0aGlzLmFwcHJvdmVyc0xpc3RJbmRleF0gPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy53b3JrZmxvd1R5cGUsXG4gICAgICAgICAgYXBwcm92ZXJzLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyX2F0dGFjaG1lbnRzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcblxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc29jaWF0ZWREb2N1bWVudHMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjaGVja3BvaW50cyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHMgPz8gW107XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID8/IDA7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBzZWxlY3RlZEl0ZW1zPy5yZXF1aXJlZFBvaW50ID8/IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3duZXJzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XG4gICAgICAgIGxldCBhY2Nlc3NJZHMsIGFjY2Vzc0dyb3VwSWRzO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZ1dHVyZVVzZXJzV2lsbFNlbGVjdDtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgYWNjZXNzSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgICAgIGFjY2Vzc0dyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy5ncm91cHMsICdncm91cF9pZCcpO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX2dyb3VwcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICAgICAgYWNjZXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2Nlc3NJZHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgYWNjZXNzSWRzLFxuICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaXNMaW5rZWRQb2xpY2VzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkxpbmtlZFBvbGljaWVzID0gdGhpcy5saXN0T2ZTZWxlY3RlZFBvbGljaWVzKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnNlbGVjdGVkUG9saWN5TGlzdFxuICAgICAgICApO1xuICAgICAgICB0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMgPSBzZWxlY3RlZEl0ZW1zPy5zZWxlY3RlZFBvbGljeUxpc3Q7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gIH1cblxuICBsaXN0T2ZTZWxlY3RlZFBvbGljaWVzKHNlbGVjdGVkUG9saWNpZXM6IGFueSkge1xuICAgIHJldHVybiBzZWxlY3RlZFBvbGljaWVzPy5tYXAoKHBvbGljeTogYW55KSA9PiBwb2xpY3k/LmNvbnRyYWN0X2lkKTtcbiAgfVxuXG4gIC8vcmV0dXJuIHRoZSBfaWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3ZlcnNlZXIgZ3JvdXAuXG4gIGdldEdyb3VwT2JqZWN0SWQob3ZlcnNlZXJHcm91cD86IGFueSkge1xuICAgIGxldCBvdmVyc2Vlckdyb3VwSWRBcnJheSA9IG92ZXJzZWVyR3JvdXAubWFwKChlbGU6IGFueSkgPT4gZWxlLl9pZCk7XG4gICAgcmV0dXJuIG92ZXJzZWVyR3JvdXBJZEFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIHBhcnRpY3VsYXIgZWxlbWVudCBmcm9tIHNlbGVjdGVkIGxpc3RcbiAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBjYXNlXG4gICAqIEBwYXJhbSBldmVudCBob2xkcyB0aGUgaWQgb3Iga2V5IG9mIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxuICAgKiBAcGFyYW0gcmVtb3ZlSW5kZXggY29udGFpbnMgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIHJlbW92ZUluZGV4PzogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MuZmluZEluZGV4KFxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3Muc3BsaWNlKHJjSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGVudHJ1c3RJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKG93bmVyOiBhbnkpID0+IG93bmVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5zcGxpY2UoZW50cnVzdEluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncm91cEFzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXg6IGFueSA9XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uZmluZEluZGV4KFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5maW5kSW5kZXgoXG4gICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NFbWFpbCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5maW5kSW5kZXgoXG4gICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLnNwbGljZShvdmVyc2VlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjY0dyb3VwRW1haWwnOlxuICAgICAgICBjb25zdCBjY0dyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5maW5kSW5kZXgoXG4gICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbD8uc3BsaWNlKGNjR3JvdXBJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyTm90aWZ5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwuZmluZEluZGV4KFxuICAgICAgICAgIChvdmVyc2Vlck46IGFueSkgPT4gb3ZlcnNlZXJOLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5zcGxpY2Uob3ZlcnNlZXJOb3RpZnlJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NHcm91cEZhaWxFbWFpbCc6XG4gICAgICAgIGNvbnN0IGNjRmFpbEdyb3VwSW5kZXg6IGFueSA9XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwPy5zcGxpY2UoY2NGYWlsR3JvdXBJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbXG4gICAgICAgICAgcmVtb3ZlSW5kZXhcbiAgICAgICAgXS5hcHByb3ZlcnMuZmluZEluZGV4KFxuICAgICAgICAgIChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLnNwbGljZShcbiAgICAgICAgICBhcHByb3ZlcnNJbmRleCxcbiAgICAgICAgICAxXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5sZW5ndGggPT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuZmluZEluZGV4KFxuICAgICAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5pdGVtX2lkID09IGV2ZW50Lml0ZW1faWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XG4gICAgICAgIGNvbnN0IHRhZyA9IGV2ZW50LmN1c3RvbV90YWdzO1xuICAgICAgICBpZiAodGFnLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ25hbWUgPT0gdGFnRGF0YS50YWduYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4Q1QgIT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXG4gICAgICAgICAgJ19pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtID0gT2JqZWN0LmFzc2lnbih0aGlzLnBvbGljeUZvcm0pO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xuICAgICAgICB0aGlzLnJlc2V0UG9saWN5QWNjZXNzRGV0YWlscygpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSBbXTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSAwO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3b3JrZmxvd0xldmVsJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJlbW92ZVdvcmtmbG93KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGlua1Byb2dyYW0nOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ubGlua1Byb2dyYW0gPSB7XG4gICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgIHJlbW92ZWQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcG9saWN5SWRzOiBbdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfaWQgPz8gMF0sXG4gICAgICAgICAgICAgIHByb2dyYW1JZDogdGhpcy5zZWxlY3RlZExpbmtQcm9ncmFtPy5faWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXMgPSB7fTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ293bmVycyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X293bmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XG4gICAgICAgIGNvbnN0IHVzZXJBY2Nlc3NJbmRleCA9IHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMuZmluZEluZGV4KFxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lcj8uZW1wbG95ZWVfaWQgPT0gZXZlbnQ/LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/LnNwbGljZSh1c2VyQWNjZXNzSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FjY2Vzc0dyb3VwJzpcbiAgICAgICAgY29uc3QgZ3JvdXBBY2Nlc3NJbmRleDogYW55ID1cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/LnNwbGljZShncm91cEFjY2Vzc0luZGV4LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmcmVxdWVuY3knOlxuICAgICAgICB0aGlzLnJlbW92ZUZyZXF1ZW5jeSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lzTGlua2VkUG9saWNlcyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcyA9IHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcz8uZmlsdGVyKFxuICAgICAgICAgIChwb2xpY3lJZDogYW55KSA9PiBldmVudCAhPT0gcG9saWN5SWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzID0gdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzPy5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0/LmNvbnRyYWN0X2lkICE9PSBldmVudFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgYXNzaWduZWVzIGFuZCBvdmVyc2VlcnMgbGlzdCBzdWNoIHRoYXQgYm90aCBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHNhbWUgdXNlcnMgYmFzZWQgb24gc2VsZWN0aW9uXG4gICAqL1xuICByZWZyZXNoQWxsTGlzdHMoKSB7XG4gICAgbGV0IGFzc2lnbmVlc0lkczogYW55ID0gW107XG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICBjb25zdCBhbGxVc2VycyA9IGNsb25lRGVlcCh0aGlzLnVzZXJzTGlzdCk7XG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyk7XG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsKTtcbiAgICBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsKTtcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgYXNzaWduZWVzSWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG5cbiAgICBhc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZXNJZHMpXTtcbiAgICByZXZpZXdlcnNJZHMgPSBbLi4ubmV3IFNldChyZXZpZXdlcnNJZHMpXTtcbiAgICBvdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KG92ZXJzZWVySWRzKV07XG5cbiAgICAvLyB0aGlzLmFzc2lnbm9yc0xpc3QgPSBiZWhhbGZVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShyZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKSkpO1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICEoXG4gICAgICAgICAgcmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8XG4gICAgICAgICAgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcbiAgICAgICAgKVxuICAgICk7XG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICBjb25zdCB1c2VyT2JqID0gdGhpcy5hc3NpZ25lZXNMaXN0O1xuICAgICAgdXNlck9iaj8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlci5teV9tZW1iZXJfaWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub3duZXJsaXN0ID0gdXNlck9iajtcbiAgICB9XG4gICAgLy8gdGhpcy5yZXZpZXdlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEoYXNzaWduZWVzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpKSk7XG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgIShcbiAgICAgICAgICBhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHxcbiAgICAgICAgICByZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aG9sZSBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xuICAgKiBAcGFyYW0gbGlzdCBpdCBpcyB0aGUgbWFpbiBsaXN0ICB3aGljaCBjb250YWlucyBhbGwgZWxlbWVudHMgbGlzdFxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBmaWx0ZXIgc2VsZWN0ZWQgbGlzdCBmcm9tIHRoZSBsaXN0XG4gICAqIEBwYXJhbSBpZHMgc2VsZWN0ZWQgaWRzIGFycmF5XG4gICAqL1xuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xuICAgIGlkcz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3Q/LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xuICAgKiBAcGFyYW0gbGlzdCBhY3R1YWwgc2VsZWN0ZWQgbGlzdFxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcbiAgICovXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdC5tYXAoKGVsZSkgPT4ge1xuICAgICAgaWYgKGVsZVtrZXldKSB7XG4gICAgICAgIHJldHVybiBlbGVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZXZpZXdlciB0eXBlIGluIGFwcHJvdmFsIHdvcmtmbG93XG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCByZXZpZXdlciB0eXBlXG4gICAqL1xuICByZXZpZXdlclR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMud29ya2Zsb3dUeXBlID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmcmVxdWVuY3kgaW4gZWRpdCAgbW9kZVxuICAgKi9cbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSwgbW9kZTogJ1NFTEVDVCcgfCAnUE9QVUxBVEUnID0gJ1NFTEVDVCcpIHtcbiAgICAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscywgLy9cbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSxcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8ubWFya19mYWlsZWRfYWZ0ZXIsXG4gICAgICBmYWlsZWRfdGltZV91dGM6ICcnLFxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgdGltZUluMjRIcjogZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6IERFRkFVTFRfMjRIUixcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IoXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LmFzc2lnbmVlX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcbiAgICAgICksXG4gICAgICBzdGFydERhdGU6ICcnLFxuICAgICAgcmVwb3J0SWQ6IDAsXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoXG4gICAgICAgIGV2ZW50LmZhaWxlZF90aW1lICE9ICcnID8gZXZlbnQuZmFpbGVkX3RpbWUgOiBERUZBVUxUXzI0SFJcbiAgICAgICksXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQuZnJlcXVlbmN5X3RleHQsXG4gICAgfTtcblxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIGZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XG4gICAgKHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9IGV2ZW50LnBsYWNlaG9sZGVyKSxcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ubWFya19mYWlsZWRfYWZ0ZXIgPSBldmVudC5mYWlsZWRBZnRlcik7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcbiAgICB0aGlzLnBvbGljeUZvcm0uZmFpbGVkX3RpbWUgPSBldmVudC50aW1lSW4yNEhyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NpZ25lZV9zdGFydF9kYXRlID0gbW9tZW50KGV2ZW50LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdkZGQgTU1NIEREIFlZWVknXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXIsXG4gICAgfTtcbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIHRoZSBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gZXZlbnQ/LnBsYWNlaG9sZGVyXG4gICAgICA/IGV2ZW50LnBsYWNlaG9sZGVyXG4gICAgICA6ICdIb3cgb2Z0ZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIGF0dGVzdGVkPyc7XG4gIH1cblxuICByZXZpZXdlckZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMsIC8vXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5yZXZpZXdGYWlsZWRBZnRlcixcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgICB0aW1lSW4yNEhyOlxuICAgICAgICBldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6IERFRkFVTFRfMjRIUixcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IoXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LnJldmlld2VyX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcbiAgICAgICksXG4gICAgICBzdGFydERhdGU6ICcnLFxuICAgICAgcmVwb3J0SWQ6IDAsXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoXG4gICAgICAgIGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogREVGQVVMVF8yNEhSXG4gICAgICApLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnJldmlld2ZyZXF1ZW5jeURldGFpbHMsXG4gICAgfTtcblxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEYXRhKGRhdGEpO1xuICB9XG5cbiAgcmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpIHtcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICB3aW5kb3c6IDAsXG4gICAgICBmYWlsZWQ6IDAsXG4gICAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXG4gICAgfTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkQWZ0ZXIgPSAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSAnJztcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV90eXBlID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gREVGQVVMVF8yNEhSO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgcmV2aWV3ZXIgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXG4gICAqL1xuICByZXZpZXdlckZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRBZnRlciA9IGV2ZW50LmZhaWxlZEFmdGVyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSBldmVudC5wYXR0ZXJuLnNwbGl0KCd+JylbMF07XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSBldmVudC53aW5kb3c7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSBldmVudC50aW1lSW4yNEhyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdlcl9zdGFydF9kYXRlID0gbW9tZW50KGV2ZW50LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdkZGQgTU1NIEREIFlZWVknXG4gICAgKTtcblxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCBmYWxzZSk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxuICAgIH07XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIHRoZSByZXZpZXdlciBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIHJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID1cbiAgICAgIGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXJcbiAgICAgID8gZXZlbnQucGxhY2Vob2xkZXJcbiAgICAgIDogJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkID8nO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGF0YSBzdWJtaXR0ZWQgb24gY3JlYXRlIHBvbGljeSBmb3JtXG4gICAqL1xuICB2YWxpZGF0ZVBvbGljeSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWU7XG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IGV2ZW50LnJlcGxhY2UocmUsICcnKS50cmltKCk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKCkgPT0gJycgfHxcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICAoKHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAhdGhpcy5ncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgKCh0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID4gMCkgJiZcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBFbmFibGVkKSkpIHx8XG4gICAgICAodGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAoIXRoaXMuZ3JvdXBFbmFibGVkIHx8XG4gICAgICAgICAgKHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5ncm91cEVuYWJsZWQpKSkgfHxcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMubGVuZ3RoID4gMCkgfHxcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzICYmXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5sZW5ndGggPT0gMCkgfHxcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoID09IDAgfHxcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92YWxfd29ya2Zsb3c/Lmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGggJiZcbiAgICAgICAgdGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgPT09IDApIHx8XG4gICAgICAodGhpcy5mb3JtYXRFdmlkZW5jZSAmJiB0aGlzLmZvcm1hdEV2aWRlbmNlLm5ld0xpbmsuY29udGFpbnNFcnJvcikgfHxcbiAgICAgICF0aGlzLnBvbGljeUZvcm0ucG9saWN5X293bmVycz8ubGVuZ3RoIHx8XG4gICAgICAodGhpcy5pc1NlbmRGb3JBdHRlc3RhdGlvbiAmJlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ha2VzIGFuIGFwaSBjYWxsIHRvIGNyZWF0ZSBhIHBvbGljeVxuICAgKiBAcGFyYW0gcG9saWN5IGNvbnRhaW5zIHBvbGljeUZvcm0gZGF0YVxuICAgKi9cbiAgc3VibWl0UG9saWN5KCkge1xuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlUG9saWN5KCk7XG4gICAgaWYgKCF2YWxpZCB8fCAhdGhpcy5pc1ZlcnNpb25WYWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xuICAgIGlmICh0aGlzLm5vV29ya2Zsb3dTZWxlY3RlZCkge1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gdGhpcy5zZWxlY3RlZFdvcmtmbG93O1xuICAgIH1cbiAgICBjb25zdCBwb2xpY3kgPSB0aGlzLnBvbGljeUZvcm07XG4gICAgbGV0IGFwcHJvdmVyc0RhdGE6IGFueSA9IHRoaXMuY29udmVydEFwcHJvdmFsV29ya2Zsb3coXG4gICAgICBwb2xpY3kuc2VsZWN0ZWRBcHByb3ZlcnNcbiAgICApO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHBvbGljeS5wb2xpY3lEdWVEYXRlPy4kZCA/PyBwb2xpY3kucG9saWN5RHVlRGF0ZTtcbiAgICBsZXQgcmV2aWV3ZXJGaWxlc0FycmF5ID0gY2xvbmVEZWVwKHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcyk7XG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IHJldmlld2VyRmlsZXNBcnJheS5tYXAoKGZpbGU6IGFueSkgPT4ge1xuICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlbmFtZTtcbiAgICAgIGZpbGUuZmlsZV9wYXRoID0gZmlsZS5maWxlcGF0aDtcbiAgICAgIGZpbGUub3JnX25hbWUgPSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGZpbGUuZmlsZW5hbWU7XG4gICAgICBkZWxldGUgZmlsZS5maWxlcGF0aDtcbiAgICAgIGRlbGV0ZSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGZpbGUubGlua1NldDtcbiAgICAgIHJldHVybiBmaWxlO1xuICAgIH0pO1xuXG4gICAgbGV0IGF0dGVzdGF0aW9uRmlsZXNBcnJheSA9IGNsb25lRGVlcChcbiAgICAgIHBvbGljeS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzXG4gICAgKTtcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gYXR0ZXN0YXRpb25GaWxlc0FycmF5Lm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIGVsZS5uYW1lID0gZWxlLmZpbGVuYW1lO1xuICAgICAgZWxlLmZpbGVfcGF0aCA9IGVsZS5maWxlcGF0aDtcbiAgICAgIGVsZS5vcmlnaW5hbF9maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZW5hbWU7XG4gICAgICBlbGUuZm9sZGVyX2lkID0gZWxlPy5mb2xkZXJfaWQgPyBlbGUuZm9sZGVyX2lkIDogMDtcbiAgICAgIGVsZS5wYXRoID0gZWxlPy5wYXRoID8gZWxlLnBhdGggOiBlbGUuZmlsZXBhdGggKyBlbGUuZmlsZW5hbWU7XG4gICAgICBlbGUuaXNMaW5rU2V0ID0gZWxlLmxpbmtTZXQ7XG4gICAgICBlbGUub3RoZXJfdHlwZSA9IGVsZT8ub3RoZXJzO1xuICAgICAgZGVsZXRlIGVsZS5maWxlbmFtZTtcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZXBhdGg7XG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGVsZS5saW5rU2V0O1xuICAgICAgZGVsZXRlIGVsZS5maWxlX25hbWU7XG4gICAgICBkZWxldGUgZWxlLm90aGVycztcbiAgICAgIHJldHVybiBlbGU7XG4gICAgfSk7XG4gICAgY29uc3QgcmV2aWV3ZXJJRCA9IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJldmlld2VycywgJ21lbWJlcl9pZCcpO1xuICAgIGNvbnN0IHBvbGljeUFjY2Vzc1VzZXJzSWRzID1cbiAgICAgIHRoaXMucmV0dXJuSWRzKHBvbGljeS5wb2xpY3lfYWNjZXNzX293bmVycywgJ21lbWJlcl9pZCcpID8/IFtdO1xuICAgIGNvbnN0IHBvbGljeUFjY2Vzc0dyb3Vwc0lkcyA9XG4gICAgICB0aGlzLnJldHVybklkcyhwb2xpY3kucG9saWN5X2FjY2Vzc19ncm91cHMsICdfaWQnKSA/PyBbXTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBwb2xpY3lfbmFtZTogcG9saWN5LnBvbGljeU5hbWUsXG4gICAgICBub3RlczogcG9saWN5LnBvbGljeU5vdGVzLFxuICAgICAgaXNfcG9ydGFsX2VuYWJsZTogcG9saWN5LmF2YWlsYWJsZU9uUG9ydGFsID8gMSA6IDAsXG4gICAgICBpc19zdWdnZXRpb25fZW5hYmxlOiBwb2xpY3kuYWNjZXB0U3VnZ2VzdGlvbnMgPyAxIDogMCxcbiAgICAgIGNhdGVnb3J5X2lkX2FycjogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkQ2F0ZWdvcmllcywgJ2l0ZW1faWQnKSxcbiAgICAgIGFwcHJvdmVyczogYXBwcm92ZXJzRGF0YSxcbiAgICAgIGFzc2lnbmVlX2lkczogdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIHBvbGljeT8uc2VsZWN0ZWRBc3NpZ25lZXMsXG4gICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICkubWFwKChpZCkgPT4gTnVtYmVyKGlkKSksXG4gICAgICB1c2VyZ3JvdXBfaWRzOiB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRHcm91cEFzc2lnbmVlLCAnX2lkJykgPz8gW10sXG4gICAgICBJc19hcHByb3ZhbDogMCwgLy9uZWVkcyB0byBjaGVjayBpbiBmZVxuXG4gICAgICBhc3NvY2lhdGVkX2RvY3VtZW50czogcG9saWN5LmFkZEFzc29jaWF0ZWREb2N1bWVudHNcbiAgICAgICAgPyBhdHRlc3RhdGlvbkZpbGVzXG4gICAgICAgIDogW10sXG5cbiAgICAgIGN1c3RvbV90YWdzOiBKU09OLnN0cmluZ2lmeShwb2xpY3kuY3VzdG9tVGFncyksXG5cbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgPyBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgOiAnJyxcbiAgICAgIGZyZXF1ZW5jeV90ZXh0OiBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMgPyBwb2xpY3kuZnJlcXVlbmN5X3RleHQgOiAnJyxcbiAgICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXG4gICAgICAgID8gcG9saWN5LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxuICAgICAgICA6IDAsXG4gICAgICBmYWlsZWRfdGltZTogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzID8gcG9saWN5LmZhaWxlZF90aW1lIDogJycsXG4gICAgICBtYXJrX2ZhaWxlZF9hZnRlcjogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXG4gICAgICAgID8gcG9saWN5Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICAgIDogJycsXG4gICAgICAvLyBzdGFydERhdGU6IHBvbGljeS5wb2xpY3lEdWVEYXRlLnRvRGF0ZVN0cmluZygpLFxuICAgICAgc3RhcnREYXRlOiBtb21lbnQoc3RhcnREYXRlKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWScpLFxuXG4gICAgICBSZXZpZXdlckF0dGFjaG1lbnRzOlxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlc1xuICAgICAgICAgID8gcmV2aWV3ZXJGaWxlc1xuICAgICAgICAgIDogW10sXG4gICAgICBSZXZpZXdlckxpbmtzOlxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rc1xuICAgICAgICAgID8gcG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzXG4gICAgICAgICAgOiBbXSxcbiAgICAgIFJldmlld2VyTWVtYmVySWQ6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcmV2aWV3ZXJJRFswXSA/IHJldmlld2VySURbMF0gOiAwLFxuICAgICAgaXNSZXZpZXc6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiZcbiAgICAgICAgICAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzIHx8XG4gICAgICAgICAgICBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MpICYmXG4gICAgICAgICAgcmV2aWV3ZXJJRFswXVxuICAgICAgICAgID8gMVxuICAgICAgICAgIDogMCxcblxuICAgICAgcmV2aWV3RmFpbGVkQWZ0ZXI6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgID8gcG9saWN5LnJldmlld0ZhaWxlZEFmdGVyXG4gICAgICAgICAgOiAwLFxuICAgICAgcmV2aWV3RmFpbGVkVGltZTpcbiAgICAgICAgcG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzXG4gICAgICAgICAgPyBwb2xpY3kucmV2aWV3RmFpbGVkVGltZVxuICAgICAgICAgIDogJycsXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X2RldGFpbHM6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgIDogJycsXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfdHlwZVxuICAgICAgICAgIDogJycsXG4gICAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOlxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgICA/IHBvbGljeS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlXG4gICAgICAgICAgOiAwLFxuXG4gICAgICBlbnRpdGllczogdGhpcy5wb2xpY3lGb3JtPy5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnNcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRSQ3MsICdpdGVtX2lkJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuICAgICAgcmlza19jbGFzczogcG9saWN5LnJpc2tSYXRpbmcudG9TdHJpbmcoKSxcblxuICAgICAgQ0NGYWlsRW1haWw6IHBvbGljeS5hZGRPdmVyc2VlcnNcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuQ0NGYWlsRW1haWwsICdlbXBsb3llZV9lbWFpbCcpLnRvU3RyaW5nKClcbiAgICAgICAgOiAnJyxcbiAgICAgIENDRW1haWw6IHBvbGljeS5hZGRPdmVyc2VlcnNcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuQ0NFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuXG4gICAgICBjaGVja3BvaW50RGV0YWlsczogcG9saWN5LmNoZWNrcG9pbnREZXRhaWxzID8/IFtdLFxuICAgICAgdG90YWxRdWVzdGlvbjogcG9saWN5LnRvdGFsUXVlc3Rpb24gPyBwb2xpY3kudG90YWxRdWVzdGlvbiA6IDAsIC8vXG4gICAgICBwYXNzaW5nTWFya3M6IHBvbGljeS5wYXNzaW5nTWFya3MgPyBwb2xpY3kucGFzc2luZ01hcmtzIDogMCwgLy9cblxuICAgICAgcG9saWN5QXBwcm92YWxGbGFnOiAwLFxuXG4gICAgICBpc19zaWduYXR1cmVfcmVxdWlyZWQ6IHBvbGljeS5yZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uID8gMSA6IDAsXG4gICAgICBjY191c2VyZ3JvdXBfaWRzOiB0aGlzLmNjRW1haWxPYmpJZHMsXG4gICAgICBjY19mYWlsX3VzZXJncm91cF9pZHM6IHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMsXG4gICAgICByZXZpZXdlcl9zdGFydF9kYXRlOiBwb2xpY3kucmV2aWV3ZXJfc3RhcnRfZGF0ZSA/PyAnJyxcbiAgICAgIGFzc2lnbmVlX3N0YXJ0X2RhdGU6IHBvbGljeS5hc3NpZ25lZV9zdGFydF9kYXRlLFxuICAgICAgcG9saWN5X3ZlcnNpb246IHBvbGljeS5hZGRWZXJzaW9uID8gcG9saWN5LnBvbGljeV92ZXJzaW9uIDogJycsXG4gICAgICBhc3Nlc3NtZW50OiBwb2xpY3kuYWRkTGlua0Fzc2Vzc21lbnRcbiAgICAgICAgPyBwb2xpY3kuYXNzZXNzbWVudC5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6IGVsZS5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGVsZS5jYXRlZ29yeV9pZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgICA6IFtdLFxuICAgICAgcG9saWN5X293bmVyczogdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMubWFwKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5tZW1iZXJfaWRcbiAgICAgICksXG4gICAgICBhcHByb3ZhbF93b3JrZmxvd19pZDogcG9saWN5Py5zZWxlY3RlZEFwcHJvdmVyc1swXT8uX2lkXG4gICAgICAgID8gW3BvbGljeT8uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/Ll9pZF1cbiAgICAgICAgOiBbXSxcbiAgICAgIGxpbmtQcm9ncmFtOiBPYmplY3Qua2V5cyhwb2xpY3k/LmxpbmtQcm9ncmFtKS5sZW5ndGhcbiAgICAgICAgPyBwb2xpY3k/LmxpbmtQcm9ncmFtXG4gICAgICAgIDoge1xuICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIGJ1c2luZXNzX2N5Y2xlOiBPYmplY3Qua2V5cyhwb2xpY3k/LmxpbmtQcm9ncmFtKS5sZW5ndGhcbiAgICAgICAgPyBwb2xpY3k/LmJ1c2luZXNzQ3ljbGVcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBwb2xpY3lfYWNjZXNzX3R5cGU6IHBvbGljeS5wb2xpY3lfYWNjZXNzX3R5cGUgPz8gMCxcbiAgICAgIHBvbGljeV9hY2Nlc3Nfb3duZXJzOiBwb2xpY3kuYXZhaWxhYmxlT25Qb3J0YWxcbiAgICAgICAgPyBbXVxuICAgICAgICA6IHBvbGljeUFjY2Vzc1VzZXJzSWRzID8/IFtdLFxuICAgICAgcG9saWN5X2FjY2Vzc19ncm91cHM6IHBvbGljeS5hdmFpbGFibGVPblBvcnRhbFxuICAgICAgICA/IFtdXG4gICAgICAgIDogcG9saWN5QWNjZXNzR3JvdXBzSWRzID8/IFtdLFxuICAgICAgZGlzcGxheU9uUG9ydGFsOiBwb2xpY3kuaXNQb3J0YWxEaXNwbGF5RW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgIGxpbmtlZFBvbGljaWVzOiBbLi4ubmV3IFNldChwb2xpY3kuTGlua2VkUG9saWNpZXMpXSxcbiAgICB9O1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5zdWJtaXRQb2xpY3kocGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcbiAgICAgICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGE/LmZpbGVOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxpbmtEb2N1bWVudFdpdGhQb2xpY3kodGhpcy5jb252ZXJ0RmlsZURhdGEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnRlbXBsYXRlSWQpIHtcbiAgICAgICAgICAgIHRoaXMub25UZW1wbGF0ZVNlbGVjdChbeyBfaWQ6IHRoaXMudGVtcGxhdGVJZCB9XSwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXG4gICAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcpIHtcbiAgICAgIGlmICh0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyAhPT0gMCkge1xuICAgICAgICBkZWxldGUgcGF5bG9hZC5hcHByb3ZlcnM7XG4gICAgICAgIHBheWxvYWQucG9saWN5QXBwcm92YWxGbGFnID0gMjtcbiAgICAgIH1cbiAgICAgIHRoaXMucG9saWN5U2VydmljZS51cGRhdGVQb2xpY3kocGF5bG9hZCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wb2xpY3lJZCA9IHJlcy5faWQ7XG5cbiAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZW5kRm9yQXR0ZXN0YXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgICAgICdUaGUgcG9saWN5IGhhcyBiZWVuIHNlbnQgZm9yIGF0dGVzdGF0aW9uJyxcbiAgICAgICAgICAgICAgICAnc3VjY2VzcydcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIHBvbGljeSBoYXMgYmVlbiB1cGRhdGVkJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVybCA9XG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArICcvYWxsL3BvbGljeS93b3Jrcm9vbT9pZD0nICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgICAgICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS93b3Jrcm9vbSddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAgICdhbGVydCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxpbmtEb2N1bWVudFdpdGhQb2xpY3koZG9jdW1lbnQ6IGFueSkge1xuICAgIGxldCB1cmw6c3RyaW5nID0gJyc7XG4gICAgaWYgKFxuICAgICAgZG9jdW1lbnQuZmlsZU5hbWUgJiZcbiAgICAgIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fFxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJyB8fFxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnZG9jeCcgfHxcbiAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnKVxuICAgICkge1xuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlXG4gICAgICAgIC5leHRyYWN0RmlsZShkb2N1bWVudC5maWxlRXh0ZW5zaW9uLCBkb2N1bWVudC5maWxlUGF0aCwgdGhpcy5wb2xpY3lJZClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgJiYgdGhpcy5wb2xpY3lJZCkge1xuICAgICAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgPT09ICdkb25lJyB8fCByZXMuY29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ2RvY3gnIHx8XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnRE9DWCdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHVybCA9IHRoaXMuYmFzZVVSTCArIEFQSS5lZGl0UG9saWN5ICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ3BkZicgfHxcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdQREYnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmJhc2VVUkwgKyBBUEkuZ29Ub1BvbGljeVdvcmtyb29tICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh1cmwsIHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcbiAgICAgICAgJ2FsZXJ0J1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogb3BlbnMgdGhlIGRhdGUgcGlja2VyIG9uIHBvbGljeSBmb3JtXG4gICAqL1xuICBvcGVuRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xuICAgIC8vIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNsb3NlcyB0aGUgZGF0ZSBwaWNrZXIgZnJvbSBwb2xpY3kgZm9ybVxuICAgKi9cbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuXG4gICAgaWYgKCFldnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIGxldCBtb250aEFycmF5ID0gW1xuICAgICAgICAnSmFuJyxcbiAgICAgICAgJ0ZlYicsXG4gICAgICAgICdNYXInLFxuICAgICAgICAnQXByJyxcbiAgICAgICAgJ01heScsXG4gICAgICAgICdKdW4nLFxuICAgICAgICAnSnVsJyxcbiAgICAgICAgJ0F1ZycsXG4gICAgICAgICdTZXAnLFxuICAgICAgICAnT2N0JyxcbiAgICAgICAgJ05vdicsXG4gICAgICAgICdEZWMnLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldERhdGUoKTtcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldE1vbnRoKCldO1xuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZXZ0Py5kYXRlPy4kZDtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cbiAgZWRpdFBvbGljeUZyb21Eb2N1bWVudHMoKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuICAgIHRoaXMuc2hpZnRUb0VkaXRNb2RlLmVtaXQoKTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gZmFsc2U7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5lZGl0UG9saWN5KCk7XG4gIH1cblxuICBjaGVja0ZvckNyZWF0ZURvY3VtZW50cygpIHtcbiAgICBjb25zdCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Nob3dDcmVhdGVEb2N1bWVudHMnKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZGF0YSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uKSB7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRQb2xpY3koKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuXG4gICAgaWYgKHRoaXMucG9saWN5SWQpIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5lZGl0UG9saWN5KHRoaXMucG9saWN5SWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlc1swXTtcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkcyA9IGRhdGEuY2F0ZWdvcnlfZGV0YWlsc19hcnIubWFwKFxuICAgICAgICAgICAgKGlkOiBhbnkpID0+IGlkLmNhdE9iaklkXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyA9IGRhdGEucG9saWN5QXBwcm92YWxGbGFnO1xuICAgICAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcyA9IGRhdGE/LmFwcHJvdmFsV29ya2Zsb3dEZXRhaWxzPy5tYXAoXG4gICAgICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3c/Ll9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW107XG4gICAgICAgICAgdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVycyA9IGRhdGE/LmFwcHJvdmVycztcbiAgICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3coY2F0ZWdvcnlJZHMsIGRhdGEpO1xuICAgICAgICAgIHRoaXMuZ2V0TGlua2VkUG9saWNpZXMoZGF0YT8uX2lkKTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUG9saWN5Rm9ybShkYXRhLCBjYXRlZ29yeUlkcyk7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihkYXRhKTtcbiAgICAgICAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSk7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVBvbGljeUFjY2Vzc0RldGFpbHMoZGF0YSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlUG9saWN5Rm9ybShkYXRhOiBhbnksIGNhdGVnb3J5SWRzOiBhbnkpIHtcbiAgICBjb25zdCByZXZpZXdlckZpbGVzID0gZGF0YS5SZXZpZXdlckF0dGFjaG1lbnRzLm1hcCgoZmlsZTogYW55KSA9PiB7XG4gICAgICBmaWxlLmZpbGVuYW1lID0gZmlsZS5uYW1lO1xuICAgICAgZmlsZS5maWxlcGF0aCA9IGZpbGUuZmlsZV9wYXRoO1xuICAgICAgZmlsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGZpbGUub3JnX25hbWU7XG4gICAgICBmaWxlLmZpbGVfbmFtZSA9IGZpbGUub3JnX25hbWU7XG4gICAgICBmaWxlLmxpbmtTZXQgPSAnJztcbiAgICAgIGRlbGV0ZSBmaWxlLm5hbWU7XG4gICAgICBkZWxldGUgZmlsZS5maWxlX3BhdGg7XG4gICAgICBkZWxldGUgZmlsZS5vcmdfbmFtZTtcblxuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfSk7XG4gICAgY29uc3QgYXR0ZXN0YXRpb25GaWxlcyA9IGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgZWxlLmZpbGVuYW1lID0gZWxlLm5hbWU7XG4gICAgICBlbGUuZmlsZXBhdGggPSBlbGUuZmlsZV9wYXRoO1xuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcbiAgICAgIGVsZS5maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lO1xuICAgICAgZWxlLmxpbmtTZXQgPSBlbGUuaXNMaW5rU2V0O1xuICAgICAgZWxlLm90aGVycyA9IGVsZT8ub3RoZXJfdHlwZTtcblxuICAgICAgZGVsZXRlIGVsZS5uYW1lO1xuICAgICAgZGVsZXRlIGVsZS5maWxlX3BhdGg7XG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcbiAgICAgIGRlbGV0ZSBlbGUuaXNMaW5rU2V0O1xuICAgICAgZGVsZXRlIGVsZT8ub3RoZXJfdHlwZTtcbiAgICAgIHJldHVybiBlbGU7XG4gICAgfSk7XG4gICAgY29uc3QgZ3JvdXBfZW1wbG95ZWVJZHMgPSBkYXRhLmdyb3VwX2VtcGxveWVlTmFtZXMubWFwKFxuICAgICAgKGlkOiBhbnkpID0+IGlkPy5lbXBsb3llZV9pZFxuICAgICk7XG4gICAgY29uc3QgZ3JvdXBfSWRzID0gZGF0YT8udXNlcmdyb3VwX2lkcz8ubWFwKChpZDogYW55KSA9PiBpZCkgPz8gW107XG5cbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5jYXRlZ29yeUxpc3QsXG4gICAgICBjYXRlZ29yeUlkcyxcbiAgICAgICdfaWQnXG4gICAgKTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2lkID0gZGF0YT8ucG9saWN5X2lkO1xuICAgICh0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IGRhdGEucG9saWN5X25hbWUpLFxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOb3RlcyA9IGRhdGEubm90ZXMpLFxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzID0gZGF0YS5jdXN0b21fdGFncyA/IGRhdGEuY3VzdG9tX3RhZ3MgOiBbXSk7XG5cbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPVxuICAgICAgZ3JvdXBfZW1wbG95ZWVJZHMubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLmFzc2lnbmVlc0xpc3QsIGdyb3VwX2VtcGxveWVlSWRzLCAnbXlfbWVtYmVyX2lkJylcbiAgICAgICAgOiBbXTsgLy9kb3VidCBpbiBuYW1lXG5cbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlID1cbiAgICAgIGdyb3VwX0lkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZ3JvdXBfSWRzLCAnX2lkJylcbiAgICAgICAgOiBbXTtcblxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IGRhdGEuZW50aXRpZXNcbiAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMucmNMaXN0LCBkYXRhLmVudGl0aWVzLnNwbGl0KCcsJyksICdpdGVtX2lkJylcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gZGF0YS5DQ0ZhaWxFbWFpbFxuICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRmFpbEVtYWlsLCAnZW1wbG95ZWVfZW1haWwnKVxuICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cCA9XG4gICAgICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzLFxuICAgICAgICAgICdfaWQnXG4gICAgICAgIClcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IGRhdGEuQ0NFbWFpbFxuICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgZGF0YS5DQ0VtYWlsLnNwbGl0KCcsJyksXG4gICAgICAgICdlbXBsb3llZV9lbWFpbCdcbiAgICAgIClcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9XG4gICAgICBkYXRhPy5jY191c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBkYXRhPy5jY191c2VyZ3JvdXBfaWRzLCAnX2lkJylcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSBkYXRhLmVuYWJsZVBvcnRhbCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBkYXRhLmVuYWJsZVN1Z2dlc3Rpb24gPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb24gPSBkYXRhLmlzX3NpZ25hdHVyZV9yZXF1aXJlZFxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yaXNrUmF0aW5nID0gZGF0YS5yaXNrX2NsYXNzID8gTnVtYmVyKGRhdGEucmlza19jbGFzcykgOiAxO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50c1xuICAgICAgPyB7XG4gICAgICAgIGZvcm1hdEZpbGVzOiBhdHRlc3RhdGlvbkZpbGVzLFxuICAgICAgfVxuICAgICAgOiB7IGZvcm1hdEZpbGVzOiBbXSB9O1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZGF0YS5zdGFydERhdGVcbiAgICAgID8gbW9tZW50KGRhdGEuc3RhcnREYXRlKVxuICAgICAgOiBtb21lbnQoKTtcbiAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSBkYXRhLmNoZWNrcG9pbnRzXG4gICAgICA/IGRhdGEuY2hlY2twb2ludHNcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSBkYXRhLnRvdGFsX21hcmtzID8gZGF0YS50b3RhbF9tYXJrcyA6IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IGRhdGEucGFzc19tYXJrcyA/IGRhdGEucGFzc19tYXJrcyA6IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzID0gZGF0YS5SZXZpZXdlckF0dGFjaG1lbnRzXG4gICAgICA/IHtcbiAgICAgICAgZm9ybWF0RmlsZXM6IHJldmlld2VyRmlsZXMsXG4gICAgICAgIGZvcm1hdExpbmtzOiBkYXRhLlJldmlld2VyTGlua3MsXG4gICAgICB9XG4gICAgICA6IHsgZm9ybWF0RmlsZXM6IFtdLCBmb3JtYXRMaW5rczogW10gfTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID1cbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBkYXRhLlJldmlld2VyTWVtYmVySWQgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzID1cbiAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMgPVxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwIHx8XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggPiAwXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID1cbiAgICAgIGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLmNjRW1haWxPYmpJZHMgPVxuICAgICAgZGF0YT8uY2NfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCA/IGRhdGE/LmNjX3VzZXJncm91cF9pZHMgOiBbXTtcbiAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID1cbiAgICAgIGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkc1xuICAgICAgICA6IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gZGF0YT8uYXNzZXNzbWVudCA/PyBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnQgPSBkYXRhPy5hc3Nlc3NtZW50Py5sZW5ndGg7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZFZlcnNpb24gPSBkYXRhPy5wb2xpY3lfdmVyc2lvbiA/IHRydWUgOiBmYWxzZTtcbiAgICAvLyB0aGlzLmNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCk7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uID0gZGF0YS5wb2xpY3lfdmVyc2lvbjtcbiAgICB0aGlzLnBvbGljeUZvcm0ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzLnByb2dyYW0gPVxuICAgICAgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHMgJiYgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHM/Lmxlbmd0aFxuICAgICAgICA/IGRhdGE/LnByb2dyYW1DYXREZXRhaWxzWzBdXG4gICAgICAgIDoge307XG4gICAgdGhpcy5zZWxlY3RlZExpbmtQcm9ncmFtID1cbiAgICAgIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzICYmIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzPy5sZW5ndGhcbiAgICAgICAgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGE/LnByb2dyYW1DYXREZXRhaWxzWzBdKSlcbiAgICAgICAgOiB7fTtcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICB9XG4gIGNoYW5nZU5hbWUoZXZlbnQ6IHN0cmluZykge1xuICAgIGxldCB0ZXh0ID0gZXZlbnQ7XG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPCguKj8pPi9naSwgJycpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgdHlwZVNlbGVjdGVkKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycyA9IGV2ZW50O1xuICB9XG4gIG9uVmVyc2lvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgcmVnZXhNYXRjaCA9IG5ldyBSZWdFeHAoJ15bQS1aYS16MC05XFxcXC4tXSokJyk7XG4gICAgdGhpcy5pc1ZlcnNpb25WYWxpZCA9IHJlZ2V4TWF0Y2gudGVzdCh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pO1xuICAgIGlmICghdGhpcy5pc1ZlcnNpb25WYWxpZCkge1xuICAgICAgaWYgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvbj8ubGVuZ3RoID4gMjApIHtcbiAgICAgICAgdGhpcy52ZXJzaW9uRXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAnWW91ciBpbnB1dCBpcyBpbnZhbGlkLiBUaGUgdmVyc2lvbiBmaWVsZCBjYW4gb25seSBpbmNsdWRlIG51bWJlcnMsIGFscGhhYmV0cywgaHlwaGVuIG9yIGRvdHMuIFRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBpcyAyMCBjaGFyYWN0ZXJzLic7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuaXNWZXJzaW9uVmFsaWQgJiZcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvbj8ubGVuZ3RoID4gMjBcbiAgICApIHtcbiAgICAgIHRoaXMudmVyc2lvbkVycm9yTWVzc2FnZSA9XG4gICAgICAgICdZb3VyIGlucHV0IGlzIGludmFsaWQuIFRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBpcyAyMCBjaGFyYWN0ZXJzLic7XG4gICAgfVxuICB9XG5cbiAgLy90aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIHdoZW4gd2UgY2xpY2sgb24gZGl2IHNlbGVjdFxuICBjbGlja0FwcHJvdmFsV29ya2Zsb3coZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSBldmVudDtcbiAgICB0aGlzLmNyZWF0ZUFwcHJvdmFsQ2xpY2sgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xuICB9XG5cbiAgbGlzdENhbmNlbENsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICAgICAgLy8gdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdGVkQXBwcm92YWxXb3JrZmxvdyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW2V2ZW50XTtcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dJZHMgPSBldmVudD8uX2lkID8gW2V2ZW50Py5faWRdIDogW107XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW2V2ZW50XTtcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgdXBkYXRlZFByb2dyYW1EZXRhaWxzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ubGlua1Byb2dyYW0gPSBldmVudD8ubGlua1Byb2dyYW07XG4gICAgdGhpcy5wb2xpY3lGb3JtLnByb2dyYW1TZWxlY3RlZFZhbHVlcyA9IGV2ZW50Py5zZWxlY3RlZFZhbHVlcztcbiAgICB0aGlzLnBvbGljeUZvcm0uYnVzaW5lc3NDeWNsZSA9IGV2ZW50Py5idXNpbmVzc0N5Y2xlO1xuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gIH1cblxuICBvbkFzc2Vzc21lbnRTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gW2V2ZW50XTtcbiAgfVxuICBnZXRBc3Nlc3NtZW50RGV0YWlscyhhc3Nlc3NtZW50RGV0YWlsczogYW55LCB0eXBlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgIC5nZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeURldGFpbHMgPSByZXNbMF0uY2F0ZWdvcnkuZmluZChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLl9pZCA9PSBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudCA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkLFxuICAgICAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlsczoge1xuICAgICAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgICAgICAgICBxdWVzdGlvbnM6IHJlc1swXS5xdWVzdGlvbnNDb3VudCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE93bmVyc09uTG9hZCgpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV0sXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gIH1cblxuICBhcHByb3ZhbFdvcmtmbG93QVBJQ2FsbChldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyxcbiAgICAgICAgJ19pZCdcbiAgICAgICk7XG4gICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29udmVydEFwcHJvdmFsV29ya2Zsb3coYXBwcm92ZXJMaXN0OiBhbnkpIHtcbiAgICBsZXQgcmV0dXJuSnNvbjogYW55ID0ge307XG4gICAgY29uc3QgbW9kaWZpZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhcHByb3Zlckxpc3QpKTtcbiAgICBtb2RpZmllZERhdGE/LmZvckVhY2goKHdvcmtmbG93OiBhbnkpID0+IHtcbiAgICAgIHdvcmtmbG93Py5hcHByb3ZhbF93b3JrZmxvdz8uZm9yRWFjaCgoYXBwcm92ZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgaSA9IGluZGV4ICsgMTtcbiAgICAgICAgcmV0dXJuSnNvblsnbGV2ZWwnICsgaV0gPSBhcHByb3ZlcjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByZXR1cm5Kc29uO1xuICB9XG5cbiAgZGVsZXRlTGV2ZWwoaW5kZXg6IGFueSkge1xuICAgIC8vIEFwcHJvdmVyIExldmVsIGRlbGV0ZVxuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3cuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBmb3IgKFxuICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgIGkgPCB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93Lmxlbmd0aDtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3dbaW5kZXhdWydsZXZlbDEnXSA9PT1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bJ2FsaWFzX25hbWUnXVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXS5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bXG4gICAgICAgICAgJ2FsaWFzX25hbWUnXG4gICAgICAgIF0gPSBgTGV2ZWwgJHtpICsgMX1gO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93W2luZGV4XVsnbGV2ZWwxJ10gPSBgTGV2ZWwgJHtpICsgMVxuICAgICAgICB9YDtcbiAgICB9XG4gIH1cblxuICBlZGl0V29ya2Zsb3coZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgdGhpcy5lZGl0QXBwcm92YWxXb3JrZmxvdyA9IGV2ZW50O1xuICAgIHRoaXMuY3JlYXRlQXBwcm92YWxDbGljayA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XG4gIH1cblxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIHdoZW4gd2UgY2xpY2sgb24gQ1JFQVRFIEEgTkVXIEFQUFJPVkFMIFdPUktGTE9XXG4gIGNyZWF0ZUFwcHJvdmFsV29ya2Zsb3coKSB7XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcbiAgICB0aGlzLmNyZWF0ZUFwcHJvdmFsQ2xpY2sgPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VDbGlja2VkQ3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgZWRpdExldmVsQ2xpY2tlZChlZGl0TGV2ZWw6IGFueSwgaW5kZXg6IGFueSkge1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgdGhpcy5lZGl0V29ya2Zsb3dMZXZlbCA9IHtcbiAgICAgIGVkaXRMZXZlbDogZWRpdExldmVsLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgIH07XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgfVxuXG4gIHNldEFjY2Vzc0ZpZWxkKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID0gZXZlbnQ7XG4gICAgaWYgKGV2ZW50ID09IDApIHtcbiAgICAgIC8vIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMudXNlcnNBY2Nlc3NMaXN0O1xuICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdwb2xpY3lBY2Nlc3MnLCB7XG4gICAgICAgIHVzZXJzOiB0aGlzLnVzZXJzQWNjZXNzTGlzdCxcbiAgICAgICAgZ3JvdXBzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJzQWNjZXNzTGlzdEJ5Q2F0ZWdvcnkoY2F0ZWdvcnlEZXRhaWxzOiBhbnkpIHtcbiAgICBsZXQgdW5pcXVlVXNlcnM6IGFueSA9IFtdO1xuICAgIGxldCB1bmlxdWVHcm91cHNJZDogYW55ID0gW107XG4gICAgdW5pcXVlVXNlcnMgPSB1bmlxQnkoXG4gICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9tYW5hZ2Vycz8uY29uY2F0KFxuICAgICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9hcHByb3ZlcnMsXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX2F1dGhvcnNcbiAgICAgICksXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gICAgdGhpcy51c2Vyc0FjY2Vzc0xpc3QgPSB1bmlxdWVVc2VycztcbiAgICB0aGlzLnVzZXJzQWNjZXNzTGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMudXNlcnNBY2Nlc3NMaXN0LCAnbWVtYmVyX2lkJyk7XG5cbiAgICB1bmlxdWVHcm91cHNJZCA9IFtcbiAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYXV0aG9yX3VzZXJncm91cF9pZHM/LmNvbmNhdChcbiAgICAgICAgICBjYXRlZ29yeURldGFpbHM/Lm93bmVyX3VzZXJncm91cF9pZHNcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBdO1xuICAgIHRoaXMuZ3JvdXBzQWNjZXNzTGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgdW5pcXVlR3JvdXBzSWQsXG4gICAgICAnX2lkJ1xuICAgICk7XG4gICAgdGhpcy5ncm91cHNBY2Nlc3NMaXN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICB0aGlzLmdyb3Vwc0FjY2Vzc0xpc3QsXG4gICAgICAnZ3JvdXBfaWQnXG4gICAgKTtcbiAgfVxuXG4gIHBvcHVsYXRlUG9saWN5QWNjZXNzRGV0YWlscyhwb2xpY3lEZXRhaWxzOiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID0gcG9saWN5RGV0YWlscz8ucG9saWN5X2FjY2Vzc190eXBlO1xuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycyxcbiAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19ncm91cHMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3VwcyxcbiAgICAgICAgJ19pZCdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRQb2xpY3lBY2Nlc3NEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID09IDApIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IFtdO1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfZ3JvdXBzID0gW107XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRnJlcXVlbmN5KCkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9ICcnO1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9ICcnO1xuICAgIHRoaXMucG9saWN5Rm9ybS5tYXJrX2ZhaWxlZF9hZnRlciA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmZhaWxlZF90aW1lID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc2lnbmVlX3N0YXJ0X2RhdGUgPSAnJztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9ICcnO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gJyc7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9ICcnO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gMDtcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAnSG93IG9mdGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSBhdHRlc3RlZD8nO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBkb2N1bWVudENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlUGlja2VyT2JqZWN0ID0ge1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgY2xhc3M6ICdlZmZlY3RpdmUtZGF0ZScsXG4gICAgICBwb3B1cDogdGhpcy5kYXRlUGlja2VyUG9wVXAsXG4gICAgICBjb21wb25lbnQ6IHRoaXMuZGF0ZVBpY2tlcixcbiAgICAgIG92ZXJsYXk6IHRoaXMuZGF0ZVBpY2tlck92ZXJsYXksXG4gICAgfTtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuaGFuZGxlRG9jdW1lbnRDbGljayhkYXRlUGlja2VyT2JqZWN0KTtcbiAgfVxuXG4gIG9uVGVtcGxhdGVTZWxlY3QoZXZlbnQ6IGFueSwgaXNQcmVzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKGV2ZW50Py5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudGVtcGxhdGVWaWV3ID0gZmFsc2U7XG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UudGVtcGxhdGVWaWV3Lm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuXG4gICAgY29uc3QgdW5hbWUgPSB0aGlzLnVzZXJJbmZvID8gdGhpcy51c2VySW5mby5uYW1lIDogJyc7XG4gICAgY29uc3QgdWlkID0gdGhpcy5tZW1iZXJfb2JqX2lkO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKCk7XG4gICAgY29uc3QgaWQgPSB0aGlzLnBvbGljeUlkO1xuICAgIHRoaXMudGVtcGxhdGVJZCA9IGV2ZW50WzBdPy5faWQ7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlXG4gICAgICAuc2F2ZVBvbGljeURldGFpbHModW5hbWUsIHVpZCwgaWQsIG5hbWUsICcnLCAwKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVWaWV3ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0TmF2aWdhdGlvblVybCgpO1xuICAgICAgICBpZiAoaXNQcmVzZWxlY3RlZCkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1RlbXBsYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0TmF2aWdhdGlvblVybCgpIHtcbiAgICBjb25zdCBiYXNVcmwgPVxuICAgICAgdGhpcy5iYXNlVVJMICtcbiAgICAgICcvYWxsL3BvbGljeS9lZGl0LXBvbGljeT9pZD0nICtcbiAgICAgIHRoaXMucG9saWN5SWQgK1xuICAgICAgJyZ0ZW1wbGF0ZUlkPScgK1xuICAgICAgdGhpcy50ZW1wbGF0ZUlkO1xuICAgIHRoaXMudGVtcGxhdGVVcmwgPSBiYXNVcmw7XG4gIH1cblxuICBuYXZpZ2F0ZVRvVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh0aGlzLnRlbXBsYXRlVXJsLCB0cnVlKTtcbiAgfVxufVxuIiwiPCEtLSA8cD53b3JrZmxvdy1wb2xpY3kgd29ya3MhPC9wPiAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93Q3JlYXRlRG9jdW1lbnRzXCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1wb2xpY3lcIj5cbiAgICA8IS0tIFBvbGljeSBOYW1lIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5TmFtZVwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW3NyY109XCJBU1NFVFMud2hhdFwiXG4gICAgICAgICAgYWx0PVwibmFtZVwiXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8ucG9saWN5TmFtZSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lOYW1lICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgICAgUG9saWN5IE5hbWUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImFjdGl2ZVNlbGVjdG9yID0gJ25hbWUnXCJcbiAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0ucG9saWN5TmFtZSA9PSAnJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgZmFsc2UpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBjaGFuZ2VOYW1lKCRldmVudClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgcG9saWN5XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUubGVuZ3RoICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgcG9saWN5Rm9ybS5wb2xpY3lOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgdHJ1ZSlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcG9saWN5Rm9ybS5wb2xpY3lOYW1lLnRyaW0oKVwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBQbGVhc2UgZW50ZXIgYSBuYW1lIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBvbGljeUZvcm0ucG9saWN5Tm90ZXNcIlxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICAgICAgPCEtLSA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cImF2YWlsYWJpbGl0eU9uUG9ydGFsKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIERvIHlvdSB3YW50IHRoaXMgcG9saWN5IHRvIGJlIGF2YWlsYWJsZSBvbiB0aGUgcG9ydGFsP1xuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuIEl0IGlzIGxpa2UgYSBzaGFyZWQgY2F0YWxvZyBvZiBhbGwgYWN0aXZlICYgdXBkYXRlZCBwb2xpY2llcyB0aGF0IGFueSBsb2dnZWQgaW4gdXNlciBjYW4gcmVhZC9kb3dubG9hZCBmb3IgcmVmZXJlbmNlLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQWNjZXB0IHN1Z2dlc3Rpb25zXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIGVuYWJsZWQsIHVzZXJzIGNhbiBwcm92aWRlIGltcHJvdmVtZW50IHN1Z2dlc3Rpb25zIHRvIHRoZSBwb2xpY2llcyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIFBvbGljeSBQb3J0YWwuJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXG4gICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUG9saWN5IENhdGVnb3J5IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmNhc2VfY2F0ZWdvcnlcIlxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgPlBvbGljeSBDYXRlZ29yeSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPT0gMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NhdGVnb3J5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIGNhdGVnb3J5IGZvciB0aGlzIHBvbGljeS5cIlxuICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JywgY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnkuaXRlbV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5Lml0ZW1fbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhdGVnb3J5LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGg+MVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wbHVzXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMCwyKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JyxjYXRlZ29yeSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2F0ZWdvcnkuaXRlbV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJjYXRlZ29yeS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNjYXRlZ29yeSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY2F0ZWdvcnkgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JywgY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjYXRlZ29yeS5pdGVtX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgY2F0ZWdvcnkgZm9yIHRoaXMgcG9saWN5LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIiAqbmdJZj1cInBvbGljeUZvcm0/LmN1c3RvbVRhZ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcG9saWN5Rm9ybT8uY3VzdG9tVGFnc1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+e3sgdGFnLnRhZ25hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWcudmFsdWVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHRhZy50YWduYW1lIH19XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVmZmVjdGl2ZSBEYXRlIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy53aGVuXCIgYWx0PVwiXCIgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RWZmZWN0aXZlIERhdGU8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXRpbWUtcGlja2VyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBlZmZlY3RpdmUgZGF0ZSBvZiB0aGUgcG9saWN5LlwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cbiAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTsgY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBQb2xpY3kgT3duZXIgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3duZXJzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXJzJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtLnBvbGljeV9vd25lcnM/Lmxlbmd0aFwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmltX2NyZWF0aW5nXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0ucG9saWN5X293bmVycz8ubGVuZ3RoXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlBPTElDWSBPV05FUihTKTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVycycsIHRydWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxuICAgICAgICAgICAgICBTZWxlY3Qgb3duZXJzIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeV9vd25lcnM/Lmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvd25lcnMnLCBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzWzBdLCAwKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LnBvbGljeV9vd25lcnNbMF0/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LnBvbGljeV9vd25lcnNbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lVc2VyUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgKyB7eyBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzLmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMSB2eC1tci0xXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICZcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInU2FtYW50aGEgSm9uZXMnXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPlNhbWFudGhhIEpvbmVzPC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9saWN5R3JvdXBQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgKzRcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9saWN5VXNlclBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3duZXIgb2YgcG9saWN5Rm9ybT8ucG9saWN5X293bmVycyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3duZXI/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXJzJywgb3duZXIsIGkgKyAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3duZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUdyb3VwUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgWzEsIDEsIDEsIDEsIDEsIDEsIDFdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ0hhcnNodmFyZGhhbiBLYXJpd2FsYSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJzaHZhcmRoYW4gS2FyaXdhbGFcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVycycsIHRydWUpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcG9saWN5Rm9ybT8ucG9saWN5X293bmVycz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlbGVjdCBvd25lcnMgZm9yIHRoaXMgcG9saWN5LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmV2aWV3IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcbiAgICAgIFwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiIXBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiIHNyYz1cIkFTU0VUUy5yZXZpZXdlclwiIGFsdD1cIlwiIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYWRkUmV2aWV3ZXJzXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SRVZJRVc8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicmV2aWV3U2VsZWN0aW9uIHZ4LXAtMyB2eC1wYi0wXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1iLTFcIj5cbiAgICAgICAgICAgICAgRG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkP1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIG5hbWU9XCJyZXZpZXctdHlwZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwidHlwZVNlbGVjdGVkKHRydWUpXCJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0zXCI+XG4gICAgICAgICAgICAgICAgWUVTXG4gICAgICAgICAgICAgIDwvZGl2PjwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIG5hbWU9XCJyZXZpZXctdHlwZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIiFwb2xpY3lGb3JtPy5hZGRSZXZpZXdlcnNcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInR5cGVTZWxlY3RlZChmYWxzZSlcIlxuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTNcIj5cbiAgICAgICAgICAgICAgICBOT1xuICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+UkVWSUVXRVI8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxuICAgICAgICAgICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciByZXZpZXdpbmcgdGhpcyBwb2xpY3lcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxuICAgICAgICAgICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NhbWFudGhhIEpvbmVzJ1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyByZXZpZXdlcj8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0zXCI+UkVWSUVXIEZSRVFVRU5DWTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID09ICcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCdXR0b24gdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXG4gICAgICAgICAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0QnV0dG9uUGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWRzIHRvIGJlIHJldmlld2VkP1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgU0VUIEEgRlJFUVVFTkNZXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlckZyZXF1ZW5jeScgJiZcbiAgICAgICAgICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFRleHQgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgU2VsZWN0IHRoZSByZXZpZXcgc2NoZWR1bGUgZm9yIHRoaXMgcG9saWN5LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXcgQXBwcm92YWwgV29ya2Zsb3cgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXBwcm92ZXJzJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycz8ubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmFwcHJvdmFsXCJcbiAgICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhcHByb3ZlcnMnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiIFtjbGFzcy5kaXNhYmxlZF09XCJwb2xpY3lBcHByb3ZhbEZsYWcgIT09IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgICA+QVBQUk9WQUwgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgY3JlYXRlQXBwcm92YWxXb3JrZmxvdygpOyBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcmVhdGVOZXdCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQ1JFQVRFIEEgTkVXIEFQUFJPVkFMIFdPUktGTE9XXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgIXNlbGVjdGVkV29ya2Zsb3dbMF0/LndvcmtmbG93X25hbWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIGNsaWNrQXBwcm92YWxXb3JrZmxvdyh0cnVlKTsgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2VsZWN0IHRoZSBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBwb2xpY3lcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW10LTIgdngtbWItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVXb3JrZmxvdygpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwic2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBzZWxlY3RlZFdvcmtmbG93WzBdPy53b3JrZmxvd19uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0V29ya2Zsb3coc2VsZWN0ZWRXb3JrZmxvd1swXSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhcHByb3ZhbCBvZiBzZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvdztcbiAgICAgICAgICAgICAgICBsZXQgYXBwcm92YWxJbmRleCA9IGluZGV4XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxldmVsLWxlZnQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGV2ZWwtbmFtZSB2eC1mcy05IHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1saC0zXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy5hbGlhc19uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gYXBwcm92YWw/LmFsaWFzX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbD8ubGV2ZWwxXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYWxpYXNfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGFwcHJvdmFsPy5hbGlhc19uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWw/LmxldmVsMVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy05IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy50eXBlID09PSBcIlJPVU5EUk9CSU5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiUk9VTkQtUk9CSU5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwcHJvdmFsPy50eXBlID09PSBcIkFOWU9ORVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJBTlkgT05FXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbD8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yIHZ4LW1sLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICAgID4gLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdzZXF1ZW50aWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy5hcHByb3ZlcnM/Lmxlbmd0aCA8IDJcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgMSA9PSBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggPyBcIkZpbmFsXCIgOiAxIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdzZXF1ZW50aWFsJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXBwcm92YWw/LmFwcHJvdmVyc1swXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IGFwcHJvdmFsPy5hcHByb3ZlcnNbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndvcmtmbG93UG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICt7eyBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3dvcmtmbG93UG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwcm92ZXIgb2YgYXBwcm92YWw/LmFwcHJvdmVycyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcHJvdmFsSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhcHByb3Zlcj8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3NlcXVlbnRpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbEluZGV4ICsgMSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJGaW5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbEluZGV4ICsgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwcm92ZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdExldmVsQ2xpY2tlZChhcHByb3ZhbCxhcHByb3ZhbEluZGV4KVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlTGV2ZWwoYXBwcm92YWxJbmRleClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGVCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTlhZTs8L2k+IERFTEVURVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92YWxfd29ya2Zsb3c/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAhcG9saWN5QXBwcm92YWxGbGFnICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWxlY3Qgb3IgY3JlYXRlIGFuIGFwcHJvdmFsIHdvcmtmbG93IGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFBvbGljeSBBY2Nlc3MgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3BvbGljeUFjY2VzcydcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3BvbGljeUFjY2VzcycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwidHJ1ZVwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAhcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgIXBvbGljeUZvcm0/LmF2YWlsYWJsZU9uUG9ydGFsXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5sb2NrX3Njb3BlXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UE9MSUNZIFBPUlRBTCBBQ0NFU1M8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5hdmFpbGFibGVPblBvcnRhbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwb2xpY3lBY2Nlc3MnLCB0cnVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgV2hvIHNob3VsZCBiZSBhYmxlIHRvIHZpZXcgdGhpcyBwb2xpY3k/XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItM1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbXQtMiB2eC1tYi0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwb2xpY3lBY2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1swXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1swXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1swXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvbGljeUFjY2Vzc1BvcG92ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgJlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhY2Nlc3NHcm91cCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjY2Vzc0dyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUFjY2Vzc1BvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyIG9mIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInVzZXI/LmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncG9saWN5QWNjZXNzJywgdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXI/LmVtcGxveWVlX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2FjY2Vzc0dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX3R5cGUgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhY2Nlc3NHcm91cCcsIGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3BvbGljeUFjY2VzcycsIHRydWUpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidngtbXQtNCB2eC1tYi0yXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BvbGljeUZvcm1BY2Nlc3NUeXBlJ1wiIFtjaGVja2VkXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfdHlwZSA9PT0gMFwiIChjaGVja2VkRXZlbnQpPVwic2V0QWNjZXNzRmllbGQoMClcIlxuICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0XCI+XG4gICAgICAgICAgICAgICAgICAgIEV2ZXJ5b25lIHdobyBoYXMgYWNjZXNzIHRvIHRoaXMgUG9saWN5IENhdGVnb3J5XG4gICAgICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCIncG9saWN5Rm9ybUFjY2Vzc1R5cGUnXCIgW2NoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCIgKGNoZWNrZWRFdmVudCk9XCJzZXRBY2Nlc3NGaWVsZCgxKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1tdC0xXCJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dFwiPlxuICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdXNlcnMvZ3JvdXBzXG4gICAgICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgID5WaXNpYmxlIHRvIEFsbCBDdXJyZW50ICYgRnV0dXJlIFVzZXJzPC9zcGFuXG4gICAgICAgICAgICA+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3BvbGljeUFjY2VzcycsIHRydWUpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0IHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTJcIj5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCB8fFxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgID5BQ0NFUFQgU1VHR0VTVElPTlNcbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTEgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAnSWYgZW5hYmxlZCwgdXNlcnMgY2FuIHByb3ZpZGUgaW1wcm92ZW1lbnQgc3VnZ2VzdGlvbnMgdG8gdGhlIHBvbGljaWVzIHRoYXQgYXJlIGxpc3RlZCBvbiB0aGUgUG9saWN5IFBvcnRhbC4nXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgPjwvYXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBdHRlc3RhdGlvbnMgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuYXR0ZXN0YXRpb25zXCIgYWx0PVwiXCIgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BVFRFU1RBVElPTlM8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XG4gICAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29ucyByZXF1aXJlZCB0byBhdHRlc3QgdG8gdGhpcyBQb2xpY3lcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NhbWFudGhhIEpvbmVzJ1wiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlNhbWFudGhhIEpvbmVzPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lBdHRlc3RhdGlvblBvcG92ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICs0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUF0dGVzdGF0aW9uUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgWzEsIDEsIDEsIDEsIDEsIDEsIDFdXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidIYXJzaHZhcmRoYW4gS2FyaXdhbGEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhhcnNodmFyZGhhbiBLYXJpd2FsYVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTJcIj5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICAgID5SRVFVSVJFUyBFLVNJR05BVFVSRSBGT1IgQVRURVNUQVRJT05cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTEgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAnUmVxdWlyZXMgZS1zaWduYXR1cmUgZm9yIGF0dGVzdGF0aW9uIGluZm8gdGV4dCBoZXJlLi4uJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiPldIRU4/PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJ1dHRvbiB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCdXR0b25QbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFdoYXQgaXMgdGhlIGF0dGVzdGF0aW9uIHNjaGVkdWxlIGZvciB0aGlzPGJyIC8+cG9saWN5P1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZVwiPlxuICAgICAgICAgICAgICBTRVQgQSBGUkVRVUVOQ1lcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFRleHQgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPlxuICAgICAgICAgICAgICBFdmVyeSBXZWRuZXNkYXkgYnkgMTE6NTkgcG1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIlxuICAgICAgICAgICAgPkFTU0VTU01FTlQgT0YgVU5ERVJTVEFORElORzwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2V0IHVwIGEgcXVlc3Rpb25uYWlyZSB0byBjb25maXJtIHRoZSByZWFkZXLigJlzPGJyIC8+dW5kZXJzdGFuZGluZ1xuICAgICAgICAgICAgICBvZiB0aGUgcG9saWN5LlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCI+NSBRdWVzdGlvbnM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBcHByb3ZhbCBXb3JrZmxvdyAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgICpuZ0lmPVwiZmFsc2VcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2FwcHJvdmVycycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5hcHByb3ZhbFwiXG4gICAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXBwcm92ZXJzJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cCBhcHByb3ZhbC13b3JrZmxvd1wiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInBvbGljeUFwcHJvdmFsRmxhZyAhPT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgICBBcHByb3ZhbCB3b3JrZmxvdyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xuICAgICAgICAgICAgICAgIGFkZE1vcmVMZXZlbHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHdvcmtmbG93VHlwZSA9ICdTRVFVRU5USUFMJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENyZWF0ZSBhIG5ldyBBcHByb3ZhbCBXb3JrZmxvd1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYXBwcm92ZXJXb3JrRmxvd0xpc3Q/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjcy1zZWxlY3RcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRBcHByb3ZhbFdvcmtmbG93XCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRXb3JrZmxvd0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYXBwcm92YWwgd29ya2Zsb3cgZm9yIHRoaXMgcG9saWN5J1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RlZEFwcHJvdmFsV29ya2Zsb3dcIlxuICAgICAgICAgICAgICBbc2V0TWF4V2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjcy1vcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhcHByb3ZlcldvcmtGbG93TGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZGF0YS53b3JrZmxvd19uYW1lIH19XG4gICAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxuICAgICAgICAgICAgICA8Y3Mtb3B0aW9uXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIi0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgIGFkZE1vcmVMZXZlbHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+Q3JlYXRlIGEgbmV3IGFwcHJvdmFsIHdvcmtmbG93PC9jcy1vcHRpb25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGV2ZWwgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRpdGxlXCI+TGV2ZWwge3sgaSArIDEgfX08L3A+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7IGxldmVsLm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcHJvdmVyIG9mIGxldmVsLmFwcHJvdmVycy5zbGljZSgwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXBwcm92ZXJzJywgYXBwcm92ZXIsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBcIiAqbmdJZj1cImxldmVsLm5hbWUgPT0gJ1NFUVVFTlRJQUwnXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBqICsgMVxuICAgICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICA+e3sgYXBwcm92ZXIubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsZXZlbC5hcHByb3ZlcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGFiZWxOYW1lLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICArXG5cbiAgICAgICAgICAgICAgICAgICAge3sgbGV2ZWwuYXBwcm92ZXJzLnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2xhYmVsTmFtZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcHJvdmVyIG9mIGxldmVsLmFwcHJvdmVycyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhcHByb3ZlcnMnLCBhcHByb3ZlciwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGV2ZWwubmFtZSA9PSAnU0VRVUVOVElBTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPT0gbGV2ZWwuYXBwcm92ZXJzLnNsaWNlKDEpLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJGaW5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGogKyAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHByb3Zlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUsIGxldmVsLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBhcHByb3ZlcnNMaXN0SW5kZXggPSBpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idG5cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd29ya2Zsb3dMZXZlbCcsIGxldmVsLCBpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxuICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAhcG9saWN5QXBwcm92YWxGbGFnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2VsZWN0IG9yIGNyZWF0ZSBhbiBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBwb2xpY3kuXG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPjxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYWRkTW9yZUxldmVscyA9IHRydWU7XG4gICAgICAgICAgICAgICAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICsgQWRkIE1vcmUgTGV2ZWxzXG4gICAgICAgICAgICA8L2J1dHRvbj48L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBXaG8gLyBub3cgQXR0ZXN0YXRpb24gLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWduZWVzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWduZWVzJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmNhc2VfYXNzaWduZWVzXCJcbiAgICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BdHRlc3RhdGlvbjwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbWItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAocG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwICYmICFncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgICAgIChwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICBncm91cEVuYWJsZWQgJiZcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID09IDApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbmVlcycsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2VsZWN0IHRoZSBwZXJzb25zIHJlc3BvbnNpYmxlIGZvciBhdHRlc3RpbmcgdGhpcyBwb2xpY3kuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFncm91cEVuYWJsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzaWduZWUgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBhc3NpZ25lZSlcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3NpZ25lZS5lbXBsb3llZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IGFzc2lnbmVlLmVtcGxveWVlX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXNzaWduZWVQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwRW5hYmxlZFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwRW5hYmxlZCAmJiBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZSgnYXNzaWduZWVzJywgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXNbMF0pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlc1swXT8uZW1wbG95ZWVfbmFtZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlc1swXT8uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlVzZXJQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICZcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgICdncm91cEFzc2lnbmVlcycsXG4gICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlWzBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWVbMF0/Lmdyb3VwX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZS5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25lZXMnLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcbiAgICAgICAgICAgICAgKChwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgICFncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgICAgICAgKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmXG4gICAgICAgICAgICAgICAgICBncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgICAgICAgKGlzU2VuZEZvckF0dGVzdGF0aW9uICYmXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09PSAwKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBpZD1cIndob3ZhbGlkYXRlbXNnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29ucyByZXF1aXJlZCB0byBhdHRlc3QgdG8gdGhpcyBQb2xpY3kuXG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICBbKG5nVmFsdWUpXT1cInBvbGljeUZvcm0ucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgIGNsYXNzPVwid2hvLXRvZ2dsZVwiXG4gICAgICAgICAgICA+VEhJUyBQT0xJQ1kgUkVRVUlSRVMgRS1TSUdOQVRVUkUgRk9SIEFUVEVTVEFUSU9OXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCB0aGUgcmVhZGVycyB3aWxsIGJlIHJlcXVpcmVkIHRvIGF0dGVzdCB0aGlzIHBvbGljeSB1c2luZyB0aGVpciBlbGVjdHJvbmljIHNpZ25hdHVyZS4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICA+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNhc3NpZ25lZVBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFzc2lnbmVlIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGFzc2lnbmVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWUuZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI1VzZXJQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBhc3NpZ25lZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlLmVtcGxveWVlX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBBc3NpZ25lZXMnLCBkYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciAtLT5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcG9saWN5Rm9ybT8uQ0NFbWFpbCB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjY0VtYWlsJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2YgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjR3JvdXBFbWFpbCcsIGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgIDwhLS0gb3ZlcnNlZXIgZW5kIC0tPlxuXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciBmYWlsIHN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJGYWlsUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWwgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2NGYWlsJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyRmFpbEdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0dyb3VwRmFpbEVtYWlsJywgZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgPCEtLSBvdmVyc2VlciBmYWlsIGVuZCAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gV2hlbiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+V2hlbj88L2xhYmVsPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyA9PSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0IGZyZXF1ZW5jeS1jdXN0b20taW5wdXRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICBTZXQgQSBmcmVxdWVuY3lcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAhPSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWNcIlxuICAgICAgICAgID4gLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAhPSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWMgc2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdmcmVxdWVuY3knLCByYylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+e3sgZnJlcXVlbmN5UGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxuICAgICAgICAgICAgICAoKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmXG4gICAgICAgICAgICAgICAgIWdyb3VwRW5hYmxlZCkgfHxcbiAgICAgICAgICAgICAgICAoKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcbiAgICAgICAgICAgICAgICAgIGdyb3VwRW5hYmxlZCkpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2VsZWN0IGFuIGF0dGVzdGF0aW9uIHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8IS0tIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5FZmZlY3RpdmUgRGF0ZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS10aW1lLXBpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIGRhdGUgZnJvbSB3aGljaCB0aGlzIHBvbGljeSBnb2VzIGludG8gZWZmZWN0LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlICB8IGRhdGU6ICdkZCBNTU0geXl5eSdcIiAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXIgI2RhdGVQaWNrZXIgKG9uU2VsZWN0KT1cImRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7Y2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCIgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW92ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIiAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENoZWNrcG9pbnRzIC8gQXNzZXNzbWVudCBvZiBVbmRlcnN0YW5kaW5nIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cInRydWVcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgICBBc3Nlc3NtZW50IG9mIFVuZGVyc3RhbmRpbmdcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgKm5nSWY9XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoPT09MFwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2V0IHVwIGEgcXVlc3Rpb25uYWlyZSB0byBjb25maXJtIHRoZSByZWFkZXLigJlzIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvbGljeS5cIiByZWFkb25seT4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWlucHV0XCI+XG4gICAgICAgICAgICAgIFNldCB1cCBhIHF1ZXN0aW9ubmFpcmUgdG8gY29uZmlybSB0aGUgcmVhZGVy4oCZczxiciAvPnVuZGVyc3RhbmRpbmdcbiAgICAgICAgICAgICAgb2YgdGhlIHBvbGljeS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj57e3BvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGggKyAocG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA+IDEgPycgQ2hlY2twb2ludHMnOicgQ2hlY2twb2ludCcpfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrcG9pbnQtcG9pbnQtdGV4dCBmaXJzdFwiPlRPVEFMIFBPSU5UUzogPHNwYW4gY2xhc3M9XCJub1wiPnt7cG9saWN5Rm9ybT8udG90YWxRdWVzdGlvbn19PC9zcGFuPjxicj48ZW0+RWFjaCBxdWVzdGlvbiBjYXJyaWVzIDEgcG9pbnQ8L2VtPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC1wb2ludC10ZXh0XCI+UE9JTlRTIFJFUVVJUkVEIFRPIEFUVEVTVCA6IDxzcGFuIGNsYXNzPVwibm9cIj57e3BvbGljeUZvcm0/LnBhc3NpbmdNYXJrc319PC9zcGFuPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NoZWNrcG9pbnRzJywgcG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHMpXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiPnt7XG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCArXG4gICAgICAgICAgICAgICAgICAocG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgPyBcIiBRdWVzdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiIFF1ZXN0aW9uXCIpXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8YXBwLXBvcG92ZXIgI2NoZWNrcG9pbnRQb3BPdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hlY2twb2ludCBvZiBwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscyB8IHNsaWNlOiAxOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjaGVja3BvaW50cycsY2hlY2twb2ludCxqKzEpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnQ/LnF1ZXN0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmlzayBDbGFzc2lmaWNhdGlvbiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgICpuZ0lmPVwic2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiAmJiBmYWxzZVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtLnJpc2tSYXRpbmdcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5yaXNrc1wiIGFsdD1cImltXCIgKm5nSWY9XCIhcG9saWN5Rm9ybT8ucmlza1JhdGluZ1wiIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnJpc2tSYXRpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SaXNrIENsYXNzaWZpY2F0aW9uPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xhc3NpZmljYXRpb25cIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImxvd1wiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjbGFzcyBvZiByaXNrQ2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY2xhc3MuY2xhc3NdXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjbGFzcy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicG9saWN5Rm9ybT8ucmlza1JhdGluZyA9PT0gY2xhc3MudmFsdWVcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5yaXNrUmF0aW5nXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgY2xhc3MubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVyc1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlclwiXG4gICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1wiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmVzcG9uc2liaWxpdHkgQ2VudGVyPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHRoYXQgdGhpcyBwb2xpY3kgcmVsYXRlcyB0by5cIlxuICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByYyBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8uc2xpY2UoMCwgMSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmMuaXRlbV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHJjLml0ZW1fbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmNQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmNQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCByYyBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJjLml0ZW1fbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVmVyc2lvbiAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkVmVyc2lvblwiXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzXCJcbiAgICAgICAgICBhbHQ9XCJuYW1lXCJcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5WRVJTSU9OPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvblwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uVmVyc2lvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU3BlY2lmeSB0aGUgcG9saWN5IHZlcnNpb24uXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cIiFpc1ZlcnNpb25WYWxpZFwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB2ZXJzaW9uRXJyb3JNZXNzYWdlIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZXZpZXdlciAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFJldmlld2VycyAmJiBmYWxzZVwiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcicgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlckZyZXF1ZW5jeScgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLnJldmlld2VyXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXZpZXdlciA8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIHJldmlld2luZyB0aGlzIHBvbGljeVwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXIubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWxlY3QgYSByZXZpZXdlciBmb3IgdGhpcyBwb2xpY3kuXG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPldoZW4/IDwvbGFiZWw+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9PSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJyZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFNldCBBIGZyZXF1ZW5jeVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZCBidXR0b24tc2VjXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj57eyByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlbGVjdCB0aGUgcmV2aWV3IHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2VcbiAgICAgICAgICAgICh1cGRhdGVGaWxlcyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdlcl9hdHRhY2htZW50cycsICRldmVudClcIlxuICAgICAgICAgICAgI2Zvcm1hdEV2aWRlbmNlXG4gICAgICAgICAgICBbbW9kZV09XCIncG9saWN5UmV2aWV3ZXInXCJcbiAgICAgICAgICAgIFtvcmdhbml6YXRpb25faWRdPVwib3JnYW5pemF0aW9uX2lkXCJcbiAgICAgICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicG9saWN5Rm9ybT8uZG9jdW1lbnRzQW5kTGlua3NcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2FwcC1mb3JtYXQtYW5kLWV2aWRlbmNlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBPdmVyc2VlciAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZE92ZXJzZWVyc1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRW1haWwnIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnY2NGYWlsJ1xuICAgICAgXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjY0VtYWlsJyAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRmFpbCcgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMCB8fCBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID09IDApIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRW1haWwnIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRmFpbCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRW1haWwnICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRmFpbCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk92ZXJzaWdodDwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0VtYWlsJywgdHJ1ZSlcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBzaG91bGQgaGF2ZSBvdmVyc2lnaHQgb2YgdGhpcyBwb2xpY3k/XCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbC5sZW5ndGggPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXBFbmFibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjY0VtYWlsIG9mIHBvbGljeUZvcm0/LkNDRW1haWw/LnNsaWNlKDAsIDEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0VtYWlsJywgY2NFbWFpbClcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjY0VtYWlsLmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgY2NFbWFpbC5lbXBsb3llZV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNjRW1haWxQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwRW5hYmxlZFwiIGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cEVuYWJsZWQgJiYgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2NFbWFpbCcsIHBvbGljeUZvcm0/LkNDRW1haWxbMF0pXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NFbWFpbFswXS5lbXBsb3llZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDRW1haWxbMF0uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgJlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0dyb3VwRW1haWwnLCBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWxbMF0pXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsWzBdPy5ncm91cF9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0VtYWlsJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA9PSAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0ZhaWwnLCB0cnVlKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcG9saWN5IGlzIG5vdCBhdHRlc3RlZCBvbiB0aW1lP1wiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXBFbmFibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjY0ZhaWwgb2YgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/LnNsaWNlKDAsIDEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0ZhaWwnLCBjY0ZhaWwpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2NGYWlsLmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgY2NGYWlsLmVtcGxveWVlX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2NGYWlsUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cEVuYWJsZWRcIiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBFbmFibGVkICYmIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NjRmFpbCcsIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdKVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdPy5lbXBsb3llZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdPy5lbXBsb3llZV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlckZhaWxQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAmXG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoJ2NjR3JvdXBGYWlsRW1haWwnLCBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwWzBdKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cFswXT8uZ3JvdXBfbmFtZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwWzBdPy5ncm91cF9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJGYWlsR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0ZhaWwnLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNjY0VtYWlsUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY2NFbWFpbCBvZiBwb2xpY3lGb3JtPy5DQ0VtYWlsIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjRW1haWwnLCBjY0VtYWlsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgY2NFbWFpbC5lbXBsb3llZV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjY2NGYWlsUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY2NGYWlsIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjRmFpbCcsIGNjRmFpbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNjRmFpbC5lbXBsb3llZV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZWxhdGVkIERvY3VtZW50cyAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHNcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcz8ubGVuZ3RoID09IDBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmZvcm1hdF9ldmlkZW5jZVwiXG4gICAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UkVMQVRFRCBET0NVTUVOVFM8L2xhYmVsPlxuICAgICAgICAgIDxhcHAtZm9ybWF0LWFuZC1ldmlkZW5jZVxuICAgICAgICAgICAgKHVwZGF0ZUZpbGVzKT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc29jaWF0ZWREb2N1bWVudHMnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFttb2RlXT1cIidwb2xpY3knXCJcbiAgICAgICAgICAgIFtvcmdhbml6YXRpb25faWRdPVwib3JnYW5pemF0aW9uX2lkXCJcbiAgICAgICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicG9saWN5Rm9ybT8uYXNzb2NpYXRlZERvY3VtZW50c1wiXG4gICAgICAgICAgPjwvYXBwLWZvcm1hdC1hbmQtZXZpZGVuY2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExpbmsgUHJvZ3JhbXMgJiBSZXNwb25zaWJpbGl0aWVzIC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYWRkTGlua1Byb2dyYW1cIlxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdsaW5rUHJvZ3JhbSdcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2xpbmtQcm9ncmFtJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgICBwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5saW5rX2l0ZW1zXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgICAgICA+TElOSyBQUk9HUkFNUyAmIFJFU1BPTlNJQklMSVRJRVM8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2xpbmtQcm9ncmFtJywgdHJ1ZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2VsZWN0IFByb2dyYW1zICYgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZTxiciAvPmFzc29jaWF0ZWQgd2l0aFxuICAgICAgICAgICAgICB0aGlzIHBvbGljeS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ2xpbmtQcm9ncmFtJywgcG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8ubmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8ubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtUmVzcG9uc2liaWxpdHlQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICArNFxuICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlclxuICAgICAgICAgICAgICAjcHJvZ3JhbVJlc3BvbnNpYmlsaXR5UG9wb3ZlclxuICAgICAgICAgICAgICBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbMSwgMSwgMSwgMSwgMSwgMSwgMV1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdSZXBvcnRpbmcgaW5mb3JtYXRpb24gc2VjdXJpdHkgd2Vha25lc3NlcydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRpbmcgaW5mb3JtYXRpb24gc2VjdXJpdHkgd2Vha25lc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2xpbmtQcm9ncmFtJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExpbmsgQXNzZXNzbWVudCAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnRcIlxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdpc0Fzc2Vzc21lbnQnXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdpc0Fzc2Vzc21lbnQnICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnQ/Lmxlbmd0aFwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5hc3Nlc3NtZW50c1wiXG4gICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5hc3Nlc3NtZW50Py5sZW5ndGhcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgQVNTRVNTTUVOVFM8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCB0cnVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxuICAgICAgICAgICAgICBTZWxlY3QgYXNzZXNzbWVudHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXM8YnIgLz5wb2xpY3kuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0uYXNzZXNzbWVudFswXT8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtLmFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlclxuICAgICAgICAgICAgICAjcHJvZ3JhbVJlc3BvbnNpYmlsaXR5UG9wb3ZlclxuICAgICAgICAgICAgICBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXNzZXNzbWVudCBvZiBwb2xpY3lGb3JtLmFzc2Vzc21lbnQgfCBzbGljZSA6IDFcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCB0cnVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTGluayBSZWxhdGVkIFBvbGljZXMgLS0+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkTGlua1BvbGljaWVzXCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSBDT05TVEFOVFMuTElOS19QT0xJQ1lcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2lzTGlua2VkUG9saWNlcycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiU2VsZWN0ZWRMaXN0T2ZQb2xpY2llc1wiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCIhU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcz8ubGVuZ3RoXCJcbiAgICAgICAgICBbc3JjXT1cIkxJTktTLmxpbmtlZFBvbGljeUltYWdlXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlNlbGVjdGVkTGlzdE9mUG9saWNpZXM/Lmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIFt4bWxuc109XCJMSU5LUy5jaGVja2VkXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgUkVMQVRFRCBQT0xJQ0lFUzwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJTZWxlY3RlZExpc3RPZlBvbGljaWVzPy5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2lzTGlua2VkUG9saWNlcycsIHRydWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XG4gICAgICAgICAgICAgIFNlbGVjdCBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBvbGljeSBvZiBTZWxlY3RlZExpc3RPZlBvbGljaWVzLnNsaWNlKDAsIDEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKENPTlNUQU5UUy5MSU5LX1BPTElDWSwgcG9saWN5Py5jb250cmFjdF9pZClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3k/LmNvbnRyYWN0X25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgcG9saWN5Py5jb250cmFjdF9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJTZWxlY3RlZExpc3RPZlBvbGljaWVzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbGF0ZWRQb2xpY3kucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBTZWxlY3RlZExpc3RPZlBvbGljaWVzPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gQ09OU1RBTlRTLkxJTktfUE9MSUNZXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKENPTlNUQU5UUy5MSU5LX1BPTElDWSwgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmVsYXRlZFBvbGljeSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9saWN5IG9mIFNlbGVjdGVkTGlzdE9mUG9saWNpZXMgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShDT05TVEFOVFMuTElOS19QT0xJQ1ksIHBvbGljeT8uY29udHJhY3RfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBvbGljeT8uY29udHJhY3RfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmlzUG9ydGFsRGlzcGxheUVuYWJsZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInBvbGljeUZvcm0/LkxpbmtlZFBvbGljaWVzID09IDBcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3aG8tdG9nZ2xlXCJcbiAgICAgICAgICAgID5ESVNQTEFZIE9OIFRIRSBQT0xJQ1kgUE9SVEFMXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiQ09OU1RBTlRTLkxJTktfUE9MSUNZX0hFTFBfVEVYVFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxhcHAtY2hlY2tib3gtbGlzdFxuICAgIFtjb25maWddPVwiY2F0ZWdvcnlDb25maWdcIlxuICAgIFt0d29Db2x1bW5dPVwiZmFsc2VcIlxuICAgIFtpdGVtc0xpc3RdPVwiY2F0ZWdvcnlMaXN0XCJcbiAgICBbc2VsZWN0ZWRJdGVtc109XCJwb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllc1wiXG4gICAgW2lkZW50aWZpZXJLZXldPVwiJ19pZCdcIlxuICAgIFtkaXNwbGF5S2V5XT1cIidpdGVtX25hbWUnXCJcbiAgICBbdG9vbHRpcEtleV09XCInaXRlbV9uYW1lJ1wiXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXG4gICAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgKGNsb3NlTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gICAgW2xvYWRlZF09XCIhY2F0ZWdvcmllc0xpc3RMb2FkZWRcIlxuICA+XG4gIDwvYXBwLWNoZWNrYm94LWxpc3Q+XG4gIDwhLS0gPGFwcC1jaGVja2JveC1saXN0IFtjb25maWddPVwiYXBwcm92YWxXb3JrZmxvd0NvbmZpZ1wiIFt0d29Db2x1bW5dPVwidHJ1ZVwiXG4gIFtpdGVtc0xpc3RdPVwiXCJcbiAgW3NlbGVjdGVkSXRlbXNdPVwicG9saWN5Rm9ybS5pc3N1ZUNDVXNlcnNcIiBbaWRlbnRpZmllcktleV09XCInZW1wbG95ZWVfZW1haWwnXCIgW2Rpc3BsYXlLZXldPVwiJ2VtcGxveWVlX25hbWUnXCIgW3Rvb2x0aXBLZXldPVwiJ2VtcGxveWVlX2VtYWlsJ1wiXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3I9PT0nSVNTVUVfQ0MnXCIgKHNhdmVMaXN0KT1cInNlbGVjdG9yQWN0aW9uKCRldmVudCwnSVNTVUVfQ0MnKVwiXG4gIChjbG9zZUxpc3QpPVwiZmllbGREZXNlbGVjdG9yKCdJU1NVRV9DQycpXCI+XG48L2FwcC1jaGVja2JveC1saXN0PiAtLT5cblxuICA8YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cInJjTGlzdFwiXG4gICAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRSQ3NcIlxuICAgIFtyY0lkS2V5XT1cIidpdGVtX2lkJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmMnLCAkZXZlbnQpXCJcbiAgICAoY2xvc2VSY0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIFtsb2FkZWRdPVwicmNMaXN0TG9hZGVkXCJcbiAgPlxuICA8L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XG5cbiAgPGFwcC1saW5rLXJlbGF0ZWQtcG9saWNpZXNcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSBDT05TVEFOVFMuTElOS19QT0xJQ1lcIlxuICAgIFtwb2xpY3lJZF09XCJwb2xpY3lJZFwiXG4gICAgW21vZGVdPVwibW9kZVwiXG4gICAgW3NlbGVjdGVkUG9saWNpZXNdPVwiU2VsZWN0ZWRMaXN0T2ZQb2xpY2llc1wiXG4gICAgKGNsb3NlTGlua1BvbGljeUxpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIChzZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdChDT05TVEFOVFMuTElOS19QT0xJQ1ksICRldmVudClcIlxuICA+PC9hcHAtbGluay1yZWxhdGVkLXBvbGljaWVzPlxuXG4gIDxhcHAtdXNlcnMtcmFkaW8tbGlzdFxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxuICAgIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxuICAgIFt1c2Vyc0xpc3RdPVwiYWxsUmV2aWV3ZXJzXCJcbiAgICBbaGVhZGVyVGV4dF09XCInU2VsZWN0IGEgUmV2aWV3ZXInXCJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzXCJcbiAgICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcbiAgICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXInLCAkZXZlbnQpXCJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICA+XG4gIDwvYXBwLXVzZXJzLXJhZGlvLWxpc3Q+XG5cbiAgPGFwcC1vd25lci1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRW1haWwnICYmICFncm91cEVuYWJsZWRcIlxuICAgIFt1c2Vyc0xpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXG4gICAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxuICAgIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uQ0NFbWFpbFwiXG4gICAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcbiAgICBbaXRlbU5hbWVLZXldPVwiJ2VtcGxveWVlX25hbWUnXCJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjY0VtYWlsJywgJGV2ZW50KVwiXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgPlxuICA8L2FwcC1vd25lci1saXN0PlxuXG4gIDx1c2VyLWdyb3VwLWxpc3RcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2NFbWFpbCcgJiYgZ3JvdXBFbmFibGVkXCJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICAgIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0VtYWlsXCJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicG9saWN5Rm9ybS5DQ0dyb3VwRW1haWxcIlxuICAgIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRW1haWwnLCAkZXZlbnQpXCJcbiAgICAoY2FuY2VsKT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbZmVhdHVyZWZsYWddPVwiZ3JvdXBFbmFibGVkXCJcbiAgPlxuICA8L3VzZXItZ3JvdXAtbGlzdD5cblxuICA8YXBwLW93bmVyLWxpc3RcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2NGYWlsJyAmJiAhZ3JvdXBFbmFibGVkXCJcbiAgICBbdXNlcnNMaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxuICAgIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtLkNDRmFpbEVtYWlsXCJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxuICAgIFtpdGVtTmFtZUtleV09XCInZW1wbG95ZWVfbmFtZSdcIlxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRmFpbCcsICRldmVudClcIlxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID5cbiAgPC9hcHAtb3duZXItbGlzdD5cblxuICA8dXNlci1ncm91cC1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRmFpbCcgJiYgZ3JvdXBFbmFibGVkXCJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICAgIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbFwiXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cFwiXG4gICAgKHNhdmUpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2NGYWlsJywgJGV2ZW50KVwiXG4gICAgKGNhbmNlbCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gICAgW2ZlYXR1cmVmbGFnXT1cImdyb3VwRW5hYmxlZFwiXG4gID5cbiAgPC91c2VyLWdyb3VwLWxpc3Q+XG5cbiAgPGFwcC1ncm91cC11c2Vycy1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcycgJiYgIWdyb3VwRW5hYmxlZFwiXG4gICAgW3VzZXJzTGlzdF09XCJhc3NpZ25lZXNMaXN0XCJcbiAgICBbZ3JvdXBzTGlzdF09XCJvdmVyc2Vlckdyb3Vwc0xpc3RcIlxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxuICAgIFt1c2VySWRLZXldPVwiJ215X21lbWJlcl9pZCdcIlxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbmVlcycsICRldmVudClcIlxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID5cbiAgPC9hcHAtZ3JvdXAtdXNlcnMtbGlzdD5cblxuICA8dXNlci1ncm91cC1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcycgJiYgZ3JvdXBFbmFibGVkXCJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICAgIFt1c2VybGlzdF09XCJvd25lcmxpc3RcIlxuICAgIFtncm91cExpc3RdPVwib3ZlcnNlZXJHcm91cHNMaXN0XCJcbiAgICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcbiAgICAoY2FuY2VsKT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWVcIlxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxuICAgIFtmZWF0dXJlZmxhZ109XCJncm91cEVuYWJsZWRcIlxuICA+XG4gIDwvdXNlci1ncm91cC1saXN0PlxuXG4gIDxhcHAtb3duZXItbGlzdFxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnICYmIGZhbHNlXCJcbiAgICBbbGlzdEhlYWRpbmddPVwiJ1NlbGVjdCBBcHByb3ZlcnMnXCJcbiAgICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXG4gICAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXG4gICAgW3VzZXJzTGlzdF09XCJhbGxBcHByb3ZlcnNcIlxuICAgIFtzaG93V29ya2Zsb3ddPVwidHJ1ZVwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwiXG4gICAgICBhZGRNb3JlTGV2ZWxzXG4gICAgICAgID8gW11cbiAgICAgICAgOiBwb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW2FwcHJvdmVyc0xpc3RJbmRleF0uYXBwcm92ZXJzXG4gICAgXCJcbiAgICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcbiAgICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXBwcm92ZXJzJywgJGV2ZW50KVwiXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwid29ya2Zsb3dUeXBlXCJcbiAgICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxuICAgIFt3b3JrZmxvd0xpc3RdPVwid29ya2Zsb3dMaXN0XCJcbiAgICBbd29ya2Zsb3dUZXh0XT1cIidBcHByb3ZhbCBXb3JrZmxvdydcIlxuICA+XG4gIDwvYXBwLW93bmVyLWxpc3Q+XG5cbiAgPGFwcC1mcmVxdWVuY3ktY29udGFpbmVyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxuICAgIFttb2RlXT1cIidwb2xpY3knXCJcbiAgICBbZnJlcXVlbmN5RGV0YWlsc109XCJmcmVxdWVuY3lEZXRhaWxzXCJcbiAgICAoc2VsZWN0ZWRGcmVxdWVuY3kpPVwiZnJlcXVlbmN5RGF0YSgkZXZlbnQpXCJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICBbcGFnZVR5cGVdPVwiJ3BvbGljeSdcIlxuICAgIChjbG9zZUZyZXF1ZW5jeSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxuXG4gIDxhcHAtZnJlcXVlbmN5LWNvbnRhaW5lclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcIlxuICAgIFttb2RlXT1cIidyZXZpZXdlckZyZXF1ZW5jeSdcIlxuICAgIFtmcmVxdWVuY3lEZXRhaWxzXT1cInJldmlld2VyRnJlcXVlbmN5RGV0YWlsc1wiXG4gICAgKHNlbGVjdGVkRnJlcXVlbmN5KT1cInJldmlld2VyRnJlcXVlbmN5RGF0YSgkZXZlbnQpXCJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICBbcGFnZVR5cGVdPVwiJ3BvbGljeSdcIlxuICAgIChjbG9zZUZyZXF1ZW5jeSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxuXG4gIDx2Yy1saW5rLXByb2dyYW1cbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnbGlua1Byb2dyYW0nXCJcbiAgICAoY2xvc2UpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIFtwb2xpY3ldPVwicG9saWN5Rm9ybVwiXG4gICAgW3NlbGVjdGVkUHJvZ3JhbV09XCJwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXNcIlxuICAgIFttb2RlXT1cIm1vZGVcIlxuICAgIFtzZWxlY3RlZExpbmtQcm9ncmFtXT1cInNlbGVjdGVkTGlua1Byb2dyYW1cIlxuICAgIChjaGFuZ2VUYWIpPVwiY2hhbmdlVGFiKCdsaW5rZWRQcm9ncmFtcycpXCJcbiAgICAodXBkYXRlZFByb2dyYW1EZXRhaWxzKT1cInVwZGF0ZWRQcm9ncmFtRGV0YWlscygkZXZlbnQpXCJcbiAgPlxuICA8L3ZjLWxpbmstcHJvZ3JhbT5cblxuICA8YXBwLWNoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXJcbiAgICAoY2xvc2VDaGVja1BvaW50KT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbY2hlY2twb2ludERhdGFdPVwicG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHNcIlxuICAgIFtyZXF1aXJlZFBvaW50XT1cInBvbGljeUZvcm0/LnBhc3NpbmdNYXJrc1wiXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXG4gICAgKHNhdmVDaGVja1BvaW50KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NoZWNrcG9pbnRzJywgJGV2ZW50KVwiXG4gID48L2FwcC1jaGVja3BvaW50cy1wb2xpY3ktY29udGFpbmVyPlxuICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuXG4gIDxhcHAtYXBwcm92YWwtd29ya2Zsb3dcbiAgICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsV29ya2Zsb3dcIlxuICAgIFtzZWxlY3RlZENhdGVnb3J5XT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllc1wiXG4gICAgW2FwcHJvdmVyV29ya0Zsb3dMaXN0XT1cImFwcHJvdmVyV29ya0Zsb3dMaXN0XCJcbiAgICBbYWxsQXBwcm92ZXJzXT1cImFsbEFwcHJvdmVyc1wiXG4gICAgKGxpc3RDYW5jZWxDbGlja2VkKT1cImxpc3RDYW5jZWxDbGlja2VkKCRldmVudClcIlxuICAgIChzZWxlY3RlZFdvcmtmbG93TmV4dCk9XCJzZWxlY3RlZEFwcHJvdmFsV29ya2Zsb3coJGV2ZW50KVwiXG4gICAgKHNhdmVBcHByb3ZhbFdvcmtmbG93KT1cImFwcHJvdmFsV29ya2Zsb3dBUElDYWxsKCRldmVudClcIlxuICAgIFtlZGl0QXBwcm92YWxXb3JrZmxvd109XCJlZGl0QXBwcm92YWxXb3JrZmxvd1wiXG4gICAgW2NyZWF0ZUFwcHJvdmFsQ2xpY2tdPVwiY3JlYXRlQXBwcm92YWxDbGlja1wiXG4gICAgKGNsb3NlQ3JlYXRlQ2xpY2tlZCk9XCJjbG9zZUNsaWNrZWRDcmVhdGVGb3JtKClcIlxuICAgIFtlZGl0V29ya2Zsb3dMZXZlbF09XCJlZGl0V29ya2Zsb3dMZXZlbFwiXG4gID48L2FwcC1hcHByb3ZhbC13b3JrZmxvdz5cbiAgPCEtLSA8YXBwLXNlbGVjdC1hcHByb3ZlcnM+PC9hcHAtc2VsZWN0LWFwcHJvdmVycz4gLS0+XG5cbiAgPGFwcC1wb2xpY3ktYWNjZXNzXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3BvbGljeUFjY2VzcydcIlxuICAgIFtwb2xpY3lBY2Nlc3NUeXBlXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfdHlwZVwiXG4gICAgKGNsb3NlKT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbb3JnVXNlcnNMaXN0XT1cInVzZXJzTGlzdFwiXG4gICAgW3VzZXJzQWNjZXNzTGlzdF09XCJ1c2Vyc0FjY2Vzc0xpc3RcIlxuICAgIFtncm91cExpc3RdPVwib3ZlcnNlZXJHcm91cHNMaXN0XCJcbiAgICBbZ3JvdXBzQWNjZXNzTGlzdF09XCJncm91cHNBY2Nlc3NMaXN0XCJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1wiXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzXCJcbiAgICBbZGlzYWJsZWRJZHNdPVwidXNlcnNBY2Nlc3NMaXN0SWRzXCJcbiAgICBbZGlzYWJsZWRHcm91cElkc109XCJncm91cHNBY2Nlc3NMaXN0SWRzXCJcbiAgICBbZnV0dXJlVXNlcnNXaWxsU2VsZWN0XT1cInBvbGljeUZvcm0/LmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgncG9saWN5QWNjZXNzJywgJGV2ZW50KVwiXG4gICAgKHNldFBvbGljeUFjY2Vzc1R5cGUpPVwicG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPSAkZXZlbnRcIlxuICA+XG4gIDwvYXBwLXBvbGljeS1hY2Nlc3M+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q3JlYXRlRG9jdW1lbnRzXCI+XG4gIDwhLS0gPGFwcC1jcmVhdGUtZG9jdW1lbnRzICpuZ0lmPVwic2hvd0NyZWF0ZURvY3VtZW50c1wiXG4gICBbb3JnYW5pemF0aW9uX2lkXT1cIm9yZ2FuaXphdGlvbl9pZFwiXG4gICBbbWVtYmVyX29ial9pZF09XCJtZW1iZXJfb2JqX2lkXCJcbiAgIFt1c2VySW5mb109XCJ1c2VySW5mb1wiXG4gICBbcG9saWN5SWRdPVwicG9saWN5SWRcIlxuICAgW3BvbGljeU5hbWVdPVwicG9saWN5Rm9ybS5wb2xpY3lOYW1lXCJcbiAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJkaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKVwiXG4gICAoZWRpdFBvbGljeSk9XCJlZGl0UG9saWN5RnJvbURvY3VtZW50cygpXCJcbiAgID48L2FwcC1jcmVhdGUtZG9jdW1lbnRzPiAtLT5cbiAgPGxpYi1kb2N1bWVudC1zZWN0aW9uXG4gICAgKm5nSWY9XCJzaG93Q3JlYXRlRG9jdW1lbnRzXCJcbiAgICBbdGVtcGxhdGVWaWV3XT1cInRlbXBsYXRlVmlld1wiXG4gICAgW29yZ2FuaXphdGlvbl9pZF09XCJvcmdhbml6YXRpb25faWRcIlxuICAgIFttZW1iZXJfb2JqX2lkXT1cIm1lbWJlcl9vYmpfaWRcIlxuICAgIFt1c2VySW5mb109XCJ1c2VySW5mb1wiXG4gICAgW3BvbGljeUlkXT1cInBvbGljeUlkXCJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICBbdGVtcGxhdGVVcmxdPVwidGVtcGxhdGVVcmxcIlxuICAgIFtwb2xpY3lOYW1lXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXG4gICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpXCJcbiAgICAoZWRpdFBvbGljeSk9XCJlZGl0UG9saWN5RnJvbURvY3VtZW50cygpXCJcbiAgICAob3BlblRlbXBsYXRlKT1cInRlbXBsYXRlVmlldyA9IHRydWVcIlxuICA+PC9saWItZG9jdW1lbnQtc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuXG48YXBwLWFzc2Vzc21lbnQtbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnaXNBc3Nlc3NtZW50J1wiXG4gIFtwcm9ncmFtX2lkc109XCInJ1wiXG4gIFtpc0VkaXRdPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoXCJcbiAgKGNhbmNlbEFzc2Vzc21lbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnaXNBc3Nlc3NtZW50JywgZmFsc2UpXCJcbiAgW3NlbGVjdGVkQXNzZXNzbWVudF09XCJwb2xpY3lGb3JtPy5hc3Nlc3NtZW50WzBdXCJcbiAgW21vZGVdPVwiJ3BvbGljeSdcIlxuICAob25Bc3Nlc3NtZW50U2VsZWN0KT1cIlxuICAgIG9uQXNzZXNzbWVudFNlbGVjdCgkZXZlbnQpOyBzYXZlU2VsZWN0ZWRMaXN0KCdpc0Fzc2Vzc21lbnQnLCBmYWxzZSlcbiAgXCJcbj48L2FwcC1hc3Nlc3NtZW50LWxpc3Q+XG5cbjxhcHAtb3duZXItbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJyAmJiBmYWxzZVwiXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IEFwcHJvdmVycydcIlxuICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxuICBbdXNlcnNMaXN0XT1cImFsbEFwcHJvdmVyc1wiXG4gIFtzaG93V29ya2Zsb3ddPVwidHJ1ZVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cIlxuICAgIGFkZE1vcmVMZXZlbHNcbiAgICAgID8gW11cbiAgICAgIDogcG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1thcHByb3ZlcnNMaXN0SW5kZXhdLmFwcHJvdmVyc1xuICBcIlxuICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInbWVtYmVyX2VtYWlsJ1wiXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXBwcm92ZXJzJywgJGV2ZW50KVwiXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gIFttb2RlXT1cIm1vZGVcIlxuICBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwid29ya2Zsb3dUeXBlXCJcbiAgKHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlKT1cInJldmlld2VyVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgW3dvcmtmbG93TGlzdF09XCJ3b3JrZmxvd0xpc3RcIlxuICBbd29ya2Zsb3dUZXh0XT1cIidBcHByb3ZhbCBXb3JrZmxvdydcIlxuPlxuPC9hcHAtb3duZXItbGlzdD5cblxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcnMnXCJcbiAgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgT3duZXIocyknXCJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcbiAgW3VzZXJzTGlzdF09XCJhbGxBcHByb3ZlcnNcIlxuICBbc2hvd1dvcmtmbG93XT1cImZhbHNlXCJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ293bmVycycsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICBbbW9kZV09XCJtb2RlXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybT8ucG9saWN5X293bmVycyA/PyBbXVwiXG4+XG48L2FwcC1vd25lci1saXN0PlxuXG48YXBwLXNlbGVjdC10ZW1wbGF0ZS1saXN0XG4gICpuZ0lmPVwidGVtcGxhdGVWaWV3XCJcbiAgW3NlbGVjdGVkQ2F0ZWdvcnlJZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXNcIlxuICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgKG9uVGVtcGxhdGVTZWxlY3QpPVwib25UZW1wbGF0ZVNlbGVjdCgkZXZlbnQpXCJcbj48L2FwcC1zZWxlY3QtdGVtcGxhdGUtbGlzdD5cbiJdfQ==
|
|
2104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVzNDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUtuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9qRCxNQUFNLE9BQU8sdUJBQXVCO0lBMktsQyxZQUNVLGFBQTRCLEVBQzVCLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQzFDLGdCQUFrQyxFQUMxQixTQUE0QixF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RUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDOytHQXo2RVUsdUJBQXVCO21HQUF2Qix1QkFBdUIsd3pCQW1CRCxVQUFVLDZCQzlEN0MsNml4SUFpckhBOzs0RkR0b0hhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7eWpCQVFyQixhQUFhO3NCQUF0QixNQUFNO2dCQUNFLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ2tCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDYixjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUV1QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFM0IsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkF1MkU1RCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCB1bmlxQnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XG5pbXBvcnQgeyBDb25maXJtYXRpb25BbGVydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlybWF0aW9uLWFsZXJ0JztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9saWN5Rm9ybSB9IGZyb20gJy4uL3dvcmtmbG93LWludGVyZmFjZXMvY3JlYXRlLXBvbGljeS1mb3JtJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mb3JtYXQtYW5kLWV2aWRlbmNlL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9saW5rLXByb2dyYW0vcmVzdGFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfMjRIUiwgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Vc2VyU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi11c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuLi9saW5rLXJlbGF0ZWQtcG9saWNpZXMvY29uc3RhbnRzJztcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL2NvbnN0YW50cy9jZG4tbGluay5jb25zdGFudCc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctcG9saWN5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93UG9saWN5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBDT05TVEFOVFM6IGFueSA9IENPTlNUQU5UUztcbiAgTElOS1M6IGFueSA9IExJTktTO1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xuICBASW5wdXQoKSBwb2xpY3lJZCA9ICcnO1xuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XG4gIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uQWxlcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzaGlmdFRvRWRpdE1vZGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGNvbnZlcnRGaWxlRGF0YTogYW55ID0ge307XG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcnkgPSAnJztcbiAgQElucHV0KCkgaXNTZW5kRm9yQXR0ZXN0YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGVtcGxhdGVJZDogc3RyaW5nID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnZm9ybWF0RXZpZGVuY2UnKSBmb3JtYXRFdmlkZW5jZSE6IEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIGRhdGVQaWNrZXJQb3BVcCE6IEVsZW1lbnRSZWY7XG5cbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcbiAgICBtb2RlOiAncHJpbWUnLFxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICBsaW5rOiB0cnVlLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgcG9saWN5LicsXG4gIH07XG4gIHdvcmtmbG93VHlwZSA9ICdTRVFVRU5USUFMJztcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcbiAgbmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24gPSBmYWxzZTtcblxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xuICByY0xpc3Q6IGFueSA9IFtdO1xuICB1c2Vyc0xpc3Q6IGFueSA9IFtdO1xuICBhbGxBcHByb3ZlcnM6IGFueSA9IFtdO1xuICBhbGxSZXZpZXdlcnM6IGFueSA9IFtdO1xuICBhc3NpZ25lZXNMaXN0OiBhbnkgPSBbXTtcbiAgb3duZXJsaXN0OiBhbnkgPSBbXTtcbiAgcmV2aWV3ZXJzTGlzdDogYW55ID0gW107XG4gIG92ZXJzZWVyc0xpc3Q6IGFueSA9IFtdO1xuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgdXNlcnNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGNhdGVnb3J5TGlzdDogYW55ID0gW107XG4gIGdyb3Vwc0xpc3Q6IGFueVtdID0gW107XG4gIHdvcmtGbG93TGlzdDogYW55W10gPSBbXTtcbiAgYXBwcm92ZXJXb3JrRmxvd0xpc3Q6IGFueVtdID0gW107XG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICBjY0VtYWlsT2JqSWRzOiBhbnlbXSA9IFtdO1xuICBjY0ZhaWxHcm91cE9iaklkczogYW55W10gPSBbXTtcbiAgdXNlcnNBY2Nlc3NMaXN0OiBhbnlbXSA9IFtdO1xuICB1c2Vyc0FjY2Vzc0xpc3RJZHM6IGFueVtdID0gW107XG4gIGdyb3Vwc0FjY2Vzc0xpc3RJZHM6IGFueVtdID0gW107XG4gIGdyb3Vwc0FjY2Vzc0xpc3Q6IGFueVtdID0gW107XG4gIFNlbGVjdGVkTGlzdE9mUG9saWNpZXM6IGFueVtdID0gW107XG5cbiAgbG9hZGVyID0gZmFsc2U7XG4gIGNhdGVnb3JpZXNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGdyb3Vwc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgY2F0ZWdvcnlDb25maWcgPSB7XG4gICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBQb2xpY3kgQ2F0ZWdvcnknLFxuICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnUG9saWN5IENhdGVnb3J5IFNlbGVjdGVkJyxcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdQb2xpY3kgQ2F0ZWdvcmllcyBTZWxlY3RlZCcsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggUG9saWN5IENhdGVnb3J5JyxcbiAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxuICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXG4gICAgd29ya2Zsb3c6ICdwb2xpY3knLFxuICB9O1xuICBhcHByb3ZhbFdvcmtmbG93Q29uZmlnID0ge1xuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgdXNlcihzKScsXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdVc2VycyBzZWxlY3RlZCcsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXG4gICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxuICB9O1xuXG4gIGFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcbiAgYXBwcm92ZXJzTGlzdEluZGV4ID0gMDtcbiAgd29ya2Zsb3dMaXN0ID0gWydTRVFVRU5USUFMJywgJ1JPVU5ELVJPQklOJywgJ0FOWSBPTkUnXTtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgZGF0ZUNvbmZpZyA9IHtcbiAgICBkaXNhYmxlS2V5cHJlc3M6IHRydWUsXG4gICAgZm9ybWF0OiAnREQgTU0gWVlZWScsXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxuICAgIG9wZW5PbkNsaWNrOiBmYWxzZSxcbiAgICBvcGVuT25Gb2N1czogZmFsc2UsXG4gIH07XG4gIGZyZXF1ZW5jeURldGFpbHMgPSB7XG4gICAgcGF0dGVybjogJycsXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgd2luZG93OiAwLFxuICAgIGZhaWxlZDogMCxcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgZmFpbGVkVGltZTogJycsXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcbiAgfTtcbiAgcmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzID0ge1xuICAgIHBhdHRlcm46ICcnLFxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHdpbmRvdzogMCxcbiAgICBmYWlsZWQ6IDAsXG4gICAgdGltZTogREVGQVVMVF9USU1FLFxuICAgIGZhaWxlZFRpbWU6ICcnLFxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXG4gIH07XG4gIGZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1doYXQgaXMgdGhlIGF0dGVzdGF0aW9uIHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeT8nO1xuICByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkPyc7XG5cbiAgc2lkZVNlbGVjdG9yRWxlbWVudHMgPSBbXG4gICAgJ2FwcHJvdmFsV29ya2Zsb3cnLFxuICAgICdhc3NpZ25lZXMnLFxuICAgICdhcHByb3ZlcnMnLFxuICAgICdyZXZpZXdlcicsXG4gICAgJ2NjRW1haWwnLFxuICAgICdjY0ZhaWwnLFxuICAgICdyYycsXG4gICAgJ2NhdGVnb3J5JyxcbiAgICAnZnJlcXVlbmN5JyxcbiAgICAncmV2aWV3ZXJGcmVxdWVuY3knLFxuICAgICdjaGVja3BvaW50cycsXG4gICAgJ2xpbmtQcm9ncmFtJyxcbiAgICAnaXNBc3Nlc3NtZW50JyxcbiAgICAnaXNMaW5rZWRQb2xpY2VzJyxcbiAgICAnb3duZXJzJyxcbiAgICAncG9saWN5QWNjZXNzJyxcbiAgXTtcbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gW1xuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcbiAgICB7IG5hbWU6ICdMT1ctTWVkaXVtJywgdmFsdWU6IDIsIGNsYXNzOiAnbG93LW1lZCcgfSxcbiAgICB7IG5hbWU6ICdNZWRpdW0tSGlnaCcsIHZhbHVlOiAzLCBjbGFzczogJ21lZC1oaWdoJyB9LFxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogNCwgY2xhc3M6ICdoaWdoJyB9LFxuICBdO1xuICBzaG93Umlza0NsYXNzaWZpY2F0aW9uID0gdHJ1ZTtcbiAgc2hvd0NyZWF0ZURvY3VtZW50cyA9IGZhbHNlO1xuICBvcmdhbml6YXRpb25faWQgPSAnJztcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xuICBtZW1iZXJJZCA9IDA7XG4gIHVzZXJJbmZvITogYW55O1xuXG4gIHBvbGljeUFwcHJvdmFsRmxhZyA9IDA7XG4gIGJhc2VVUkwgPSAnJztcbiAgZ3JvdXBFbmFibGVkOiBhbnkgPSB0cnVlO1xuICBvdmVyc2Vlckdyb3Vwc0xpc3Q6IGFueVtdID0gW107XG4gIGVuYWJsZUFwcHJvdmFsV29ya2Zsb3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNWZXJzaW9uVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBzZWxlY3RlZExpbmtQcm9ncmFtOiBhbnkgPSB7fTtcbiAgdmVyc2lvbkVycm9yTWVzc2FnZTogc3RyaW5nID1cbiAgICAnWW91IGhhdmUgZW50ZXJlZCBhbiBpbmNvcnJlY3QgZm9ybWF0LiBUaGUgdmVyc2lvbiBmaWVsZCBjYW4gZWl0aGVyIGluY2x1ZGUgbnVtYmVycywgYWxwaGFiZXRzLCBoeXBoZW4gb3IgZG90cy4nO1xuICBzZWxlY3RlZFdvcmtmbG93OiBhbnlbXSA9IFtdO1xuICBlZGl0QXBwcm92YWxXb3JrZmxvdyE6IGFueTtcbiAgYXBwcm92YWxXb3JrZmxvd0lkczogYW55W10gPSBbXTtcbiAgZGVmYXVsdEVkaXRBcHByb3ZlcnM6IGFueSA9IHt9O1xuICBjcmVhdGVBcHByb3ZhbENsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIGVkaXRXb3JrZmxvd0xldmVsID0ge307XG4gIG5vV29ya2Zsb3dTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICB0ZW1wbGF0ZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGVtcGxhdGVVcmw6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcG9saWN5U2VydmljZTogUG9saWN5U2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxuICAgIHBsYXRmb3JtTG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVzdEFwaVNlcnZpY2U6IFJlc3RBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlOiBPcmdhbml6YXRpb25Vc2VyU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U6IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wbGlhbmNlQ29tbW9uU2VydmljZTogQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZnJhbWVTZXJ2aWNlOiBJZnJhbWVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYmFzZVVSTCA9IGxvY2F0aW9uPy5vcmlnaW47XG4gICAgaWYgKHRoaXMuYmFzZVVSTCA9PSAnaHR0cDovL2xvY2FsaG9zdDo0MjAwJykge1xuICAgICAgdGhpcy5iYXNlVVJMID0gJ2h0dHBzOi8vZGV2LnYtY29tcGx5LmNvbSc7XG4gICAgfVxuICB9XG4gIHBvbGljeUZvcm06IFBvbGljeUZvcm0gPSB7XG4gICAgcG9saWN5TmFtZTogJycsXG4gICAgcG9saWN5Tm90ZXM6ICcnLFxuICAgIHNlbGVjdGVkQ2F0ZWdvcmllczogW10sXG4gICAgc2VsZWN0ZWRBcHByb3ZlcnM6IFtdLFxuICAgIHNlbGVjdGVkQXNzaWduZWVzOiBbXSwgLy9kb3VidCBpbiBuYW1lXG4gICAgc2VsZWN0ZWRHcm91cEFzc2lnbmVlOiBbXSxcbiAgICBzZWxlY3RlZFJldmlld2VyczogW10sXG5cbiAgICBzZWxlY3RlZFJDczogW10sXG4gICAgQ0NGYWlsRW1haWw6IFtdLFxuICAgIENDRmFpbEVtYWlsR3JvdXA6IFtdLFxuICAgIENDRW1haWw6IFtdLFxuICAgIENDR3JvdXBFbWFpbDogW10sXG4gICAgYXZhaWxhYmxlT25Qb3J0YWw6IGZhbHNlLFxuICAgIGFjY2VwdFN1Z2dlc3Rpb25zOiBmYWxzZSxcbiAgICByZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uOiBmYWxzZSxcbiAgICByaXNrUmF0aW5nOiAxLFxuICAgIGFzc29jaWF0ZWREb2N1bWVudHM6IHtcbiAgICAgIGZvcm1hdEZpbGVzOiBbXSxcbiAgICB9LFxuICAgIHBvbGljeUR1ZURhdGU6IG1vbWVudCgpLFxuICAgIGN1c3RvbVRhZ3M6IFtdLFxuICAgIGNoZWNrcG9pbnREZXRhaWxzOiBbXSxcbiAgICBMaW5rZWRQb2xpY2llczogW10sXG4gICAgdG90YWxRdWVzdGlvbjogMCxcbiAgICBwYXNzaW5nTWFya3M6IDAsXG4gICAgZG9jdW1lbnRzQW5kTGlua3M6IHtcbiAgICAgIGZvcm1hdEZpbGVzOiBbXSxcbiAgICAgIGZvcm1hdExpbmtzOiBbXSxcbiAgICB9LFxuICAgIGFkZFJlc3BvbnNpYmlsaXR5Q2VudGVyczogZmFsc2UsXG4gICAgYWRkUmV2aWV3ZXJzOiBmYWxzZSxcbiAgICBhZGRDaGVja3BvaW50czogZmFsc2UsXG4gICAgYWRkT3ZlcnNlZXJzOiBmYWxzZSxcbiAgICBhZGRBc3NvY2lhdGVkRG9jdW1lbnRzOiBmYWxzZSxcbiAgICBhZGRWZXJzaW9uOiBmYWxzZSxcbiAgICBhZGRMaW5rQXNzZXNzbWVudDogZmFsc2UsXG4gICAgYWRkTGlua1Byb2dyYW06IGZhbHNlLFxuICAgIGFkZExpbmtQb2xpY2llczogZmFsc2UsXG4gICAgaXNQb3J0YWxEaXNwbGF5RW5hYmxlZDogZmFsc2UsXG5cbiAgICBmYWlsZWRfdGltZTogJycsXG4gICAgZnJlcXVlbmN5X2RldGFpbHM6ICcnLFxuICAgIGZyZXF1ZW5jeV90ZXh0OiAnJyxcbiAgICBtYXJrX2ZhaWxlZF9hZnRlcjogMCxcbiAgICByZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IDAsXG5cbiAgICByZXZpZXdGYWlsZWRBZnRlcjogMCxcbiAgICByZXZpZXdGYWlsZWRUaW1lOiAnJyxcbiAgICByZXZpZXdfZnJlcXVlbmN5X2RldGFpbHM6ICcnLFxuICAgIHJldmlld19mcmVxdWVuY3lfdHlwZTogJycsXG4gICAgcmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogMCxcbiAgICByZXZpZXc6IGZhbHNlLFxuICAgIGxpbmtQcm9ncmFtOiB7fSxcbiAgICBwcm9ncmFtU2VsZWN0ZWRWYWx1ZXM6IHt9LFxuICAgIGFzc2lnbmVlX3N0YXJ0X2RhdGU6ICcnLCAvL1RodSBGZWIgMjIgMjAyNFxuICAgIHJldmlld2VyX3N0YXJ0X2RhdGU6ICcnLCAvL1RodSBGZWIgMjIgMjAyNFxuICAgIHBvbGljeV92ZXJzaW9uOiAnJywgLy8gaXQgd2lsbCBhY2NlcHQgbWF0Y2hlcyBhbHBoYWJldHMsIGh5cGhlbnMgKC0pLCBkb3RzICguKSwgYW5kIG51bWVyaWMgdmFsdWVzIG9ubHkgYW5kIHNob3VsZCBiZSBzbWFsbGVyIG9yIGVxdWFsIHRvIDYgY2hhcmFjdGVyc1xuICAgIGFzc2Vzc21lbnQ6IFtdLFxuICAgIHBvbGljeV9vd25lcnM6IFtdLFxuICAgIHBvbGljeV9ncm91cF9vd25lcnM6IFtdLFxuICAgIGJ1c2luZXNzQ3ljbGU6IHt9LFxuICAgIHBvbGljeV9pZDogMCxcbiAgICBwb2xpY3lfYWNjZXNzX3R5cGU6IDAsXG4gICAgcG9saWN5X2FjY2Vzc19vd25lcnM6IFtdLFxuICAgIHBvbGljeV9hY2Nlc3NfZ3JvdXBzOiBbXSxcbiAgfTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdGlhdGVBUEkoKTtcbiAgICB0aGlzLm92ZXJzZWVyR3JvdXBMaXN0KCk7XG4gIH1cblxuICBfaW5pdGlhdGVBUEkoKSB7XG4gICAgdGhpcy5ncm91cEVuYWJsZWQgPVxuICAgICAgdGhpcy5mZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wb2xpY3lfZ3JvdXBzJykgfHwgdHJ1ZTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgIHRoaXMuX2luaXRpYXRlRWRpdEFQSSgpO1xuICAgIH1cbiAgICB0aGlzLmdldFVzZXJzTGlzdCgpO1xuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcbiAgICB0aGlzLmxvYWRlciA9IHRoaXMubW9kZSA9PT0gJ0VESVQnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuZ2V0T3JnRGV0YWlscygpO1xuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2U/LmdldFVzZXJEZXRhaWxzKCk/Ll9pZDtcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZT8uZ2V0VXNlckRldGFpbHMoKT8udXNlcjtcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZT8uZ2V0TWVtYmVySWQoKTtcbiAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmJ1c2luZXNzQ3ljbGUgPSB0aGlzLnJlc3RBcGlTZXJ2aWNlPy5nZXRCdXNpbmVzc0N5Y2xlKCk7XG4gICAgLy90aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xuICB9XG5cbiAgX2luaXRpYXRlRWRpdEFQSSgpIHtcbiAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICB0aGlzLm92ZXJzZWVyR3JvdXBMaXN0KCk7XG4gICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XG4gIH1cblxuICBnZXRPcmdEZXRhaWxzKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIXJlcz8uZW5hYmxlX3Jpc2tjbGFzcykge1xuICAgICAgICAgIHRoaXMuc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/Ll9pZCkge1xuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uX2lkID0gcmVzPy5faWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpbmtlZFBvbGljaWVzKHBvbGljeUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuTGlua2VkUG9saWNpZXNMaXN0KHBvbGljeUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzID0gWy4uLm5ldyBTZXQocmVzcG9uc2U/LmRhdGEpXS5yZXZlcnNlKCk7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkxpbmtlZFBvbGljaWVzID0gdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzPy5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0/LmNvbnRyYWN0X2lkXG4gICAgICAgICkubWFwKChpdGVtKSA9PiBpdGVtPy5jb250cmFjdF9pZCk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5pc1BvcnRhbERpc3BsYXlFbmFibGVkID0gcmVzcG9uc2U/LmRpc3BsYXlPblBvcnRhbDtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtQb2xpY2llcyA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtQb2xpY2llcyA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgbGlzdGluZyBwYWdlcyB0aGUgbGVmdCBzaWRlIG9mIHBvbGljeSBmb3JtIHRvIHNldCBhbmQgZWRpdCB0aGUgZHJvcGRvd24gZmllbGRzIHZhbHVlc1xuICAgKiBAcGFyYW0gdHlwZSBob2xkcyBuYW1lIG9mIHBhcnRpY3VsYXIgbGlzdCBpcyB0byBiZSBkaXNwbGF5ZWRcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGJvb2xlYW4gdmFsdWUgdG8gZGlzcGxheSB0aGUgbGlzdCBvciBub3RcbiAgICogQHBhcmFtIHdvcmtmbG93VHlwZSBpdCBzZXRzIHRoZSBhcHByb3ZhbCB3b3JrZmxvdyB0eXBlIHdoaWxlIGVkaXRpbmcgdGhlIGFwcHJvdmFsIHdvcmtmbG93LlxuICAgKi9cbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuLCB3b3JrZmxvd1R5cGU/OiBhbnkpIHtcbiAgICBpZiAod29ya2Zsb3dUeXBlKSB7XG4gICAgICB0aGlzLndvcmtmbG93VHlwZSA9IHdvcmtmbG93VHlwZTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxuICAgICAgY2FzZSAnY2NGYWlsJzpcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGxpc3RpbmcgcGFnZXNcbiAgICovXG4gIGRpc2FibGVTZWxlY3RvcigpIHtcbiAgICB0aGlzLmFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgUmVzcG9uc2liaWxpdHkgY2VudGVycyBsaXN0XG4gICAqL1xuICBnZXRSQ0xpc3QoKSB7XG4gICAgdGhpcy5jb21wbGlhbmNlQ29tbW9uU2VydmljZT8uZ2V0UmNMaXN0SW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmNMaXN0ID0gcmVzO1xuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIG9yZ2FuaXphdGlvbiB1c2VycyBsaXN0XG4gICAqL1xuICBnZXRVc2Vyc0xpc3QoKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Vc2VyU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnVzZXJzTGlzdCA9IHRoaXMudXBkYXRlTWVtYmVySWRLZXkocmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVzZXJzTGlzdCA9IHJlcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy8gcmVwbGFjZSBtZW1iZXJfaWQgdmFsdWUgdG8gbXlfbWVtYmVyX2lkXG4gIHVwZGF0ZU1lbWJlcklkS2V5KGxpc3Q6IGFueSkge1xuICAgIGxldCB1cGRhdGVkTGlzdCA9IGxpc3QubWFwKChlbGU6IGFueSkgPT4gKHtcbiAgICAgIC4uLmVsZSxcbiAgICAgIG1lbWJlcl9pZDogZWxlPy5teV9tZW1iZXJfaWQsXG4gICAgfSkpO1xuICAgIHJldHVybiB1cGRhdGVkTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIFBvbGljeSBDYXRlZ29yaWVzIGxpc3RcbiAgICovXG4gIGdldENhdGVnb3JpZXNMaXN0KCkge1xuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRDYXRlZ29yaWVzTGlzdCgpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlcztcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgb3JnYW5pemF0aW9uIHVzZXJzIGdyb3VwcyBsaXN0XG4gICAqL1xuICBnZXRHcm91cHNMaXN0KCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblBvbGljeUdyb3VwcygpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gcmVzLmRhdGE7XG4gICAgICAgIGNvbnN0IGdyb3VwczogYW55ID0gW107XG4gICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgICAgIGdyb3VwTmFtZTogZWxlbWVudC5ncm91cF9uYW1lLFxuICAgICAgICAgICAgdXNlcklkczogZWxlbWVudC5tZW1iZXJfaWRzLFxuICAgICAgICAgIH07XG4gICAgICAgICAgZ3JvdXBzLnB1c2gob2JqKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGdyb3VwcztcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0ID0gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvL0dldCB0aGUgbGlzdCBvZiBvdmVyc2VlcnMgZ3JvdXAuXG4gIG92ZXJzZWVyR3JvdXBMaXN0KCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlPy5nZXRPcmdhbml6YXRpb25PdmVyc2VlcnNHcm91cHMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QgPSByZXM/LmRhdGE7XG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhcHByb3ZlcnMgd29ya2Zsb3cgZnJvbSB0aGUgc2VsZWN0ZWQgd29ya2Zsb3cgb24gQXBwcm92ZXJzIHdvcmtmbG93IGxpc3RcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIHByZWRlZmluZWQgd29ya2Zsb3dcbiAgICovXG4gIHNlbGVjdGVkV29ya2Zsb3dDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCA9PT0gLTEpIHtcbiAgICAgIC8vIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xuICAgICAgLy8gdGhpcy5hZGRNb3JlTGV2ZWxzID0gdHJ1ZVxuICAgICAgLy8gdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGRhdGEgPSBjbG9uZURlZXAoZXZlbnQuYXBwcm92YWxfd29ya2Zsb3cpO1xuICAgICAgY29uc3QgbmV3QXJyYXkgPSBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGl0ZW0ubmFtZSA9IGl0ZW0udHlwZTtcbiAgICAgICAgY29uc3QgaWRzID0gaXRlbS5hcHByb3ZlcnMubWFwKChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQpO1xuICAgICAgICBpdGVtLmFwcHJvdmVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgaWRzLCAnbWVtYmVyX2lkJyk7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLnByZXNlcnZlQXBwcm92YWxGbGFncyhuZXdBcnJheSwgdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVycyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlcyBhcHByb3ZlcnMgZnJvbSBuZXdMZXZlbHMgd2l0aCBhcHByb3ZlcnMgZnJvbSBjdXJyZW50TGV2ZWxzXG4gICAqIHdoaWxlIHByZXNlcnZpbmcgYXBwcm92YWwtcmVsYXRlZCBmbGFncy5cbiAgICogQWxzbyBmaWx0ZXJzIG91dCBsZXZlbHMgdGhhdCBlbmQgdXAgd2l0aCBubyBhcHByb3ZlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBuZXdMZXZlbHMgLSBBcnJheSBvZiBuZXcgbGV2ZWxzIHdpdGggYXBwcm92ZXJzLlxuICAgKiBAcGFyYW0gY3VycmVudExldmVscyAtIE9iamVjdCBjb250YWluaW5nIGV4aXN0aW5nIGxldmVscy5cbiAgICogQHJldHVybnMgQSBuZXcgYXJyYXkgb2YgbGV2ZWxzIHdpdGggbWVyZ2VkIGFwcHJvdmVycyBhbmQgcHJlc2VydmVkIGZsYWdzLlxuICAgKi9cbiAgcHJpdmF0ZSBwcmVzZXJ2ZUFwcHJvdmFsRmxhZ3MobmV3TGV2ZWxzOiBhbnlbXSwgY3VycmVudExldmVsczogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueVtdIHtcbiAgICByZXR1cm4gKG5ld0xldmVscyB8fCBbXSkucmVkdWNlPGFueVtdPigoYWNjOiBhbnlbXSwgbGV2ZWw6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgbGV2ZWxLZXkgPSBgbGV2ZWwke2luZGV4ICsgMX1gO1xuICAgICAgY29uc3QgY3VycmVudExldmVsID0gY3VycmVudExldmVscz8uW2xldmVsS2V5XTtcblxuICAgICAgLy8gUHJlc2VydmUgZmxhZ3MgaWYgYXBwcm92ZXIgYWxyZWFkeSBleGlzdHMgaW4gY3VycmVudExldmVsXG4gICAgICBjb25zdCBhcHByb3ZlcnMgPSB0aGlzLm1lcmdlQXBwcm92ZXJzRm9yTGV2ZWwobGV2ZWw/LmFwcHJvdmVycywgY3VycmVudExldmVsKTtcblxuICAgICAgLy8gT25seSBpbmNsdWRlIHRoaXMgbGV2ZWwgaWYgaXQgaGFzIGF0IGxlYXN0IG9uZSBhcHByb3ZlclxuICAgICAgaWYgKGFwcHJvdmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgICAuLi5sZXZlbCxcbiAgICAgICAgICBhcHByb3ZlcnMsXG4gICAgICAgICAgYXBwcm92YWxfZG9uZTogY3VycmVudExldmVsPy5hcHByb3ZhbF9kb25lID8/IGxldmVsPy5hcHByb3ZhbF9kb25lXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXG4gICAqIEBwYXJhbSBpZCBjb250YWlucyBzZWxlY3RlZCBjYXRlZ29yaWVzIGlkJ3NcbiAgICovXG4gIGdldEFwcHJvdmVyV29ya0Zsb3coaWQ6IGFueSwgZGF0YT86IGFueSkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0V29ya2Zsb3dMaXN0KGlkKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8ubGVuZ3RoID49IDApIHtcbiAgICAgICAgICB0aGlzLmFwcHJvdmVyV29ya0Zsb3dMaXN0ID0gcmVzOyAvLyBnZXR0aW5nIGFsbCBhcHByb3ZlciBzYXZlZCB3b3JrZmxvd3NcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcbiAgICAgICAgICB0aGlzLmFwcHJvdmVyV29ya0Zsb3dMaXN0Py5mb3JFYWNoKCh3b3JrZmxvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcz8uaW5jbHVkZXMod29ya2Zsb3c/Ll9pZCkpIHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVEZWZhdWx0V29ya2Zsb3cod29ya2Zsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXBwcm92YWxEYXRhOiBhbnkgPSBbXTtcbiAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRXb3JrZmxvdz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm5vV29ya2Zsb3dTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgYXBwcm92YWxXb3JrZmxvdzogYW55W10gPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlV29ya2Zsb3coKTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnMpLmZvckVhY2goKGFwcHJvdmVyc0xldmVsKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdLmFwcHJvdmVycyA9XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVyc1thcHByb3ZlcnNMZXZlbF0/LmFwcHJvdmVycz8ubWFwKFxuICAgICAgICAgICAgICAgICAgKGFwcDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXBwLm1lbWJlcl9uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwcm92ZXJVc2VyID0gdGhpcy51c2Vyc0xpc3Q/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlcjogYW55KSA9PiB1c2VyLm15X21lbWJlcl9pZCA9PSBhcHAubWVtYmVyX2lkXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwcm92ZXJVc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAubWVtYmVyX25hbWUgPSBhcHByb3ZlclVzZXI/Lm1lbWJlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsQXBwcm92YWxTdGF0dXMgPSB0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzW2FwcHJvdmVyc0xldmVsXT8uYXBwcm92YWxfZG9uZSA/PyBmYWxzZTtcbiAgICAgICAgICAgICAgY29uc3QgbGV2ZWxEYXRhID0ge1xuICAgICAgICAgICAgICAgIGxldmVsMTogYXBwcm92ZXJzTGV2ZWwsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVyc1thcHByb3ZlcnNMZXZlbF0sXG4gICAgICAgICAgICAgICAgYXBwcm92YWxfZG9uZTogb3JpZ2luYWxBcHByb3ZhbFN0YXR1cyxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvdy5wdXNoKGxldmVsRGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFwcHJvdmFsRGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgd29ya2Zsb3dfbmFtZTogJycsXG4gICAgICAgICAgICAgIHdvcmtmbG93X21vZHVsZTogJ1BPTElDWScsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7fSxcbiAgICAgICAgICAgICAgYXBwcm92YWxfd29ya2Zsb3c6IGFwcHJvdmFsV29ya2Zsb3csXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2FycjogW10sXG4gICAgICAgICAgICAgIGNyZWF0b3I6IHt9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3cgPSBhcHByb3ZhbERhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IHRoaXMuc2VsZWN0ZWRXb3JrZmxvdztcbiAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5nZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KFxuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgW2RhdGEuUmV2aWV3ZXJNZW1iZXJJZF0sXG4gICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdXBkYXRlRGVmYXVsdFdvcmtmbG93KHdvcmtmbG93OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVycyAmJiB3b3JrZmxvdz8uYXBwcm92YWxfd29ya2Zsb3cpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXb3JrZmxvdyA9IHsgLi4ud29ya2Zsb3cgfTtcbiAgICAgIHVwZGF0ZWRXb3JrZmxvdy5hcHByb3ZhbF93b3JrZmxvdyA9IHdvcmtmbG93LmFwcHJvdmFsX3dvcmtmbG93Lm1hcCgobGV2ZWw6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBsZXZlbEtleSA9IGBsZXZlbCR7aW5kZXggKyAxfWA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb2xpY3lMZXZlbCA9IHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbbGV2ZWxLZXldO1xuXG4gICAgICAgIC8vIElmIGFwcHJvdmFsIHN0YXR1cyBleGlzdHMsIHByZXNlcnZlIGl0OyBvdGhlcndpc2UsIGtlZXAgdGhlIGV4aXN0aW5nIHN0YXR1cyBpbiB3b3JrZmxvd1xuICAgICAgICBpZiAoY3VycmVudFBvbGljeUxldmVsKSB7XG4gICAgICAgICAgY29uc3QgbWVyZ2VkQXBwcm92ZXJzID0gdGhpcy5tZXJnZUFwcHJvdmVyc0ZvckxldmVsKGxldmVsLmFwcHJvdmVycywgY3VycmVudFBvbGljeUxldmVsKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ubGV2ZWwsXG4gICAgICAgICAgICBhcHByb3ZlcnM6IG1lcmdlZEFwcHJvdmVycyxcbiAgICAgICAgICAgIGFwcHJvdmFsX2RvbmU6IGN1cnJlbnRQb2xpY3lMZXZlbC5hcHByb3ZhbF9kb25lID8gY3VycmVudFBvbGljeUxldmVsLmFwcHJvdmFsX2RvbmUgOiBsZXZlbC5hcHByb3ZhbF9kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGV2ZWw7IFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3c/LnB1c2godXBkYXRlZFdvcmtmbG93KTtcbiAgICB9ZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3c/LnB1c2god29ya2Zsb3cpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VBcHByb3ZlcnNGb3JMZXZlbChsZXZlbEFwcHJvdmVyczogYW55W10sIGN1cnJlbnRMZXZlbDogYW55KTogYW55W10ge1xuICAgIHJldHVybiAobGV2ZWxBcHByb3ZlcnMgfHwgW10pLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBjdXJyZW50TGV2ZWw/LmFwcHJvdmVycz8uZmluZChcbiAgICAgICAgKGE6IGFueSkgPT4gYT8ubWVtYmVyX2lkID09PSBhcHByb3Zlcj8ubWVtYmVyX2lkXG4gICAgICApO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYXBwcm92ZXIsXG4gICAgICAgICAgYXBwcm92YWxfZmxhZzogZXhpc3RpbmcuYXBwcm92YWxfZmxhZyA/PyBhcHByb3Zlci5hcHByb3ZhbF9mbGFnLFxuICAgICAgICAgIHJlamVjdF9mbGFnOiBleGlzdGluZy5yZWplY3RfZmxhZyA/PyBhcHByb3Zlci5yZWplY3RfZmxhZyxcbiAgICAgICAgICByZW1vdmVfZmxhZzogZXhpc3RpbmcucmVtb3ZlX2ZsYWcgPz8gYXBwcm92ZXIucmVtb3ZlX2ZsYWdcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcHByb3ZlcjtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZVdvcmtmbG93KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xuICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcyA9IFtdO1xuICAgIHRoaXMuZWRpdEFwcHJvdmFsV29ya2Zsb3cgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBBcHByb3ZlcnMgYW5kIHJldmlld2VycyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXG4gICAqIEBwYXJhbSBjYXRlZ29yeUlkcyBjb250YWlucyBzZWxlY3RlZCBjYXRlZ29yaWVzIGlkJ3NcbiAgICovXG4gIGdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3QoXG4gICAgY2F0ZWdvcnlJZHM6IGFueSxcbiAgICBhcHByb3Zlcklkcz86IGFueSxcbiAgICByZXZpZXdlcklkcz86IGFueSxcbiAgICBwb2xpY3k/OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuYWxsQXBwcm92ZXJzID0gW107XG4gICAgdGhpcy5hbGxSZXZpZXdlcnMgPSBbXTtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0UmV2aWV3ZXJzKGNhdGVnb3J5SWRzKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8ubGVuZ3RoID49IDApIHtcbiAgICAgICAgICByZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyA9IHVuaXFCeShcbiAgICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMuY29uY2F0KGVsZW1lbnQuYWxsX2FwcHJvdmVycyksXG4gICAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMgPSB1bmlxQnkoXG4gICAgICAgICAgICAgIGVsZW1lbnQuYWxsX2FwcHJvdmVycy5jb25jYXQoXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXG4gICAgICAgICAgICAgICAgZWxlbWVudC5hbGxfYXV0aG9yc1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB0aGlzLnNldE93bmVyc09uTG9hZCgpO1xuICAgICAgICAgICAgaWYgKHBvbGljeT8ucG9saWN5X293bmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXG4gICAgICAgICAgICAgICAgcG9saWN5Py5wb2xpY3lfb3duZXJzID8/IFtdLFxuICAgICAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdldFVzZXJzQWNjZXNzTGlzdEJ5Q2F0ZWdvcnkoZWxlbWVudCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwcHJvdmVySWRzPy5hcHByb3ZlcnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5oYXNXb3JrZmxvd0NoYW5nZXMoYXBwcm92ZXJJZHMpKSB7XG4gICAgICAgICAgICBsZXQgb2JqID0gYXBwcm92ZXJJZHM/LmFwcHJvdmVycztcbiAgICAgICAgICAgIGxldCBhcHByb3ZlckxldmVscyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaXRlbSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgY29uc3QgaWRzID0gb2JqW2l0ZW1dPy5hcHByb3ZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IG9ialtpdGVtXT8ubmFtZSA/PyBvYmpbaXRlbV0/LnR5cGUsXG4gICAgICAgICAgICAgICAgYXBwcm92ZXJzOiBvYmpbaXRlbV0/LmFwcHJvdmVycyxcbiAgICAgICAgICAgICAgICBhcHByb3ZhbF9kb25lOiBvYmpbaXRlbV0/LmFwcHJvdmFsX2RvbmUgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgbGV2ZWwxOiBvYmpbaXRlbV0/LmxldmVsMSB8fCBpdGVtLFxuICAgICAgICAgICAgICAgIGFsaWFzX25hbWU6IG9ialtpdGVtXT8uYWxpYXNfbmFtZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYXBwcm92ZXJMZXZlbHMucHVzaChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3cgPSBhcHByb3ZlckxldmVscztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcHByb3ZhbF93b3JrZmxvdzogYXBwcm92ZXJMZXZlbHMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IHRoaXMuc2VsZWN0ZWRXb3JrZmxvdztcbiAgICAgICAgICB9XG4gICAgICAgIH0gICAgICBcbiAgICAgICAgaWYgKHJldmlld2VySWRzKSB7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXG4gICAgICAgICAgICByZXZpZXdlcklkcyxcbiAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzV29ya2Zsb3dDaGFuZ2VzKG5ld0FwcHJvdmVySWRzOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBubyB3b3JrZmxvdyBzZWxlY3RlZFxuICAgIGlmICghdGhpcy5zZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggfHwgIXRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3cpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nV29ya2Zsb3cgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93O1xuICAgIGNvbnN0IG5ld0FwcHJvdmVycyA9IG5ld0FwcHJvdmVySWRzPy5hcHByb3ZlcnM7XG5cbiAgICAvLyBDaGVjayBpZiBuZXcgYXBwcm92ZXJzIGV4aXN0IGFuZCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBsZXZlbHMgXG4gICAgaWYgKCFuZXdBcHByb3ZlcnMgfHwgT2JqZWN0LmtleXMobmV3QXBwcm92ZXJzKS5sZW5ndGggIT09IGV4aXN0aW5nV29ya2Zsb3cubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvL0NvbXBhcmUgZWFjaCBsZXZlbCBpbiB0aGUgd29ya2Zsb3dcbiAgICBmb3IgKGNvbnN0IGxldmVsS2V5IGluIG5ld0FwcHJvdmVycykge1xuICAgICAgY29uc3QgbmV3TGV2ZWwgPSBuZXdBcHByb3ZlcnNbbGV2ZWxLZXldO1xuICAgICAgbGV0IGV4aXN0aW5nTGV2ZWwgPSBleGlzdGluZ1dvcmtmbG93LmZpbmQoXG4gICAgICAgIChsZXZlbDogYW55KSA9PiBsZXZlbC5sZXZlbDEgPT09IG5ld0xldmVsLmxldmVsMVxuICAgICAgKTtcbiAgICAgIGlmICghZXhpc3RpbmdMZXZlbCAmJiBleGlzdGluZ1dvcmtmbG93W3BhcnNlSW50KGxldmVsS2V5LnJlcGxhY2UoJ2xldmVsJywgJycpKSAtIDFdKSB7XG4gICAgICAgIGV4aXN0aW5nTGV2ZWwgPSBleGlzdGluZ1dvcmtmbG93W3BhcnNlSW50KGxldmVsS2V5LnJlcGxhY2UoJ2xldmVsJywgJycpKSAtIDFdO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBJZiBubyBleGlzdGluZyBsZXZlbCBmb3VuZCwgY29uc2lkZXIgdGhpcyBhcyBhIG5ldyBsZXZlbFxuICAgICAgaWYgKCFleGlzdGluZ0xldmVsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiB0aGUgYXBwcm92YWwgdHlwZSBoYXMgY2hhbmdlZFxuICAgICAgaWYgKGV4aXN0aW5nTGV2ZWwgJiYgbmV3TGV2ZWwudHlwZSAhPT0gZXhpc3RpbmdMZXZlbC50eXBlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiB0aGUgYXBwcm92ZXIgbmFtZSBoYXMgY2hhbmdlZFxuICAgICAgaWYgKGV4aXN0aW5nTGV2ZWwgJiYgbmV3TGV2ZWwuYWxpYXNfbmFtZSAhPT0gZXhpc3RpbmdMZXZlbC5hbGlhc19uYW1lKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdNZW1iZXJJZHMgPSAobmV3TGV2ZWw/LmFwcHJvdmVycyB8fCBbXSlcbiAgICAgIC5tYXAoKGE6IGFueSkgPT4gYT8ubWVtYmVyX2lkKVxuICAgICAgLmZpbHRlcigoaWQ6IGFueSkgPT4gaWQgIT0gbnVsbCk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nTWVtYmVySWRzID0gKGV4aXN0aW5nTGV2ZWw/LmFwcHJvdmVycyB8fCBbXSlcbiAgICAgICAgLm1hcCgoYTogYW55KSA9PiBhPy5tZW1iZXJfaWQpXG4gICAgICAgIC5maWx0ZXIoKGlkOiBhbnkpID0+IGlkICE9IG51bGwpO1xuXG4gICAgICAvLyBJZiBtZW1iZXIgY291bnQgb2YgYXBwcm92ZXJzIGRpZmZlcnNcbiAgICAgIGlmIChuZXdNZW1iZXJJZHMubGVuZ3RoICE9PSBleGlzdGluZ01lbWJlcklkcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbXBhcmUgbWVtYmVycyBwZXIgbGV2ZWxcbiAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQobmV3TWVtYmVySWRzKTtcbiAgICAgIGZvciAoY29uc3QgaWQgb2YgZXhpc3RpbmdNZW1iZXJJZHMpIHtcbiAgICAgICAgaWYgKCFuZXdTZXQuaGFzKGlkKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKioqKioqXG4gICAqIEl0IGlzIHRvIHBvcHVsYXRlIG1vcmUgb3B0aW9ucyBlbGVtZW50cyB3aGlsZSBlZGl0aW5nIHRoZSBwb2xpY3kgZm9ybVxuICAgKi9cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJyk7XG4gICAgfVxuICAgIC8vIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVWSUVXRVInKTsgfVxuICAgIC8vIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UUycpOyB9XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFTEFURURfRE9DVU1FTlRTJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnVkVSU0lPTicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudC5sZW5ndGgpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19BU1NFU1NNRU5UUycpO1xuICAgICAgdGhpcy5nZXRBc3Nlc3NtZW50RGV0YWlscyh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudFswXSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtICYmXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcbiAgICApIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19QUk9HUkFNX1JFU1BPTlNJQklMSVRJRVMnKTtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUHJvZ3JhbSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdMSU5LX1JFTEFURURfUE9MSUNJRVMnKTtcbiAgICB9XG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xuICB9XG4gIC8qKlxuICAgKiBJdCBpcyB0byBhZGQgYW5kIHJlbW92ZSB0aGUgZWxlbWVudHMgZnJvbSBNb3JlIG9wdGlvbiB0byB0aGUgcG9saWN5IEZvcm1cbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGRldGFpbHMgcmVsYXRlZCB0byBjaGVja2VkIHZhbHVlLCBjb2RlIHBhcnRpY3VsYXIgZWxlbWVudHMgZnJvbSBNb3JlIG9wdGlvbnNcbiAgICovXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgIGNhc2UgJ1JFU1BPTlNJQklMSVRZX0NFTlRFUic6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIGNhc2UgJ1JFVklFV0VSJzpcbiAgICAgIC8vICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAvLyAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0hFQ0tQT0lOVFMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZE92ZXJzZWVycyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUkVMQVRFRF9ET0NVTUVOVFMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVkVSU0lPTic6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRWZXJzaW9uID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdMSU5LX1BST0dSQU1fUkVTUE9OU0lCSUxJVElFUyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUHJvZ3JhbSA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTElOS19BU1NFU1NNRU5UUyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rQXNzZXNzbWVudCA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTElOS19SRUxBVEVEX1BPTElDSUVTJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtQb2xpY2llcyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxuICAgKi9cbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XG4gICAgY29uc3QgZWRpdExvYWRlciA9XG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJ1xuICAgICAgICA/IHRoaXMucmNMaXN0TG9hZGVkICYmXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgJiZcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkXG4gICAgICAgIDogdHJ1ZTtcbiAgICBpZiAodGhpcy51c2Vyc0xpc3RMb2FkZWQgJiYgZWRpdExvYWRlcikge1xuICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YSAmJiB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZSkge1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLnN1YnN0cmluZyhcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJylcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWQpIHtcbiAgICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuY29udmVydEZpbGVEYXRhLmNhdGVnb3J5SWRdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSkge1xuICAgICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgW3RoaXMuc2VsZWN0ZWRDYXRlZ29yeV0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgIHRoaXMuZWRpdFBvbGljeSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBjb25maXJtYXRpb24gcG9wdXAgd2hlbiBhdmFpbGFiaWxpdHkgb24gUG9saWN5IHBvcnRhbCB0b2dnbGUgaW4gT05cbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHRvZ2dsZSB2YWx1ZSB3aGljaCBpcyBhbHdheXMgdHJ1ZSBvciBmYWxzZVxuICAgKi9cbiAgYXZhaWxhYmlsaXR5T25Qb3J0YWwoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgY29uc3QgY29uZmlybWF0aW9uRGV0YWlsczogQ29uZmlybWF0aW9uQWxlcnQgPSB7XG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZTogYFRoZSBwb2xpY2llcyB0aGF0IHlvdSBpbnRlbmQgdG8gbWFrZSBhY2Nlc3NpYmxlIHRvIHRoZSBlbnRpcmUgb3JnYW5pemF0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUgcG9saWN5IHBvcnRhbC5cbiAgICAgICAgSXQgaXMgbGlrZSBhIHNoYXJlZCBjYXRhbG9nIG9mIGFsbCBhY3RpdmUgJiB1cGRhdGVkIHBvbGljaWVzIHRoYXQgYW55IGxvZ2dlZCBpbiB1c2VyIGNhbiByZWFkLyBkb3dubG9hZCBmb3IgcmVmZXJlbmNlLlxuICAgICAgICBIZW5jZSwgaWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgeW91IHRvIHNldCB1cCBhbiBhdHRlc3RhdGlvbiBzY2hlZHVsZSBvciBzZWxlY3RcbiAgICAgICAgcmVhZGVycyB0byBhdHRlc3QgdGhlIHBvbGljaWVzLmAsXG4gICAgICAgIGFjdGlvbjogJ1BPTElDWV9QT1JUQUwnLFxuICAgICAgfTtcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbkFsZXJ0LmVtaXQoY29uZmlybWF0aW9uRGV0YWlscyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlY2VpdmVzIHRoZSBpbnB1dCBmcm9tIHRoZSBDb25maXJtYXRpb24gZGlhbG9nIG9mIGF2YWlsYWJsZSBvbiBQb2xpY3kgcG9ydGFsXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBvcHRpb24gZnJvbSB0aGUgY29uZmlybWF0aW9uIGRpYWxvZyB3aGljaCBpcyBhbHdheXMgZWl0aGVyICdZRVMnIG9yICdOTydcbiAgICovXG4gIGNvbmZpcm1Qb2xpY3lQb3J0YWwoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCA9IGV2ZW50ID09ICdZRVMnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmIChldmVudCA9PSAnTk8nKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcG9saWN5Rm9ybSB3aXRoIHNlbGVjdGVkIGVsZW1lbnRzIGZyb20gdGhlIGxpc3RpbmcsIGZyZXF1ZW5jeSwgZmlsZSB1cGxvYWQgY29tcG9uZW50c1xuICAgKiBAcGFyYW0gdHlwZSBkZWZpbmVzIHRoZSBwYXJ0aWN1bGFyIGZpZWxkIG9uIFBvbGljeSBmb3JtLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtcyBjb250YWlucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBpdGVtcyBmcm9tIHRoZSBsaXN0XG4gICAqL1xuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLnJjTGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdpdGVtX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdfaWQnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXG4gICAgICAgICAgJ19pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2VycyA9IFtdO1xuICAgICAgICB0aGlzLnJlc2V0UG9saWN5QWNjZXNzRGV0YWlscygpO1xuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3ZXJGcmVxdWVuY3koKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhZyA9IGVsZW1lbnQuY3VzdG9tX3RhZ3M7XG4gICAgICAgICAgaWYgKHRhZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnbmFtZSA9PSB0YWdEYXRhLnRhZ25hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGxldCB1c2VySWRzLCBncm91cElkcztcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgdXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMudXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgICAgICBncm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMuZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVzZXJJZHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgdXNlcklkcyxcbiAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxuICAgICAgICBsZXQgc2VsZWN0ZWRVc2VySWRzLCBzZWxlY3RlZEdyb3VwSWRzO1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy5ncm91cHMsICdncm91cF9pZCcpO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRVc2VySWRzLFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NGYWlsJzpcbiAgICAgICAgbGV0IHNlbGVjdGVkRmFpbFVzZXJJZHMsIHNlbGVjdGVkRmFpbEdyb3VwSWRzO1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy51c2VycyxcbiAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkRmFpbEdyb3VwSWRzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy51c2Vyc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzLFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9yZUxldmVscykge1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLFxuICAgICAgICAgICAgYXBwcm92ZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1t0aGlzLmFwcHJvdmVyc0xpc3RJbmRleF0gPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy53b3JrZmxvd1R5cGUsXG4gICAgICAgICAgYXBwcm92ZXJzLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyX2F0dGFjaG1lbnRzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcblxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc29jaWF0ZWREb2N1bWVudHMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjaGVja3BvaW50cyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHMgPz8gW107XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID8/IDA7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBzZWxlY3RlZEl0ZW1zPy5yZXF1aXJlZFBvaW50ID8/IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3duZXJzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XG4gICAgICAgIGxldCBhY2Nlc3NJZHMsIGFjY2Vzc0dyb3VwSWRzO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZ1dHVyZVVzZXJzV2lsbFNlbGVjdDtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgYWNjZXNzSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgICAgIGFjY2Vzc0dyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy5ncm91cHMsICdncm91cF9pZCcpO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX2dyb3VwcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICAgICAgYWNjZXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2Nlc3NJZHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgYWNjZXNzSWRzLFxuICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaXNMaW5rZWRQb2xpY2VzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkxpbmtlZFBvbGljaWVzID0gdGhpcy5saXN0T2ZTZWxlY3RlZFBvbGljaWVzKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnNlbGVjdGVkUG9saWN5TGlzdFxuICAgICAgICApO1xuICAgICAgICB0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMgPSBzZWxlY3RlZEl0ZW1zPy5zZWxlY3RlZFBvbGljeUxpc3Q7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gIH1cblxuICBsaXN0T2ZTZWxlY3RlZFBvbGljaWVzKHNlbGVjdGVkUG9saWNpZXM6IGFueSkge1xuICAgIHJldHVybiBzZWxlY3RlZFBvbGljaWVzPy5tYXAoKHBvbGljeTogYW55KSA9PiBwb2xpY3k/LmNvbnRyYWN0X2lkKTtcbiAgfVxuXG4gIC8vcmV0dXJuIHRoZSBfaWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3ZlcnNlZXIgZ3JvdXAuXG4gIGdldEdyb3VwT2JqZWN0SWQob3ZlcnNlZXJHcm91cD86IGFueSkge1xuICAgIGxldCBvdmVyc2Vlckdyb3VwSWRBcnJheSA9IG92ZXJzZWVyR3JvdXAubWFwKChlbGU6IGFueSkgPT4gZWxlLl9pZCk7XG4gICAgcmV0dXJuIG92ZXJzZWVyR3JvdXBJZEFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIHBhcnRpY3VsYXIgZWxlbWVudCBmcm9tIHNlbGVjdGVkIGxpc3RcbiAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBjYXNlXG4gICAqIEBwYXJhbSBldmVudCBob2xkcyB0aGUgaWQgb3Iga2V5IG9mIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxuICAgKiBAcGFyYW0gcmVtb3ZlSW5kZXggY29udGFpbnMgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIHJlbW92ZUluZGV4PzogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MuZmluZEluZGV4KFxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3Muc3BsaWNlKHJjSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGVudHJ1c3RJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKG93bmVyOiBhbnkpID0+IG93bmVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5zcGxpY2UoZW50cnVzdEluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncm91cEFzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXg6IGFueSA9XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uZmluZEluZGV4KFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5maW5kSW5kZXgoXG4gICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NFbWFpbCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5maW5kSW5kZXgoXG4gICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLnNwbGljZShvdmVyc2VlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjY0dyb3VwRW1haWwnOlxuICAgICAgICBjb25zdCBjY0dyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5maW5kSW5kZXgoXG4gICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbD8uc3BsaWNlKGNjR3JvdXBJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyTm90aWZ5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwuZmluZEluZGV4KFxuICAgICAgICAgIChvdmVyc2Vlck46IGFueSkgPT4gb3ZlcnNlZXJOLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5zcGxpY2Uob3ZlcnNlZXJOb3RpZnlJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NHcm91cEZhaWxFbWFpbCc6XG4gICAgICAgIGNvbnN0IGNjRmFpbEdyb3VwSW5kZXg6IGFueSA9XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwPy5zcGxpY2UoY2NGYWlsR3JvdXBJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbXG4gICAgICAgICAgcmVtb3ZlSW5kZXhcbiAgICAgICAgXS5hcHByb3ZlcnMuZmluZEluZGV4KFxuICAgICAgICAgIChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLnNwbGljZShcbiAgICAgICAgICBhcHByb3ZlcnNJbmRleCxcbiAgICAgICAgICAxXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5sZW5ndGggPT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuZmluZEluZGV4KFxuICAgICAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5pdGVtX2lkID09IGV2ZW50Lml0ZW1faWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XG4gICAgICAgIGNvbnN0IHRhZyA9IGV2ZW50LmN1c3RvbV90YWdzO1xuICAgICAgICBpZiAodGFnLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ25hbWUgPT0gdGFnRGF0YS50YWduYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4Q1QgIT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXG4gICAgICAgICAgJ19pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtID0gT2JqZWN0LmFzc2lnbih0aGlzLnBvbGljeUZvcm0pO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xuICAgICAgICB0aGlzLnJlc2V0UG9saWN5QWNjZXNzRGV0YWlscygpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSBbXTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSAwO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3b3JrZmxvd0xldmVsJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJlbW92ZVdvcmtmbG93KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGlua1Byb2dyYW0nOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ubGlua1Byb2dyYW0gPSB7XG4gICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgIHJlbW92ZWQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcG9saWN5SWRzOiBbdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfaWQgPz8gMF0sXG4gICAgICAgICAgICAgIHByb2dyYW1JZDogdGhpcy5zZWxlY3RlZExpbmtQcm9ncmFtPy5faWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXMgPSB7fTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ293bmVycyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X293bmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XG4gICAgICAgIGNvbnN0IHVzZXJBY2Nlc3NJbmRleCA9IHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMuZmluZEluZGV4KFxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lcj8uZW1wbG95ZWVfaWQgPT0gZXZlbnQ/LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/LnNwbGljZSh1c2VyQWNjZXNzSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FjY2Vzc0dyb3VwJzpcbiAgICAgICAgY29uc3QgZ3JvdXBBY2Nlc3NJbmRleDogYW55ID1cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/LnNwbGljZShncm91cEFjY2Vzc0luZGV4LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmcmVxdWVuY3knOlxuICAgICAgICB0aGlzLnJlbW92ZUZyZXF1ZW5jeSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lzTGlua2VkUG9saWNlcyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcyA9IHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcz8uZmlsdGVyKFxuICAgICAgICAgIChwb2xpY3lJZDogYW55KSA9PiBldmVudCAhPT0gcG9saWN5SWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzID0gdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzPy5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0/LmNvbnRyYWN0X2lkICE9PSBldmVudFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgYXNzaWduZWVzIGFuZCBvdmVyc2VlcnMgbGlzdCBzdWNoIHRoYXQgYm90aCBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHNhbWUgdXNlcnMgYmFzZWQgb24gc2VsZWN0aW9uXG4gICAqL1xuICByZWZyZXNoQWxsTGlzdHMoKSB7XG4gICAgbGV0IGFzc2lnbmVlc0lkczogYW55ID0gW107XG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICBjb25zdCBhbGxVc2VycyA9IGNsb25lRGVlcCh0aGlzLnVzZXJzTGlzdCk7XG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyk7XG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsKTtcbiAgICBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsKTtcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgYXNzaWduZWVzSWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG5cbiAgICBhc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZXNJZHMpXTtcbiAgICByZXZpZXdlcnNJZHMgPSBbLi4ubmV3IFNldChyZXZpZXdlcnNJZHMpXTtcbiAgICBvdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KG92ZXJzZWVySWRzKV07XG5cbiAgICAvLyB0aGlzLmFzc2lnbm9yc0xpc3QgPSBiZWhhbGZVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShyZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKSkpO1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICEoXG4gICAgICAgICAgcmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8XG4gICAgICAgICAgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcbiAgICAgICAgKVxuICAgICk7XG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICBjb25zdCB1c2VyT2JqID0gdGhpcy5hc3NpZ25lZXNMaXN0O1xuICAgICAgdXNlck9iaj8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlci5teV9tZW1iZXJfaWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub3duZXJsaXN0ID0gdXNlck9iajtcbiAgICB9XG4gICAgLy8gdGhpcy5yZXZpZXdlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEoYXNzaWduZWVzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpKSk7XG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgIShcbiAgICAgICAgICBhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHxcbiAgICAgICAgICByZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aG9sZSBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xuICAgKiBAcGFyYW0gbGlzdCBpdCBpcyB0aGUgbWFpbiBsaXN0ICB3aGljaCBjb250YWlucyBhbGwgZWxlbWVudHMgbGlzdFxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBmaWx0ZXIgc2VsZWN0ZWQgbGlzdCBmcm9tIHRoZSBsaXN0XG4gICAqIEBwYXJhbSBpZHMgc2VsZWN0ZWQgaWRzIGFycmF5XG4gICAqL1xuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xuICAgIGlkcz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3Q/LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xuICAgKiBAcGFyYW0gbGlzdCBhY3R1YWwgc2VsZWN0ZWQgbGlzdFxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcbiAgICovXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdC5tYXAoKGVsZSkgPT4ge1xuICAgICAgaWYgKGVsZVtrZXldKSB7XG4gICAgICAgIHJldHVybiBlbGVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZXZpZXdlciB0eXBlIGluIGFwcHJvdmFsIHdvcmtmbG93XG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCByZXZpZXdlciB0eXBlXG4gICAqL1xuICByZXZpZXdlclR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMud29ya2Zsb3dUeXBlID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmcmVxdWVuY3kgaW4gZWRpdCAgbW9kZVxuICAgKi9cbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSwgbW9kZTogJ1NFTEVDVCcgfCAnUE9QVUxBVEUnID0gJ1NFTEVDVCcpIHtcbiAgICAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscywgLy9cbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSxcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8ubWFya19mYWlsZWRfYWZ0ZXIsXG4gICAgICBmYWlsZWRfdGltZV91dGM6ICcnLFxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgdGltZUluMjRIcjogZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6IERFRkFVTFRfMjRIUixcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IoXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LmFzc2lnbmVlX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcbiAgICAgICksXG4gICAgICBzdGFydERhdGU6ICcnLFxuICAgICAgcmVwb3J0SWQ6IDAsXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoXG4gICAgICAgIGV2ZW50LmZhaWxlZF90aW1lICE9ICcnID8gZXZlbnQuZmFpbGVkX3RpbWUgOiBERUZBVUxUXzI0SFJcbiAgICAgICksXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQuZnJlcXVlbmN5X3RleHQsXG4gICAgfTtcblxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIGZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XG4gICAgKHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9IGV2ZW50LnBsYWNlaG9sZGVyKSxcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ubWFya19mYWlsZWRfYWZ0ZXIgPSBldmVudC5mYWlsZWRBZnRlcik7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcbiAgICB0aGlzLnBvbGljeUZvcm0uZmFpbGVkX3RpbWUgPSBldmVudC50aW1lSW4yNEhyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NpZ25lZV9zdGFydF9kYXRlID0gbW9tZW50KGV2ZW50LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdkZGQgTU1NIEREIFlZWVknXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXIsXG4gICAgfTtcbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIHRoZSBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gZXZlbnQ/LnBsYWNlaG9sZGVyXG4gICAgICA/IGV2ZW50LnBsYWNlaG9sZGVyXG4gICAgICA6ICdIb3cgb2Z0ZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIGF0dGVzdGVkPyc7XG4gIH1cblxuICByZXZpZXdlckZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMsIC8vXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5yZXZpZXdGYWlsZWRBZnRlcixcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgICB0aW1lSW4yNEhyOlxuICAgICAgICBldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6IERFRkFVTFRfMjRIUixcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IoXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LnJldmlld2VyX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcbiAgICAgICksXG4gICAgICBzdGFydERhdGU6ICcnLFxuICAgICAgcmVwb3J0SWQ6IDAsXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoXG4gICAgICAgIGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogREVGQVVMVF8yNEhSXG4gICAgICApLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnJldmlld2ZyZXF1ZW5jeURldGFpbHMsXG4gICAgfTtcblxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEYXRhKGRhdGEpO1xuICB9XG5cbiAgcmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpIHtcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICB3aW5kb3c6IDAsXG4gICAgICBmYWlsZWQ6IDAsXG4gICAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXG4gICAgfTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkQWZ0ZXIgPSAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSAnJztcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV90eXBlID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gREVGQVVMVF8yNEhSO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgcmV2aWV3ZXIgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXG4gICAqL1xuICByZXZpZXdlckZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRBZnRlciA9IGV2ZW50LmZhaWxlZEFmdGVyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSBldmVudC5wYXR0ZXJuLnNwbGl0KCd+JylbMF07XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSBldmVudC53aW5kb3c7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSBldmVudC50aW1lSW4yNEhyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdlcl9zdGFydF9kYXRlID0gbW9tZW50KGV2ZW50LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdkZGQgTU1NIEREIFlZWVknXG4gICAgKTtcblxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCBmYWxzZSk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxuICAgIH07XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIHRoZSByZXZpZXdlciBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIHJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID1cbiAgICAgIGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXJcbiAgICAgID8gZXZlbnQucGxhY2Vob2xkZXJcbiAgICAgIDogJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkID8nO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGF0YSBzdWJtaXR0ZWQgb24gY3JlYXRlIHBvbGljeSBmb3JtXG4gICAqL1xuICB2YWxpZGF0ZVBvbGljeSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWU7XG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IGV2ZW50LnJlcGxhY2UocmUsICcnKS50cmltKCk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKCkgPT0gJycgfHxcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICAoKHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAhdGhpcy5ncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgKCh0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8ubGVuZ3RoID4gMCkgJiZcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBFbmFibGVkKSkpIHx8XG4gICAgICAodGhpcy5wb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAoIXRoaXMuZ3JvdXBFbmFibGVkIHx8XG4gICAgICAgICAgKHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5ncm91cEVuYWJsZWQpKSkgfHxcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMubGVuZ3RoID4gMCkgfHxcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzICYmXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5sZW5ndGggPT0gMCkgfHxcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoID09IDAgfHxcbiAgICAgICghdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92YWxfd29ya2Zsb3c/Lmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGggJiZcbiAgICAgICAgdGhpcy5wb2xpY3lBcHByb3ZhbEZsYWcgPT09IDApIHx8XG4gICAgICAodGhpcy5mb3JtYXRFdmlkZW5jZSAmJiB0aGlzLmZvcm1hdEV2aWRlbmNlLm5ld0xpbmsuY29udGFpbnNFcnJvcikgfHxcbiAgICAgICF0aGlzLnBvbGljeUZvcm0ucG9saWN5X293bmVycz8ubGVuZ3RoIHx8XG4gICAgICAodGhpcy5pc1NlbmRGb3JBdHRlc3RhdGlvbiAmJlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ha2VzIGFuIGFwaSBjYWxsIHRvIGNyZWF0ZSBhIHBvbGljeVxuICAgKiBAcGFyYW0gcG9saWN5IGNvbnRhaW5zIHBvbGljeUZvcm0gZGF0YVxuICAgKi9cbiAgc3VibWl0UG9saWN5KCkge1xuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlUG9saWN5KCk7XG4gICAgaWYgKCF2YWxpZCB8fCAhdGhpcy5pc1ZlcnNpb25WYWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xuICAgIGlmICh0aGlzLm5vV29ya2Zsb3dTZWxlY3RlZCkge1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gdGhpcy5zZWxlY3RlZFdvcmtmbG93O1xuICAgIH1cbiAgICBjb25zdCBwb2xpY3kgPSB0aGlzLnBvbGljeUZvcm07XG4gICAgbGV0IGFwcHJvdmVyc0RhdGE6IGFueSA9IHRoaXMuY29udmVydEFwcHJvdmFsV29ya2Zsb3coXG4gICAgICBwb2xpY3kuc2VsZWN0ZWRBcHByb3ZlcnNcbiAgICApO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHBvbGljeS5wb2xpY3lEdWVEYXRlPy4kZCA/PyBwb2xpY3kucG9saWN5RHVlRGF0ZTtcbiAgICBsZXQgcmV2aWV3ZXJGaWxlc0FycmF5ID0gY2xvbmVEZWVwKHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcyk7XG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IHJldmlld2VyRmlsZXNBcnJheS5tYXAoKGZpbGU6IGFueSkgPT4ge1xuICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlbmFtZTtcbiAgICAgIGZpbGUuZmlsZV9wYXRoID0gZmlsZS5maWxlcGF0aDtcbiAgICAgIGZpbGUub3JnX25hbWUgPSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGZpbGUuZmlsZW5hbWU7XG4gICAgICBkZWxldGUgZmlsZS5maWxlcGF0aDtcbiAgICAgIGRlbGV0ZSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGZpbGUubGlua1NldDtcbiAgICAgIHJldHVybiBmaWxlO1xuICAgIH0pO1xuXG4gICAgbGV0IGF0dGVzdGF0aW9uRmlsZXNBcnJheSA9IGNsb25lRGVlcChcbiAgICAgIHBvbGljeS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzXG4gICAgKTtcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gYXR0ZXN0YXRpb25GaWxlc0FycmF5Lm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIGVsZS5uYW1lID0gZWxlLmZpbGVuYW1lO1xuICAgICAgZWxlLmZpbGVfcGF0aCA9IGVsZS5maWxlcGF0aDtcbiAgICAgIGVsZS5vcmlnaW5hbF9maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZW5hbWU7XG4gICAgICBlbGUuZm9sZGVyX2lkID0gZWxlPy5mb2xkZXJfaWQgPyBlbGUuZm9sZGVyX2lkIDogMDtcbiAgICAgIGVsZS5wYXRoID0gZWxlPy5wYXRoID8gZWxlLnBhdGggOiBlbGUuZmlsZXBhdGggKyBlbGUuZmlsZW5hbWU7XG4gICAgICBlbGUuaXNMaW5rU2V0ID0gZWxlLmxpbmtTZXQ7XG4gICAgICBlbGUub3RoZXJfdHlwZSA9IGVsZT8ub3RoZXJzO1xuICAgICAgZGVsZXRlIGVsZS5maWxlbmFtZTtcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZXBhdGg7XG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGVsZS5saW5rU2V0O1xuICAgICAgZGVsZXRlIGVsZS5maWxlX25hbWU7XG4gICAgICBkZWxldGUgZWxlLm90aGVycztcbiAgICAgIHJldHVybiBlbGU7XG4gICAgfSk7XG4gICAgY29uc3QgcmV2aWV3ZXJJRCA9IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJldmlld2VycywgJ21lbWJlcl9pZCcpO1xuICAgIGNvbnN0IHBvbGljeUFjY2Vzc1VzZXJzSWRzID1cbiAgICAgIHRoaXMucmV0dXJuSWRzKHBvbGljeS5wb2xpY3lfYWNjZXNzX293bmVycywgJ21lbWJlcl9pZCcpID8/IFtdO1xuICAgIGNvbnN0IHBvbGljeUFjY2Vzc0dyb3Vwc0lkcyA9XG4gICAgICB0aGlzLnJldHVybklkcyhwb2xpY3kucG9saWN5X2FjY2Vzc19ncm91cHMsICdfaWQnKSA/PyBbXTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBwb2xpY3lfbmFtZTogcG9saWN5LnBvbGljeU5hbWUsXG4gICAgICBub3RlczogcG9saWN5LnBvbGljeU5vdGVzLFxuICAgICAgaXNfcG9ydGFsX2VuYWJsZTogcG9saWN5LmF2YWlsYWJsZU9uUG9ydGFsID8gMSA6IDAsXG4gICAgICBpc19zdWdnZXRpb25fZW5hYmxlOiBwb2xpY3kuYWNjZXB0U3VnZ2VzdGlvbnMgPyAxIDogMCxcbiAgICAgIGNhdGVnb3J5X2lkX2FycjogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkQ2F0ZWdvcmllcywgJ2l0ZW1faWQnKSxcbiAgICAgIGFwcHJvdmVyczogYXBwcm92ZXJzRGF0YSxcbiAgICAgIGFzc2lnbmVlX2lkczogdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIHBvbGljeT8uc2VsZWN0ZWRBc3NpZ25lZXMsXG4gICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICkubWFwKChpZCkgPT4gTnVtYmVyKGlkKSksXG4gICAgICB1c2VyZ3JvdXBfaWRzOiB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRHcm91cEFzc2lnbmVlLCAnX2lkJykgPz8gW10sXG4gICAgICBJc19hcHByb3ZhbDogMCwgLy9uZWVkcyB0byBjaGVjayBpbiBmZVxuXG4gICAgICBhc3NvY2lhdGVkX2RvY3VtZW50czogcG9saWN5LmFkZEFzc29jaWF0ZWREb2N1bWVudHNcbiAgICAgICAgPyBhdHRlc3RhdGlvbkZpbGVzXG4gICAgICAgIDogW10sXG5cbiAgICAgIGN1c3RvbV90YWdzOiBKU09OLnN0cmluZ2lmeShwb2xpY3kuY3VzdG9tVGFncyksXG5cbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgPyBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgOiAnJyxcbiAgICAgIGZyZXF1ZW5jeV90ZXh0OiBwb2xpY3kuZnJlcXVlbmN5X2RldGFpbHMgPyBwb2xpY3kuZnJlcXVlbmN5X3RleHQgOiAnJyxcbiAgICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXG4gICAgICAgID8gcG9saWN5LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxuICAgICAgICA6IDAsXG4gICAgICBmYWlsZWRfdGltZTogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzID8gcG9saWN5LmZhaWxlZF90aW1lIDogJycsXG4gICAgICBtYXJrX2ZhaWxlZF9hZnRlcjogcG9saWN5LmZyZXF1ZW5jeV9kZXRhaWxzXG4gICAgICAgID8gcG9saWN5Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICAgIDogJycsXG4gICAgICAvLyBzdGFydERhdGU6IHBvbGljeS5wb2xpY3lEdWVEYXRlLnRvRGF0ZVN0cmluZygpLFxuICAgICAgc3RhcnREYXRlOiBtb21lbnQoc3RhcnREYXRlKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWScpLFxuXG4gICAgICBSZXZpZXdlckF0dGFjaG1lbnRzOlxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlc1xuICAgICAgICAgID8gcmV2aWV3ZXJGaWxlc1xuICAgICAgICAgIDogW10sXG4gICAgICBSZXZpZXdlckxpbmtzOlxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRMaW5rc1xuICAgICAgICAgID8gcG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzXG4gICAgICAgICAgOiBbXSxcbiAgICAgIFJldmlld2VyTWVtYmVySWQ6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcmV2aWV3ZXJJRFswXSA/IHJldmlld2VySURbMF0gOiAwLFxuICAgICAgaXNSZXZpZXc6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiZcbiAgICAgICAgICAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzIHx8XG4gICAgICAgICAgICBwb2xpY3kuZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MpICYmXG4gICAgICAgICAgcmV2aWV3ZXJJRFswXVxuICAgICAgICAgID8gMVxuICAgICAgICAgIDogMCxcblxuICAgICAgcmV2aWV3RmFpbGVkQWZ0ZXI6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgID8gcG9saWN5LnJldmlld0ZhaWxlZEFmdGVyXG4gICAgICAgICAgOiAwLFxuICAgICAgcmV2aWV3RmFpbGVkVGltZTpcbiAgICAgICAgcG9saWN5LmFkZFJldmlld2VycyAmJiBwb2xpY3kucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzXG4gICAgICAgICAgPyBwb2xpY3kucmV2aWV3RmFpbGVkVGltZVxuICAgICAgICAgIDogJycsXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X2RldGFpbHM6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgIDogJycsXG4gICAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6XG4gICAgICAgIHBvbGljeS5hZGRSZXZpZXdlcnMgJiYgcG9saWN5LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgID8gcG9saWN5LnJldmlld19mcmVxdWVuY3lfdHlwZVxuICAgICAgICAgIDogJycsXG4gICAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOlxuICAgICAgICBwb2xpY3kuYWRkUmV2aWV3ZXJzICYmIHBvbGljeS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgICA/IHBvbGljeS5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlXG4gICAgICAgICAgOiAwLFxuXG4gICAgICBlbnRpdGllczogdGhpcy5wb2xpY3lGb3JtPy5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnNcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRSQ3MsICdpdGVtX2lkJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuICAgICAgcmlza19jbGFzczogcG9saWN5LnJpc2tSYXRpbmcudG9TdHJpbmcoKSxcblxuICAgICAgQ0NGYWlsRW1haWw6IHBvbGljeS5hZGRPdmVyc2VlcnNcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuQ0NGYWlsRW1haWwsICdlbXBsb3llZV9lbWFpbCcpLnRvU3RyaW5nKClcbiAgICAgICAgOiAnJyxcbiAgICAgIENDRW1haWw6IHBvbGljeS5hZGRPdmVyc2VlcnNcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuQ0NFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuXG4gICAgICBjaGVja3BvaW50RGV0YWlsczogcG9saWN5LmNoZWNrcG9pbnREZXRhaWxzID8/IFtdLFxuICAgICAgdG90YWxRdWVzdGlvbjogcG9saWN5LnRvdGFsUXVlc3Rpb24gPyBwb2xpY3kudG90YWxRdWVzdGlvbiA6IDAsIC8vXG4gICAgICBwYXNzaW5nTWFya3M6IHBvbGljeS5wYXNzaW5nTWFya3MgPyBwb2xpY3kucGFzc2luZ01hcmtzIDogMCwgLy9cblxuICAgICAgcG9saWN5QXBwcm92YWxGbGFnOiAwLFxuXG4gICAgICBpc19zaWduYXR1cmVfcmVxdWlyZWQ6IHBvbGljeS5yZXF1aXJlc1NpZ25hdHVyZUZvckF0dGVzdGF0aW9uID8gMSA6IDAsXG4gICAgICBjY191c2VyZ3JvdXBfaWRzOiB0aGlzLmNjRW1haWxPYmpJZHMsXG4gICAgICBjY19mYWlsX3VzZXJncm91cF9pZHM6IHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMsXG4gICAgICByZXZpZXdlcl9zdGFydF9kYXRlOiBwb2xpY3kucmV2aWV3ZXJfc3RhcnRfZGF0ZSA/PyAnJyxcbiAgICAgIGFzc2lnbmVlX3N0YXJ0X2RhdGU6IHBvbGljeS5hc3NpZ25lZV9zdGFydF9kYXRlLFxuICAgICAgcG9saWN5X3ZlcnNpb246IHBvbGljeS5hZGRWZXJzaW9uID8gcG9saWN5LnBvbGljeV92ZXJzaW9uIDogJycsXG4gICAgICBhc3Nlc3NtZW50OiBwb2xpY3kuYWRkTGlua0Fzc2Vzc21lbnRcbiAgICAgICAgPyBwb2xpY3kuYXNzZXNzbWVudC5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6IGVsZS5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGVsZS5jYXRlZ29yeV9pZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgICA6IFtdLFxuICAgICAgcG9saWN5X293bmVyczogdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMubWFwKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5tZW1iZXJfaWRcbiAgICAgICksXG4gICAgICBhcHByb3ZhbF93b3JrZmxvd19pZDogcG9saWN5Py5zZWxlY3RlZEFwcHJvdmVyc1swXT8uX2lkXG4gICAgICAgID8gW3BvbGljeT8uc2VsZWN0ZWRBcHByb3ZlcnNbMF0/Ll9pZF1cbiAgICAgICAgOiBbXSxcbiAgICAgIGxpbmtQcm9ncmFtOiBPYmplY3Qua2V5cyhwb2xpY3k/LmxpbmtQcm9ncmFtKS5sZW5ndGhcbiAgICAgICAgPyBwb2xpY3k/LmxpbmtQcm9ncmFtXG4gICAgICAgIDoge1xuICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIGJ1c2luZXNzX2N5Y2xlOiBPYmplY3Qua2V5cyhwb2xpY3k/LmxpbmtQcm9ncmFtKS5sZW5ndGhcbiAgICAgICAgPyBwb2xpY3k/LmJ1c2luZXNzQ3ljbGVcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBwb2xpY3lfYWNjZXNzX3R5cGU6IHBvbGljeS5wb2xpY3lfYWNjZXNzX3R5cGUgPz8gMCxcbiAgICAgIHBvbGljeV9hY2Nlc3Nfb3duZXJzOiBwb2xpY3kuYXZhaWxhYmxlT25Qb3J0YWxcbiAgICAgICAgPyBbXVxuICAgICAgICA6IHBvbGljeUFjY2Vzc1VzZXJzSWRzID8/IFtdLFxuICAgICAgcG9saWN5X2FjY2Vzc19ncm91cHM6IHBvbGljeS5hdmFpbGFibGVPblBvcnRhbFxuICAgICAgICA/IFtdXG4gICAgICAgIDogcG9saWN5QWNjZXNzR3JvdXBzSWRzID8/IFtdLFxuICAgICAgZGlzcGxheU9uUG9ydGFsOiBwb2xpY3kuaXNQb3J0YWxEaXNwbGF5RW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgIGxpbmtlZFBvbGljaWVzOiBbLi4ubmV3IFNldChwb2xpY3kuTGlua2VkUG9saWNpZXMpXSxcbiAgICB9O1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5zdWJtaXRQb2xpY3kocGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLl9pZDtcbiAgICAgICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGE/LmZpbGVOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxpbmtEb2N1bWVudFdpdGhQb2xpY3kodGhpcy5jb252ZXJ0RmlsZURhdGEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnRlbXBsYXRlSWQpIHtcbiAgICAgICAgICAgIHRoaXMub25UZW1wbGF0ZVNlbGVjdChbeyBfaWQ6IHRoaXMudGVtcGxhdGVJZCB9XSwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXG4gICAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcpIHtcbiAgICAgIGlmICh0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyAhPT0gMCkge1xuICAgICAgICBkZWxldGUgcGF5bG9hZC5hcHByb3ZlcnM7XG4gICAgICAgIHBheWxvYWQucG9saWN5QXBwcm92YWxGbGFnID0gMjtcbiAgICAgIH1cbiAgICAgIHRoaXMucG9saWN5U2VydmljZS51cGRhdGVQb2xpY3kocGF5bG9hZCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wb2xpY3lJZCA9IHJlcy5faWQ7XG5cbiAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZW5kRm9yQXR0ZXN0YXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgICAgICdUaGUgcG9saWN5IGhhcyBiZWVuIHNlbnQgZm9yIGF0dGVzdGF0aW9uJyxcbiAgICAgICAgICAgICAgICAnc3VjY2VzcydcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIHBvbGljeSBoYXMgYmVlbiB1cGRhdGVkJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVybCA9XG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArICcvYWxsL3BvbGljeS93b3Jrcm9vbT9pZD0nICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgICAgICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS93b3Jrcm9vbSddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAgICdhbGVydCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxpbmtEb2N1bWVudFdpdGhQb2xpY3koZG9jdW1lbnQ6IGFueSkge1xuICAgIGxldCB1cmw6c3RyaW5nID0gJyc7XG4gICAgaWYgKFxuICAgICAgZG9jdW1lbnQuZmlsZU5hbWUgJiZcbiAgICAgIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fFxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJyB8fFxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnZG9jeCcgfHxcbiAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnKVxuICAgICkge1xuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlXG4gICAgICAgIC5leHRyYWN0RmlsZShkb2N1bWVudC5maWxlRXh0ZW5zaW9uLCBkb2N1bWVudC5maWxlUGF0aCwgdGhpcy5wb2xpY3lJZClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgJiYgdGhpcy5wb2xpY3lJZCkge1xuICAgICAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgPT09ICdkb25lJyB8fCByZXMuY29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ2RvY3gnIHx8XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnRE9DWCdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHVybCA9IHRoaXMuYmFzZVVSTCArIEFQSS5lZGl0UG9saWN5ICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ3BkZicgfHxcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdQREYnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmJhc2VVUkwgKyBBUEkuZ29Ub1BvbGljeVdvcmtyb29tICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh1cmwsIHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcbiAgICAgICAgJ2FsZXJ0J1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogb3BlbnMgdGhlIGRhdGUgcGlja2VyIG9uIHBvbGljeSBmb3JtXG4gICAqL1xuICBvcGVuRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xuICAgIC8vIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNsb3NlcyB0aGUgZGF0ZSBwaWNrZXIgZnJvbSBwb2xpY3kgZm9ybVxuICAgKi9cbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuXG4gICAgaWYgKCFldnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIGxldCBtb250aEFycmF5ID0gW1xuICAgICAgICAnSmFuJyxcbiAgICAgICAgJ0ZlYicsXG4gICAgICAgICdNYXInLFxuICAgICAgICAnQXByJyxcbiAgICAgICAgJ01heScsXG4gICAgICAgICdKdW4nLFxuICAgICAgICAnSnVsJyxcbiAgICAgICAgJ0F1ZycsXG4gICAgICAgICdTZXAnLFxuICAgICAgICAnT2N0JyxcbiAgICAgICAgJ05vdicsXG4gICAgICAgICdEZWMnLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldERhdGUoKTtcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldE1vbnRoKCldO1xuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZXZ0Py5kYXRlPy4kZDtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cbiAgZWRpdFBvbGljeUZyb21Eb2N1bWVudHMoKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuICAgIHRoaXMuc2hpZnRUb0VkaXRNb2RlLmVtaXQoKTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gZmFsc2U7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5lZGl0UG9saWN5KCk7XG4gIH1cblxuICBjaGVja0ZvckNyZWF0ZURvY3VtZW50cygpIHtcbiAgICBjb25zdCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Nob3dDcmVhdGVEb2N1bWVudHMnKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZGF0YSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uKSB7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRQb2xpY3koKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuXG4gICAgaWYgKHRoaXMucG9saWN5SWQpIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5lZGl0UG9saWN5KHRoaXMucG9saWN5SWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlc1swXTtcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkcyA9IGRhdGEuY2F0ZWdvcnlfZGV0YWlsc19hcnIubWFwKFxuICAgICAgICAgICAgKGlkOiBhbnkpID0+IGlkLmNhdE9iaklkXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyA9IGRhdGEucG9saWN5QXBwcm92YWxGbGFnO1xuICAgICAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcyA9IGRhdGE/LmFwcHJvdmFsV29ya2Zsb3dEZXRhaWxzPy5tYXAoXG4gICAgICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3c/Ll9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW107XG4gICAgICAgICAgdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVycyA9IGRhdGE/LmFwcHJvdmVycztcbiAgICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3coY2F0ZWdvcnlJZHMsIGRhdGEpO1xuICAgICAgICAgIHRoaXMuZ2V0TGlua2VkUG9saWNpZXMoZGF0YT8uX2lkKTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUG9saWN5Rm9ybShkYXRhLCBjYXRlZ29yeUlkcyk7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihkYXRhKTtcbiAgICAgICAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSk7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVBvbGljeUFjY2Vzc0RldGFpbHMoZGF0YSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlUG9saWN5Rm9ybShkYXRhOiBhbnksIGNhdGVnb3J5SWRzOiBhbnkpIHtcbiAgICBjb25zdCByZXZpZXdlckZpbGVzID0gZGF0YS5SZXZpZXdlckF0dGFjaG1lbnRzLm1hcCgoZmlsZTogYW55KSA9PiB7XG4gICAgICBmaWxlLmZpbGVuYW1lID0gZmlsZS5uYW1lO1xuICAgICAgZmlsZS5maWxlcGF0aCA9IGZpbGUuZmlsZV9wYXRoO1xuICAgICAgZmlsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGZpbGUub3JnX25hbWU7XG4gICAgICBmaWxlLmZpbGVfbmFtZSA9IGZpbGUub3JnX25hbWU7XG4gICAgICBmaWxlLmxpbmtTZXQgPSAnJztcbiAgICAgIGRlbGV0ZSBmaWxlLm5hbWU7XG4gICAgICBkZWxldGUgZmlsZS5maWxlX3BhdGg7XG4gICAgICBkZWxldGUgZmlsZS5vcmdfbmFtZTtcblxuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfSk7XG4gICAgY29uc3QgYXR0ZXN0YXRpb25GaWxlcyA9IGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgZWxlLmZpbGVuYW1lID0gZWxlLm5hbWU7XG4gICAgICBlbGUuZmlsZXBhdGggPSBlbGUuZmlsZV9wYXRoO1xuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcbiAgICAgIGVsZS5maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lO1xuICAgICAgZWxlLmxpbmtTZXQgPSBlbGUuaXNMaW5rU2V0O1xuICAgICAgZWxlLm90aGVycyA9IGVsZT8ub3RoZXJfdHlwZTtcblxuICAgICAgZGVsZXRlIGVsZS5uYW1lO1xuICAgICAgZGVsZXRlIGVsZS5maWxlX3BhdGg7XG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcbiAgICAgIGRlbGV0ZSBlbGUuaXNMaW5rU2V0O1xuICAgICAgZGVsZXRlIGVsZT8ub3RoZXJfdHlwZTtcbiAgICAgIHJldHVybiBlbGU7XG4gICAgfSk7XG4gICAgY29uc3QgZ3JvdXBfZW1wbG95ZWVJZHMgPSBkYXRhLmdyb3VwX2VtcGxveWVlTmFtZXMubWFwKFxuICAgICAgKGlkOiBhbnkpID0+IGlkPy5lbXBsb3llZV9pZFxuICAgICk7XG4gICAgY29uc3QgZ3JvdXBfSWRzID0gZGF0YT8udXNlcmdyb3VwX2lkcz8ubWFwKChpZDogYW55KSA9PiBpZCkgPz8gW107XG5cbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5jYXRlZ29yeUxpc3QsXG4gICAgICBjYXRlZ29yeUlkcyxcbiAgICAgICdfaWQnXG4gICAgKTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2lkID0gZGF0YT8ucG9saWN5X2lkO1xuICAgICh0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IGRhdGEucG9saWN5X25hbWUpLFxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOb3RlcyA9IGRhdGEubm90ZXMpLFxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzID0gZGF0YS5jdXN0b21fdGFncyA/IGRhdGEuY3VzdG9tX3RhZ3MgOiBbXSk7XG5cbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPVxuICAgICAgZ3JvdXBfZW1wbG95ZWVJZHMubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLmFzc2lnbmVlc0xpc3QsIGdyb3VwX2VtcGxveWVlSWRzLCAnbXlfbWVtYmVyX2lkJylcbiAgICAgICAgOiBbXTsgLy9kb3VidCBpbiBuYW1lXG5cbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlID1cbiAgICAgIGdyb3VwX0lkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCwgZ3JvdXBfSWRzLCAnX2lkJylcbiAgICAgICAgOiBbXTtcblxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcyA9IGRhdGEuZW50aXRpZXNcbiAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMucmNMaXN0LCBkYXRhLmVudGl0aWVzLnNwbGl0KCcsJyksICdpdGVtX2lkJylcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gZGF0YS5DQ0ZhaWxFbWFpbFxuICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBkYXRhLkNDRmFpbEVtYWlsLCAnZW1wbG95ZWVfZW1haWwnKVxuICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cCA9XG4gICAgICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzLFxuICAgICAgICAgICdfaWQnXG4gICAgICAgIClcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IGRhdGEuQ0NFbWFpbFxuICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgZGF0YS5DQ0VtYWlsLnNwbGl0KCcsJyksXG4gICAgICAgICdlbXBsb3llZV9lbWFpbCdcbiAgICAgIClcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9XG4gICAgICBkYXRhPy5jY191c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBkYXRhPy5jY191c2VyZ3JvdXBfaWRzLCAnX2lkJylcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSBkYXRhLmVuYWJsZVBvcnRhbCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBkYXRhLmVuYWJsZVN1Z2dlc3Rpb24gPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb24gPSBkYXRhLmlzX3NpZ25hdHVyZV9yZXF1aXJlZFxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yaXNrUmF0aW5nID0gZGF0YS5yaXNrX2NsYXNzID8gTnVtYmVyKGRhdGEucmlza19jbGFzcykgOiAxO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50c1xuICAgICAgPyB7XG4gICAgICAgIGZvcm1hdEZpbGVzOiBhdHRlc3RhdGlvbkZpbGVzLFxuICAgICAgfVxuICAgICAgOiB7IGZvcm1hdEZpbGVzOiBbXSB9O1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZGF0YS5zdGFydERhdGVcbiAgICAgID8gbW9tZW50KGRhdGEuc3RhcnREYXRlKVxuICAgICAgOiBtb21lbnQoKTtcbiAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSBkYXRhLmNoZWNrcG9pbnRzXG4gICAgICA/IGRhdGEuY2hlY2twb2ludHNcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSBkYXRhLnRvdGFsX21hcmtzID8gZGF0YS50b3RhbF9tYXJrcyA6IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IGRhdGEucGFzc19tYXJrcyA/IGRhdGEucGFzc19tYXJrcyA6IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzID0gZGF0YS5SZXZpZXdlckF0dGFjaG1lbnRzXG4gICAgICA/IHtcbiAgICAgICAgZm9ybWF0RmlsZXM6IHJldmlld2VyRmlsZXMsXG4gICAgICAgIGZvcm1hdExpbmtzOiBkYXRhLlJldmlld2VyTGlua3MsXG4gICAgICB9XG4gICAgICA6IHsgZm9ybWF0RmlsZXM6IFtdLCBmb3JtYXRMaW5rczogW10gfTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID1cbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBkYXRhLlJldmlld2VyTWVtYmVySWQgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzID1cbiAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMgPVxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwIHx8XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggPiAwXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID1cbiAgICAgIGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLmNjRW1haWxPYmpJZHMgPVxuICAgICAgZGF0YT8uY2NfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCA/IGRhdGE/LmNjX3VzZXJncm91cF9pZHMgOiBbXTtcbiAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID1cbiAgICAgIGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkc1xuICAgICAgICA6IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gZGF0YT8uYXNzZXNzbWVudCA/PyBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnQgPSBkYXRhPy5hc3Nlc3NtZW50Py5sZW5ndGg7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZFZlcnNpb24gPSBkYXRhPy5wb2xpY3lfdmVyc2lvbiA/IHRydWUgOiBmYWxzZTtcbiAgICAvLyB0aGlzLmNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCk7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uID0gZGF0YS5wb2xpY3lfdmVyc2lvbjtcbiAgICB0aGlzLnBvbGljeUZvcm0ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzLnByb2dyYW0gPVxuICAgICAgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHMgJiYgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHM/Lmxlbmd0aFxuICAgICAgICA/IGRhdGE/LnByb2dyYW1DYXREZXRhaWxzWzBdXG4gICAgICAgIDoge307XG4gICAgdGhpcy5zZWxlY3RlZExpbmtQcm9ncmFtID1cbiAgICAgIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzICYmIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzPy5sZW5ndGhcbiAgICAgICAgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGE/LnByb2dyYW1DYXREZXRhaWxzWzBdKSlcbiAgICAgICAgOiB7fTtcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICB9XG4gIGNoYW5nZU5hbWUoZXZlbnQ6IHN0cmluZykge1xuICAgIGxldCB0ZXh0ID0gZXZlbnQ7XG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPCguKj8pPi9naSwgJycpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgdHlwZVNlbGVjdGVkKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycyA9IGV2ZW50O1xuICB9XG4gIG9uVmVyc2lvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgcmVnZXhNYXRjaCA9IG5ldyBSZWdFeHAoJ15bQS1aYS16MC05XFxcXC4tXSokJyk7XG4gICAgdGhpcy5pc1ZlcnNpb25WYWxpZCA9IHJlZ2V4TWF0Y2gudGVzdCh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pO1xuICAgIGlmICghdGhpcy5pc1ZlcnNpb25WYWxpZCkge1xuICAgICAgaWYgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvbj8ubGVuZ3RoID4gMjApIHtcbiAgICAgICAgdGhpcy52ZXJzaW9uRXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAnWW91ciBpbnB1dCBpcyBpbnZhbGlkLiBUaGUgdmVyc2lvbiBmaWVsZCBjYW4gb25seSBpbmNsdWRlIG51bWJlcnMsIGFscGhhYmV0cywgaHlwaGVuIG9yIGRvdHMuIFRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBpcyAyMCBjaGFyYWN0ZXJzLic7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuaXNWZXJzaW9uVmFsaWQgJiZcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvbj8ubGVuZ3RoID4gMjBcbiAgICApIHtcbiAgICAgIHRoaXMudmVyc2lvbkVycm9yTWVzc2FnZSA9XG4gICAgICAgICdZb3VyIGlucHV0IGlzIGludmFsaWQuIFRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBpcyAyMCBjaGFyYWN0ZXJzLic7XG4gICAgfVxuICB9XG5cbiAgLy90aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIHdoZW4gd2UgY2xpY2sgb24gZGl2IHNlbGVjdFxuICBjbGlja0FwcHJvdmFsV29ya2Zsb3coZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSBldmVudDtcbiAgICB0aGlzLmNyZWF0ZUFwcHJvdmFsQ2xpY2sgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xuICB9XG5cbiAgbGlzdENhbmNlbENsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICAgICAgLy8gdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdGVkQXBwcm92YWxXb3JrZmxvdyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW2V2ZW50XTtcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dJZHMgPSBldmVudD8uX2lkID8gW2V2ZW50Py5faWRdIDogW107XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW2V2ZW50XTtcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgdXBkYXRlZFByb2dyYW1EZXRhaWxzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ubGlua1Byb2dyYW0gPSBldmVudD8ubGlua1Byb2dyYW07XG4gICAgdGhpcy5wb2xpY3lGb3JtLnByb2dyYW1TZWxlY3RlZFZhbHVlcyA9IGV2ZW50Py5zZWxlY3RlZFZhbHVlcztcbiAgICB0aGlzLnBvbGljeUZvcm0uYnVzaW5lc3NDeWNsZSA9IGV2ZW50Py5idXNpbmVzc0N5Y2xlO1xuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gIH1cblxuICBvbkFzc2Vzc21lbnRTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gW2V2ZW50XTtcbiAgfVxuICBnZXRBc3Nlc3NtZW50RGV0YWlscyhhc3Nlc3NtZW50RGV0YWlsczogYW55LCB0eXBlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgIC5nZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeURldGFpbHMgPSByZXNbMF0uY2F0ZWdvcnkuZmluZChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLl9pZCA9PSBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudCA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkLFxuICAgICAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlsczoge1xuICAgICAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgICAgICAgICBxdWVzdGlvbnM6IHJlc1swXS5xdWVzdGlvbnNDb3VudCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE93bmVyc09uTG9hZCgpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV0sXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gIH1cblxuICBhcHByb3ZhbFdvcmtmbG93QVBJQ2FsbChldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyxcbiAgICAgICAgJ19pZCdcbiAgICAgICk7XG4gICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29udmVydEFwcHJvdmFsV29ya2Zsb3coYXBwcm92ZXJMaXN0OiBhbnkpIHtcbiAgICBsZXQgcmV0dXJuSnNvbjogYW55ID0ge307XG4gICAgY29uc3QgbW9kaWZpZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhcHByb3Zlckxpc3QpKTtcbiAgICBtb2RpZmllZERhdGE/LmZvckVhY2goKHdvcmtmbG93OiBhbnkpID0+IHtcbiAgICAgIHdvcmtmbG93Py5hcHByb3ZhbF93b3JrZmxvdz8uZm9yRWFjaCgoYXBwcm92ZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgaSA9IGluZGV4ICsgMTtcbiAgICAgICAgcmV0dXJuSnNvblsnbGV2ZWwnICsgaV0gPSBhcHByb3ZlcjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByZXR1cm5Kc29uO1xuICB9XG5cbiAgZGVsZXRlTGV2ZWwoaW5kZXg6IGFueSkge1xuICAgIC8vIEFwcHJvdmVyIExldmVsIGRlbGV0ZVxuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3cuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBmb3IgKFxuICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgIGkgPCB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93Lmxlbmd0aDtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3dbaW5kZXhdWydsZXZlbDEnXSA9PT1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bJ2FsaWFzX25hbWUnXVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXS5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bXG4gICAgICAgICAgJ2FsaWFzX25hbWUnXG4gICAgICAgIF0gPSBgTGV2ZWwgJHtpICsgMX1gO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93W2luZGV4XVsnbGV2ZWwxJ10gPSBgTGV2ZWwgJHtpICsgMVxuICAgICAgICB9YDtcbiAgICB9XG4gIH1cblxuICBlZGl0V29ya2Zsb3coZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgdGhpcy5lZGl0QXBwcm92YWxXb3JrZmxvdyA9IGV2ZW50O1xuICAgIHRoaXMuY3JlYXRlQXBwcm92YWxDbGljayA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XG4gIH1cblxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIHdoZW4gd2UgY2xpY2sgb24gQ1JFQVRFIEEgTkVXIEFQUFJPVkFMIFdPUktGTE9XXG4gIGNyZWF0ZUFwcHJvdmFsV29ya2Zsb3coKSB7XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcbiAgICB0aGlzLmNyZWF0ZUFwcHJvdmFsQ2xpY2sgPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VDbGlja2VkQ3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgZWRpdExldmVsQ2xpY2tlZChlZGl0TGV2ZWw6IGFueSwgaW5kZXg6IGFueSkge1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgdGhpcy5lZGl0V29ya2Zsb3dMZXZlbCA9IHtcbiAgICAgIGVkaXRMZXZlbDogZWRpdExldmVsLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgIH07XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgfVxuXG4gIHNldEFjY2Vzc0ZpZWxkKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID0gZXZlbnQ7XG4gICAgaWYgKGV2ZW50ID09IDApIHtcbiAgICAgIC8vIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMudXNlcnNBY2Nlc3NMaXN0O1xuICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdwb2xpY3lBY2Nlc3MnLCB7XG4gICAgICAgIHVzZXJzOiB0aGlzLnVzZXJzQWNjZXNzTGlzdCxcbiAgICAgICAgZ3JvdXBzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJzQWNjZXNzTGlzdEJ5Q2F0ZWdvcnkoY2F0ZWdvcnlEZXRhaWxzOiBhbnkpIHtcbiAgICBsZXQgdW5pcXVlVXNlcnM6IGFueSA9IFtdO1xuICAgIGxldCB1bmlxdWVHcm91cHNJZDogYW55ID0gW107XG4gICAgdW5pcXVlVXNlcnMgPSB1bmlxQnkoXG4gICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9tYW5hZ2Vycz8uY29uY2F0KFxuICAgICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9hcHByb3ZlcnMsXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX2F1dGhvcnNcbiAgICAgICksXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gICAgdGhpcy51c2Vyc0FjY2Vzc0xpc3QgPSB1bmlxdWVVc2VycztcbiAgICB0aGlzLnVzZXJzQWNjZXNzTGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMudXNlcnNBY2Nlc3NMaXN0LCAnbWVtYmVyX2lkJyk7XG5cbiAgICB1bmlxdWVHcm91cHNJZCA9IFtcbiAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYXV0aG9yX3VzZXJncm91cF9pZHM/LmNvbmNhdChcbiAgICAgICAgICBjYXRlZ29yeURldGFpbHM/Lm93bmVyX3VzZXJncm91cF9pZHNcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBdO1xuICAgIHRoaXMuZ3JvdXBzQWNjZXNzTGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgdW5pcXVlR3JvdXBzSWQsXG4gICAgICAnX2lkJ1xuICAgICk7XG4gICAgdGhpcy5ncm91cHNBY2Nlc3NMaXN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICB0aGlzLmdyb3Vwc0FjY2Vzc0xpc3QsXG4gICAgICAnZ3JvdXBfaWQnXG4gICAgKTtcbiAgfVxuXG4gIHBvcHVsYXRlUG9saWN5QWNjZXNzRGV0YWlscyhwb2xpY3lEZXRhaWxzOiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID0gcG9saWN5RGV0YWlscz8ucG9saWN5X2FjY2Vzc190eXBlO1xuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycyxcbiAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19ncm91cHMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3VwcyxcbiAgICAgICAgJ19pZCdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRQb2xpY3lBY2Nlc3NEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID09IDApIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IFtdO1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfZ3JvdXBzID0gW107XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRnJlcXVlbmN5KCkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9ICcnO1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9ICcnO1xuICAgIHRoaXMucG9saWN5Rm9ybS5tYXJrX2ZhaWxlZF9hZnRlciA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmZhaWxlZF90aW1lID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc2lnbmVlX3N0YXJ0X2RhdGUgPSAnJztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9ICcnO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gJyc7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9ICcnO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gMDtcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAnSG93IG9mdGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSBhdHRlc3RlZD8nO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBkb2N1bWVudENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlUGlja2VyT2JqZWN0ID0ge1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgY2xhc3M6ICdlZmZlY3RpdmUtZGF0ZScsXG4gICAgICBwb3B1cDogdGhpcy5kYXRlUGlja2VyUG9wVXAsXG4gICAgICBjb21wb25lbnQ6IHRoaXMuZGF0ZVBpY2tlcixcbiAgICAgIG92ZXJsYXk6IHRoaXMuZGF0ZVBpY2tlck92ZXJsYXksXG4gICAgfTtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuaGFuZGxlRG9jdW1lbnRDbGljayhkYXRlUGlja2VyT2JqZWN0KTtcbiAgfVxuXG4gIG9uVGVtcGxhdGVTZWxlY3QoZXZlbnQ6IGFueSwgaXNQcmVzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKGV2ZW50Py5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudGVtcGxhdGVWaWV3ID0gZmFsc2U7XG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UudGVtcGxhdGVWaWV3Lm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuXG4gICAgY29uc3QgdW5hbWUgPSB0aGlzLnVzZXJJbmZvID8gdGhpcy51c2VySW5mby5uYW1lIDogJyc7XG4gICAgY29uc3QgdWlkID0gdGhpcy5tZW1iZXJfb2JqX2lkO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKCk7XG4gICAgY29uc3QgaWQgPSB0aGlzLnBvbGljeUlkO1xuICAgIHRoaXMudGVtcGxhdGVJZCA9IGV2ZW50WzBdPy5faWQ7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlXG4gICAgICAuc2F2ZVBvbGljeURldGFpbHModW5hbWUsIHVpZCwgaWQsIG5hbWUsICcnLCAwKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVWaWV3ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0TmF2aWdhdGlvblVybCgpO1xuICAgICAgICBpZiAoaXNQcmVzZWxlY3RlZCkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1RlbXBsYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0TmF2aWdhdGlvblVybCgpIHtcbiAgICBjb25zdCBiYXNVcmwgPVxuICAgICAgdGhpcy5iYXNlVVJMICtcbiAgICAgICcvYWxsL3BvbGljeS9lZGl0LXBvbGljeT9pZD0nICtcbiAgICAgIHRoaXMucG9saWN5SWQgK1xuICAgICAgJyZ0ZW1wbGF0ZUlkPScgK1xuICAgICAgdGhpcy50ZW1wbGF0ZUlkO1xuICAgIHRoaXMudGVtcGxhdGVVcmwgPSBiYXNVcmw7XG4gIH1cblxuICBuYXZpZ2F0ZVRvVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh0aGlzLnRlbXBsYXRlVXJsLCB0cnVlKTtcbiAgfVxufVxuIiwiPCEtLSA8cD53b3JrZmxvdy1wb2xpY3kgd29ya3MhPC9wPiAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93Q3JlYXRlRG9jdW1lbnRzXCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1wb2xpY3lcIj5cbiAgICA8IS0tIFBvbGljeSBOYW1lIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5TmFtZVwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW3NyY109XCJBU1NFVFMud2hhdFwiXG4gICAgICAgICAgYWx0PVwibmFtZVwiXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8ucG9saWN5TmFtZSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lOYW1lICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgICAgUG9saWN5IE5hbWUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImFjdGl2ZVNlbGVjdG9yID0gJ25hbWUnXCJcbiAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0ucG9saWN5TmFtZSA9PSAnJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgZmFsc2UpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBjaGFuZ2VOYW1lKCRldmVudClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgcG9saWN5XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUubGVuZ3RoICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgcG9saWN5Rm9ybS5wb2xpY3lOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgdHJ1ZSlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcG9saWN5Rm9ybS5wb2xpY3lOYW1lLnRyaW0oKVwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBQbGVhc2UgZW50ZXIgYSBuYW1lIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBvbGljeUZvcm0ucG9saWN5Tm90ZXNcIlxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICAgICAgPCEtLSA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cImF2YWlsYWJpbGl0eU9uUG9ydGFsKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIERvIHlvdSB3YW50IHRoaXMgcG9saWN5IHRvIGJlIGF2YWlsYWJsZSBvbiB0aGUgcG9ydGFsP1xuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuIEl0IGlzIGxpa2UgYSBzaGFyZWQgY2F0YWxvZyBvZiBhbGwgYWN0aXZlICYgdXBkYXRlZCBwb2xpY2llcyB0aGF0IGFueSBsb2dnZWQgaW4gdXNlciBjYW4gcmVhZC9kb3dubG9hZCBmb3IgcmVmZXJlbmNlLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQWNjZXB0IHN1Z2dlc3Rpb25zXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIGVuYWJsZWQsIHVzZXJzIGNhbiBwcm92aWRlIGltcHJvdmVtZW50IHN1Z2dlc3Rpb25zIHRvIHRoZSBwb2xpY2llcyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIFBvbGljeSBQb3J0YWwuJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXG4gICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUG9saWN5IENhdGVnb3J5IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmNhc2VfY2F0ZWdvcnlcIlxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgPlBvbGljeSBDYXRlZ29yeSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPT0gMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NhdGVnb3J5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIGNhdGVnb3J5IGZvciB0aGlzIHBvbGljeS5cIlxuICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JywgY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnkuaXRlbV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5Lml0ZW1fbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhdGVnb3J5LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGg+MVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wbHVzXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMCwyKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JyxjYXRlZ29yeSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2F0ZWdvcnkuaXRlbV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJjYXRlZ29yeS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNjYXRlZ29yeSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY2F0ZWdvcnkgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JywgY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjYXRlZ29yeS5pdGVtX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgY2F0ZWdvcnkgZm9yIHRoaXMgcG9saWN5LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIiAqbmdJZj1cInBvbGljeUZvcm0/LmN1c3RvbVRhZ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcG9saWN5Rm9ybT8uY3VzdG9tVGFnc1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+e3sgdGFnLnRhZ25hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWcudmFsdWVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHRhZy50YWduYW1lIH19XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVmZmVjdGl2ZSBEYXRlIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy53aGVuXCIgYWx0PVwiXCIgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RWZmZWN0aXZlIERhdGU8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXRpbWUtcGlja2VyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBlZmZlY3RpdmUgZGF0ZSBvZiB0aGUgcG9saWN5LlwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cbiAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTsgY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBQb2xpY3kgT3duZXIgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3duZXJzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb3duZXJzJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtLnBvbGljeV9vd25lcnM/Lmxlbmd0aFwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmltX2NyZWF0aW5nXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0ucG9saWN5X293bmVycz8ubGVuZ3RoXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlBPTElDWSBPV05FUihTKTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzPy5sZW5ndGhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVycycsIHRydWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxuICAgICAgICAgICAgICBTZWxlY3Qgb3duZXJzIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeV9vd25lcnM/Lmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvd25lcnMnLCBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzWzBdLCAwKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LnBvbGljeV9vd25lcnNbMF0/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LnBvbGljeV9vd25lcnNbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lVc2VyUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgKyB7eyBwb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzLmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMSB2eC1tci0xXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICZcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInU2FtYW50aGEgSm9uZXMnXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPlNhbWFudGhhIEpvbmVzPC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9saWN5R3JvdXBQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgKzRcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9saWN5VXNlclBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3duZXIgb2YgcG9saWN5Rm9ybT8ucG9saWN5X293bmVycyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3duZXI/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3duZXJzJywgb3duZXIsIGkgKyAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3duZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUdyb3VwUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgWzEsIDEsIDEsIDEsIDEsIDEsIDFdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ0hhcnNodmFyZGhhbiBLYXJpd2FsYSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJzaHZhcmRoYW4gS2FyaXdhbGFcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ293bmVycycsIHRydWUpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcG9saWN5Rm9ybT8ucG9saWN5X293bmVycz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlbGVjdCBvd25lcnMgZm9yIHRoaXMgcG9saWN5LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmV2aWV3IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcbiAgICAgIFwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiIXBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiIHNyYz1cIkFTU0VUUy5yZXZpZXdlclwiIGFsdD1cIlwiIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYWRkUmV2aWV3ZXJzXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SRVZJRVc8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicmV2aWV3U2VsZWN0aW9uIHZ4LXAtMyB2eC1wYi0wXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiYgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1iLTFcIj5cbiAgICAgICAgICAgICAgRG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkP1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIG5hbWU9XCJyZXZpZXctdHlwZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwidHlwZVNlbGVjdGVkKHRydWUpXCJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0zXCI+XG4gICAgICAgICAgICAgICAgWUVTXG4gICAgICAgICAgICAgIDwvZGl2PjwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIG5hbWU9XCJyZXZpZXctdHlwZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIiFwb2xpY3lGb3JtPy5hZGRSZXZpZXdlcnNcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInR5cGVTZWxlY3RlZChmYWxzZSlcIlxuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTNcIj5cbiAgICAgICAgICAgICAgICBOT1xuICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeUZvcm0/LmFkZFJldmlld2Vyc1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+UkVWSUVXRVI8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxuICAgICAgICAgICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciByZXZpZXdpbmcgdGhpcyBwb2xpY3lcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxuICAgICAgICAgICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NhbWFudGhhIEpvbmVzJ1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyByZXZpZXdlcj8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0zXCI+UkVWSUVXIEZSRVFVRU5DWTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzID09ICcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCdXR0b24gdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmXG4gICAgICAgICAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0QnV0dG9uUGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWRzIHRvIGJlIHJldmlld2VkP1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgU0VUIEEgRlJFUVVFTkNZXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlckZyZXF1ZW5jeScgJiZcbiAgICAgICAgICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFRleHQgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJldmlld2Vycz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgU2VsZWN0IHRoZSByZXZpZXcgc2NoZWR1bGUgZm9yIHRoaXMgcG9saWN5LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXcgQXBwcm92YWwgV29ya2Zsb3cgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXBwcm92ZXJzJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycz8ubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmFwcHJvdmFsXCJcbiAgICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhcHByb3ZlcnMnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiIFtjbGFzcy5kaXNhYmxlZF09XCJwb2xpY3lBcHByb3ZhbEZsYWcgIT09IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgICA+QVBQUk9WQUwgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgY3JlYXRlQXBwcm92YWxXb3JrZmxvdygpOyBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcmVhdGVOZXdCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQ1JFQVRFIEEgTkVXIEFQUFJPVkFMIFdPUktGTE9XXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgIXNlbGVjdGVkV29ya2Zsb3dbMF0/LndvcmtmbG93X25hbWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIGNsaWNrQXBwcm92YWxXb3JrZmxvdyh0cnVlKTsgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2VsZWN0IHRoZSBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBwb2xpY3lcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW10LTIgdngtbWItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVXb3JrZmxvdygpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwic2VsZWN0ZWRXb3JrZmxvd1swXT8ud29ya2Zsb3dfbmFtZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBzZWxlY3RlZFdvcmtmbG93WzBdPy53b3JrZmxvd19uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0V29ya2Zsb3coc2VsZWN0ZWRXb3JrZmxvd1swXSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFdvcmtmbG93Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhcHByb3ZhbCBvZiBzZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvdztcbiAgICAgICAgICAgICAgICBsZXQgYXBwcm92YWxJbmRleCA9IGluZGV4XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxldmVsLWxlZnQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGV2ZWwtbmFtZSB2eC1mcy05IHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1saC0zXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy5hbGlhc19uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gYXBwcm92YWw/LmFsaWFzX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbD8ubGV2ZWwxXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYWxpYXNfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGFwcHJvdmFsPy5hbGlhc19uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWw/LmxldmVsMVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy05IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy50eXBlID09PSBcIlJPVU5EUk9CSU5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiUk9VTkQtUk9CSU5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFwcHJvdmFsPy50eXBlID09PSBcIkFOWU9ORVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJBTlkgT05FXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbD8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yIHZ4LW1sLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICAgID4gLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdzZXF1ZW50aWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsPy5hcHByb3ZlcnM/Lmxlbmd0aCA8IDJcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgMSA9PSBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggPyBcIkZpbmFsXCIgOiAxIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LnR5cGU/LnRvTG93ZXJDYXNlKCkgPT09ICdzZXF1ZW50aWFsJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXBwcm92YWw/LmFwcHJvdmVyc1swXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IGFwcHJvdmFsPy5hcHByb3ZlcnNbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndvcmtmbG93UG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICt7eyBhcHByb3ZhbD8uYXBwcm92ZXJzPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3dvcmtmbG93UG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwcm92ZXIgb2YgYXBwcm92YWw/LmFwcHJvdmVycyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcHJvdmFsSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhcHByb3Zlcj8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbD8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3NlcXVlbnRpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbEluZGV4ICsgMSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWw/LmFwcHJvdmVycz8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJGaW5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHByb3ZhbEluZGV4ICsgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwcm92ZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdExldmVsQ2xpY2tlZChhcHByb3ZhbCxhcHByb3ZhbEluZGV4KVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlTGV2ZWwoYXBwcm92YWxJbmRleClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGVCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTlhZTs8L2k+IERFTEVURVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92YWxfd29ya2Zsb3c/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAhcG9saWN5QXBwcm92YWxGbGFnICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWxlY3Qgb3IgY3JlYXRlIGFuIGFwcHJvdmFsIHdvcmtmbG93IGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFBvbGljeSBBY2Nlc3MgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3BvbGljeUFjY2VzcydcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3BvbGljeUFjY2VzcycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwidHJ1ZVwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAhcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgIXBvbGljeUZvcm0/LmF2YWlsYWJsZU9uUG9ydGFsXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5sb2NrX3Njb3BlXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UE9MSUNZIFBPUlRBTCBBQ0NFU1M8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICFwb2xpY3lGb3JtPy5hdmFpbGFibGVPblBvcnRhbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwb2xpY3lBY2Nlc3MnLCB0cnVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIXBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgV2hvIHNob3VsZCBiZSBhYmxlIHRvIHZpZXcgdGhpcyBwb2xpY3k/XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItM1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbXQtMiB2eC1tYi0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwb2xpY3lBY2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1swXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1swXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1swXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBvbGljeUFjY2Vzc1BvcG92ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgJlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhY2Nlc3NHcm91cCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjY2Vzc0dyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHMubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUFjY2Vzc1BvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyIG9mIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInVzZXI/LmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncG9saWN5QWNjZXNzJywgdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXI/LmVtcGxveWVlX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2FjY2Vzc0dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX3R5cGUgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhY2Nlc3NHcm91cCcsIGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3BvbGljeUFjY2VzcycsIHRydWUpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidngtbXQtNCB2eC1tYi0yXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BvbGljeUZvcm1BY2Nlc3NUeXBlJ1wiIFtjaGVja2VkXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfdHlwZSA9PT0gMFwiIChjaGVja2VkRXZlbnQpPVwic2V0QWNjZXNzRmllbGQoMClcIlxuICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0XCI+XG4gICAgICAgICAgICAgICAgICAgIEV2ZXJ5b25lIHdobyBoYXMgYWNjZXNzIHRvIHRoaXMgUG9saWN5IENhdGVnb3J5XG4gICAgICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCIncG9saWN5Rm9ybUFjY2Vzc1R5cGUnXCIgW2NoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc190eXBlID09PSAxXCIgKGNoZWNrZWRFdmVudCk9XCJzZXRBY2Nlc3NGaWVsZCgxKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1tdC0xXCJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dFwiPlxuICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdXNlcnMvZ3JvdXBzXG4gICAgICAgICAgICAgICAgICA8L2Rpdj48L2FwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXZhaWxhYmxlT25Qb3J0YWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgID5WaXNpYmxlIHRvIEFsbCBDdXJyZW50ICYgRnV0dXJlIFVzZXJzPC9zcGFuXG4gICAgICAgICAgICA+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3BvbGljeUFjY2VzcycsIHRydWUpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0IHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTJcIj5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCB8fFxuICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgID5BQ0NFUFQgU1VHR0VTVElPTlNcbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTEgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAnSWYgZW5hYmxlZCwgdXNlcnMgY2FuIHByb3ZpZGUgaW1wcm92ZW1lbnQgc3VnZ2VzdGlvbnMgdG8gdGhlIHBvbGljaWVzIHRoYXQgYXJlIGxpc3RlZCBvbiB0aGUgUG9saWN5IFBvcnRhbC4nXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgPjwvYXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBdHRlc3RhdGlvbnMgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuYXR0ZXN0YXRpb25zXCIgYWx0PVwiXCIgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BVFRFU1RBVElPTlM8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XG4gICAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29ucyByZXF1aXJlZCB0byBhdHRlc3QgdG8gdGhpcyBQb2xpY3lcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NhbWFudGhhIEpvbmVzJ1wiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlNhbWFudGhhIEpvbmVzPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwb2xpY3lBdHRlc3RhdGlvblBvcG92ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICs0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeUF0dGVzdGF0aW9uUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgWzEsIDEsIDEsIDEsIDEsIDEsIDFdXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidIYXJzaHZhcmRoYW4gS2FyaXdhbGEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhhcnNodmFyZGhhbiBLYXJpd2FsYVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTJcIj5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICAgID5SRVFVSVJFUyBFLVNJR05BVFVSRSBGT1IgQVRURVNUQVRJT05cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTEgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAnUmVxdWlyZXMgZS1zaWduYXR1cmUgZm9yIGF0dGVzdGF0aW9uIGluZm8gdGV4dCBoZXJlLi4uJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiPldIRU4/PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJ1dHRvbiB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCdXR0b25QbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFdoYXQgaXMgdGhlIGF0dGVzdGF0aW9uIHNjaGVkdWxlIGZvciB0aGlzPGJyIC8+cG9saWN5P1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZVwiPlxuICAgICAgICAgICAgICBTRVQgQSBGUkVRVUVOQ1lcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFRleHQgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiPlxuICAgICAgICAgICAgICBFdmVyeSBXZWRuZXNkYXkgYnkgMTE6NTkgcG1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIlxuICAgICAgICAgICAgPkFTU0VTU01FTlQgT0YgVU5ERVJTVEFORElORzwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2V0IHVwIGEgcXVlc3Rpb25uYWlyZSB0byBjb25maXJtIHRoZSByZWFkZXLigJlzPGJyIC8+dW5kZXJzdGFuZGluZ1xuICAgICAgICAgICAgICBvZiB0aGUgcG9saWN5LlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCI+NSBRdWVzdGlvbnM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBcHByb3ZhbCBXb3JrZmxvdyAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgICpuZ0lmPVwiZmFsc2VcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2FwcHJvdmVycydcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2FwcHJvdmVycycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5hcHByb3ZhbFwiXG4gICAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXBwcm92ZXJzJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidngtZm9ybS1ncm91cCBhcHByb3ZhbC13b3JrZmxvd1wiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInBvbGljeUFwcHJvdmFsRmxhZyAhPT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgICBBcHByb3ZhbCB3b3JrZmxvdyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xuICAgICAgICAgICAgICAgIGFkZE1vcmVMZXZlbHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHdvcmtmbG93VHlwZSA9ICdTRVFVRU5USUFMJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENyZWF0ZSBhIG5ldyBBcHByb3ZhbCBXb3JrZmxvd1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYXBwcm92ZXJXb3JrRmxvd0xpc3Q/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjcy1zZWxlY3RcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRBcHByb3ZhbFdvcmtmbG93XCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRXb3JrZmxvd0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYXBwcm92YWwgd29ya2Zsb3cgZm9yIHRoaXMgcG9saWN5J1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RlZEFwcHJvdmFsV29ya2Zsb3dcIlxuICAgICAgICAgICAgICBbc2V0TWF4V2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjcy1vcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhcHByb3ZlcldvcmtGbG93TGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZGF0YS53b3JrZmxvd19uYW1lIH19XG4gICAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxuICAgICAgICAgICAgICA8Y3Mtb3B0aW9uXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIi0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgIGFkZE1vcmVMZXZlbHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+Q3JlYXRlIGEgbmV3IGFwcHJvdmFsIHdvcmtmbG93PC9jcy1vcHRpb25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVyc1swXT8uYXBwcm92ZXJzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGV2ZWwgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRpdGxlXCI+TGV2ZWwge3sgaSArIDEgfX08L3A+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7IGxldmVsLm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcHJvdmVyIG9mIGxldmVsLmFwcHJvdmVycy5zbGljZSgwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXBwcm92ZXJzJywgYXBwcm92ZXIsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBcIiAqbmdJZj1cImxldmVsLm5hbWUgPT0gJ1NFUVVFTlRJQUwnXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBqICsgMVxuICAgICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICA+e3sgYXBwcm92ZXIubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsZXZlbC5hcHByb3ZlcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibGFiZWxOYW1lLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICArXG5cbiAgICAgICAgICAgICAgICAgICAge3sgbGV2ZWwuYXBwcm92ZXJzLnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2xhYmVsTmFtZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcHJvdmVyIG9mIGxldmVsLmFwcHJvdmVycyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhcHByb3ZlcnMnLCBhcHByb3ZlciwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGV2ZWwubmFtZSA9PSAnU0VRVUVOVElBTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPT0gbGV2ZWwuYXBwcm92ZXJzLnNsaWNlKDEpLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJGaW5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGogKyAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHByb3Zlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUsIGxldmVsLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBhcHByb3ZlcnNMaXN0SW5kZXggPSBpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idG5cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd29ya2Zsb3dMZXZlbCcsIGxldmVsLCBpKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxuICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAhcG9saWN5QXBwcm92YWxGbGFnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2VsZWN0IG9yIGNyZWF0ZSBhbiBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBwb2xpY3kuXG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzWzBdPy5hcHByb3ZlcnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPjxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYWRkTW9yZUxldmVscyA9IHRydWU7XG4gICAgICAgICAgICAgICAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICsgQWRkIE1vcmUgTGV2ZWxzXG4gICAgICAgICAgICA8L2J1dHRvbj48L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBXaG8gLyBub3cgQXR0ZXN0YXRpb24gLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWduZWVzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWduZWVzJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmNhc2VfYXNzaWduZWVzXCJcbiAgICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BdHRlc3RhdGlvbjwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbWItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAocG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwICYmICFncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgICAgIChwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICBncm91cEVuYWJsZWQgJiZcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID09IDApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbmVlcycsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2VsZWN0IHRoZSBwZXJzb25zIHJlc3BvbnNpYmxlIGZvciBhdHRlc3RpbmcgdGhpcyBwb2xpY3kuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFncm91cEVuYWJsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzaWduZWUgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBhc3NpZ25lZSlcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3NpZ25lZS5lbXBsb3llZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IGFzc2lnbmVlLmVtcGxveWVlX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXNzaWduZWVQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwRW5hYmxlZFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwRW5hYmxlZCAmJiBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZSgnYXNzaWduZWVzJywgcG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXNbMF0pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlc1swXT8uZW1wbG95ZWVfbmFtZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlc1swXT8uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlVzZXJQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICZcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgICdncm91cEFzc2lnbmVlcycsXG4gICAgICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRHcm91cEFzc2lnbmVlWzBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWVbMF0/Lmdyb3VwX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnNlbGVjdGVkR3JvdXBBc3NpZ25lZS5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25lZXMnLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcbiAgICAgICAgICAgICAgKChwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgICFncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgICAgICAgKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmXG4gICAgICAgICAgICAgICAgICBncm91cEVuYWJsZWQpIHx8XG4gICAgICAgICAgICAgICAgKGlzU2VuZEZvckF0dGVzdGF0aW9uICYmXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcz8ubGVuZ3RoID09PSAwKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBpZD1cIndob3ZhbGlkYXRlbXNnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlbGVjdCB0aGUgcGVyc29ucyByZXF1aXJlZCB0byBhdHRlc3QgdG8gdGhpcyBQb2xpY3kuXG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICBbKG5nVmFsdWUpXT1cInBvbGljeUZvcm0ucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRBc3NpZ25lZXM/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgIGNsYXNzPVwid2hvLXRvZ2dsZVwiXG4gICAgICAgICAgICA+VEhJUyBQT0xJQ1kgUkVRVUlSRVMgRS1TSUdOQVRVUkUgRk9SIEFUVEVTVEFUSU9OXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCB0aGUgcmVhZGVycyB3aWxsIGJlIHJlcXVpcmVkIHRvIGF0dGVzdCB0aGlzIHBvbGljeSB1c2luZyB0aGVpciBlbGVjdHJvbmljIHNpZ25hdHVyZS4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICA+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNhc3NpZ25lZVBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFzc2lnbmVlIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGFzc2lnbmVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWUuZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI1VzZXJQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZEFzc2lnbmVlcyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBhc3NpZ25lZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlLmVtcGxveWVlX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWUgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBBc3NpZ25lZXMnLCBkYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciAtLT5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcG9saWN5Rm9ybT8uQ0NFbWFpbCB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjY0VtYWlsJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2YgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjR3JvdXBFbWFpbCcsIGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgIDwhLS0gb3ZlcnNlZXIgZW5kIC0tPlxuXG4gICAgICAgICAgPCEtLSBvdmVyc2VlciBmYWlsIHN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJGYWlsUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWwgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2NGYWlsJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZW1wbG95ZWVfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyRmFpbEdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0dyb3VwRmFpbEVtYWlsJywgZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgPCEtLSBvdmVyc2VlciBmYWlsIGVuZCAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gV2hlbiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+V2hlbj88L2xhYmVsPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyA9PSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0IGZyZXF1ZW5jeS1jdXN0b20taW5wdXRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICBTZXQgQSBmcmVxdWVuY3lcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAhPSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWNcIlxuICAgICAgICAgID4gLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5mcmVxdWVuY3lfZGV0YWlscyAhPSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWMgc2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdmcmVxdWVuY3knLCByYylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+e3sgZnJlcXVlbmN5UGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxuICAgICAgICAgICAgICAoKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LmZyZXF1ZW5jeV9kZXRhaWxzICYmXG4gICAgICAgICAgICAgICAgIWdyb3VwRW5hYmxlZCkgfHxcbiAgICAgICAgICAgICAgICAoKHBvbGljeUZvcm0/LnNlbGVjdGVkQXNzaWduZWVzPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZEdyb3VwQXNzaWduZWU/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgICAgICAhcG9saWN5Rm9ybT8uZnJlcXVlbmN5X2RldGFpbHMgJiZcbiAgICAgICAgICAgICAgICAgIGdyb3VwRW5hYmxlZCkpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2VsZWN0IGFuIGF0dGVzdGF0aW9uIHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8IS0tIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5FZmZlY3RpdmUgRGF0ZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS10aW1lLXBpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIGRhdGUgZnJvbSB3aGljaCB0aGlzIHBvbGljeSBnb2VzIGludG8gZWZmZWN0LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlICB8IGRhdGU6ICdkZCBNTU0geXl5eSdcIiAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXIgI2RhdGVQaWNrZXIgKG9uU2VsZWN0KT1cImRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7Y2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCIgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW92ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIiAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENoZWNrcG9pbnRzIC8gQXNzZXNzbWVudCBvZiBVbmRlcnN0YW5kaW5nIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cInRydWVcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgICBBc3Nlc3NtZW50IG9mIFVuZGVyc3RhbmRpbmdcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgKm5nSWY9XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoPT09MFwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2V0IHVwIGEgcXVlc3Rpb25uYWlyZSB0byBjb25maXJtIHRoZSByZWFkZXLigJlzIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvbGljeS5cIiByZWFkb25seT4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWlucHV0XCI+XG4gICAgICAgICAgICAgIFNldCB1cCBhIHF1ZXN0aW9ubmFpcmUgdG8gY29uZmlybSB0aGUgcmVhZGVy4oCZczxiciAvPnVuZGVyc3RhbmRpbmdcbiAgICAgICAgICAgICAgb2YgdGhlIHBvbGljeS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj57e3BvbGljeUZvcm0/LmNoZWNrcG9pbnREZXRhaWxzPy5sZW5ndGggKyAocG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA+IDEgPycgQ2hlY2twb2ludHMnOicgQ2hlY2twb2ludCcpfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrcG9pbnQtcG9pbnQtdGV4dCBmaXJzdFwiPlRPVEFMIFBPSU5UUzogPHNwYW4gY2xhc3M9XCJub1wiPnt7cG9saWN5Rm9ybT8udG90YWxRdWVzdGlvbn19PC9zcGFuPjxicj48ZW0+RWFjaCBxdWVzdGlvbiBjYXJyaWVzIDEgcG9pbnQ8L2VtPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC1wb2ludC10ZXh0XCI+UE9JTlRTIFJFUVVJUkVEIFRPIEFUVEVTVCA6IDxzcGFuIGNsYXNzPVwibm9cIj57e3BvbGljeUZvcm0/LnBhc3NpbmdNYXJrc319PC9zcGFuPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NoZWNrcG9pbnRzJywgcG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHMpXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiPnt7XG4gICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCArXG4gICAgICAgICAgICAgICAgICAocG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgPyBcIiBRdWVzdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiIFF1ZXN0aW9uXCIpXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8YXBwLXBvcG92ZXIgI2NoZWNrcG9pbnRQb3BPdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hlY2twb2ludCBvZiBwb2xpY3lGb3JtPy5jaGVja3BvaW50RGV0YWlscyB8IHNsaWNlOiAxOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjaGVja3BvaW50cycsY2hlY2twb2ludCxqKzEpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnQ/LnF1ZXN0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmlzayBDbGFzc2lmaWNhdGlvbiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgICpuZ0lmPVwic2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiAmJiBmYWxzZVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtLnJpc2tSYXRpbmdcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy5yaXNrc1wiIGFsdD1cImltXCIgKm5nSWY9XCIhcG9saWN5Rm9ybT8ucmlza1JhdGluZ1wiIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnJpc2tSYXRpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SaXNrIENsYXNzaWZpY2F0aW9uPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xhc3NpZmljYXRpb25cIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImxvd1wiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjbGFzcyBvZiByaXNrQ2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY2xhc3MuY2xhc3NdXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjbGFzcy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicG9saWN5Rm9ybT8ucmlza1JhdGluZyA9PT0gY2xhc3MudmFsdWVcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5yaXNrUmF0aW5nXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgY2xhc3MubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVyc1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlclwiXG4gICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1wiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmVzcG9uc2liaWxpdHkgQ2VudGVyPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHRoYXQgdGhpcyBwb2xpY3kgcmVsYXRlcyB0by5cIlxuICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByYyBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8uc2xpY2UoMCwgMSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmMuaXRlbV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHJjLml0ZW1fbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmNQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmNQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCByYyBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJjLml0ZW1fbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVmVyc2lvbiAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkVmVyc2lvblwiXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzXCJcbiAgICAgICAgICBhbHQ9XCJuYW1lXCJcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5WRVJTSU9OPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvblwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uVmVyc2lvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU3BlY2lmeSB0aGUgcG9saWN5IHZlcnNpb24uXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cIiFpc1ZlcnNpb25WYWxpZFwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB2ZXJzaW9uRXJyb3JNZXNzYWdlIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZXZpZXdlciAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFJldmlld2VycyAmJiBmYWxzZVwiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcicgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlckZyZXF1ZW5jeScgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLnJldmlld2VyXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXZpZXdlciA8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIHJldmlld2luZyB0aGlzIHBvbGljeVwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXIubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgc3VibWl0dGVkICYmXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUmV2aWV3ZXJzPy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWxlY3QgYSByZXZpZXdlciBmb3IgdGhpcyBwb2xpY3kuXG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPldoZW4/IDwvbGFiZWw+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9PSAnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJyZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFNldCBBIGZyZXF1ZW5jeVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgIT0gJydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZCBidXR0b24tc2VjXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj57eyByZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBzdWJtaXR0ZWQgJiZcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIXBvbGljeUZvcm0/LnJldmlld19mcmVxdWVuY3lfZGV0YWlsc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlbGVjdCB0aGUgcmV2aWV3IHNjaGVkdWxlIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2VcbiAgICAgICAgICAgICh1cGRhdGVGaWxlcyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdlcl9hdHRhY2htZW50cycsICRldmVudClcIlxuICAgICAgICAgICAgI2Zvcm1hdEV2aWRlbmNlXG4gICAgICAgICAgICBbbW9kZV09XCIncG9saWN5UmV2aWV3ZXInXCJcbiAgICAgICAgICAgIFtvcmdhbml6YXRpb25faWRdPVwib3JnYW5pemF0aW9uX2lkXCJcbiAgICAgICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicG9saWN5Rm9ybT8uZG9jdW1lbnRzQW5kTGlua3NcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2FwcC1mb3JtYXQtYW5kLWV2aWRlbmNlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBPdmVyc2VlciAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZE92ZXJzZWVyc1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRW1haWwnIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnY2NGYWlsJ1xuICAgICAgXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjY0VtYWlsJyAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRmFpbCcgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMCB8fCBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID09IDApIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRW1haWwnIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRmFpbCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRW1haWwnICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NjRmFpbCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk92ZXJzaWdodDwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0VtYWlsJywgdHJ1ZSlcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBzaG91bGQgaGF2ZSBvdmVyc2lnaHQgb2YgdGhpcyBwb2xpY3k/XCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbC5sZW5ndGggPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXBFbmFibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjY0VtYWlsIG9mIHBvbGljeUZvcm0/LkNDRW1haWw/LnNsaWNlKDAsIDEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0VtYWlsJywgY2NFbWFpbClcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjY0VtYWlsLmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgY2NFbWFpbC5lbXBsb3llZV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNjRW1haWxQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwRW5hYmxlZFwiIGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cEVuYWJsZWQgJiYgcG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2NFbWFpbCcsIHBvbGljeUZvcm0/LkNDRW1haWxbMF0pXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NFbWFpbFswXS5lbXBsb3llZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDRW1haWxbMF0uZW1wbG95ZWVfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRW1haWw/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NFbWFpbC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWw/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgJlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0dyb3VwRW1haWwnLCBwb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWxbMF0pXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsWzBdPy5ncm91cF9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFswXT8uZ3JvdXBfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0VtYWlsJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA9PSAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0ZhaWwnLCB0cnVlKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcG9saWN5IGlzIG5vdCBhdHRlc3RlZCBvbiB0aW1lP1wiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZ3JvdXBFbmFibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjY0ZhaWwgb2YgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/LnNsaWNlKDAsIDEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjY0ZhaWwnLCBjY0ZhaWwpXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2NGYWlsLmVtcGxveWVlX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgY2NGYWlsLmVtcGxveWVlX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2NGYWlsUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cEVuYWJsZWRcIiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBFbmFibGVkICYmIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2NjRmFpbCcsIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdKVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdPy5lbXBsb3llZV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsWzBdPy5lbXBsb3llZV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlckZhaWxQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LkNDRmFpbEVtYWlsPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgcG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAmXG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoJ2NjR3JvdXBGYWlsRW1haWwnLCBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwWzBdKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cFswXT8uZ3JvdXBfbmFtZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyBwb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwWzBdPy5ncm91cF9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJGYWlsR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjY0ZhaWwnLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNjY0VtYWlsUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY2NFbWFpbCBvZiBwb2xpY3lGb3JtPy5DQ0VtYWlsIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjRW1haWwnLCBjY0VtYWlsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgY2NFbWFpbC5lbXBsb3llZV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjY2NGYWlsUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY2NGYWlsIG9mIHBvbGljeUZvcm0/LkNDRmFpbEVtYWlsIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NjRmFpbCcsIGNjRmFpbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNjRmFpbC5lbXBsb3llZV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZWxhdGVkIERvY3VtZW50cyAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHNcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcz8ubGVuZ3RoID09IDBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmZvcm1hdF9ldmlkZW5jZVwiXG4gICAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UkVMQVRFRCBET0NVTUVOVFM8L2xhYmVsPlxuICAgICAgICAgIDxhcHAtZm9ybWF0LWFuZC1ldmlkZW5jZVxuICAgICAgICAgICAgKHVwZGF0ZUZpbGVzKT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc29jaWF0ZWREb2N1bWVudHMnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFttb2RlXT1cIidwb2xpY3knXCJcbiAgICAgICAgICAgIFtvcmdhbml6YXRpb25faWRdPVwib3JnYW5pemF0aW9uX2lkXCJcbiAgICAgICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicG9saWN5Rm9ybT8uYXNzb2NpYXRlZERvY3VtZW50c1wiXG4gICAgICAgICAgPjwvYXBwLWZvcm1hdC1hbmQtZXZpZGVuY2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExpbmsgUHJvZ3JhbXMgJiBSZXNwb25zaWJpbGl0aWVzIC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYWRkTGlua1Byb2dyYW1cIlxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdsaW5rUHJvZ3JhbSdcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2xpbmtQcm9ncmFtJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgICBwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIiFwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5saW5rX2l0ZW1zXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgICAgICA+TElOSyBQUk9HUkFNUyAmIFJFU1BPTlNJQklMSVRJRVM8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2xpbmtQcm9ncmFtJywgdHJ1ZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgU2VsZWN0IFByb2dyYW1zICYgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZTxiciAvPmFzc29jaWF0ZWQgd2l0aFxuICAgICAgICAgICAgICB0aGlzIHBvbGljeS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ2xpbmtQcm9ncmFtJywgcG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8ubmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IHBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8ubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtUmVzcG9uc2liaWxpdHlQb3BvdmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICArNFxuICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlclxuICAgICAgICAgICAgICAjcHJvZ3JhbVJlc3BvbnNpYmlsaXR5UG9wb3ZlclxuICAgICAgICAgICAgICBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbMSwgMSwgMSwgMSwgMSwgMSwgMV1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdSZXBvcnRpbmcgaW5mb3JtYXRpb24gc2VjdXJpdHkgd2Vha25lc3NlcydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRpbmcgaW5mb3JtYXRpb24gc2VjdXJpdHkgd2Vha25lc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2xpbmtQcm9ncmFtJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExpbmsgQXNzZXNzbWVudCAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnRcIlxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdpc0Fzc2Vzc21lbnQnXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdpc0Fzc2Vzc21lbnQnICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LmFzc2Vzc21lbnQ/Lmxlbmd0aFwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5hc3Nlc3NtZW50c1wiXG4gICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5hc3Nlc3NtZW50Py5sZW5ndGhcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgQVNTRVNTTUVOVFM8L2xhYmVsPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCB0cnVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiPlxuICAgICAgICAgICAgICBTZWxlY3QgYXNzZXNzbWVudHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXM8YnIgLz5wb2xpY3kuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHBvbGljeUZvcm0uYXNzZXNzbWVudFswXT8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBwb2xpY3lGb3JtLmFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlclxuICAgICAgICAgICAgICAjcHJvZ3JhbVJlc3BvbnNpYmlsaXR5UG9wb3ZlclxuICAgICAgICAgICAgICBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXNzZXNzbWVudCBvZiBwb2xpY3lGb3JtLmFzc2Vzc21lbnQgfCBzbGljZSA6IDFcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCB0cnVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTGluayBSZWxhdGVkIFBvbGljZXMgLS0+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkTGlua1BvbGljaWVzXCJcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSBDT05TVEFOVFMuTElOS19QT0xJQ1lcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2lzTGlua2VkUG9saWNlcycgJiZcbiAgICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiU2VsZWN0ZWRMaXN0T2ZQb2xpY2llc1wiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCIhU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcz8ubGVuZ3RoXCJcbiAgICAgICAgICBbc3JjXT1cIkxJTktTLmxpbmtlZFBvbGljeUltYWdlXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlNlbGVjdGVkTGlzdE9mUG9saWNpZXM/Lmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIFt4bWxuc109XCJMSU5LUy5jaGVja2VkXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgUkVMQVRFRCBQT0xJQ0lFUzwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJTZWxlY3RlZExpc3RPZlBvbGljaWVzPy5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2lzTGlua2VkUG9saWNlcycsIHRydWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCI+XG4gICAgICAgICAgICAgIFNlbGVjdCBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBvbGljeSBvZiBTZWxlY3RlZExpc3RPZlBvbGljaWVzLnNsaWNlKDAsIDEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKENPTlNUQU5UUy5MSU5LX1BPTElDWSwgcG9saWN5Py5jb250cmFjdF9pZClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwb2xpY3k/LmNvbnRyYWN0X25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgcG9saWN5Py5jb250cmFjdF9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJTZWxlY3RlZExpc3RPZlBvbGljaWVzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbGF0ZWRQb2xpY3kucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBTZWxlY3RlZExpc3RPZlBvbGljaWVzPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gQ09OU1RBTlRTLkxJTktfUE9MSUNZXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKENPTlNUQU5UUy5MSU5LX1BPTElDWSwgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmVsYXRlZFBvbGljeSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9saWN5IG9mIFNlbGVjdGVkTGlzdE9mUG9saWNpZXMgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShDT05TVEFOVFMuTElOS19QT0xJQ1ksIHBvbGljeT8uY29udHJhY3RfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHBvbGljeT8uY29udHJhY3RfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmlzUG9ydGFsRGlzcGxheUVuYWJsZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInBvbGljeUZvcm0/LkxpbmtlZFBvbGljaWVzID09IDBcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3aG8tdG9nZ2xlXCJcbiAgICAgICAgICAgID5ESVNQTEFZIE9OIFRIRSBQT0xJQ1kgUE9SVEFMXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiQ09OU1RBTlRTLkxJTktfUE9MSUNZX0hFTFBfVEVYVFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxhcHAtY2hlY2tib3gtbGlzdFxuICAgIFtjb25maWddPVwiY2F0ZWdvcnlDb25maWdcIlxuICAgIFt0d29Db2x1bW5dPVwiZmFsc2VcIlxuICAgIFtpdGVtc0xpc3RdPVwiY2F0ZWdvcnlMaXN0XCJcbiAgICBbc2VsZWN0ZWRJdGVtc109XCJwb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllc1wiXG4gICAgW2lkZW50aWZpZXJLZXldPVwiJ19pZCdcIlxuICAgIFtkaXNwbGF5S2V5XT1cIidpdGVtX25hbWUnXCJcbiAgICBbdG9vbHRpcEtleV09XCInaXRlbV9uYW1lJ1wiXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXG4gICAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgKGNsb3NlTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gICAgW2xvYWRlZF09XCIhY2F0ZWdvcmllc0xpc3RMb2FkZWRcIlxuICA+XG4gIDwvYXBwLWNoZWNrYm94LWxpc3Q+XG4gIDwhLS0gPGFwcC1jaGVja2JveC1saXN0IFtjb25maWddPVwiYXBwcm92YWxXb3JrZmxvd0NvbmZpZ1wiIFt0d29Db2x1bW5dPVwidHJ1ZVwiXG4gIFtpdGVtc0xpc3RdPVwiXCJcbiAgW3NlbGVjdGVkSXRlbXNdPVwicG9saWN5Rm9ybS5pc3N1ZUNDVXNlcnNcIiBbaWRlbnRpZmllcktleV09XCInZW1wbG95ZWVfZW1haWwnXCIgW2Rpc3BsYXlLZXldPVwiJ2VtcGxveWVlX25hbWUnXCIgW3Rvb2x0aXBLZXldPVwiJ2VtcGxveWVlX2VtYWlsJ1wiXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3I9PT0nSVNTVUVfQ0MnXCIgKHNhdmVMaXN0KT1cInNlbGVjdG9yQWN0aW9uKCRldmVudCwnSVNTVUVfQ0MnKVwiXG4gIChjbG9zZUxpc3QpPVwiZmllbGREZXNlbGVjdG9yKCdJU1NVRV9DQycpXCI+XG48L2FwcC1jaGVja2JveC1saXN0PiAtLT5cblxuICA8YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cInJjTGlzdFwiXG4gICAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRSQ3NcIlxuICAgIFtyY0lkS2V5XT1cIidpdGVtX2lkJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmMnLCAkZXZlbnQpXCJcbiAgICAoY2xvc2VSY0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIFtsb2FkZWRdPVwicmNMaXN0TG9hZGVkXCJcbiAgPlxuICA8L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XG5cbiAgPGFwcC1saW5rLXJlbGF0ZWQtcG9saWNpZXNcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSBDT05TVEFOVFMuTElOS19QT0xJQ1lcIlxuICAgIFtwb2xpY3lJZF09XCJwb2xpY3lJZFwiXG4gICAgW21vZGVdPVwibW9kZVwiXG4gICAgW3NlbGVjdGVkUG9saWNpZXNdPVwiU2VsZWN0ZWRMaXN0T2ZQb2xpY2llc1wiXG4gICAgKGNsb3NlTGlua1BvbGljeUxpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIChzZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdChDT05TVEFOVFMuTElOS19QT0xJQ1ksICRldmVudClcIlxuICA+PC9hcHAtbGluay1yZWxhdGVkLXBvbGljaWVzPlxuXG4gIDxhcHAtdXNlcnMtcmFkaW8tbGlzdFxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcIlxuICAgIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxuICAgIFt1c2Vyc0xpc3RdPVwiYWxsUmV2aWV3ZXJzXCJcbiAgICBbaGVhZGVyVGV4dF09XCInU2VsZWN0IGEgUmV2aWV3ZXInXCJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzXCJcbiAgICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcbiAgICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXInLCAkZXZlbnQpXCJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICA+XG4gIDwvYXBwLXVzZXJzLXJhZGlvLWxpc3Q+XG5cbiAgPGFwcC1vd25lci1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRW1haWwnICYmICFncm91cEVuYWJsZWRcIlxuICAgIFt1c2Vyc0xpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXG4gICAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxuICAgIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uQ0NFbWFpbFwiXG4gICAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcbiAgICBbaXRlbU5hbWVLZXldPVwiJ2VtcGxveWVlX25hbWUnXCJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjY0VtYWlsJywgJGV2ZW50KVwiXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgPlxuICA8L2FwcC1vd25lci1saXN0PlxuXG4gIDx1c2VyLWdyb3VwLWxpc3RcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2NFbWFpbCcgJiYgZ3JvdXBFbmFibGVkXCJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICAgIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0VtYWlsXCJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicG9saWN5Rm9ybS5DQ0dyb3VwRW1haWxcIlxuICAgIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRW1haWwnLCAkZXZlbnQpXCJcbiAgICAoY2FuY2VsKT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbZmVhdHVyZWZsYWddPVwiZ3JvdXBFbmFibGVkXCJcbiAgPlxuICA8L3VzZXItZ3JvdXAtbGlzdD5cblxuICA8YXBwLW93bmVyLWxpc3RcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2NGYWlsJyAmJiAhZ3JvdXBFbmFibGVkXCJcbiAgICBbdXNlcnNMaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxuICAgIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtLkNDRmFpbEVtYWlsXCJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxuICAgIFtpdGVtTmFtZUtleV09XCInZW1wbG95ZWVfbmFtZSdcIlxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NjRmFpbCcsICRldmVudClcIlxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID5cbiAgPC9hcHAtb3duZXItbGlzdD5cblxuICA8dXNlci1ncm91cC1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NjRmFpbCcgJiYgZ3JvdXBFbmFibGVkXCJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICAgIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgICBbZ3JvdXBMaXN0XT1cIm92ZXJzZWVyR3JvdXBzTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbFwiXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cFwiXG4gICAgKHNhdmUpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2NGYWlsJywgJGV2ZW50KVwiXG4gICAgKGNhbmNlbCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gICAgW2ZlYXR1cmVmbGFnXT1cImdyb3VwRW5hYmxlZFwiXG4gID5cbiAgPC91c2VyLWdyb3VwLWxpc3Q+XG5cbiAgPGFwcC1ncm91cC11c2Vycy1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcycgJiYgIWdyb3VwRW5hYmxlZFwiXG4gICAgW3VzZXJzTGlzdF09XCJhc3NpZ25lZXNMaXN0XCJcbiAgICBbZ3JvdXBzTGlzdF09XCJvdmVyc2Vlckdyb3Vwc0xpc3RcIlxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxuICAgIFt1c2VySWRLZXldPVwiJ215X21lbWJlcl9pZCdcIlxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbmVlcycsICRldmVudClcIlxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID5cbiAgPC9hcHAtZ3JvdXAtdXNlcnMtbGlzdD5cblxuICA8dXNlci1ncm91cC1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcycgJiYgZ3JvdXBFbmFibGVkXCJcbiAgICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICAgIFt1c2VybGlzdF09XCJvd25lcmxpc3RcIlxuICAgIFtncm91cExpc3RdPVwib3ZlcnNlZXJHcm91cHNMaXN0XCJcbiAgICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcbiAgICAoY2FuY2VsKT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWVcIlxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXNcIlxuICAgIFtmZWF0dXJlZmxhZ109XCJncm91cEVuYWJsZWRcIlxuICA+XG4gIDwvdXNlci1ncm91cC1saXN0PlxuXG4gIDxhcHAtb3duZXItbGlzdFxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhcHByb3ZlcnMnICYmIGZhbHNlXCJcbiAgICBbbGlzdEhlYWRpbmddPVwiJ1NlbGVjdCBBcHByb3ZlcnMnXCJcbiAgICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXG4gICAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXG4gICAgW3VzZXJzTGlzdF09XCJhbGxBcHByb3ZlcnNcIlxuICAgIFtzaG93V29ya2Zsb3ddPVwidHJ1ZVwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwiXG4gICAgICBhZGRNb3JlTGV2ZWxzXG4gICAgICAgID8gW11cbiAgICAgICAgOiBwb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW2FwcHJvdmVyc0xpc3RJbmRleF0uYXBwcm92ZXJzXG4gICAgXCJcbiAgICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcbiAgICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXBwcm92ZXJzJywgJGV2ZW50KVwiXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbbW9kZV09XCJtb2RlXCJcbiAgICBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwid29ya2Zsb3dUeXBlXCJcbiAgICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxuICAgIFt3b3JrZmxvd0xpc3RdPVwid29ya2Zsb3dMaXN0XCJcbiAgICBbd29ya2Zsb3dUZXh0XT1cIidBcHByb3ZhbCBXb3JrZmxvdydcIlxuICA+XG4gIDwvYXBwLW93bmVyLWxpc3Q+XG5cbiAgPGFwcC1mcmVxdWVuY3ktY29udGFpbmVyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxuICAgIFttb2RlXT1cIidwb2xpY3knXCJcbiAgICBbZnJlcXVlbmN5RGV0YWlsc109XCJmcmVxdWVuY3lEZXRhaWxzXCJcbiAgICAoc2VsZWN0ZWRGcmVxdWVuY3kpPVwiZnJlcXVlbmN5RGF0YSgkZXZlbnQpXCJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICBbcGFnZVR5cGVdPVwiJ3BvbGljeSdcIlxuICAgIChjbG9zZUZyZXF1ZW5jeSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxuXG4gIDxhcHAtZnJlcXVlbmN5LWNvbnRhaW5lclxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcIlxuICAgIFttb2RlXT1cIidyZXZpZXdlckZyZXF1ZW5jeSdcIlxuICAgIFtmcmVxdWVuY3lEZXRhaWxzXT1cInJldmlld2VyRnJlcXVlbmN5RGV0YWlsc1wiXG4gICAgKHNlbGVjdGVkRnJlcXVlbmN5KT1cInJldmlld2VyRnJlcXVlbmN5RGF0YSgkZXZlbnQpXCJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICBbcGFnZVR5cGVdPVwiJ3BvbGljeSdcIlxuICAgIChjbG9zZUZyZXF1ZW5jeSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxuXG4gIDx2Yy1saW5rLXByb2dyYW1cbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnbGlua1Byb2dyYW0nXCJcbiAgICAoY2xvc2UpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIFtwb2xpY3ldPVwicG9saWN5Rm9ybVwiXG4gICAgW3NlbGVjdGVkUHJvZ3JhbV09XCJwb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXNcIlxuICAgIFttb2RlXT1cIm1vZGVcIlxuICAgIFtzZWxlY3RlZExpbmtQcm9ncmFtXT1cInNlbGVjdGVkTGlua1Byb2dyYW1cIlxuICAgIChjaGFuZ2VUYWIpPVwiY2hhbmdlVGFiKCdsaW5rZWRQcm9ncmFtcycpXCJcbiAgICAodXBkYXRlZFByb2dyYW1EZXRhaWxzKT1cInVwZGF0ZWRQcm9ncmFtRGV0YWlscygkZXZlbnQpXCJcbiAgPlxuICA8L3ZjLWxpbmstcHJvZ3JhbT5cblxuICA8YXBwLWNoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXJcbiAgICAoY2xvc2VDaGVja1BvaW50KT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbY2hlY2twb2ludERhdGFdPVwicG9saWN5Rm9ybT8uY2hlY2twb2ludERldGFpbHNcIlxuICAgIFtyZXF1aXJlZFBvaW50XT1cInBvbGljeUZvcm0/LnBhc3NpbmdNYXJrc1wiXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXG4gICAgKHNhdmVDaGVja1BvaW50KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NoZWNrcG9pbnRzJywgJGV2ZW50KVwiXG4gID48L2FwcC1jaGVja3BvaW50cy1wb2xpY3ktY29udGFpbmVyPlxuICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuXG4gIDxhcHAtYXBwcm92YWwtd29ya2Zsb3dcbiAgICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsV29ya2Zsb3dcIlxuICAgIFtzZWxlY3RlZENhdGVnb3J5XT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllc1wiXG4gICAgW2FwcHJvdmVyV29ya0Zsb3dMaXN0XT1cImFwcHJvdmVyV29ya0Zsb3dMaXN0XCJcbiAgICBbYWxsQXBwcm92ZXJzXT1cImFsbEFwcHJvdmVyc1wiXG4gICAgKGxpc3RDYW5jZWxDbGlja2VkKT1cImxpc3RDYW5jZWxDbGlja2VkKCRldmVudClcIlxuICAgIChzZWxlY3RlZFdvcmtmbG93TmV4dCk9XCJzZWxlY3RlZEFwcHJvdmFsV29ya2Zsb3coJGV2ZW50KVwiXG4gICAgKHNhdmVBcHByb3ZhbFdvcmtmbG93KT1cImFwcHJvdmFsV29ya2Zsb3dBUElDYWxsKCRldmVudClcIlxuICAgIFtlZGl0QXBwcm92YWxXb3JrZmxvd109XCJlZGl0QXBwcm92YWxXb3JrZmxvd1wiXG4gICAgW2NyZWF0ZUFwcHJvdmFsQ2xpY2tdPVwiY3JlYXRlQXBwcm92YWxDbGlja1wiXG4gICAgKGNsb3NlQ3JlYXRlQ2xpY2tlZCk9XCJjbG9zZUNsaWNrZWRDcmVhdGVGb3JtKClcIlxuICAgIFtlZGl0V29ya2Zsb3dMZXZlbF09XCJlZGl0V29ya2Zsb3dMZXZlbFwiXG4gID48L2FwcC1hcHByb3ZhbC13b3JrZmxvdz5cbiAgPCEtLSA8YXBwLXNlbGVjdC1hcHByb3ZlcnM+PC9hcHAtc2VsZWN0LWFwcHJvdmVycz4gLS0+XG5cbiAgPGFwcC1wb2xpY3ktYWNjZXNzXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3BvbGljeUFjY2VzcydcIlxuICAgIFtwb2xpY3lBY2Nlc3NUeXBlXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfdHlwZVwiXG4gICAgKGNsb3NlKT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgICBbb3JnVXNlcnNMaXN0XT1cInVzZXJzTGlzdFwiXG4gICAgW3VzZXJzQWNjZXNzTGlzdF09XCJ1c2Vyc0FjY2Vzc0xpc3RcIlxuICAgIFtncm91cExpc3RdPVwib3ZlcnNlZXJHcm91cHNMaXN0XCJcbiAgICBbZ3JvdXBzQWNjZXNzTGlzdF09XCJncm91cHNBY2Nlc3NMaXN0XCJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJwb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVyc1wiXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzXCJcbiAgICBbZGlzYWJsZWRJZHNdPVwidXNlcnNBY2Nlc3NMaXN0SWRzXCJcbiAgICBbZGlzYWJsZWRHcm91cElkc109XCJncm91cHNBY2Nlc3NMaXN0SWRzXCJcbiAgICBbZnV0dXJlVXNlcnNXaWxsU2VsZWN0XT1cInBvbGljeUZvcm0/LmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgncG9saWN5QWNjZXNzJywgJGV2ZW50KVwiXG4gICAgKHNldFBvbGljeUFjY2Vzc1R5cGUpPVwicG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPSAkZXZlbnRcIlxuICA+XG4gIDwvYXBwLXBvbGljeS1hY2Nlc3M+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q3JlYXRlRG9jdW1lbnRzXCI+XG4gIDwhLS0gPGFwcC1jcmVhdGUtZG9jdW1lbnRzICpuZ0lmPVwic2hvd0NyZWF0ZURvY3VtZW50c1wiXG4gICBbb3JnYW5pemF0aW9uX2lkXT1cIm9yZ2FuaXphdGlvbl9pZFwiXG4gICBbbWVtYmVyX29ial9pZF09XCJtZW1iZXJfb2JqX2lkXCJcbiAgIFt1c2VySW5mb109XCJ1c2VySW5mb1wiXG4gICBbcG9saWN5SWRdPVwicG9saWN5SWRcIlxuICAgW3BvbGljeU5hbWVdPVwicG9saWN5Rm9ybS5wb2xpY3lOYW1lXCJcbiAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJkaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKVwiXG4gICAoZWRpdFBvbGljeSk9XCJlZGl0UG9saWN5RnJvbURvY3VtZW50cygpXCJcbiAgID48L2FwcC1jcmVhdGUtZG9jdW1lbnRzPiAtLT5cbiAgPGxpYi1kb2N1bWVudC1zZWN0aW9uXG4gICAgKm5nSWY9XCJzaG93Q3JlYXRlRG9jdW1lbnRzXCJcbiAgICBbdGVtcGxhdGVWaWV3XT1cInRlbXBsYXRlVmlld1wiXG4gICAgW29yZ2FuaXphdGlvbl9pZF09XCJvcmdhbml6YXRpb25faWRcIlxuICAgIFttZW1iZXJfb2JqX2lkXT1cIm1lbWJlcl9vYmpfaWRcIlxuICAgIFt1c2VySW5mb109XCJ1c2VySW5mb1wiXG4gICAgW3BvbGljeUlkXT1cInBvbGljeUlkXCJcbiAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICBbdGVtcGxhdGVVcmxdPVwidGVtcGxhdGVVcmxcIlxuICAgIFtwb2xpY3lOYW1lXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXG4gICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpXCJcbiAgICAoZWRpdFBvbGljeSk9XCJlZGl0UG9saWN5RnJvbURvY3VtZW50cygpXCJcbiAgICAob3BlblRlbXBsYXRlKT1cInRlbXBsYXRlVmlldyA9IHRydWVcIlxuICA+PC9saWItZG9jdW1lbnQtc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuXG48YXBwLWFzc2Vzc21lbnQtbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnaXNBc3Nlc3NtZW50J1wiXG4gIFtwcm9ncmFtX2lkc109XCInJ1wiXG4gIFtpc0VkaXRdPVwicG9saWN5Rm9ybT8uYXNzZXNzbWVudD8ubGVuZ3RoXCJcbiAgKGNhbmNlbEFzc2Vzc21lbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnaXNBc3Nlc3NtZW50JywgZmFsc2UpXCJcbiAgW3NlbGVjdGVkQXNzZXNzbWVudF09XCJwb2xpY3lGb3JtPy5hc3Nlc3NtZW50WzBdXCJcbiAgW21vZGVdPVwiJ3BvbGljeSdcIlxuICAob25Bc3Nlc3NtZW50U2VsZWN0KT1cIlxuICAgIG9uQXNzZXNzbWVudFNlbGVjdCgkZXZlbnQpOyBzYXZlU2VsZWN0ZWRMaXN0KCdpc0Fzc2Vzc21lbnQnLCBmYWxzZSlcbiAgXCJcbj48L2FwcC1hc3Nlc3NtZW50LWxpc3Q+XG5cbjxhcHAtb3duZXItbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXBwcm92ZXJzJyAmJiBmYWxzZVwiXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IEFwcHJvdmVycydcIlxuICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxuICBbdXNlcnNMaXN0XT1cImFsbEFwcHJvdmVyc1wiXG4gIFtzaG93V29ya2Zsb3ddPVwidHJ1ZVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cIlxuICAgIGFkZE1vcmVMZXZlbHNcbiAgICAgID8gW11cbiAgICAgIDogcG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1thcHByb3ZlcnNMaXN0SW5kZXhdLmFwcHJvdmVyc1xuICBcIlxuICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInbWVtYmVyX2VtYWlsJ1wiXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXBwcm92ZXJzJywgJGV2ZW50KVwiXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gIFttb2RlXT1cIm1vZGVcIlxuICBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwid29ya2Zsb3dUeXBlXCJcbiAgKHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlKT1cInJldmlld2VyVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgW3dvcmtmbG93TGlzdF09XCJ3b3JrZmxvd0xpc3RcIlxuICBbd29ya2Zsb3dUZXh0XT1cIidBcHByb3ZhbCBXb3JrZmxvdydcIlxuPlxuPC9hcHAtb3duZXItbGlzdD5cblxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvd25lcnMnXCJcbiAgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgT3duZXIocyknXCJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcbiAgW3VzZXJzTGlzdF09XCJhbGxBcHByb3ZlcnNcIlxuICBbc2hvd1dvcmtmbG93XT1cImZhbHNlXCJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ293bmVycycsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICBbbW9kZV09XCJtb2RlXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicG9saWN5Rm9ybT8ucG9saWN5X293bmVycyA/PyBbXVwiXG4+XG48L2FwcC1vd25lci1saXN0PlxuXG48YXBwLXNlbGVjdC10ZW1wbGF0ZS1saXN0XG4gICpuZ0lmPVwidGVtcGxhdGVWaWV3XCJcbiAgW3NlbGVjdGVkQ2F0ZWdvcnlJZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXNcIlxuICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgKG9uVGVtcGxhdGVTZWxlY3QpPVwib25UZW1wbGF0ZVNlbGVjdCgkZXZlbnQpXCJcbj48L2FwcC1zZWxlY3QtdGVtcGxhdGUtbGlzdD5cbiJdfQ==
|