tango-app-ui-store-builder 1.2.1 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/manage-plano/manage-plano.component.mjs +3 -4
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +301 -11
- package/esm2022/lib/components/manage-store-plano/popups/publishtask-popup/publishtask-popup.component.mjs +4 -1
- package/esm2022/lib/components/manage-store-plano/verification-feedback/zone-editable-fixture/zone-editable-fixture.component.mjs +15 -1
- package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +33 -4
- package/esm2022/lib/components/onboard-store-plano/create-planogram/create-planogram.component.mjs +1 -1
- package/fesm2022/tango-app-ui-store-builder.mjs +351 -16
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/manage-plano/manage-plano.component.d.ts +0 -1
- package/lib/components/manage-plano/onboard-table/onboard-table.component.d.ts +1 -1
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
- package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +9 -0
- package/lib/components/manage-store-plano/verification-feedback/zone-editable-fixture/zone-editable-fixture.component.d.ts +1 -0
- package/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.d.ts +2 -0
- package/lib/components/onboard-store-plano/onboard-store-plano.component.d.ts +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/onboard-store-plano/create-planogram/create-planogram.component.mjs
CHANGED
|
@@ -540,4 +540,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
540
540
|
type: ViewChild,
|
|
541
541
|
args: ["cadProcessingLottie"]
|
|
542
542
|
}] } });
|
|
543
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBsYW5vZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9vbmJvYXJkLXN0b3JlLXBsYW5vL2NyZWF0ZS1wbGFub2dyYW0vY3JlYXRlLXBsYW5vZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9vbmJvYXJkLXN0b3JlLXBsYW5vL2NyZWF0ZS1wbGFub2dyYW0vY3JlYXRlLXBsYW5vZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RSxPQUFPLEVBR0wsV0FBVyxFQUNYLG1CQUFtQixFQUVuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFOUUsT0FBTyxF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QjtxQkFDRjswS0FHUSxRQUFRO3NCQUFoQixLQUFLO2dCQUVOLHNCQUFzQjtzQkFEckIsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgVGl0bGVDYXNlUGlwZSwgVXBwZXJDYXNlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSBcIkBnb29nbGVtYXBzL2pzLWFwaS1sb2FkZXJcIjtcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBOZ3hHcEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci1tYWdpYy9uZ3gtZ3AtYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7IFJlYWN0aXZlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3JlYWN0aXZlLXNlbGVjdC9yZWFjdGl2ZS1zZWxlY3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2VuZXJhbFZhbGlkYXRvcixcclxuICBnZXROYW1lRnJvbUVtYWlsLFxyXG4gIGluZGlhblBpbmNvZGVWYWxpZGF0b3IsXHJcbn0gZnJvbSBcIi4uLy4uLy4uL2Z1bmN0aW9ucy9wbGFuby5mdW5jdGlvblwiO1xyXG5pbXBvcnQgbG90dGllLCB7IEFuaW1hdGlvbkl0ZW0gfSBmcm9tIFwibG90dGllLXdlYlwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWNyZWF0ZS1wbGFub2dyYW1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2NyZWF0ZS1wbGFub2dyYW0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2NyZWF0ZS1wbGFub2dyYW0uY29tcG9uZW50LnNjc3NcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIE5nSWYsXHJcbiAgICBOZ3hHcEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIE5nYlRvb2x0aXAsXHJcbiAgICBVcHBlckNhc2VQaXBlLFxyXG4gICAgVGl0bGVDYXNlUGlwZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTG9hZGVyLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZ3M6IEdsb2JhbFN0YXRlU2VydmljZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVudiA9IGdzLmVudmlyb25tZW50LnZhbHVlO1xyXG4gICAgICAgIHJldHVybiBuZXcgTG9hZGVyKHtcclxuICAgICAgICAgIGFwaUtleTogZW52Py5tYXBLZXlVcmwgfHwgJ0FJemFTeUFxRmJ5WmVTeURCYURrR2FQcGZjTE8tbkVncmFBQWZXdycsXHJcbiAgICAgICAgICBsaWJyYXJpZXM6IFsncGxhY2VzJ10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtHbG9iYWxTdGF0ZVNlcnZpY2VdLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlUGxhbm9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgQFZpZXdDaGlsZChcImNhZFByb2Nlc3NpbmdMb3R0aWVcIilcclxuICBjYWRQcm9jZXNzaW5nTG90dGllUmVmPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIHNlbGVjdGVkU3RvcmU6IHN0cmluZztcclxuICBzZWxlY3RlZEZsb29yOiBudW1iZXI7XHJcbiAgc2VsZWN0ZWRGaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHN0b3JlTGlzdDoge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgfVtdID0gW107XHJcblxyXG4gIGZsb29yTGlzdDoge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBudW1iZXI7XHJcbiAgfVtdID0gW1xyXG4gICAgeyBsYWJlbDogXCJGbG9vciAxXCIsIHZhbHVlOiAxIH0sXHJcbiAgICB7IGxhYmVsOiBcIkZsb29yIDJcIiwgdmFsdWU6IDIgfSxcclxuICAgIHsgbGFiZWw6IFwiRmxvb3IgM1wiLCB2YWx1ZTogMyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkU3RvcmVGbG9vcnM6IGFueSA9IFtdO1xyXG5cclxuICBpc0xheW91dEV4aXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNCdXR0b25Mb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQb3B1cExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0NhZFByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0NyZWF0ZVN0b3JlTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5ld1N0b3JlRGV0YWlsczogYW55O1xyXG4gIHByaXZhdGUgY2FkUHJvY2Vzc2luZ0FuaW1hdGlvbj86IEFuaW1hdGlvbkl0ZW07XHJcblxyXG4gIGNyZWF0ZVN0b3JlRm9ybTogYW55O1xyXG4gIHN0b3JlVHlwZUxpc3Q6IHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICB2YWx1ZTogc3RyaW5nO1xyXG4gIH1bXSA9IFtcclxuICAgIHsgbGFiZWw6IFwiSGlnaCBTdHJlZXRcIiwgdmFsdWU6IFwiSGlnaCBTdHJlZXRcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJNYWxsIFN0b3JlXCIsIHZhbHVlOiBcIk1hbGwgU3RvcmVcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJLaW9za1wiLCB2YWx1ZTogXCJLaW9za1wiIH0sXHJcbiAgXTtcclxuXHJcbiAgYnVzaW5lc3NUeXBlTGlzdDoge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgfVtdID0gW1xyXG4gICAgeyBsYWJlbDogXCJDT0NPXCIsIHZhbHVlOiBcIkNPQ09cIiB9LFxyXG4gICAgeyBsYWJlbDogXCJDT0ZPXCIsIHZhbHVlOiBcIkNPRk9cIiB9LFxyXG4gICAgeyBsYWJlbDogXCJGT0ZPXCIsIHZhbHVlOiBcIkZPRk9cIiB9LFxyXG4gICAgeyBsYWJlbDogXCJGT0NPXCIsIHZhbHVlOiBcIkZPQ09cIiB9LFxyXG4gIF07XHJcblxyXG4gIGlzTWFudWFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXHJcbiAgICBwcml2YXRlIHN0b3JlQnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveUNhZFByb2Nlc3NpbmdBbmltYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZhbGlkVG9DcmVhdGVQbGFubygpIHtcclxuICAgIGNvbnN0IGhhc1N0b3JlU2VsZWN0aW9uID0gISF0aGlzLnNlbGVjdGVkU3RvcmUgfHwgISF0aGlzLm5ld1N0b3JlRGV0YWlscztcclxuICAgIGNvbnN0IGZsb29yTnVtYmVyID0gdGhpcy5zZWxlY3RlZEZsb29yIHx8IHRoaXMubmV3U3RvcmVEZXRhaWxzPy5mbG9vcjtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBoYXNTdG9yZVNlbGVjdGlvbiAmJiBmbG9vck51bWJlciAmJiAodGhpcy5zZWxlY3RlZEZpbGUgfHwgdGhpcy5pc01hbnVhbClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNNb2RhbEJ1c3koKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1BvcHVwTG9hZGluZyB8fCB0aGlzLmlzQnV0dG9uTG9hZGluZyB8fCB0aGlzLmlzQ2FkUHJvY2Vzc2luZztcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFN0b3JlTGlzdCgpIHtcclxuICAgIHRoaXMuaXNQb3B1cExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3RvcmVzOiBhbnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UuZ2V0QWxsU3RvcmVzKHRoaXMuY2xpZW50SWQpLFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnN0b3JlTGlzdCA9IHN0b3Jlcz8uZGF0YT8ubWFwKChzOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4geyBsYWJlbDogcy5zdG9yZU5hbWUsIHZhbHVlOiBzLnN0b3JlSWQgfTtcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkBAIH4gZ2V0U3RvcmVMaXN0IFtFUlJdOlwiLCBlcnJvcik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzUG9wdXBMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblN0b3JlQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2RhbEJ1c3kgfHwgIXRoaXMuc2VsZWN0ZWRTdG9yZSkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGZsb29yczogYW55ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLmdldFN0b3JlRmxvb3JzTGlzdCh0aGlzLnNlbGVjdGVkU3RvcmUpLFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RvcmVGbG9vcnMgPSBmbG9vcnM/LmRhdGEgPz8gW107XHJcbiAgICAgIHRoaXMub25GbG9vckNoYW5nZSgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IGdldFN0b3JlTGlzdCBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GbG9vckNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmlzTW9kYWxCdXN5KSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG9vcikge1xyXG4gICAgICB0aGlzLmlzTGF5b3V0RXhpc3QgPSB0aGlzLnNlbGVjdGVkU3RvcmVGbG9vcnMuc29tZShcclxuICAgICAgICAoZjogYW55KSA9PiBmLmZsb29yTnVtYmVyID09PSB0aGlzLnNlbGVjdGVkRmxvb3IsXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzTGF5b3V0RXhpc3QgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRmlsZUNoYW5nZShmaWxlOiBGaWxlIHwgbnVsbCkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2RhbEJ1c3kpIHJldHVybjtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gZmlsZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ3JlYXRlTGF5b3V0UGxhbm8oKSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSkgcmV0dXJuO1xyXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRUb0NyZWF0ZVBsYW5vKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgaGFzQ2FkRmlsZSA9ICEhdGhpcy5zZWxlY3RlZEZpbGU7XHJcbiAgICBsZXQgc2hvdWxkUmVzZXROZXdTdG9yZVN1bW1hcnkgPSBmYWxzZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmlzQnV0dG9uTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIGlmIChoYXNDYWRGaWxlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2FkUHJvY2Vzc2luZ0xvYWRlcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdG9yZUNvbnRleHQgPSBhd2FpdCB0aGlzLmVuc3VyZVN0b3JlRm9yUGxhbm9DcmVhdGlvbigpO1xyXG4gICAgICBpZiAoIXN0b3JlQ29udGV4dCkgcmV0dXJuO1xyXG5cclxuICAgICAgbGV0IHBsYW5vUmVzOiBhbnk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZSkge1xyXG4gICAgICAgIHBsYW5vUmVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UuY3JlYXRlUGxhbm9Gcm9tQ0FEKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSEsXHJcbiAgICAgICAgICAgIHN0b3JlQ29udGV4dC5zdG9yZUlkLFxyXG4gICAgICAgICAgICBzdG9yZUNvbnRleHQuc3RvcmVOYW1lID8/IHN0b3JlQ29udGV4dC5zdG9yZUlkLFxyXG4gICAgICAgICAgICBzdG9yZUNvbnRleHQuZmxvb3JOdW1iZXIsXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGxhbm9SZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5jcmVhdGVFbXB0eVBsYW5vKHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHN0b3JlSWQ6IHN0b3JlQ29udGV4dC5zdG9yZUlkLFxyXG4gICAgICAgICAgICBmbG9vck51bWJlcjogc3RvcmVDb250ZXh0LmZsb29yTnVtYmVyLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFwbGFub1Jlcz8uZGF0YSkgcmV0dXJuO1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHBsYW5vUmVzPy5kYXRhKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgc2hvdWxkUmVzZXROZXdTdG9yZVN1bW1hcnkgPVxyXG4gICAgICAgICEhdGhpcy5uZXdTdG9yZURldGFpbHM/LnN0b3JlSWQgJiZcclxuICAgICAgICAhIXRoaXMubmV3U3RvcmVEZXRhaWxzPy5pbmZyYVRpY2tldENyZWF0ZWQ7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QodGhpcy5nZXRQbGFub0NyZWF0aW9uRXJyb3JNZXNzYWdlKGVycm9yKSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBvbkNyZWF0ZSBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5pc0J1dHRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKGhhc0NhZEZpbGUpIHtcclxuICAgICAgICB0aGlzLmhpZGVDYWRQcm9jZXNzaW5nTG9hZGVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNob3VsZFJlc2V0TmV3U3RvcmVTdW1tYXJ5KSB7XHJcbiAgICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUZsb29ycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaXNMYXlvdXRFeGlzdCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dDYWRQcm9jZXNzaW5nTG9hZGVyKCkge1xyXG4gICAgdGhpcy5pc0NhZFByb2Nlc3NpbmcgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWRDYWRQcm9jZXNzaW5nQW5pbWF0aW9uKCksIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlQ2FkUHJvY2Vzc2luZ0xvYWRlcigpIHtcclxuICAgIHRoaXMuaXNDYWRQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlc3Ryb3lDYWRQcm9jZXNzaW5nQW5pbWF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBsYW5vQ3JlYXRpb25FcnJvck1lc3NhZ2UoZXJyb3I6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjYWRFcnJvcnMgPVxyXG4gICAgICBlcnJvcj8uZXJyb3I/LmVycm9yPy5lcnJJbmZvPy5jYWREYXRhPy5lcnJvcnMgPz9cclxuICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcj8uZXJyb3JJbmZvPy5jYWREYXRhPy5lcnJvcnM7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2FkRXJyb3JzKSAmJiBjYWRFcnJvcnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZENhZEVycm9ycyA9IGNhZEVycm9yc1xyXG4gICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAoY2FkRXJyb3I6IHVua25vd24pID0+XHJcbiAgICAgICAgICAgIHR5cGVvZiBjYWRFcnJvciA9PT0gXCJzdHJpbmdcIiAmJiBjYWRFcnJvci50cmltKCkubGVuZ3RoID4gMCxcclxuICAgICAgICApXHJcbiAgICAgICAgLmpvaW4oXCIgfCBcIik7XHJcblxyXG4gICAgICBpZiAoZm9ybWF0dGVkQ2FkRXJyb3JzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZENhZEVycm9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIGVycm9yPy5lcnJvcj8uZXJyb3I/LmVyck1zZyA/P1xyXG4gICAgICBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgPz9cclxuICAgICAgZXJyb3I/Lm1lc3NhZ2UgPz9cclxuICAgICAgXCJGYWlsZWQgdG8gZXh0cmFjdCBwbGFubyBmcm9tIENBRCBmaWxlLlwiXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQ2FkUHJvY2Vzc2luZ0FuaW1hdGlvbigpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY2FkUHJvY2Vzc2luZ0xvdHRpZVJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5kZXN0cm95Q2FkUHJvY2Vzc2luZ0FuaW1hdGlvbigpO1xyXG4gICAgdGhpcy5jYWRQcm9jZXNzaW5nQW5pbWF0aW9uID0gbG90dGllLmxvYWRBbmltYXRpb24oe1xyXG4gICAgICBjb250YWluZXIsXHJcbiAgICAgIHJlbmRlcmVyOiBcInN2Z1wiLFxyXG4gICAgICBsb29wOiB0cnVlLFxyXG4gICAgICBhdXRvcGxheTogdHJ1ZSxcclxuICAgICAgcGF0aDogXCJhc3NldHMvYW5pbWF0aW9ucy9zdHJpbmdfbG9hZGluZy5qc29uXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveUNhZFByb2Nlc3NpbmdBbmltYXRpb24oKSB7XHJcbiAgICB0aGlzLmNhZFByb2Nlc3NpbmdBbmltYXRpb24/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuY2FkUHJvY2Vzc2luZ0FuaW1hdGlvbiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ3JlYXRlU3RvcmUoKSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuaXNCdXR0b25Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3Qgc3BvY1VzZXIgPSBhd2FpdCB0aGlzLmdldFNwb2NVc2VyRGV0YWlscyhcclxuICAgICAgICB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5zdG9yZU5hbWUudHJpbSgpLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCFzcG9jVXNlcikgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZFN0b3JlID0gXCJcIjtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwiZmxvb3JcIik/LnZhbHVlID8/IDE7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUZsb29ycyA9IFtdO1xyXG4gICAgICB0aGlzLmlzTGF5b3V0RXhpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMgPSB0aGlzLmJ1aWxkUGVuZGluZ1N0b3JlRGV0YWlscyhzcG9jVXNlcik7XHJcbiAgICAgIHRoaXMuaXNDcmVhdGVTdG9yZU1vZGUgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byBwcmVwYXJlIHN0b3JlIGRldGFpbHNcIik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzQnV0dG9uTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBlbmRpbmdTdG9yZURldGFpbHMoc3BvY1VzZXI6IGFueSkge1xyXG4gICAgY29uc3QgY3JlYXRlU3RvcmVQYXlsb2FkID0ge1xyXG4gICAgICBzdG9yZU5hbWU6IHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlLnN0b3JlTmFtZT8udG9VcHBlckNhc2UoKT8udHJpbSgpLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgYnVzaW5lc3NUeXBlOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5idXNpbmVzc1R5cGUsXHJcbiAgICAgIGNsdXN0ZXI6IFtdLFxyXG4gICAgICBzdG9yZVR5cGU6IHtcclxuICAgICAgICB0eXBlOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5zdG9yZVR5cGUsXHJcbiAgICAgICAgbmFtZTogdGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWU/LnN0b3JlVHlwZU5hbWU/LnRyaW0oKSxcclxuICAgICAgfSxcclxuICAgICAgc3RvcmVQcm9maWxlOiB7XG4gICAgICAgIHN0b3JlQ29kZTogdGhpcy5jcmVhdGVTdG9yZUZvcm0/LnZhbHVlPy5zdG9yZUNvZGUsXG4gICAgICAgIGFkZHJlc3M6IHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlPy5hZGRyZXNzLFxuICAgICAgICBjb3VudHJ5OiB0aGlzLnRvVGl0bGVDYXNlTG9jYXRpb24odGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWU/LmNvdW50cnkpLFxuICAgICAgICBzdGF0ZTogdGhpcy50b1RpdGxlQ2FzZUxvY2F0aW9uKHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlPy5zdGF0ZSksXG4gICAgICAgIGNpdHk6IHRoaXMudG9UaXRsZUNhc2VMb2NhdGlvbih0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZT8uY2l0eSksXG4gICAgICAgIHBpbmNvZGU6IHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlPy5waW5jb2RlLFxuICAgICAgICBsYXRpdHVkZTogdGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWUubGF0aXR1ZGU/LnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgICAgPyB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5sYXRpdHVkZVxuICAgICAgICAgIDogMCxcbiAgICAgICAgbG9uZ2l0dWRlOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5sb25naXR1ZGU/LnRvU3RyaW5nKCkudHJpbSgpXHJcbiAgICAgICAgICA/IHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlLmxvbmdpdHVkZVxyXG4gICAgICAgICAgOiAwLFxyXG4gICAgICAgIHRpbWVab25lOiBcIkFzaWEvS29sa2F0YVwiLFxyXG4gICAgICAgIG9wZW46IFwiMTA6MDA6MDBcIixcclxuICAgICAgICBjbG9zZTogXCIyMDowMDowMFwiLFxyXG4gICAgICB9LFxyXG4gICAgICBlZGdlOiB7XHJcbiAgICAgICAgc2VydmVyVHlwZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHNwb2NEZXRhaWxzOiBbc3BvY1VzZXJdLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5jcmVhdGVTdG9yZVBheWxvYWQsXHJcbiAgICAgIGNyZWF0ZVN0b3JlUGF5bG9hZCxcclxuICAgICAgZmxvb3I6IHRoaXMuY3JlYXRlU3RvcmVGb3JtLmdldChcImZsb29yXCIpPy52YWx1ZSA/PyAxLFxyXG4gICAgICBzdG9yZUlkOiBudWxsLFxyXG4gICAgICBpbmZyYVRpY2tldENyZWF0ZWQ6IGZhbHNlLFxyXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9UaXRsZUNhc2VMb2NhdGlvbih2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIFwiXCI7XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgICAgIC50cmltKClcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZShcbiAgICAgICAgLyhefFtcXHMnLV0pKFthLXpdKS9nLFxuICAgICAgICAoXywgc2VwYXJhdG9yOiBzdHJpbmcsIGNoYXJhY3Rlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAke3NlcGFyYXRvcn0ke2NoYXJhY3Rlci50b1VwcGVyQ2FzZSgpfWA7XG4gICAgICAgIH0sXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVTdG9yZUZvclBsYW5vQ3JlYXRpb24oKSB7XG4gICAgY29uc3QgZmxvb3JOdW1iZXIgPSB0aGlzLnNlbGVjdGVkRmxvb3IgfHwgdGhpcy5uZXdTdG9yZURldGFpbHM/LmZsb29yO1xyXG5cclxuICAgIGlmICghdGhpcy5uZXdTdG9yZURldGFpbHMpIHtcclxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkU3RvcmUgfHwgIWZsb29yTnVtYmVyKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IHN0b3JlTmFtZSA9IHRoaXMuc3RvcmVMaXN0LmZpbmQoXHJcbiAgICAgICAgKHMpID0+IHMudmFsdWUgPT09IHRoaXMuc2VsZWN0ZWRTdG9yZSxcclxuICAgICAgKT8ubGFiZWw7XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHN0b3JlSWQ6IHRoaXMuc2VsZWN0ZWRTdG9yZSxcclxuICAgICAgICBzdG9yZU5hbWU6IHN0b3JlTmFtZSA/PyB0aGlzLnNlbGVjdGVkU3RvcmUsXHJcbiAgICAgICAgZmxvb3JOdW1iZXIsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZUlkKSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5jcmVhdGVTdG9yZShcclxuICAgICAgICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMuY3JlYXRlU3RvcmVQYXlsb2FkLFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCBuZXdTdG9yZSA9IHJlcz8uZGF0YT8uc3RvcmU7XHJcblxyXG4gICAgICAgIGlmICghbmV3U3RvcmU/LnN0b3JlSWQpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gY3JlYXRlIHN0b3JlXCIpO1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZUlkID0gbmV3U3RvcmUuc3RvcmVJZDtcclxuICAgICAgICB0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZU5hbWUgPSBuZXdTdG9yZS5zdG9yZU5hbWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN0b3JlID0gbmV3U3RvcmUuc3RvcmVJZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vck51bWJlcjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmVGbG9vcnMgPSBbXTtcclxuICAgICAgICB0aGlzLmlzTGF5b3V0RXhpc3QgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLm5ld1N0b3JlRGV0YWlscy5pbmZyYVRpY2tldENyZWF0ZWQpIHtcclxuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5jcmVhdGVJbmZyYVRpY2tldCh7XHJcbiAgICAgICAgICAgIHN0b3JlSWQ6IHRoaXMubmV3U3RvcmVEZXRhaWxzLnN0b3JlSWQsXHJcbiAgICAgICAgICAgIERhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0sXHJcbiAgICAgICAgICAgIGlzc3VlVHlwZTogXCJpbnN0YWxsYXRpb25cIixcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMuaW5mcmFUaWNrZXRDcmVhdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3RvcmVDb250ZXh0ID0ge1xyXG4gICAgICAgIHN0b3JlSWQ6IHRoaXMubmV3U3RvcmVEZXRhaWxzLnN0b3JlSWQsXHJcbiAgICAgICAgc3RvcmVOYW1lOiB0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZU5hbWUsXHJcbiAgICAgICAgZmxvb3JOdW1iZXIsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMuc3RvcmVJZCAmJlxyXG4gICAgICAgIHRoaXMubmV3U3RvcmVEZXRhaWxzLmluZnJhVGlja2V0Q3JlYXRlZFxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAhdGhpcy5zdG9yZUxpc3Quc29tZShcclxuICAgICAgICAgICAgKHN0b3JlKSA9PiBzdG9yZS52YWx1ZSA9PT0gdGhpcy5uZXdTdG9yZURldGFpbHMuc3RvcmVJZCxcclxuICAgICAgICAgIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5uZXdTdG9yZURldGFpbHMuc3RvcmVOYW1lLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5uZXdTdG9yZURldGFpbHMuc3RvcmVJZCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHN0b3JlQ29udGV4dDtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IGVycm9yOlwiLCBlcnJvcik7XHJcblxyXG4gICAgICBpZiAoZXJyb3I/LmVycm9yPy5lcnJvcj8uZXJyb3IgPT09IFwiVGhlIHN0b3JlIG5hbWUgYWxyZWFkeSBleGlzdHNcIikge1xyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICBcIlRoaXMgc3RvcmUgbmFtZSBhbHJlYWR5IGV4aXN0cyBpbiAnRGVhY3RpdmF0ZScgc3RhdGVcIixcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gY3JlYXRlIHN0b3JlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0U3BvY1VzZXJEZXRhaWxzKHN0b3JlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzYWZlU3RvcmVOYW1lID0gc3RvcmVOYW1lXHJcbiAgICAgID8udG9Mb3dlckNhc2UoKVxyXG4gICAgICAudHJpbSgpXHJcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csIFwiX1wiKVxyXG4gICAgICAucmVwbGFjZSgvW15hLXowLTkuXy1dL2csIFwiXCIpO1xyXG5cclxuICAgIGNvbnN0IHVzZXJFbWFpbCA9IHRoaXMuY3JlYXRlU3RvcmVGb3JtLmdldChcImVtYWlsXCIpPy52YWx1ZT8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGVtYWlsID0gdXNlckVtYWlsIHx8IGAke3NhZmVTdG9yZU5hbWV9X3BsYW5vZ3JhbUBsZW5za2FydC5jb21gO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG4gICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5zcG9jRW1haWxDaGVjayh7XHJcbiAgICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgICAgIGVtYWlsOiBbZW1haWxdLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICApO1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHVzZXJFbWFpbFxyXG4gICAgICAgICAgICA/IGdldE5hbWVGcm9tRW1haWwoZW1haWwpXHJcbiAgICAgICAgICAgIDogc3RvcmVOYW1lLnRvVXBwZXJDYXNlKCkudHJpbSgpLFxyXG4gICAgICAgICAgZW1haWw6IGVtYWlsLFxyXG4gICAgICAgICAgY29udGFjdDogXCI5OTk5OTk5OTk5XCIsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IGdldFNwb2NVc2VyRGV0YWlscyBbRVJSXTogXCIsIGVycm9yKTtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcclxuICAgICAgICBlcnJvcj8uZXJyb3I/LmVycm9yID8/IFwiVW5hYmxlIHRvIGNyZWF0ZSBVc2VyXCIsXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkTmV3U3RvcmUoKSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHN0b3JlTmFtZTogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIHRoaXMuc3RvcmVOYW1lVmFsaWRhdG9yKCksXHJcbiAgICAgICAgICB0aGlzLnN0b3JlTmFtZUV4aXN0c1ZhbGlkYXRvcigpLFxyXG4gICAgICAgICAgZ2VuZXJhbFZhbGlkYXRvcigpLFxyXG4gICAgICAgIF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGVtYWlsOiBbXCJcIiwgVmFsaWRhdG9ycy5lbWFpbF0sXHJcbiAgICAgIGZsb29yOiBbMV0sXHJcbiAgICAgIGJ1c2luZXNzVHlwZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBzdG9yZVR5cGU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgc3RvcmVUeXBlTmFtZTogW1wiXCIsIGdlbmVyYWxWYWxpZGF0b3IoKV0sXHJcbiAgICAgIGFkZHJlc3M6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY291bnRyeTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBzdGF0ZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBjaXR5OiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHBpbmNvZGU6IFtcclxuICAgICAgICBcIlwiLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAvLyAgaW5kaWFuUGluY29kZVZhbGlkYXRvcigpXHJcbiAgICAgICAgXSxcclxuICAgICAgXSxcclxuICAgICAgbGF0aXR1ZGU6IFtcIlwiXSxcclxuICAgICAgbG9uZ2l0dWRlOiBbXCJcIl0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzQ3JlYXRlU3RvcmVNb2RlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmNyZWF0ZVN0b3JlRm9ybVxyXG4gICAgICAuZ2V0KFwic3RvcmVUeXBlXCIpXHJcbiAgICAgID8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gXCJNYWxsIFN0b3JlXCIpIHtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtLmdldChcInN0b3JlVHlwZU5hbWVcIik/LnJlc2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNyZWF0ZVN0b3JlRm9ybVxyXG4gICAgICAuZ2V0KFwic3RvcmVOYW1lXCIpXHJcbiAgICAgID8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgY29uc3QgdXBwZXIgPSB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgICAgaWYgKHZhbHVlICE9PSB1cHBlcikge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVN0b3JlRm9ybVxyXG4gICAgICAgICAgICAgIC5nZXQoXCJzdG9yZU5hbWVcIilcclxuICAgICAgICAgICAgICA/LnNldFZhbHVlKHVwcGVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBjb25zdCB1cmxUcmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbXCIvbWFuYWdlL3N0b3Jlcy9hZGQtc2luZ2xlLXN0b3JlXCJdKTtcclxuICAgIC8vIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh1cmxUcmVlKTtcclxuICAgIC8vIHdpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgfVxyXG5cclxuICBzdG9yZU5hbWVFeGlzdHNWYWxpZGF0b3IgPSAoKTogVmFsaWRhdG9yRm4gPT4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDsgLy8gYWxsb3cgcmVxdWlyZWQgdmFsaWRhdG9yIHRvIGhhbmRsZSBlbXB0eVxyXG5cclxuICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgY29uc3QgcyA9IHRoaXMuc3RvcmVMaXN0LmZpbmQoXHJcbiAgICAgICAgKHMpID0+IHM/LmxhYmVsPy50cmltKCk/LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRyaW1tZWQsXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChzKSByZXR1cm4geyBleGlzdHM6IHRydWUgfTtcclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICBzdG9yZU5hbWVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZS50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgICAgY29uc3Qgc3RQYXR0ZXJuID0gL15TVFxcZHs0fSQvOyAvLyBTVDEyMzRcclxuICAgICAgY29uc3QgbGtzdFBhdHRlcm4gPSAvXkxLU1RcXGR7NH0kLzsgLy8gTEtTVDEyMzRcclxuXHJcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSBzdFBhdHRlcm4udGVzdCh2YWx1ZSkgfHwgbGtzdFBhdHRlcm4udGVzdCh2YWx1ZSk7XHJcblxyXG4gICAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IGludmFsaWRTdG9yZU5hbWU6IHRydWUgfTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBvbkFkZHJlc3NDaGFuZ2UocGxhY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdCB8IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2RhbEJ1c3kgfHwgIXRoaXMuY3JlYXRlU3RvcmVGb3JtIHx8ICFwbGFjZT8uZ2VvbWV0cnkpIHJldHVybjtcclxuXHJcbiAgICBsZXQgY291bnRyeSA9IFwiXCIsXHJcbiAgICAgIGNpdHkgPSBcIlwiLFxyXG4gICAgICBzdGF0ZSA9IFwiXCIsXHJcbiAgICAgIHBpbmNvZGUgPSBcIlwiO1xyXG5cclxuICAgIGxldCBsYXRpdHVkZSA9IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpO1xyXG4gICAgbGV0IGxvbmdpdHVkZSA9IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpO1xyXG5cclxuICAgIHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwiY291bnRyeVwiKSkge1xyXG4gICAgICAgIGNvdW50cnkgPSBjb21wb25lbnQubG9uZ19uYW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudC50eXBlcy5pbmNsdWRlcyhcImxvY2FsaXR5XCIpKSB7XHJcbiAgICAgICAgY2l0eSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xXCIpKSB7XHJcbiAgICAgICAgc3RhdGUgPSBjb21wb25lbnQubG9uZ19uYW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudC50eXBlcy5pbmNsdWRlcyhcInBvc3RhbF9jb2RlXCIpKSB7XHJcbiAgICAgICAgcGluY29kZSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtLmdldChcImFkZHJlc3NcIik/LnNldFZhbHVlKHBsYWNlLmZvcm1hdHRlZF9hZGRyZXNzKTtcclxuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtXG4gICAgICAuZ2V0KFwiY291bnRyeVwiKVxuICAgICAgPy5zZXRWYWx1ZSh0aGlzLnRvVGl0bGVDYXNlTG9jYXRpb24oY291bnRyeSkpO1xuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtLmdldChcImNpdHlcIik/LnNldFZhbHVlKFxuICAgICAgdGhpcy50b1RpdGxlQ2FzZUxvY2F0aW9uKGNpdHkpLFxuICAgICk7XG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwic3RhdGVcIik/LnNldFZhbHVlKFxuICAgICAgdGhpcy50b1RpdGxlQ2FzZUxvY2F0aW9uKHN0YXRlKSxcbiAgICApO1xuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtLmdldChcInBpbmNvZGVcIik/LnNldFZhbHVlKHBpbmNvZGUpO1xyXG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwibGF0aXR1ZGVcIik/LnNldFZhbHVlKGxhdGl0dWRlKTtcclxuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtLmdldChcImxvbmdpdHVkZVwiKT8uc2V0VmFsdWUobG9uZ2l0dWRlKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2RhbEJ1c3kpIHJldHVybjtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuZGlzbWlzcygpO1xyXG4gIH1cclxuXHJcbiAgb25CYWNrKCkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2RhbEJ1c3kpIHJldHVybjtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNDcmVhdGVTdG9yZU1vZGUgJiYgdGhpcy5uZXdTdG9yZURldGFpbHMpIHtcclxuICAgICAgdGhpcy5pc0NyZWF0ZVN0b3JlTW9kZSA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzQ3JlYXRlU3RvcmVNb2RlID0gZmFsc2U7XHJcbiAgICB0aGlzLm5ld1N0b3JlRGV0YWlscyA9IG51bGw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC13cmFwcGVyXCI+XHJcbiAgPGRpdiAqbmdJZj1cImlzUG9wdXBMb2FkaW5nXCIgY2xhc3M9XCJtb2RhbC1sb2FkZXItb3ZlcmxheVwiPlxyXG4gICAgPHN2ZyBjbGFzcz1cIm1vZGFsLXNwaW5uZXJcIiB2aWV3Qm94PVwiMCAwIDUwIDUwXCI+XHJcbiAgICAgIDxjaXJjbGUgY2xhc3M9XCJwYXRoXCIgY3g9XCIyNVwiIGN5PVwiMjVcIiByPVwiMjBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjRcIj48L2NpcmNsZT5cclxuICAgIDwvc3ZnPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8aDMgY2xhc3M9XCJtYi0zXCI+Q3JlYXRlIHN0b3JlIGxheW91dC9wbGFuIGZyb20gQ0FEPC9oMz5cclxuICBAaWYoaXNDcmVhdGVTdG9yZU1vZGUpe1xyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICA8cD5TdGVwIDE6IE9uYm9hcmQgc3RvcmUgd2l0aCBiYXNpYyBkZXRhaWxzPC9wPlxyXG4gICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIG5nYlRvb2x0aXA9XCJBIG5ldyBzdG9yZSB3aWxsIGJlIGNyZWF0ZWQgd2hlbiB5b3UgcGVyZm9ybSB0aGlzIGFjdGlvbiAoTWFuYWdlID4gU3RvcmVzKS5cIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xMC4wMDAzIDEzLjMzMzdWMTAuMDAwM00xMC4wMDAzIDYuNjY2OTlIMTAuMDA4N00xOC4zMzM3IDEwLjAwMDNDMTguMzMzNyAxNC42MDI3IDE0LjYwMjcgMTguMzMzNyAxMC4wMDAzIDE4LjMzMzdDNS4zOTc5NSAxOC4zMzM3IDEuNjY2OTkgMTQuNjAyNyAxLjY2Njk5IDEwLjAwMDNDMS42NjY5OSA1LjM5Nzk1IDUuMzk3OTUgMS42NjY5OSAxMC4wMDAzIDEuNjY2OTlDMTQuNjAyNyAxLjY2Njk5IDE4LjMzMzcgNS4zOTc5NSAxOC4zMzM3IDEwLjAwMDNaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG5cclxuICBAaWYoaXNDcmVhdGVTdG9yZU1vZGUpe1xyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjcmVhdGVTdG9yZUZvcm1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPlN0b3JlIG5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0b3JlTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInN0b3JlTmFtZVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBzdG9yZSBuYW1lLiBlZzogTEtTVDEyMzRcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIiAvPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8udG91Y2hlZCAmJiBjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8uaW52YWxpZFwiPlxyXG5cclxuICAgICAgICAgICAgQGlmKGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy5oYXNFcnJvcignZXhpc3RzJykpe1xyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICBTdG9yZSBhbHJlYWR5IGV4aXN0cy5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgIFN0b3JlIG5hbWUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cclxuICAgICAgICAgICAgICAgIFN0b3JlIG5hbWUgY2Fubm90IGJlIG9ubHkgd2hpdGVzcGFjZS5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8uaGFzRXJyb3IoJ3RyaW1TcGFjZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgTm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuXHJcbiAgICAgICAgICAgICAgPC9zbWFsbD5cclxuXHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy5oYXNFcnJvcignaW52YWxpZFN0b3JlTmFtZScpIFwiPlxyXG4gICAgICAgICAgICAgICAgU3RvcmUgbmFtZSBtdXN0IGJlIFNUMTIzNCBvciBMS1NUMTIzNCBmb3JtYXQuXHJcbiAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi00XCI+XHJcbiAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwiZmxvb3JMaXN0XCIgW2xhYmVsXT1cIidTZWxlY3QgZmxvb3InXCJcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmxvb3JcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5cclxuICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJidXNpbmVzc1R5cGVMaXN0XCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidTZWxlY3QgYnVzaW5lc3MgdHlwZSdcIiBmb3JtQ29udHJvbE5hbWU9XCJidXNpbmVzc1R5cGVcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5cclxuICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJzdG9yZVR5cGVMaXN0XCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidTZWxlY3Qgc3RvcmUgdHlwZSdcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZVR5cGVcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5cclxuICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgQGlmKGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZScpPy52YWx1ZSA9PSAnTWFsbCBTdG9yZScpe1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi00XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZVR5cGVOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTFcIj5FbnRlciBNYWxsIG5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVUeXBlTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cInN0b3JlVHlwZU5hbWVcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgTWFsbCBuYW1lXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCIgLz5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlTmFtZScpPy50b3VjaGVkICYmIGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZU5hbWUnKT8uaW52YWxpZFwiPlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVOYW1lJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJylcIj5cclxuICAgICAgICAgICAgICAgIE1hbGwgbmFtZSBjYW5ub3QgYmUgb25seSB3aGl0ZXNwYWNlLlxyXG4gICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZU5hbWUnKT8uaGFzRXJyb3IoJ3RyaW1TcGFjZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgTm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuXHJcbiAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NcIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPkFkZHJlc3M8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFkZHJlc3NcIiBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYW5kIGVudGVyIGFkZHJlc3NcIiBuZ3gtZ3AtYXV0b2NvbXBsZXRlIChvbkFkZHJlc3NDaGFuZ2UpPVwib25BZGRyZXNzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIiAvPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8udG91Y2hlZCAmJiBjcmVhdGVTdG9yZUZvcm0uZ2V0KCdhZGRyZXNzJyk/LmludmFsaWRcIj5cclxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICBBZGRyZXNzIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiY291bnRyeVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+Q291bnRyeTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY291bnRyeVwiIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlcIiBwbGFjZWhvbGRlcj1cIkVudGVyIENvdW50cnlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIiAvPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8udG91Y2hlZCAmJiBjcmVhdGVTdG9yZUZvcm0uZ2V0KCdjb3VudHJ5Jyk/LmludmFsaWRcIj5cclxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICBDb3VudHJ5IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPlN0YXRlPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBTdGF0ZVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RhdGUnKT8udG91Y2hlZCAmJiBjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy5pbnZhbGlkXCI+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgIFN0YXRlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+Q2l0eSAvIFRvd248L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBDaXR5IC8gVG93blwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnY2l0eScpPy50b3VjaGVkICYmIGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2NpdHknKT8uaW52YWxpZFwiPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnY2l0eScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgIENpdHkgLyBUb3duIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwicGluY29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+UGluIC8gWmlwIENvZGU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBpbmNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJwaW5jb2RlXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBQaW4gLyBaaXAgQ29kZVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgncGluY29kZScpPy50b3VjaGVkICYmIGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8uaW52YWxpZFwiPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgncGluY29kZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgIFBpbiAvIFppcCBDb2RlIGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/Lmhhc0Vycm9yKCd3aGl0ZXNwYWNlJykgfHwgY3JlYXRlU3RvcmVGb3JtLmdldCgncGluY29kZScpPy5oYXNFcnJvcigndHJpbVNwYWNlcycpXCI+XHJcbiAgICAgICAgICAgICAgUGluY29kZSBjYW5ub3QgY29udGFpbiB3aGl0ZXNwYWNlLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgncGluY29kZScpPy5oYXNFcnJvcignaW52YWxpZFBpbmNvZGUnKVwiPlxyXG4gICAgICAgICAgICAgIEVudGVyIGEgdmFsaWQgNi1kaWdpdCBwaW5jb2RlXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPlNwb2MgdXNlciBlbWFpbCAob3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJlbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBzcG9jIHVzZXIgZW1haWxcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIiAvPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2VtYWlsJyk/LnRvdWNoZWQgJiYgY3JlYXRlU3RvcmVGb3JtLmdldCgnZW1haWwnKT8uaW52YWxpZFwiPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnZW1haWwnKT8uaGFzRXJyb3IoJ2VtYWlsJylcIj5cclxuICAgICAgICAgICAgICBFbWFpbCBpcyBpbnZhbGlkLlxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQGlmKG5ld1N0b3JlRGV0YWlscyl7XHJcbiAgICAgIDxwIGNsYXNzPVwibWItNlwiPlN0ZXAgMjogQWRkIENBRCBmaWxlPC9wPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi02XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0yXCI+U3RvcmUgbmFtZTwvcD5cclxuICAgICAgICAgIDxoMyBjbGFzcz1cIm5ldy1zdG9yZS10eHRcIj57e25ld1N0b3JlRGV0YWlscz8uc3RvcmVOYW1lfX08L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwibWItMlwiPkZsb29yPC9wPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwibmV3LXN0b3JlLXR4dFwiPkZsb29yIHt7dGhpcy5zZWxlY3RlZEZsb29yfX08L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwibWItMlwiPkJ1c2luZXNzIHR5cGU8L3A+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJuZXctc3RvcmUtdHh0XCI+e3tuZXdTdG9yZURldGFpbHM/LmJ1c2luZXNzVHlwZSB8IHVwcGVyY2FzZX19PC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIm1iLTJcIj5TdG9yZSB0eXBlPC9wPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwibmV3LXN0b3JlLXR4dFwiPnt7bmV3U3RvcmVEZXRhaWxzPy5zdG9yZVR5cGU/LnR5cGUgfCB0aXRsZWNhc2V9fTwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfUBlbHNlIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBbc2VhcmNoXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU3RvcmVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgW2RhdGFdPVwic3RvcmVMaXN0XCIgW2xhYmVsXT1cIidTZWxlY3Qgc3RvcmUnXCIgW2FjdGlvbl09XCJ0cnVlXCIgKGFjdGlvbkNsaWNrKT1cImFkZE5ld1N0b3JlKClcIlxyXG4gICAgICAgICAgICBbYWN0aW9uTGFiZWxdPVwiJ0NyZWF0ZSBuZXcgc3RvcmUnXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TdG9yZUNoYW5nZSgpXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCI+XHJcbiAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRmxvb3JcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwiZmxvb3JMaXN0XCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidTZWxlY3QgZmxvb3InXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25GbG9vckNoYW5nZSgpXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCI+XHJcbiAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1leGlzdC13cmFwcGVyXCIgW2NsYXNzLnNob3ddPVwiaXNMYXlvdXRFeGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtZXhpc3Qtd2FybmluZyBtYi00XCI+XHJcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTkuOTk5NjUgNi42NjY2N1YxME05Ljk5OTY1IDEzLjMzMzNIMTAuMDA4TTguNTc0NjUgMi4zODMzNEwxLjUxNjMyIDE0LjE2NjdDMS4zNzA3OSAxNC40MTg3IDEuMjkzNzkgMTQuNzA0NCAxLjI5Mjk4IDE0Ljk5NTRDMS4yOTIxNiAxNS4yODY1IDEuMzY3NTYgMTUuNTcyNiAxLjUxMTY3IDE1LjgyNTRDMS42NTU3OSAxNi4wNzgzIDEuODYzNTkgMTYuMjg5IDIuMTE0NDEgMTYuNDM2NkMyLjM2NTIzIDE2LjU4NDEgMi42NTAzMiAxNi42NjM1IDIuOTQxMzIgMTYuNjY2N0gxNy4wNThDMTcuMzQ5IDE2LjY2MzUgMTcuNjM0MSAxNi41ODQxIDE3Ljg4NDkgMTYuNDM2NkMxOC4xMzU3IDE2LjI4OSAxOC4zNDM1IDE2LjA3ODMgMTguNDg3NiAxNS44MjU0QzE4LjYzMTcgMTUuNTcyNiAxOC43MDcxIDE1LjI4NjUgMTguNzA2MyAxNC45OTU0QzE4LjcwNTUgMTQuNzA0NCAxOC42Mjg1IDE0LjQxODcgMTguNDgzIDE0LjE2NjdMMTEuNDI0NyAyLjM4MzM0QzExLjI3NjEgMi4xMzg0MyAxMS4wNjY5IDEuOTM1OTQgMTAuODE3MyAxLjc5NTQxQzEwLjU2NzcgMS42NTQ4OCAxMC4yODYxIDEuNTgxMDUgOS45OTk2NSAxLjU4MTA1QzkuNzEzMjEgMS41ODEwNSA5LjQzMTU5IDEuNjU0ODggOS4xODE5OSAxLjc5NTQxQzguOTMyMzggMS45MzU5NCA4LjcyMzIxIDIuMTM4NDMgOC41NzQ2NSAyLjM4MzM0WlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgVGhpcyBzdG9yZSBhbHJlYWR5IGhhcyBhIEZsb29yIHt7c2VsZWN0ZWRGbG9vcn19IHBsYW5vZ3JhbS4gT3ZlcndyaXRlIGl0PyBUaGlzIGNhbuKAmXQgYmUgdW5kb25lLlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgIEBpZiAoaXNDYWRQcm9jZXNzaW5nKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhZC1sb2FkZXItcGFuZWxcIj5cclxuICAgICAgICAgIDwhLS1cclxuICAgICAgICAgIDxkaXYgI2NhZFByb2Nlc3NpbmdMb3R0aWUgY2xhc3M9XCJjYWQtbG90dGllXCI+PC9kaXY+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImNhZC1sb2FkZXItdGV4dCBtYi0wXCI+Q3JlYXRpbmcgcGxhbm9ncmFtIGZyb20gQ0FELi4uPC9wPlxyXG4gICAgICAgICAgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FkLWxvYWRlci1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjYWQtYmFzaWMtc3Bpbm5lclwiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIj5cclxuICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwicGF0aFwiIGN4PVwiMjVcIiBjeT1cIjI1XCIgcj1cIjIwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCI0XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNhZC1sb2FkZXItdGV4dCBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgQnVpbGRpbmcgbGF5b3V0XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2FkaW5nLWRvdHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInNlbGVjdGVkRmlsZSA/ICdjb2wtMTInIDonY29sLTYnXCI+XHJcbiAgICAgICAgICAgIDxmaWxlLXVwbG9hZCBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIiAoZmlsZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiPjwvZmlsZS11cGxvYWQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwic2VsZWN0ZWRGaWxlID8gJ2Qtbm9uZScgOidjb2wtNidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHZpZXdCb3g9XCIwIDAgODAgODBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNDBcIiBjeT1cIjQwXCIgcj1cIjQwXCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTU1LjUwMDggMzQuMzc1SDUxLjM3NTJMNDcuNjI1OCAzOC4xMjUzSDQyLjM3NTJWMzQuMzc1SDMxLjEyNTJWNDkuMzc1M0gyNy4zNzU4QzI2Ljg3ODUgNDkuMzY3NiAyNi4zODQ2IDQ5LjQ1ODkgMjUuOTIyOSA0OS42NDM5QzI1LjQ2MTIgNDkuODI4OSAyNS4wNDA5IDUwLjEwMzkgMjQuNjg2NCA1MC40NTI4QzI0LjMzMiA1MC44MDE4IDI0LjA1MDYgNTEuMjE3OCAyMy44NTg0IDUxLjY3NjZDMjMuNjY2MyA1Mi4xMzUzIDIzLjU2NzQgNTIuNjI3OCAyMy41Njc0IDUzLjEyNTFDMjMuNTY3NCA1My42MjI1IDIzLjY2NjMgNTQuMTE0OSAyMy44NTg0IDU0LjU3MzdDMjQuMDUwNiA1NS4wMzI1IDI0LjMzMiA1NS40NDg1IDI0LjY4NjQgNTUuNzk3NUMyNS4wNDA5IDU2LjE0NjQgMjUuNDYxMiA1Ni40MjE0IDI1LjkyMjkgNTYuNjA2NEMyNi4zODQ2IDU2Ljc5MTQgMjYuODc4NSA1Ni44ODI3IDI3LjM3NTggNTYuODc1SDU1LjUwMDhDNTUuOTk4IDU2Ljg3NSA1Ni40NzQ4IDU2LjY3NzUgNTYuODI2NCA1Ni4zMjU5QzU3LjE3OCA1NS45NzQzIDU3LjM3NTUgNTUuNDk3NSA1Ny4zNzU1IDU1LjAwMDNWMzYuMjQ5N0M1Ny4zNzU1IDM1Ljc1MjUgNTcuMTc4IDM1LjI3NTcgNTYuODI2NCAzNC45MjQxQzU2LjQ3NDggMzQuNTcyNSA1NS45OTggMzQuMzc1IDU1LjUwMDggMzQuMzc1Wk0zMS4xMjUyIDI4Ljc1VjQ5LjM3NTNIMjcuMzc1OEMyNi4zODEzIDQ5LjM3NTMgMjUuNDI3NSA0OS43NzAzIDI0LjcyNDIgNTAuNDczNEMyNC4wMjA5IDUxLjE3NjUgMjMuNjI1NyA1Mi4xMzAyIDIzLjYyNTUgNTMuMTI0N1YzMi41MDAzQzIzLjYyNTUgMzEuNTA1NyAyNC4wMjA2IDMwLjU1MTggMjQuNzIzOSAyOS44NDg0QzI1LjQyNzIgMjkuMTQ1MSAyNi4zODExIDI4Ljc1IDI3LjM3NTggMjguNzVIMzEuMTI1MlpcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTMxLjEyNTIgNDkuMzc1M1YzNC4zNzVINDIuMzc1MlYzOC4xMjUzSDQ3LjYyNThMNTEuMzc1MiAzNC4zNzVINTUuNTAwOEM1NS45OTggMzQuMzc1IDU2LjQ3NDggMzQuNTcyNSA1Ni44MjY0IDM0LjkyNDFDNTcuMTc4IDM1LjI3NTcgNTcuMzc1NSAzNS43NTI1IDU3LjM3NTUgMzYuMjQ5N1Y1NS4wMDAzQzU3LjM3NTUgNTUuNDk3NSA1Ny4xNzggNTUuOTc0MyA1Ni44MjY0IDU2LjMyNTlDNTYuNDc0OCA1Ni42Nzc1IDU1Ljk5OCA1Ni44NzUgNTUuNTAwOCA1Ni44NzVIMjcuMzc1OEMyNi44Nzg1IDU2Ljg4MjcgMjYuMzg0NiA1Ni43OTE0IDI1LjkyMjkgNTYuNjA2NEMyNS40NjEyIDU2LjQyMTQgMjUuMDQwOSA1Ni4xNDY0IDI0LjY4NjQgNTUuNzk3NUMyNC4zMzIgNTUuNDQ4NSAyNC4wNTA2IDU1LjAzMjUgMjMuODU4NCA1NC41NzM3QzIzLjY2NjMgNTQuMTE0OSAyMy41Njc0IDUzLjYyMjUgMjMuNTY3NCA1My4xMjUxQzIzLjU2NzQgNTIuNjI3OCAyMy42NjYzIDUyLjEzNTMgMjMuODU4NCA1MS42NzY2QzI0LjA1MDYgNTEuMjE3OCAyNC4zMzIgNTAuODAxOCAyNC42ODY0IDUwLjQ1MjhDMjUuMDQwOSA1MC4xMDM5IDI1LjQ2MTIgNDkuODI4OSAyNS45MjI5IDQ5LjY0MzlDMjYuMzg0NiA0OS40NTg5IDI2Ljg3ODUgNDkuMzY3NiAyNy4zNzU4IDQ5LjM3NTNNMzEuMTI1MiA0OS4zNzUzSDI3LjM3NThNMzEuMTI1MiA0OS4zNzUzVjI4Ljc1SDI3LjM3NThDMjYuMzgxMSAyOC43NSAyNS40MjcyIDI5LjE0NTEgMjQuNzIzOSAyOS44NDg0QzI0LjAyMDYgMzAuNTUxOCAyMy42MjU1IDMxLjUwNTcgMjMuNjI1NSAzMi41MDAzVjUzLjEyNDdDMjMuNjI1NyA1Mi4xMzAyIDI0LjAyMDkgNTEuMTc2NSAyNC43MjQyIDUwLjQ3MzRDMjUuNDI3NSA0OS43NzAzIDI2LjM4MTMgNDkuMzc1MyAyNy4zNzU4IDQ5LjM3NTNcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjAuODQzNzVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTU2LjgzMTcgMjYuMjkzTDU0LjIwNjQgMjMuNjY4NkM1My44NTYgMjMuMzI1MiA1My4zODQ5IDIzLjEzMjggNTIuODk0MiAyMy4xMzI4QzUyLjQwMzUgMjMuMTMyOCA1MS45MzI0IDIzLjMyNTIgNTEuNTgyIDIzLjY2ODZMNDIuMzc1IDMyLjg3NTZWMzguMTI1M0g0Ny42MjU2TDU2LjgzMTcgMjguOTE4M0M1Ny4xNzUxIDI4LjU2NzkgNTcuMzY3NSAyOC4wOTY4IDU3LjM2NzUgMjcuNjA2MUM1Ny4zNjc1IDI3LjExNTUgNTcuMTc1MSAyNi42NDM0IDU2LjgzMTcgMjYuMjkzWlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwiIzMzQjVGRlwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImlzTWFudWFsXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTNcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtYW51YWxcIj5DcmVhdGUgbWFudWFsbHk8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWFjdGlvbnNcIj5cclxuICAgIEBpZihpc0NyZWF0ZVN0b3JlTW9kZSl7XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIG1lLWF1dG9cIiAoY2xpY2spPVwib25CYWNrKClcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5CYWNrPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgXCIgW2Rpc2FibGVkXT1cImNyZWF0ZVN0b3JlRm9ybS5pbnZhbGlkIHx8IGlzTW9kYWxCdXN5XCJcclxuICAgICAgICAoY2xpY2spPVwib25DcmVhdGVTdG9yZSgpXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNCdXR0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICBOZXh0XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc0J1dHRvbkxvYWRpbmdcIiBjbGFzcz1cInNwaW5uZXJcIiB2aWV3Qm94PVwiMCAwIDUwIDUwXCI+XHJcbiAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwicGF0aFwiIGN4PVwiMjVcIiBjeT1cIjI1XCIgcj1cIjIwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCI0XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfUBlbHNlIHtcclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIm5ld1N0b3JlRGV0YWlsc1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluayBtZS1hdXRvXCIgKGNsaWNrKT1cIm9uQmFjaygpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5CYWNrPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCIhbmV3U3RvcmVEZXRhaWxzXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLWF1dG9cIiAoY2xpY2spPVwiYWRkTmV3U3RvcmUoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTYuNjY4MjkgMC44MzQ5NjFWMTIuNTAxNk0wLjgzNDk2MSA2LjY2ODI5SDEyLjUwMTZcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgIENyZWF0ZSBuZXcgc3RvcmVcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgXCIgW2Rpc2FibGVkXT1cIiFpc1ZhbGlkVG9DcmVhdGVQbGFubyB8fCBpc01vZGFsQnVzeVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ3JlYXRlTGF5b3V0UGxhbm8oKVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzQnV0dG9uTG9hZGluZyB8fCBpc0NhZFByb2Nlc3NpbmdcIj5cclxuICAgICAgICAgIHt7aXNMYXlvdXRFeGlzdCA/ICAnT3ZlcndyaXRlJyA6ICdDcmVhdGUnfX1cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc0J1dHRvbkxvYWRpbmcgJiYgIWlzQ2FkUHJvY2Vzc2luZ1wiIGNsYXNzPVwic3Bpbm5lclwiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIj5cclxuICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJwYXRoXCIgY3g9XCIyNVwiIGN5PVwiMjVcIiByPVwiMjBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjRcIj48L2NpcmNsZT5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
543
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBsYW5vZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9vbmJvYXJkLXN0b3JlLXBsYW5vL2NyZWF0ZS1wbGFub2dyYW0vY3JlYXRlLXBsYW5vZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9vbmJvYXJkLXN0b3JlLXBsYW5vL2NyZWF0ZS1wbGFub2dyYW0vY3JlYXRlLXBsYW5vZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RSxPQUFPLEVBR0wsV0FBVyxFQUNYLG1CQUFtQixFQUVuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFOUUsT0FBTyxF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QjtxQkFDRjswS0FHUSxRQUFRO3NCQUFoQixLQUFLO2dCQUVOLHNCQUFzQjtzQkFEckIsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JUb29sdGlwIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgVGl0bGVDYXNlUGlwZSwgVXBwZXJDYXNlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSBcIkBnb29nbGVtYXBzL2pzLWFwaS1sb2FkZXJcIjtcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBOZ3hHcEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci1tYWdpYy9uZ3gtZ3AtYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7IFJlYWN0aXZlU2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3JlYWN0aXZlLXNlbGVjdC9yZWFjdGl2ZS1zZWxlY3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgZ2VuZXJhbFZhbGlkYXRvcixcclxuICBnZXROYW1lRnJvbUVtYWlsLFxyXG4gIGluZGlhblBpbmNvZGVWYWxpZGF0b3IsXHJcbn0gZnJvbSBcIi4uLy4uLy4uL2Z1bmN0aW9ucy9wbGFuby5mdW5jdGlvblwiO1xyXG5pbXBvcnQgbG90dGllLCB7IEFuaW1hdGlvbkl0ZW0gfSBmcm9tIFwibG90dGllLXdlYlwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWNyZWF0ZS1wbGFub2dyYW1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2NyZWF0ZS1wbGFub2dyYW0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2NyZWF0ZS1wbGFub2dyYW0uY29tcG9uZW50LnNjc3NcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIE5nSWYsXHJcbiAgICBOZ3hHcEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIE5nYlRvb2x0aXAsXHJcbiAgICBVcHBlckNhc2VQaXBlLFxyXG4gICAgVGl0bGVDYXNlUGlwZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTG9hZGVyLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZ3M6IEdsb2JhbFN0YXRlU2VydmljZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVudiA9IGdzLmVudmlyb25tZW50LnZhbHVlO1xyXG4gICAgICAgIHJldHVybiBuZXcgTG9hZGVyKHtcclxuICAgICAgICAgIGFwaUtleTogZW52Py5tYXBLZXlVcmwgfHwgJ0FJemFTeUFxRmJ5WmVTeURCYURrR2FQcGZjTE8tbkVncmFBQWZXdycsXHJcbiAgICAgICAgICBsaWJyYXJpZXM6IFsncGxhY2VzJ10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtHbG9iYWxTdGF0ZVNlcnZpY2VdLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlUGxhbm9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgQFZpZXdDaGlsZChcImNhZFByb2Nlc3NpbmdMb3R0aWVcIilcclxuICBjYWRQcm9jZXNzaW5nTG90dGllUmVmPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIHNlbGVjdGVkU3RvcmU6IHN0cmluZztcclxuICBzZWxlY3RlZEZsb29yOiBudW1iZXI7XHJcbiAgc2VsZWN0ZWRGaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHN0b3JlTGlzdDoge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgfVtdID0gW107XHJcblxyXG4gIGZsb29yTGlzdDoge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBudW1iZXI7XHJcbiAgfVtdID0gW1xyXG4gICAgeyBsYWJlbDogXCJGbG9vciAxXCIsIHZhbHVlOiAxIH0sXHJcbiAgICB7IGxhYmVsOiBcIkZsb29yIDJcIiwgdmFsdWU6IDIgfSxcclxuICAgIHsgbGFiZWw6IFwiRmxvb3IgM1wiLCB2YWx1ZTogMyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkU3RvcmVGbG9vcnM6IGFueSA9IFtdO1xyXG5cclxuICBpc0xheW91dEV4aXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNCdXR0b25Mb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQb3B1cExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0NhZFByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0NyZWF0ZVN0b3JlTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5ld1N0b3JlRGV0YWlsczogYW55O1xyXG4gIHByaXZhdGUgY2FkUHJvY2Vzc2luZ0FuaW1hdGlvbj86IEFuaW1hdGlvbkl0ZW07XHJcblxyXG4gIGNyZWF0ZVN0b3JlRm9ybTogYW55O1xyXG4gIHN0b3JlVHlwZUxpc3Q6IHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICB2YWx1ZTogc3RyaW5nO1xyXG4gIH1bXSA9IFtcclxuICAgIHsgbGFiZWw6IFwiSGlnaCBTdHJlZXRcIiwgdmFsdWU6IFwiSGlnaCBTdHJlZXRcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJNYWxsIFN0b3JlXCIsIHZhbHVlOiBcIk1hbGwgU3RvcmVcIiB9LFxyXG4gICAgeyBsYWJlbDogXCJLaW9za1wiLCB2YWx1ZTogXCJLaW9za1wiIH0sXHJcbiAgXTtcclxuXHJcbiAgYnVzaW5lc3NUeXBlTGlzdDoge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgfVtdID0gW1xyXG4gICAgeyBsYWJlbDogXCJDT0NPXCIsIHZhbHVlOiBcIkNPQ09cIiB9LFxyXG4gICAgeyBsYWJlbDogXCJDT0ZPXCIsIHZhbHVlOiBcIkNPRk9cIiB9LFxyXG4gICAgeyBsYWJlbDogXCJGT0ZPXCIsIHZhbHVlOiBcIkZPRk9cIiB9LFxyXG4gICAgeyBsYWJlbDogXCJGT0NPXCIsIHZhbHVlOiBcIkZPQ09cIiB9LFxyXG4gIF07XHJcblxyXG4gIGlzTWFudWFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXHJcbiAgICBwcml2YXRlIHN0b3JlQnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuZ2V0U3RvcmVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveUNhZFByb2Nlc3NpbmdBbmltYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZhbGlkVG9DcmVhdGVQbGFubygpIHtcclxuICAgIGNvbnN0IGhhc1N0b3JlU2VsZWN0aW9uID0gISF0aGlzLnNlbGVjdGVkU3RvcmUgfHwgISF0aGlzLm5ld1N0b3JlRGV0YWlscztcclxuICAgIGNvbnN0IGZsb29yTnVtYmVyID0gdGhpcy5zZWxlY3RlZEZsb29yIHx8IHRoaXMubmV3U3RvcmVEZXRhaWxzPy5mbG9vcjtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBoYXNTdG9yZVNlbGVjdGlvbiAmJiBmbG9vck51bWJlciAmJiAodGhpcy5zZWxlY3RlZEZpbGUgfHwgdGhpcy5pc01hbnVhbClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNNb2RhbEJ1c3koKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1BvcHVwTG9hZGluZyB8fCB0aGlzLmlzQnV0dG9uTG9hZGluZyB8fCB0aGlzLmlzQ2FkUHJvY2Vzc2luZztcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFN0b3JlTGlzdCgpIHtcclxuICAgIHRoaXMuaXNQb3B1cExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3RvcmVzOiBhbnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UuZ2V0QWxsU3RvcmVzKHRoaXMuY2xpZW50SWQpLFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnN0b3JlTGlzdCA9IHN0b3Jlcz8uZGF0YT8ubWFwKChzOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4geyBsYWJlbDogcy5zdG9yZU5hbWUsIHZhbHVlOiBzLnN0b3JlSWQgfTtcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkBAIH4gZ2V0U3RvcmVMaXN0IFtFUlJdOlwiLCBlcnJvcik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzUG9wdXBMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblN0b3JlQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2RhbEJ1c3kgfHwgIXRoaXMuc2VsZWN0ZWRTdG9yZSkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGZsb29yczogYW55ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLmdldFN0b3JlRmxvb3JzTGlzdCh0aGlzLnNlbGVjdGVkU3RvcmUpLFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RvcmVGbG9vcnMgPSBmbG9vcnM/LmRhdGEgPz8gW107XHJcbiAgICAgIHRoaXMub25GbG9vckNoYW5nZSgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJAQCB+IGdldFN0b3JlTGlzdCBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GbG9vckNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmlzTW9kYWxCdXN5KSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG9vcikge1xyXG4gICAgICB0aGlzLmlzTGF5b3V0RXhpc3QgPSB0aGlzLnNlbGVjdGVkU3RvcmVGbG9vcnMuc29tZShcclxuICAgICAgICAoZjogYW55KSA9PiBmLmZsb29yTnVtYmVyID09PSB0aGlzLnNlbGVjdGVkRmxvb3IsXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzTGF5b3V0RXhpc3QgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRmlsZUNoYW5nZShmaWxlOiBGaWxlIHwgbnVsbCkge1xyXG4gICAgaWYgKHRoaXMuaXNNb2RhbEJ1c3kpIHJldHVybjtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gZmlsZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ3JlYXRlTGF5b3V0UGxhbm8oKSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSkgcmV0dXJuO1xyXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRUb0NyZWF0ZVBsYW5vKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgaGFzQ2FkRmlsZSA9ICEhdGhpcy5zZWxlY3RlZEZpbGU7XHJcbiAgICBsZXQgc2hvdWxkUmVzZXROZXdTdG9yZVN1bW1hcnkgPSBmYWxzZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmlzQnV0dG9uTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIGlmIChoYXNDYWRGaWxlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2FkUHJvY2Vzc2luZ0xvYWRlcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdG9yZUNvbnRleHQgPSBhd2FpdCB0aGlzLmVuc3VyZVN0b3JlRm9yUGxhbm9DcmVhdGlvbigpO1xyXG4gICAgICBpZiAoIXN0b3JlQ29udGV4dCkgcmV0dXJuO1xyXG5cclxuICAgICAgbGV0IHBsYW5vUmVzOiBhbnk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZSkge1xyXG4gICAgICAgIHBsYW5vUmVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2UuY3JlYXRlUGxhbm9Gcm9tQ0FEKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSEsXHJcbiAgICAgICAgICAgIHN0b3JlQ29udGV4dC5zdG9yZUlkLFxyXG4gICAgICAgICAgICBzdG9yZUNvbnRleHQuc3RvcmVOYW1lID8/IHN0b3JlQ29udGV4dC5zdG9yZUlkLFxyXG4gICAgICAgICAgICBzdG9yZUNvbnRleHQuZmxvb3JOdW1iZXIsXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGxhbm9SZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZS5jcmVhdGVFbXB0eVBsYW5vKHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgICAgICAgIHN0b3JlSWQ6IHN0b3JlQ29udGV4dC5zdG9yZUlkLFxyXG4gICAgICAgICAgICBmbG9vck51bWJlcjogc3RvcmVDb250ZXh0LmZsb29yTnVtYmVyLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFwbGFub1Jlcz8uZGF0YSkgcmV0dXJuO1xyXG4gICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHBsYW5vUmVzPy5kYXRhKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgc2hvdWxkUmVzZXROZXdTdG9yZVN1bW1hcnkgPVxyXG4gICAgICAgICEhdGhpcy5uZXdTdG9yZURldGFpbHM/LnN0b3JlSWQgJiZcclxuICAgICAgICAhIXRoaXMubmV3U3RvcmVEZXRhaWxzPy5pbmZyYVRpY2tldENyZWF0ZWQ7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QodGhpcy5nZXRQbGFub0NyZWF0aW9uRXJyb3JNZXNzYWdlKGVycm9yKSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBvbkNyZWF0ZSBbRVJSXTpcIiwgZXJyb3IpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5pc0J1dHRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKGhhc0NhZEZpbGUpIHtcclxuICAgICAgICB0aGlzLmhpZGVDYWRQcm9jZXNzaW5nTG9hZGVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNob3VsZFJlc2V0TmV3U3RvcmVTdW1tYXJ5KSB7XHJcbiAgICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUZsb29ycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaXNMYXlvdXRFeGlzdCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dDYWRQcm9jZXNzaW5nTG9hZGVyKCkge1xyXG4gICAgdGhpcy5pc0NhZFByb2Nlc3NpbmcgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWRDYWRQcm9jZXNzaW5nQW5pbWF0aW9uKCksIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlQ2FkUHJvY2Vzc2luZ0xvYWRlcigpIHtcclxuICAgIHRoaXMuaXNDYWRQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlc3Ryb3lDYWRQcm9jZXNzaW5nQW5pbWF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBsYW5vQ3JlYXRpb25FcnJvck1lc3NhZ2UoZXJyb3I6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjYWRFcnJvcnMgPVxyXG4gICAgICBlcnJvcj8uZXJyb3I/LmVycm9yPy5lcnJJbmZvPy5jYWREYXRhPy5lcnJvcnMgPz9cclxuICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcj8uZXJyb3JJbmZvPy5jYWREYXRhPy5lcnJvcnM7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2FkRXJyb3JzKSAmJiBjYWRFcnJvcnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZENhZEVycm9ycyA9IGNhZEVycm9yc1xyXG4gICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAoY2FkRXJyb3I6IHVua25vd24pID0+XHJcbiAgICAgICAgICAgIHR5cGVvZiBjYWRFcnJvciA9PT0gXCJzdHJpbmdcIiAmJiBjYWRFcnJvci50cmltKCkubGVuZ3RoID4gMCxcclxuICAgICAgICApXHJcbiAgICAgICAgLmpvaW4oXCIgfCBcIik7XHJcblxyXG4gICAgICBpZiAoZm9ybWF0dGVkQ2FkRXJyb3JzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZENhZEVycm9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIGVycm9yPy5lcnJvcj8uZXJyb3I/LmVyck1zZyA/P1xyXG4gICAgICBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgPz9cclxuICAgICAgZXJyb3I/Lm1lc3NhZ2UgPz9cclxuICAgICAgXCJGYWlsZWQgdG8gZXh0cmFjdCBwbGFubyBmcm9tIENBRCBmaWxlLlwiXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQ2FkUHJvY2Vzc2luZ0FuaW1hdGlvbigpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY2FkUHJvY2Vzc2luZ0xvdHRpZVJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5kZXN0cm95Q2FkUHJvY2Vzc2luZ0FuaW1hdGlvbigpO1xyXG4gICAgdGhpcy5jYWRQcm9jZXNzaW5nQW5pbWF0aW9uID0gbG90dGllLmxvYWRBbmltYXRpb24oe1xyXG4gICAgICBjb250YWluZXIsXHJcbiAgICAgIHJlbmRlcmVyOiBcInN2Z1wiLFxyXG4gICAgICBsb29wOiB0cnVlLFxyXG4gICAgICBhdXRvcGxheTogdHJ1ZSxcclxuICAgICAgcGF0aDogXCJhc3NldHMvYW5pbWF0aW9ucy9zdHJpbmdfbG9hZGluZy5qc29uXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveUNhZFByb2Nlc3NpbmdBbmltYXRpb24oKSB7XHJcbiAgICB0aGlzLmNhZFByb2Nlc3NpbmdBbmltYXRpb24/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuY2FkUHJvY2Vzc2luZ0FuaW1hdGlvbiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ3JlYXRlU3RvcmUoKSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuaXNCdXR0b25Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3Qgc3BvY1VzZXIgPSBhd2FpdCB0aGlzLmdldFNwb2NVc2VyRGV0YWlscyhcclxuICAgICAgICB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5zdG9yZU5hbWUudHJpbSgpLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCFzcG9jVXNlcikgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZFN0b3JlID0gXCJcIjtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwiZmxvb3JcIik/LnZhbHVlID8/IDE7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUZsb29ycyA9IFtdO1xyXG4gICAgICB0aGlzLmlzTGF5b3V0RXhpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMgPSB0aGlzLmJ1aWxkUGVuZGluZ1N0b3JlRGV0YWlscyhzcG9jVXNlcik7XHJcbiAgICAgIHRoaXMuaXNDcmVhdGVTdG9yZU1vZGUgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byBwcmVwYXJlIHN0b3JlIGRldGFpbHNcIik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzQnV0dG9uTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBlbmRpbmdTdG9yZURldGFpbHMoc3BvY1VzZXI6IGFueSkge1xyXG4gICAgY29uc3QgY3JlYXRlU3RvcmVQYXlsb2FkID0ge1xyXG4gICAgICBzdG9yZU5hbWU6IHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlLnN0b3JlTmFtZT8udG9VcHBlckNhc2UoKT8udHJpbSgpLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgYnVzaW5lc3NUeXBlOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5idXNpbmVzc1R5cGUsXHJcbiAgICAgIGNsdXN0ZXI6IFtdLFxyXG4gICAgICBzdG9yZVR5cGU6IHtcclxuICAgICAgICB0eXBlOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5zdG9yZVR5cGUsXHJcbiAgICAgICAgbmFtZTogdGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWU/LnN0b3JlVHlwZU5hbWU/LnRyaW0oKSxcclxuICAgICAgfSxcclxuICAgICAgc3RvcmVQcm9maWxlOiB7XHJcbiAgICAgICAgc3RvcmVDb2RlOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybT8udmFsdWU/LnN0b3JlQ29kZSxcclxuICAgICAgICBhZGRyZXNzOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZT8uYWRkcmVzcyxcclxuICAgICAgICBjb3VudHJ5OiB0aGlzLnRvVGl0bGVDYXNlTG9jYXRpb24odGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWU/LmNvdW50cnkpLFxyXG4gICAgICAgIHN0YXRlOiB0aGlzLnRvVGl0bGVDYXNlTG9jYXRpb24odGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWU/LnN0YXRlKSxcclxuICAgICAgICBjaXR5OiB0aGlzLnRvVGl0bGVDYXNlTG9jYXRpb24odGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWU/LmNpdHkpLFxyXG4gICAgICAgIHBpbmNvZGU6IHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlPy5waW5jb2RlLFxyXG4gICAgICAgIGxhdGl0dWRlOiB0aGlzLmNyZWF0ZVN0b3JlRm9ybS52YWx1ZS5sYXRpdHVkZT8udG9TdHJpbmcoKS50cmltKClcclxuICAgICAgICAgID8gdGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWUubGF0aXR1ZGVcclxuICAgICAgICAgIDogMCxcclxuICAgICAgICBsb25naXR1ZGU6IHRoaXMuY3JlYXRlU3RvcmVGb3JtLnZhbHVlLmxvbmdpdHVkZT8udG9TdHJpbmcoKS50cmltKClcclxuICAgICAgICAgID8gdGhpcy5jcmVhdGVTdG9yZUZvcm0udmFsdWUubG9uZ2l0dWRlXHJcbiAgICAgICAgICA6IDAsXHJcbiAgICAgICAgdGltZVpvbmU6IFwiQXNpYS9Lb2xrYXRhXCIsXHJcbiAgICAgICAgb3BlbjogXCIxMDowMDowMFwiLFxyXG4gICAgICAgIGNsb3NlOiBcIjIwOjAwOjAwXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIGVkZ2U6IHtcclxuICAgICAgICBzZXJ2ZXJUeXBlOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAgc3BvY0RldGFpbHM6IFtzcG9jVXNlcl0sXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLmNyZWF0ZVN0b3JlUGF5bG9hZCxcclxuICAgICAgY3JlYXRlU3RvcmVQYXlsb2FkLFxyXG4gICAgICBmbG9vcjogdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwiZmxvb3JcIik/LnZhbHVlID8/IDEsXHJcbiAgICAgIHN0b3JlSWQ6IG51bGwsXHJcbiAgICAgIGluZnJhVGlja2V0Q3JlYXRlZDogZmFsc2UsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b1RpdGxlQ2FzZUxvY2F0aW9uKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiBcIlwiO1xyXG5cclxuICAgIHJldHVybiB2YWx1ZVxyXG4gICAgICAudHJpbSgpXHJcbiAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIC5yZXBsYWNlKFxyXG4gICAgICAgIC8oXnxbXFxzJy1dKShbYS16XSkvZyxcclxuICAgICAgICAoXywgc2VwYXJhdG9yOiBzdHJpbmcsIGNoYXJhY3Rlcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gYCR7c2VwYXJhdG9yfSR7Y2hhcmFjdGVyLnRvVXBwZXJDYXNlKCl9YDtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVTdG9yZUZvclBsYW5vQ3JlYXRpb24oKSB7XHJcbiAgICBjb25zdCBmbG9vck51bWJlciA9IHRoaXMuc2VsZWN0ZWRGbG9vciB8fCB0aGlzLm5ld1N0b3JlRGV0YWlscz8uZmxvb3I7XHJcblxyXG4gICAgaWYgKCF0aGlzLm5ld1N0b3JlRGV0YWlscykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRTdG9yZSB8fCAhZmxvb3JOdW1iZXIpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3Qgc3RvcmVOYW1lID0gdGhpcy5zdG9yZUxpc3QuZmluZChcclxuICAgICAgICAocykgPT4gcy52YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZFN0b3JlLFxyXG4gICAgICApPy5sYWJlbDtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc3RvcmVJZDogdGhpcy5zZWxlY3RlZFN0b3JlLFxyXG4gICAgICAgIHN0b3JlTmFtZTogc3RvcmVOYW1lID8/IHRoaXMuc2VsZWN0ZWRTdG9yZSxcclxuICAgICAgICBmbG9vck51bWJlcixcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMubmV3U3RvcmVEZXRhaWxzLnN0b3JlSWQpIHtcclxuICAgICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG4gICAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZVN0b3JlKFxyXG4gICAgICAgICAgICB0aGlzLm5ld1N0b3JlRGV0YWlscy5jcmVhdGVTdG9yZVBheWxvYWQsXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld1N0b3JlID0gcmVzPy5kYXRhPy5zdG9yZTtcclxuXHJcbiAgICAgICAgaWYgKCFuZXdTdG9yZT8uc3RvcmVJZCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBjcmVhdGUgc3RvcmVcIik7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubmV3U3RvcmVEZXRhaWxzLnN0b3JlSWQgPSBuZXdTdG9yZS5zdG9yZUlkO1xyXG4gICAgICAgIHRoaXMubmV3U3RvcmVEZXRhaWxzLnN0b3JlTmFtZSA9IG5ld1N0b3JlLnN0b3JlTmFtZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmUgPSBuZXdTdG9yZS5zdG9yZUlkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IGZsb29yTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUZsb29ycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaXNMYXlvdXRFeGlzdCA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMubmV3U3RvcmVEZXRhaWxzLmluZnJhVGlja2V0Q3JlYXRlZCkge1xyXG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG4gICAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZUluZnJhVGlja2V0KHtcclxuICAgICAgICAgICAgc3RvcmVJZDogdGhpcy5uZXdTdG9yZURldGFpbHMuc3RvcmVJZCxcclxuICAgICAgICAgICAgRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSxcclxuICAgICAgICAgICAgaXNzdWVUeXBlOiBcImluc3RhbGxhdGlvblwiLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm5ld1N0b3JlRGV0YWlscy5pbmZyYVRpY2tldENyZWF0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdG9yZUNvbnRleHQgPSB7XHJcbiAgICAgICAgc3RvcmVJZDogdGhpcy5uZXdTdG9yZURldGFpbHMuc3RvcmVJZCxcclxuICAgICAgICBzdG9yZU5hbWU6IHRoaXMubmV3U3RvcmVEZXRhaWxzLnN0b3JlTmFtZSxcclxuICAgICAgICBmbG9vck51bWJlcixcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZUlkICYmXHJcbiAgICAgICAgdGhpcy5uZXdTdG9yZURldGFpbHMuaW5mcmFUaWNrZXRDcmVhdGVkXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICF0aGlzLnN0b3JlTGlzdC5zb21lKFxyXG4gICAgICAgICAgICAoc3RvcmUpID0+IHN0b3JlLnZhbHVlID09PSB0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZUlkLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZU5hbWUsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLm5ld1N0b3JlRGV0YWlscy5zdG9yZUlkLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gc3RvcmVDb250ZXh0O1xyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkBAIH4gZXJyb3I6XCIsIGVycm9yKTtcclxuXHJcbiAgICAgIGlmIChlcnJvcj8uZXJyb3I/LmVycm9yPy5lcnJvciA9PT0gXCJUaGUgc3RvcmUgbmFtZSBhbHJlYWR5IGV4aXN0c1wiKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcclxuICAgICAgICAgIFwiVGhpcyBzdG9yZSBuYW1lIGFscmVhZHkgZXhpc3RzIGluICdEZWFjdGl2YXRlJyBzdGF0ZVwiLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byBjcmVhdGUgc3RvcmVcIik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRTcG9jVXNlckRldGFpbHMoc3RvcmVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNhZmVTdG9yZU5hbWUgPSBzdG9yZU5hbWVcclxuICAgICAgPy50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIC50cmltKClcclxuICAgICAgLnJlcGxhY2UoL1xccysvZywgXCJfXCIpXHJcbiAgICAgIC5yZXBsYWNlKC9bXmEtejAtOS5fLV0vZywgXCJcIik7XHJcblxyXG4gICAgY29uc3QgdXNlckVtYWlsID0gdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwiZW1haWxcIik/LnZhbHVlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgZW1haWwgPSB1c2VyRW1haWwgfHwgYCR7c2FmZVN0b3JlTmFtZX1fcGxhbm9ncmFtQGxlbnNrYXJ0LmNvbWA7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLnNwb2NFbWFpbENoZWNrKHtcclxuICAgICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgICAgZW1haWw6IFtlbWFpbF0sXHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogdXNlckVtYWlsXHJcbiAgICAgICAgICAgID8gZ2V0TmFtZUZyb21FbWFpbChlbWFpbClcclxuICAgICAgICAgICAgOiBzdG9yZU5hbWUudG9VcHBlckNhc2UoKS50cmltKCksXHJcbiAgICAgICAgICBlbWFpbDogZW1haWwsXHJcbiAgICAgICAgICBjb250YWN0OiBcIjk5OTk5OTk5OTlcIixcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkBAIH4gZ2V0U3BvY1VzZXJEZXRhaWxzIFtFUlJdOiBcIiwgZXJyb3IpO1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFxyXG4gICAgICAgIGVycm9yPy5lcnJvcj8uZXJyb3IgPz8gXCJVbmFibGUgdG8gY3JlYXRlIFVzZXJcIixcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGROZXdTdG9yZSgpIHtcclxuICAgIGlmICh0aGlzLmlzTW9kYWxCdXN5KSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc3RvcmVOYW1lOiBbXHJcbiAgICAgICAgXCJcIixcclxuICAgICAgICBbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgdGhpcy5zdG9yZU5hbWVWYWxpZGF0b3IoKSxcclxuICAgICAgICAgIHRoaXMuc3RvcmVOYW1lRXhpc3RzVmFsaWRhdG9yKCksXHJcbiAgICAgICAgICBnZW5lcmFsVmFsaWRhdG9yKCksXHJcbiAgICAgICAgXSxcclxuICAgICAgXSxcclxuICAgICAgZW1haWw6IFtcIlwiLCBWYWxpZGF0b3JzLmVtYWlsXSxcclxuICAgICAgZmxvb3I6IFsxXSxcclxuICAgICAgYnVzaW5lc3NUeXBlOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHN0b3JlVHlwZTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBzdG9yZVR5cGVOYW1lOiBbXCJcIiwgZ2VuZXJhbFZhbGlkYXRvcigpXSxcclxuICAgICAgYWRkcmVzczogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBjb3VudHJ5OiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHN0YXRlOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGNpdHk6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcGluY29kZTogW1xyXG4gICAgICAgIFwiXCIsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIC8vICBpbmRpYW5QaW5jb2RlVmFsaWRhdG9yKClcclxuICAgICAgICBdLFxyXG4gICAgICBdLFxyXG4gICAgICBsYXRpdHVkZTogW1wiXCJdLFxyXG4gICAgICBsb25naXR1ZGU6IFtcIlwiXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaXNDcmVhdGVTdG9yZU1vZGUgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtXHJcbiAgICAgIC5nZXQoXCJzdG9yZVR5cGVcIilcclxuICAgICAgPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSBcIk1hbGwgU3RvcmVcIikge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwic3RvcmVUeXBlTmFtZVwiKT8ucmVzZXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtXHJcbiAgICAgIC5nZXQoXCJzdG9yZU5hbWVcIilcclxuICAgICAgPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCB1cHBlciA9IHZhbHVlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgICBpZiAodmFsdWUgIT09IHVwcGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3RvcmVGb3JtXHJcbiAgICAgICAgICAgICAgLmdldChcInN0b3JlTmFtZVwiKVxyXG4gICAgICAgICAgICAgID8uc2V0VmFsdWUodXBwZXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIGNvbnN0IHVybFRyZWUgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtcIi9tYW5hZ2Uvc3RvcmVzL2FkZC1zaW5nbGUtc3RvcmVcIl0pO1xyXG4gICAgLy8gY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHVybFRyZWUpO1xyXG4gICAgLy8gd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcclxuICB9XHJcblxyXG4gIHN0b3JlTmFtZUV4aXN0c1ZhbGlkYXRvciA9ICgpOiBWYWxpZGF0b3JGbiA9PiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsOyAvLyBhbGxvdyByZXF1aXJlZCB2YWxpZGF0b3IgdG8gaGFuZGxlIGVtcHR5XHJcblxyXG4gICAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICBjb25zdCBzID0gdGhpcy5zdG9yZUxpc3QuZmluZChcclxuICAgICAgICAocykgPT4gcz8ubGFiZWw/LnRyaW0oKT8udG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gdHJpbW1lZCxcclxuICAgICAgKTtcclxuICAgICAgaWYgKHMpIHJldHVybiB7IGV4aXN0czogdHJ1ZSB9O1xyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIHN0b3JlTmFtZVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgICBjb25zdCBzdFBhdHRlcm4gPSAvXlNUXFxkezR9JC87IC8vIFNUMTIzNFxyXG4gICAgICBjb25zdCBsa3N0UGF0dGVybiA9IC9eTEtTVFxcZHs0fSQvOyAvLyBMS1NUMTIzNFxyXG5cclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHN0UGF0dGVybi50ZXN0KHZhbHVlKSB8fCBsa3N0UGF0dGVybi50ZXN0KHZhbHVlKTtcclxuXHJcbiAgICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgaW52YWxpZFN0b3JlTmFtZTogdHJ1ZSB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG9uQWRkcmVzc0NoYW5nZShwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0IHwgYW55KSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSB8fCAhdGhpcy5jcmVhdGVTdG9yZUZvcm0gfHwgIXBsYWNlPy5nZW9tZXRyeSkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjb3VudHJ5ID0gXCJcIixcclxuICAgICAgY2l0eSA9IFwiXCIsXHJcbiAgICAgIHN0YXRlID0gXCJcIixcclxuICAgICAgcGluY29kZSA9IFwiXCI7XHJcblxyXG4gICAgbGV0IGxhdGl0dWRlID0gcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCk7XHJcbiAgICBsZXQgbG9uZ2l0dWRlID0gcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubG5nKCk7XHJcblxyXG4gICAgcGxhY2UuYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJjb3VudHJ5XCIpKSB7XHJcbiAgICAgICAgY291bnRyeSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwibG9jYWxpdHlcIikpIHtcclxuICAgICAgICBjaXR5ID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQudHlwZXMuaW5jbHVkZXMoXCJhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzFcIikpIHtcclxuICAgICAgICBzdGF0ZSA9IGNvbXBvbmVudC5sb25nX25hbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnR5cGVzLmluY2x1ZGVzKFwicG9zdGFsX2NvZGVcIikpIHtcclxuICAgICAgICBwaW5jb2RlID0gY29tcG9uZW50LmxvbmdfbmFtZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwiYWRkcmVzc1wiKT8uc2V0VmFsdWUocGxhY2UuZm9ybWF0dGVkX2FkZHJlc3MpO1xyXG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm1cclxuICAgICAgLmdldChcImNvdW50cnlcIilcclxuICAgICAgPy5zZXRWYWx1ZSh0aGlzLnRvVGl0bGVDYXNlTG9jYXRpb24oY291bnRyeSkpO1xyXG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwiY2l0eVwiKT8uc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMudG9UaXRsZUNhc2VMb2NhdGlvbihjaXR5KSxcclxuICAgICk7XHJcbiAgICB0aGlzLmNyZWF0ZVN0b3JlRm9ybS5nZXQoXCJzdGF0ZVwiKT8uc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMudG9UaXRsZUNhc2VMb2NhdGlvbihzdGF0ZSksXHJcbiAgICApO1xyXG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwicGluY29kZVwiKT8uc2V0VmFsdWUocGluY29kZSk7XHJcbiAgICB0aGlzLmNyZWF0ZVN0b3JlRm9ybS5nZXQoXCJsYXRpdHVkZVwiKT8uc2V0VmFsdWUobGF0aXR1ZGUpO1xyXG4gICAgdGhpcy5jcmVhdGVTdG9yZUZvcm0uZ2V0KFwibG9uZ2l0dWRlXCIpPy5zZXRWYWx1ZShsb25naXR1ZGUpO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5kaXNtaXNzKCk7XHJcbiAgfVxyXG5cclxuICBvbkJhY2soKSB7XHJcbiAgICBpZiAodGhpcy5pc01vZGFsQnVzeSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdGhpcy5pc0NyZWF0ZVN0b3JlTW9kZSAmJiB0aGlzLm5ld1N0b3JlRGV0YWlscykge1xyXG4gICAgICB0aGlzLmlzQ3JlYXRlU3RvcmVNb2RlID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNDcmVhdGVTdG9yZU1vZGUgPSBmYWxzZTtcclxuICAgIHRoaXMubmV3U3RvcmVEZXRhaWxzID0gbnVsbDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLXdyYXBwZXJcIj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNQb3B1cExvYWRpbmdcIiBjbGFzcz1cIm1vZGFsLWxvYWRlci1vdmVybGF5XCI+XHJcbiAgICA8c3ZnIGNsYXNzPVwibW9kYWwtc3Bpbm5lclwiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIj5cclxuICAgICAgPGNpcmNsZSBjbGFzcz1cInBhdGhcIiBjeD1cIjI1XCIgY3k9XCIyNVwiIHI9XCIyMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgPC9zdmc+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxoMyBjbGFzcz1cIm1iLTNcIj5DcmVhdGUgc3RvcmUgbGF5b3V0L3BsYW4gZnJvbSBDQUQ8L2gzPlxyXG4gIEBpZihpc0NyZWF0ZVN0b3JlTW9kZSl7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgIDxwPlN0ZXAgMTogT25ib2FyZCBzdG9yZSB3aXRoIGJhc2ljIGRldGFpbHM8L3A+XHJcbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgbmdiVG9vbHRpcD1cIkEgbmV3IHN0b3JlIHdpbGwgYmUgY3JlYXRlZCB3aGVuIHlvdSBwZXJmb3JtIHRoaXMgYWN0aW9uIChNYW5hZ2UgPiBTdG9yZXMpLlwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTEwLjAwMDMgMTMuMzMzN1YxMC4wMDAzTTEwLjAwMDMgNi42NjY5OUgxMC4wMDg3TTE4LjMzMzcgMTAuMDAwM0MxOC4zMzM3IDE0LjYwMjcgMTQuNjAyNyAxOC4zMzM3IDEwLjAwMDMgMTguMzMzN0M1LjM5Nzk1IDE4LjMzMzcgMS42NjY5OSAxNC42MDI3IDEuNjY2OTkgMTAuMDAwM0MxLjY2Njk5IDUuMzk3OTUgNS4zOTc5NSAxLjY2Njk5IDEwLjAwMDMgMS42NjY5OUMxNC42MDI3IDEuNjY2OTkgMTguMzMzNyA1LjM5Nzk1IDE4LjMzMzcgMTAuMDAwM1pcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcblxyXG4gIEBpZihpc0NyZWF0ZVN0b3JlTW9kZSl7XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNyZWF0ZVN0b3JlRm9ybVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItNFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlTmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+U3RvcmUgbmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RvcmVOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVOYW1lXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHN0b3JlIG5hbWUuIGVnOiBMS1NUMTIzNFwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIC8+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy50b3VjaGVkICYmIGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy5pbnZhbGlkXCI+XHJcblxyXG4gICAgICAgICAgICBAaWYoY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/Lmhhc0Vycm9yKCdleGlzdHMnKSl7XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgIFN0b3JlIGFscmVhZHkgZXhpc3RzLlxyXG4gICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgU3RvcmUgbmFtZSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdG9yZU5hbWUnKT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKVwiPlxyXG4gICAgICAgICAgICAgICAgU3RvcmUgbmFtZSBjYW5ub3QgYmUgb25seSB3aGl0ZXNwYWNlLlxyXG4gICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlTmFtZScpPy5oYXNFcnJvcigndHJpbVNwYWNlcycpXCI+XHJcbiAgICAgICAgICAgICAgICBObyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWxsb3dlZC5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG5cclxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RvcmVOYW1lJyk/Lmhhc0Vycm9yKCdpbnZhbGlkU3RvcmVOYW1lJykgXCI+XHJcbiAgICAgICAgICAgICAgICBTdG9yZSBuYW1lIG11c3QgYmUgU1QxMjM0IG9yIExLU1QxMjM0IGZvcm1hdC5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJmbG9vckxpc3RcIiBbbGFiZWxdPVwiJ1NlbGVjdCBmbG9vcidcIlxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmbG9vclwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPlxyXG4gICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItNFwiPlxyXG4gICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cImJ1c2luZXNzVHlwZUxpc3RcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1NlbGVjdCBidXNpbmVzcyB0eXBlJ1wiIGZvcm1Db250cm9sTmFtZT1cImJ1c2luZXNzVHlwZVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPlxyXG4gICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItNFwiPlxyXG4gICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInN0b3JlVHlwZUxpc3RcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1NlbGVjdCBzdG9yZSB0eXBlJ1wiIGZvcm1Db250cm9sTmFtZT1cInN0b3JlVHlwZVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPlxyXG4gICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBAaWYoY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlJyk/LnZhbHVlID09ICdNYWxsIFN0b3JlJyl7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0b3JlVHlwZU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMVwiPkVudGVyIE1hbGwgbmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdG9yZVR5cGVOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVUeXBlTmFtZVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBNYWxsIG5hbWVcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIiAvPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdG9yZVR5cGVOYW1lJyk/LnRvdWNoZWQgJiYgY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlTmFtZScpPy5pbnZhbGlkXCI+XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0b3JlVHlwZU5hbWUnKT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKVwiPlxyXG4gICAgICAgICAgICAgICAgTWFsbCBuYW1lIGNhbm5vdCBiZSBvbmx5IHdoaXRlc3BhY2UuXHJcbiAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnc3RvcmVUeXBlTmFtZScpPy5oYXNFcnJvcigndHJpbVNwYWNlcycpXCI+XHJcbiAgICAgICAgICAgICAgICBObyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UgYWxsb3dlZC5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi00XCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+QWRkcmVzczwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc1wiIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbmQgZW50ZXIgYWRkcmVzc1wiIG5neC1ncC1hdXRvY29tcGxldGUgKG9uQWRkcmVzc0NoYW5nZSk9XCJvbkFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy50b3VjaGVkICYmIGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2FkZHJlc3MnKT8uaW52YWxpZFwiPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnYWRkcmVzcycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTFcIj5Db3VudHJ5PC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb3VudHJ5XCIgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ291bnRyeVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnY291bnRyeScpPy50b3VjaGVkICYmIGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ2NvdW50cnknKT8uaW52YWxpZFwiPlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnY291bnRyeScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgIENvdW50cnkgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdGF0ZVwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+U3RhdGU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0YXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdGVcIiBwbGFjZWhvbGRlcj1cIkVudGVyIFN0YXRlXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCIgLz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdzdGF0ZScpPy50b3VjaGVkICYmIGNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/LmludmFsaWRcIj5cclxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3N0YXRlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgU3RhdGUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaXR5XCIgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTFcIj5DaXR5IC8gVG93bjwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY2l0eVwiIGZvcm1Db250cm9sTmFtZT1cImNpdHlcIiBwbGFjZWhvbGRlcj1cIkVudGVyIENpdHkgLyBUb3duXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCIgLz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/LnRvdWNoZWQgJiYgY3JlYXRlU3RvcmVGb3JtLmdldCgnY2l0eScpPy5pbnZhbGlkXCI+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdjaXR5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgQ2l0eSAvIFRvd24gaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaW5jb2RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTFcIj5QaW4gLyBaaXAgQ29kZTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGluY29kZVwiIGZvcm1Db250cm9sTmFtZT1cInBpbmNvZGVcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIFBpbiAvIFppcCBDb2RlXCIgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCIgLz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/LnRvdWNoZWQgJiYgY3JlYXRlU3RvcmVGb3JtLmdldCgncGluY29kZScpPy5pbnZhbGlkXCI+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgUGluIC8gWmlwIENvZGUgaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNyZWF0ZVN0b3JlRm9ybS5nZXQoJ3BpbmNvZGUnKT8uaGFzRXJyb3IoJ3doaXRlc3BhY2UnKSB8fCBjcmVhdGVTdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/Lmhhc0Vycm9yKCd0cmltU3BhY2VzJylcIj5cclxuICAgICAgICAgICAgICBQaW5jb2RlIGNhbm5vdCBjb250YWluIHdoaXRlc3BhY2UuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdwaW5jb2RlJyk/Lmhhc0Vycm9yKCdpbnZhbGlkUGluY29kZScpXCI+XHJcbiAgICAgICAgICAgICAgRW50ZXIgYSB2YWxpZCA2LWRpZ2l0IHBpbmNvZGVcclxuICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTRcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xXCI+U3BvYyB1c2VyIGVtYWlsIChvcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImVtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHNwb2MgdXNlciBlbWFpbFwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIC8+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlU3RvcmVGb3JtLmdldCgnZW1haWwnKT8udG91Y2hlZCAmJiBjcmVhdGVTdG9yZUZvcm0uZ2V0KCdlbWFpbCcpPy5pbnZhbGlkXCI+XHJcbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJjcmVhdGVTdG9yZUZvcm0uZ2V0KCdlbWFpbCcpPy5oYXNFcnJvcignZW1haWwnKVwiPlxyXG4gICAgICAgICAgICAgIEVtYWlsIGlzIGludmFsaWQuXHJcbiAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAaWYobmV3U3RvcmVEZXRhaWxzKXtcclxuICAgICAgPHAgY2xhc3M9XCJtYi02XCI+U3RlcCAyOiBBZGQgQ0FEIGZpbGU8L3A+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTZcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIm1iLTJcIj5TdG9yZSBuYW1lPC9wPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwibmV3LXN0b3JlLXR4dFwiPnt7bmV3U3RvcmVEZXRhaWxzPy5zdG9yZU5hbWV9fTwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0yXCI+Rmxvb3I8L3A+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJuZXctc3RvcmUtdHh0XCI+Rmxvb3Ige3t0aGlzLnNlbGVjdGVkRmxvb3J9fTwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0yXCI+QnVzaW5lc3MgdHlwZTwvcD5cclxuICAgICAgICAgIDxoMyBjbGFzcz1cIm5ldy1zdG9yZS10eHRcIj57e25ld1N0b3JlRGV0YWlscz8uYnVzaW5lc3NUeXBlIHwgdXBwZXJjYXNlfX08L2gzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwibWItMlwiPlN0b3JlIHR5cGU8L3A+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJuZXctc3RvcmUtdHh0XCI+e3tuZXdTdG9yZURldGFpbHM/LnN0b3JlVHlwZT8udHlwZSB8IHRpdGxlY2FzZX19PC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9QGVsc2Uge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IFtzZWFyY2hdPVwidHJ1ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdG9yZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICBbZGF0YV09XCJzdG9yZUxpc3RcIiBbbGFiZWxdPVwiJ1NlbGVjdCBzdG9yZSdcIiBbYWN0aW9uXT1cInRydWVcIiAoYWN0aW9uQ2xpY2spPVwiYWRkTmV3U3RvcmUoKVwiXHJcbiAgICAgICAgICAgIFthY3Rpb25MYWJlbF09XCInQ3JlYXRlIG5ldyBzdG9yZSdcIiAobmdNb2RlbENoYW5nZSk9XCJvblN0b3JlQ2hhbmdlKClcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5cclxuICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRGbG9vclwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJmbG9vckxpc3RcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1NlbGVjdCBmbG9vcidcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZsb29yQ2hhbmdlKClcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5cclxuICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWV4aXN0LXdyYXBwZXJcIiBbY2xhc3Muc2hvd109XCJpc0xheW91dEV4aXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1leGlzdC13YXJuaW5nIG1iLTRcIj5cclxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNOS45OTk2NSA2LjY2NjY3VjEwTTkuOTk5NjUgMTMuMzMzM0gxMC4wMDhNOC41NzQ2NSAyLjM4MzM0TDEuNTE2MzIgMTQuMTY2N0MxLjM3MDc5IDE0LjQxODcgMS4yOTM3OSAxNC43MDQ0IDEuMjkyOTggMTQuOTk1NEMxLjI5MjE2IDE1LjI4NjUgMS4zNjc1NiAxNS41NzI2IDEuNTExNjcgMTUuODI1NEMxLjY1NTc5IDE2LjA3ODMgMS44NjM1OSAxNi4yODkgMi4xMTQ0MSAxNi40MzY2QzIuMzY1MjMgMTYuNTg0MSAyLjY1MDMyIDE2LjY2MzUgMi45NDEzMiAxNi42NjY3SDE3LjA1OEMxNy4zNDkgMTYuNjYzNSAxNy42MzQxIDE2LjU4NDEgMTcuODg0OSAxNi40MzY2QzE4LjEzNTcgMTYuMjg5IDE4LjM0MzUgMTYuMDc4MyAxOC40ODc2IDE1LjgyNTRDMTguNjMxNyAxNS41NzI2IDE4LjcwNzEgMTUuMjg2NSAxOC43MDYzIDE0Ljk5NTRDMTguNzA1NSAxNC43MDQ0IDE4LjYyODUgMTQuNDE4NyAxOC40ODMgMTQuMTY2N0wxMS40MjQ3IDIuMzgzMzRDMTEuMjc2MSAyLjEzODQzIDExLjA2NjkgMS45MzU5NCAxMC44MTczIDEuNzk1NDFDMTAuNTY3NyAxLjY1NDg4IDEwLjI4NjEgMS41ODEwNSA5Ljk5OTY1IDEuNTgxMDVDOS43MTMyMSAxLjU4MTA1IDkuNDMxNTkgMS42NTQ4OCA5LjE4MTk5IDEuNzk1NDFDOC45MzIzOCAxLjkzNTk0IDguNzIzMjEgMi4xMzg0MyA4LjU3NDY1IDIuMzgzMzRaXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICBUaGlzIHN0b3JlIGFscmVhZHkgaGFzIGEgRmxvb3Ige3tzZWxlY3RlZEZsb29yfX0gcGxhbm9ncmFtLiBPdmVyd3JpdGUgaXQ/IFRoaXMgY2Fu4oCZdCBiZSB1bmRvbmUuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgQGlmIChpc0NhZFByb2Nlc3NpbmcpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FkLWxvYWRlci1wYW5lbFwiPlxyXG4gICAgICAgICAgPCEtLVxyXG4gICAgICAgICAgPGRpdiAjY2FkUHJvY2Vzc2luZ0xvdHRpZSBjbGFzcz1cImNhZC1sb3R0aWVcIj48L2Rpdj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiY2FkLWxvYWRlci10ZXh0IG1iLTBcIj5DcmVhdGluZyBwbGFub2dyYW0gZnJvbSBDQUQuLi48L3A+XHJcbiAgICAgICAgICAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWQtbG9hZGVyLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNhZC1iYXNpYy1zcGlubmVyXCIgdmlld0JveD1cIjAgMCA1MCA1MFwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJwYXRoXCIgY3g9XCIyNVwiIGN5PVwiMjVcIiByPVwiMjBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjRcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FkLWxvYWRlci10ZXh0IG1iLTBcIj5cclxuICAgICAgICAgICAgICBCdWlsZGluZyBsYXlvdXRcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctZG90c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwic2VsZWN0ZWRGaWxlID8gJ2NvbC0xMicgOidjb2wtNidcIj5cclxuICAgICAgICAgICAgPGZpbGUtdXBsb2FkIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiIChmaWxlQ2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCI+PC9maWxlLXVwbG9hZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJzZWxlY3RlZEZpbGUgPyAnZC1ub25lJyA6J2NvbC02J1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgdmlld0JveD1cIjAgMCA4MCA4MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI0MFwiIGN5PVwiNDBcIiByPVwiNDBcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNNTUuNTAwOCAzNC4zNzVINTEuMzc1Mkw0Ny42MjU4IDM4LjEyNTNINDIuMzc1MlYzNC4zNzVIMzEuMTI1MlY0OS4zNzUzSDI3LjM3NThDMjYuODc4NSA0OS4zNjc2IDI2LjM4NDYgNDkuNDU4OSAyNS45MjI5IDQ5LjY0MzlDMjUuNDYxMiA0OS44Mjg5IDI1LjA0MDkgNTAuMTAzOSAyNC42ODY0IDUwLjQ1MjhDMjQuMzMyIDUwLjgwMTggMjQuMDUwNiA1MS4yMTc4IDIzLjg1ODQgNTEuNjc2NkMyMy42NjYzIDUyLjEzNTMgMjMuNTY3NCA1Mi42Mjc4IDIzLjU2NzQgNTMuMTI1MUMyMy41Njc0IDUzLjYyMjUgMjMuNjY2MyA1NC4xMTQ5IDIzLjg1ODQgNTQuNTczN0MyNC4wNTA2IDU1LjAzMjUgMjQuMzMyIDU1LjQ0ODUgMjQuNjg2NCA1NS43OTc1QzI1LjA0MDkgNTYuMTQ2NCAyNS40NjEyIDU2LjQyMTQgMjUuOTIyOSA1Ni42MDY0QzI2LjM4NDYgNTYuNzkxNCAyNi44Nzg1IDU2Ljg4MjcgMjcuMzc1OCA1Ni44NzVINTUuNTAwOEM1NS45OTggNTYuODc1IDU2LjQ3NDggNTYuNjc3NSA1Ni44MjY0IDU2LjMyNTlDNTcuMTc4IDU1Ljk3NDMgNTcuMzc1NSA1NS40OTc1IDU3LjM3NTUgNTUuMDAwM1YzNi4yNDk3QzU3LjM3NTUgMzUuNzUyNSA1Ny4xNzggMzUuMjc1NyA1Ni44MjY0IDM0LjkyNDFDNTYuNDc0OCAzNC41NzI1IDU1Ljk5OCAzNC4zNzUgNTUuNTAwOCAzNC4zNzVaTTMxLjEyNTIgMjguNzVWNDkuMzc1M0gyNy4zNzU4QzI2LjM4MTMgNDkuMzc1MyAyNS40Mjc1IDQ5Ljc3MDMgMjQuNzI0MiA1MC40NzM0QzI0LjAyMDkgNTEuMTc2NSAyMy42MjU3IDUyLjEzMDIgMjMuNjI1NSA1My4xMjQ3VjMyLjUwMDNDMjMuNjI1NSAzMS41MDU3IDI0LjAyMDYgMzAuNTUxOCAyNC43MjM5IDI5Ljg0ODRDMjUuNDI3MiAyOS4xNDUxIDI2LjM4MTEgMjguNzUgMjcuMzc1OCAyOC43NUgzMS4xMjUyWlwiXHJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMzEuMTI1MiA0OS4zNzUzVjM0LjM3NUg0Mi4zNzUyVjM4LjEyNTNINDcuNjI1OEw1MS4zNzUyIDM0LjM3NUg1NS41MDA4QzU1Ljk5OCAzNC4zNzUgNTYuNDc0OCAzNC41NzI1IDU2LjgyNjQgMzQuOTI0MUM1Ny4xNzggMzUuMjc1NyA1Ny4zNzU1IDM1Ljc1MjUgNTcuMzc1NSAzNi4yNDk3VjU1LjAwMDNDNTcuMzc1NSA1NS40OTc1IDU3LjE3OCA1NS45NzQzIDU2LjgyNjQgNTYuMzI1OUM1Ni40NzQ4IDU2LjY3NzUgNTUuOTk4IDU2Ljg3NSA1NS41MDA4IDU2Ljg3NUgyNy4zNzU4QzI2Ljg3ODUgNTYuODgyNyAyNi4zODQ2IDU2Ljc5MTQgMjUuOTIyOSA1Ni42MDY0QzI1LjQ2MTIgNTYuNDIxNCAyNS4wNDA5IDU2LjE0NjQgMjQuNjg2NCA1NS43OTc1QzI0LjMzMiA1NS40NDg1IDI0LjA1MDYgNTUuMDMyNSAyMy44NTg0IDU0LjU3MzdDMjMuNjY2MyA1NC4xMTQ5IDIzLjU2NzQgNTMuNjIyNSAyMy41Njc0IDUzLjEyNTFDMjMuNTY3NCA1Mi42Mjc4IDIzLjY2NjMgNTIuMTM1MyAyMy44NTg0IDUxLjY3NjZDMjQuMDUwNiA1MS4yMTc4IDI0LjMzMiA1MC44MDE4IDI0LjY4NjQgNTAuNDUyOEMyNS4wNDA5IDUwLjEwMzkgMjUuNDYxMiA0OS44Mjg5IDI1LjkyMjkgNDkuNjQzOUMyNi4zODQ2IDQ5LjQ1ODkgMjYuODc4NSA0OS4zNjc2IDI3LjM3NTggNDkuMzc1M00zMS4xMjUyIDQ5LjM3NTNIMjcuMzc1OE0zMS4xMjUyIDQ5LjM3NTNWMjguNzVIMjcuMzc1OEMyNi4zODExIDI4Ljc1IDI1LjQyNzIgMjkuMTQ1MSAyNC43MjM5IDI5Ljg0ODRDMjQuMDIwNiAzMC41NTE4IDIzLjYyNTUgMzEuNTA1NyAyMy42MjU1IDMyLjUwMDNWNTMuMTI0N0MyMy42MjU3IDUyLjEzMDIgMjQuMDIwOSA1MS4xNzY1IDI0LjcyNDIgNTAuNDczNEMyNS40Mjc1IDQ5Ljc3MDMgMjYuMzgxMyA0OS4zNzUzIDI3LjM3NTggNDkuMzc1M1wiXHJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMC44NDM3NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNNTYuODMxNyAyNi4yOTNMNTQuMjA2NCAyMy42Njg2QzUzLjg1NiAyMy4zMjUyIDUzLjM4NDkgMjMuMTMyOCA1Mi44OTQyIDIzLjEzMjhDNTIuNDAzNSAyMy4xMzI4IDUxLjkzMjQgMjMuMzI1MiA1MS41ODIgMjMuNjY4Nkw0Mi4zNzUgMzIuODc1NlYzOC4xMjUzSDQ3LjYyNTZMNTYuODMxNyAyOC45MTgzQzU3LjE3NTEgMjguNTY3OSA1Ny4zNjc1IDI4LjA5NjggNTcuMzY3NSAyNy42MDYxQzU3LjM2NzUgMjcuMTE1NSA1Ny4xNzUxIDI2LjY0MzQgNTYuODMxNyAyNi4yOTNaXCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMzNCNUZGXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiaXNNYW51YWxcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtM1wiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCIgaWQ9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTW9kYWxCdXN5XCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1hbnVhbFwiPkNyZWF0ZSBtYW51YWxseTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxyXG4gICAgQGlmKGlzQ3JlYXRlU3RvcmVNb2RlKXtcclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgbWUtYXV0b1wiIChjbGljayk9XCJvbkJhY2soKVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPkJhY2s8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBcIiBbZGlzYWJsZWRdPVwiY3JlYXRlU3RvcmVGb3JtLmludmFsaWQgfHwgaXNNb2RhbEJ1c3lcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNyZWF0ZVN0b3JlKClcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc0J1dHRvbkxvYWRpbmdcIj5cclxuICAgICAgICAgIE5leHRcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cImlzQnV0dG9uTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lclwiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIj5cclxuICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJwYXRoXCIgY3g9XCIyNVwiIGN5PVwiMjVcIiByPVwiMjBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjRcIj48L2NpcmNsZT5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9QGVsc2Uge1xyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwibmV3U3RvcmVEZXRhaWxzXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIG1lLWF1dG9cIiAoY2xpY2spPVwib25CYWNrKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPkJhY2s8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFuZXdTdG9yZURldGFpbHNcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtYXV0b1wiIChjbGljayk9XCJhZGROZXdTdG9yZSgpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNNi42NjgyOSAwLjgzNDk2MVYxMi41MDE2TTAuODM0OTYxIDYuNjY4MjlIMTIuNTAxNlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgQ3JlYXRlIG5ldyBzdG9yZVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBcIiBbZGlzYWJsZWRdPVwiIWlzVmFsaWRUb0NyZWF0ZVBsYW5vIHx8IGlzTW9kYWxCdXN5XCJcclxuICAgICAgICAoY2xpY2spPVwib25DcmVhdGVMYXlvdXRQbGFubygpXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNCdXR0b25Mb2FkaW5nIHx8IGlzQ2FkUHJvY2Vzc2luZ1wiPlxyXG4gICAgICAgICAge3tpc0xheW91dEV4aXN0ID8gICdPdmVyd3JpdGUnIDogJ0NyZWF0ZSd9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cImlzQnV0dG9uTG9hZGluZyAmJiAhaXNDYWRQcm9jZXNzaW5nXCIgY2xhc3M9XCJzcGlubmVyXCIgdmlld0JveD1cIjAgMCA1MCA1MFwiPlxyXG4gICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInBhdGhcIiBjeD1cIjI1XCIgY3k9XCIyNVwiIHI9XCIyMFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|