@esfaenza/core 15.2.182 → 15.2.183
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/components/sidebar/sidebar.component.mjs +3 -3
- package/esm2020/lib/app.component.mjs +2 -2
- package/fesm2015/esfaenza-core-components.mjs +2 -2
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +2 -2
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +2 -2
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +2 -2
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -202,10 +202,10 @@ export class Sidebar {
|
|
|
202
202
|
//#endregion
|
|
203
203
|
//#region Footer
|
|
204
204
|
onChangeTenant() {
|
|
205
|
-
window.location.href = `${myconfig.AuthUrl}
|
|
205
|
+
window.location.href = `${myconfig.AuthUrl}/#/login;client=${myconfig.Client}`;
|
|
206
206
|
}
|
|
207
207
|
onLogout() {
|
|
208
|
-
window.location.href = `${myconfig.AuthUrl}
|
|
208
|
+
window.location.href = `${myconfig.AuthUrl}/#/logout;client=${myconfig.Client}`;
|
|
209
209
|
}
|
|
210
210
|
async getUserProfileData() {
|
|
211
211
|
var identity = this.sr.getJaceIdentity();
|
|
@@ -283,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
283
283
|
type: HostListener,
|
|
284
284
|
args: ["window:resize"]
|
|
285
285
|
}] } });
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQVEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBRSxhQUFhLEVBQVUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxGLFdBQVc7QUFDWCxPQUFPLEVBQStCLElBQUksRUFBRSxpQkFBaUIsRUFBdUMsTUFBTSx1QkFBdUIsQ0FBQztBQUlsSSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsV0FBVztBQUNYLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQWVyRCxNQUFNLE9BQU8sT0FB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QkEwRS9CLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBOZ1pvbmUsIE9wdGlvbmFsLCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJMaW5rIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UsIExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gRXNGYWVuemFcclxuaW1wb3J0IHsgQXBwbGljYXRpb25NZW51LCBFbnZPcHRpb25zLCBNRU5VLCBNRU5VX0xPQ0FMSVpBVElPTiwgU2VhcmNoUmVzdWx0LCBTZWFyY2hSZXN1bHRDb250YWluZXIgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcbmltcG9ydCB7IEFwcFN0YXRlLCBHbG9iYWxTZWFyY2hTZXJ2aWNlLCBNZW51RmlsdGVyaW5nU2VydmljZSwgVG9rZW5TZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgU2xpbVNjcm9sbCB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kaXJlY3RpdmVzXCI7XHJcblxyXG4vLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiwgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2lkZUJhckxvYyB9IGZyb20gXCIuL3NpZGViYXIuY29tcG9uZW50LmxvY1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGpRdWVyeTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwic2lkZWJhclwiLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3NpZGViYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3NpZGViYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBTaWRlQmFyTG9jIH1dLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBTbGltU2Nyb2xsLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluaywgRm9ybXNNb2R1bGUsIEVzVGFibGVNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGViYXIge1xyXG4gICAgcHVibGljIG1lbnVJdGVtczogQXJyYXk8YW55PjtcclxuICAgIHB1YmxpYyBtZW51SGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNNZW51U2hvdWxkQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIHNob3dIb3ZlckVsZW06IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgaG92ZXJFbGVtSGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaG92ZXJFbGVtVG9wOiBudW1iZXI7XHJcblxyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uVmVyc2lvbiA9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbjtcclxuICAgIHB1YmxpYyBhcHBsaWNhdGlvbk5hbWUgPSBteWNvbmZpZy5BcHBEYXRhLk1vZHVsZURlc2NyaXB0aW9uO1xyXG4gICAgcHVibGljIHVzZXIgPSBcIlwiO1xyXG4gICAgcHVibGljIHRlbmFudCA9IFwiXCI7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcInNpZGViYXJcIiwgeyBzdGF0aWM6IHRydWUgfSkgc2lkZWJhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9MT0NBTElaQVRJT04pIGxjTWVudTogVHlwZTxMb2NhbGl6YXRpb25TZXJ2aWNlPiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBwdWJsaWMgX3N0YXRlOiBBcHBTdGF0ZSwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgdXRpRXh0czogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYWFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQEluamVjdChNRU5VKSBwcml2YXRlIG1lbnVJdGVtc1JhdzogQXBwbGljYXRpb25NZW51W10sXHJcbiAgICAgICAgcHJpdmF0ZSBtZW51RmlsdGVyaW5nU2VydmljZTogTWVudUZpbHRlcmluZ1NlcnZpY2UsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwdWJsaWMgZ2xvYmFsU2VhcmNoU2VydmljZTogR2xvYmFsU2VhcmNoU2VydmljZSwgcHVibGljIHByb2ZpbGU6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsIHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgdGhpcy5sYyA9IHRoaXMubGMuZ2VuZXJhdGVGcm9tVHlwZShsY01lbnUpO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJtZW51LmlzQ29sbGFwc2VkXCIsIChpc0NvbGxhcHNlZCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwbGljYXRpb24uRGVwbG95QXZhaWxhYmxlXCIsIChhdmFpbGFibGU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSlcclxuICAgICAgICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSAod2luZG93LmlubmVyV2lkdGggPiAwKSA/IHdpbmRvdy5pbm5lcldpZHRoIDogc2NyZWVuLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDc2OClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRVc2VyUHJvZmlsZURhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgbGV0IHRtcE1lbnVJdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1lbnVGaWx0ZXJpbmdTZXJ2aWNlLmZpbHRlcih0bXBNZW51SXRlbXMpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZE1lbnVDb2xsYXBzZSgpKVxyXG4gICAgICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNpZGViYXJIZWlnaHQoKTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRTaWRlYmFyV2lkdGgodGhpcy5zaWRlYmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWVudUl0ZW1zKCk6IEFwcGxpY2F0aW9uTWVudVtdIHtcclxuICAgICAgICBsZXQgbWVudXMgPSB0aGlzLnV0aUV4dHMuZGVlcENsb25lKHRoaXMubWVudUl0ZW1zUmF3KTtcclxuXHJcbiAgICAgICAgLy8gR2lybyAxIGFzc2Vnbm8gaWwgbGl2ZWxsbyBhaSByb290XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW51cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdCA9IG1lbnVzW2ldIGFzIGFueTtcclxuICAgICAgICAgICAgdC5sZXZlbCA9IDE7XHJcbiAgICAgICAgICAgIHQucGFkZGluZ19sZWZ0ID0gMTg7XHJcbiAgICAgICAgICAgIHQudmlzaWJsZSA9ICF0LmFjIHx8IHRoaXMuYWFjLmhhcyh0LmFjKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEdpcm8gcmljb3JzaXZvXHJcbiAgICAgICAgICAgIGlmICh0LnN1Yk1lbnUgJiYgdC5zdWJNZW51Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrU3ViTWVudU92ZXJDbGFpbXModCwgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWVudXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKG1lbnVJdGVtOiBBcHBsaWNhdGlvbk1lbnUsIGxldmVsOiBudW1iZXIpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVJdGVtLnN1Yk1lbnUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHQgPSBtZW51SXRlbS5zdWJNZW51W2ldIGFzIGFueTtcclxuICAgICAgICAgICAgdC5sZXZlbCA9IGxldmVsICsgMTtcclxuICAgICAgICAgICAgdC52aXNpYmxlID0gIXQuYWMgfHwgdGhpcy5hYWMuaGFzKHQuYWMpO1xyXG4gICAgICAgICAgICB0LnBhZGRpbmdfbGVmdCA9IHQubGV2ZWwgKiAxODtcclxuICAgICAgICAgICAgaWYgKHQuc3ViTWVudSAmJiB0LnN1Yk1lbnUubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tTdWJNZW51T3ZlckNsYWltcyh0LCBsZXZlbCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyNyZWdpb24gSlF1ZXJ5XHJcbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gICAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xyXG4gICAgICAgIHZhciBpc01lbnVTaG91bGRDb2xsYXBzZWQgPSB0aGlzLl9zaG91bGRNZW51Q29sbGFwc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNNZW51U2hvdWxkQ29sbGFwc2VkICE9PSBpc01lbnVTaG91bGRDb2xsYXBzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShpc01lbnVTaG91bGRDb2xsYXBzZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTWVudVNob3VsZENvbGxhcHNlZCA9IGlzTWVudVNob3VsZENvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNpZGViYXJIZWlnaHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaG91bGRNZW51Q29sbGFwc2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UoaXNDb2xsYXBzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLm5vdGlmeURhdGFDaGFuZ2VkKFwibWVudS5pc0NvbGxhcHNlZFwiLCB0aGlzLmlzTWVudUNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1lbnVFeHBhbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaG92ZXJJdGVtKGpRdWVyeWV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTWVudUNvbGxhcHNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dIb3ZlckVsZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmhvdmVyRWxlbUhlaWdodCA9IGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLmhvdmVyRWxlbVRvcCA9IGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG5cclxuICAgICAgICAgICAgalF1ZXJ5KFwiLnNpZGViYXItaG92ZXItZWxlbVwiKS5jc3MoXCJ0b3BcIiwgdGhpcy5ob3ZlckVsZW1Ub3AgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICBqUXVlcnkoXCIuc2lkZWJhci1ob3Zlci1lbGVtXCIpLmNzcyhcImhlaWdodFwiLCB0aGlzLmhvdmVyRWxlbUhlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuYWRkQ2xhc3MoXCJzaG93LWhvdmVyLWVsZW1cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZW5kQXdheUhvdmVyRWxlbWVudCgpIHtcclxuICAgICAgICB0aGlzLmhvdmVyRWxlbVRvcCA9IC0yMDA7XHJcblxyXG4gICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuY3NzKFwidG9wXCIsIHRoaXMuaG92ZXJFbGVtVG9wICsgXCJweFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU2lkZWJhckhlaWdodCgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgbWFyZ2luVG9wID0gNjAgKyA0MDtcclxuICAgICAgICBsZXQgZm9vdGVySGVpZ2h0ID0gMTUwO1xyXG5cclxuICAgICAgICB0aGlzLm1lbnVIZWlnaHQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2xpZW50SGVpZ2h0IC0gbWFyZ2luVG9wIC0gZm9vdGVySGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vTm9ub3N0YW50ZSBxdWVzdGEgZnVuemlvbmUgc2lhIGNvbGxlZ2F0YSBjb24gKGNsaWNrLm91dC16b25lKSBwZXIgcXVhbGNoZSBtb3Rpdm8gYW5ndWxhciBsZSBlc2VndWUgY29tdW5xdWUgbmVsbGEgc3VhIHpvbmVcclxuICAgIC8vZ2VuZXJhbmRvIHVuIHBvJyBkaSBpcnJlc3BvbnNpdml0w6AgaW5pemlhbGUuLi4gc3VjY2VkZSBzb2xvIGNvbCBjbGljay4uLiBib2hcclxuICAgIHB1YmxpYyBjb2xsYXBzZU1lbnUoalF1ZXJ5ZXZlbnQsIGl0ZW0pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc01lbnVDb2xsYXBzZWQpXHJcbiAgICAgICAgICAgIHRoaXMubWVudUV4cGFuZCgpO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW0ubGV2ZWwpXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkxpdmVsbG8gbm9uIHByZXNlbnRlIGluIHVuIG9nZ2V0dG8gZGVsIG1lbnUhXCIpO1xyXG5cclxuICAgICAgICAvL04uQjogVHV0dGUgbGUgZnVuemlvbmkgZGkgSlF1ZXJ5IGxlIGVzZ3VvIGZ1b3JpIGRhIEFuZ3VsYXIgZGF0byBjaGUgYyfvv70gdW5hIGJ1b25hIHByb2JhYmlsaXTvv70gY2hlIHNpYW5vIGV2ZW50aSBhc2luY3JvbmlcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4geyB0aGlzLm91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKTsgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKSB7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3MgPSBpdGVtLmxldmVsID8gXCJsZXZlbC1cIiArIChpdGVtLmxldmVsKSA6IFwiXCI7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3NQbHVzT25lID0gaXRlbS5sZXZlbCA/IFwibGV2ZWwtXCIgKyAoaXRlbS5sZXZlbCArIDEpIDogXCJcIjtcclxuICAgICAgICBsZXQgc2xpZGVQZXJpb2QgPSA0MDA7XHJcblxyXG4gICAgICAgIHZhciBsaW5rID0galF1ZXJ5KGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQpO1xyXG5cclxuICAgICAgICAvL1NlIGwnZWxlbWVudG8gbm9uIMOoIGVzcGFuc29cclxuICAgICAgICBpZiAoIWxpbmsuY2xvc2VzdChcIi5zaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vVGlybyBzdSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbG8gc3Rlc3NvIGxpdmVsbG8gZXNwYW5zaSBlIGxpIGNoaXVkb1xyXG5cclxuICAgICAgICAgICAgLy9TZSBobyBjb21wcmVzc28gdW4gbWVudSB2YWRvIGEgdmVkZXJlIHNlIGMnw6ggYW5jaGUgdW4gYWx0cm8gbWVudSBkaSBsaXZlbGxvIHBp77+9IGJhc3NvIGRhIHJpY2hpdWRlcmVcclxuICAgICAgICAgICAgalF1ZXJ5KFwidWwubmF2LXNpZGViYXIgbGlcIiArIFwiLlwiICsgKGxldmVsQ2xhc3NQbHVzT25lKSkuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xvc2VzdExpID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoXCJsaVwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5sZW5ndGggJiYgY2xvc2VzdExpLmhhc0NsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLmNoaWxkcmVuKFwidWxcIikuc2xpZGVVcChzbGlkZVBlcmlvZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIgKyBcIl9cIiArIChsZXZlbENsYXNzUGx1c09uZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RMaS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvL0RvcG9kaWNo77+9IHJpY2hpdWRvIHR1dHRpIHF1ZWxsaSBkZWwgbWlvIGxpdmVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBqUXVlcnkoXCJ1bC5uYXYtc2lkZWJhciBsaVwiICsgXCIuXCIgKyBsZXZlbENsYXNzKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbG9zZXN0TGkgPSBqUXVlcnkodGhpcykuY2xvc2VzdChcImxpXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RMaS5jaGlsZHJlbihcInVsXCIpLmxlbmd0aCAmJiBjbG9zZXN0TGkuaGFzQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vRG9wb2RpY2jvv70gZXNwYW5kbyBxdWVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZURvd24oc2xpZGVQZXJpb2QpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5hZGRDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLmFkZENsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9BbHRyaW1lbnRpLCBzZSBsJ2VsZW1lbnRvIMOoIGdpw6AgZXNwYW5zbyBsbyBjaGl1ZG9cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gRm9vdGVyXHJcbiAgICBwdWJsaWMgb25DaGFuZ2VUZW5hbnQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dpbi90ZW5hbnQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uTG9nb3V0KCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vbG9nb3V0P2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0VXNlclByb2ZpbGVEYXRhKCkge1xyXG4gICAgICAgIHZhciBpZGVudGl0eSA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcblxyXG4gICAgICAgIGlmIChpZGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXIgPSBpZGVudGl0eS5GdWxsTmFtZTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnQgPSBpZGVudGl0eS5UZW5hbnROYW1lO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGUuZG9SZWxvYWRQcm9maWxlUGljdHVyZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gR2VzdGlvbmUgUmljZXJjYSBHbG9iYWxlXHJcbiAgICBwdWJsaWMgU2VsZWN0ZWRSZXN1bHQ6IFNlYXJjaFJlc3VsdCA9IG51bGw7XHJcbiAgICBwdWJsaWMgU2hvd1NpbmdsZVRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xyXG4gICAgc2VhcmNoaW5nVGVybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgc2VhcmNoUmVzdWx0OiBTZWFyY2hSZXN1bHRDb250YWluZXI7XHJcblxyXG4gICAgb25TZWFyY2hSZXF1ZXN0KCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCJTY3JpdmVyZSBhbG1lbm8gMyBjYXJhdHRlcmkgcGVyIHV0aWxpenphcmUgbGEgcmljZXJjYSBnbG9iYWxlXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLnNlYXJjaCh0aGlzLnNlYXJjaFRlcm0pLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdDtcclxuXHJcbiAgICAgICAgICAgIC8vIFNob3J0LWNpcmN1aXQgaW4gYXNzZW56YSBkaSByaXN1bHRhdGlcclxuICAgICAgICAgICAgaWYgKCh0aGlzLnNlYXJjaFJlc3VsdC5yZXN1bHRzLmxlbmd0aCB8fCAwKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0LnJlc3VsdHMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHQuZXN0X2NvbHMgPSB0LmNvbHVtbnMubWFwKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xMaW5rID0gdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLmdlbmVyYXRlQ29sdW1uTGluayhjKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbihjLmRlc2NyaXB0aW9uLCBjLmlkLCBjb2xMaW5rPy5yb3V0ZVBhdGgsIGNvbExpbms/LnJvdXRlUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblNlYXJjaE1vZGVsQ2hhbmdlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoaW5nVGVybSlcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW06IFNlYXJjaFJlc3VsdCA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0Py5yZXN1bHRzPy5maW5kKGYgPT4gZi5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U2luZ2xlVGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxufSIsIjxkaXYgI3NpZGViYXIgY2xhc3M9XCJhcHAtc2lkZWJhclwiIFtjbGFzcy5tZW51LWNvbGxhcHNlZF09XCJpc01lbnVDb2xsYXBzZWRcIiAobW91c2VsZWF2ZS5vdXQtem9uZSk9XCJzZW5kQXdheUhvdmVyRWxlbWVudCgpO1wiPlxyXG4gICAgPCEtLUphY2UgTG9nby0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImFwcC1sb2dvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlclwiIFtyb3V0ZXJMaW5rXT1cIlsnL3BhZ2VzL2Rhc2hib2FyZCddXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4OyBvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtbG9nby1pbWdcIiBzcmM9XCJhc3NldHMvaW1nL2xvZ28vbG9nby5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImlzTWVudUNvbGxhcHNlZFwiIGNsYXNzPVwiYXBwLWxvZ28taW1nLXNtXCIgc3JjPVwiYXNzZXRzL2ltZy9sb2dvL2xvZ29fc20ucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1SaWNlcmNhIGdsb2JhbGUtLT5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1zZWFyY2hcIj5cclxuICAgICAgICA8Zm9ybSBub3ZhbGlkYXRlIHJvbGU9XCJzZWFyY2hcIiBjbGFzcz1cImFwcC1zZWFyY2hcIiAobmdTdWJtaXQpPVwib25TZWFyY2hSZXF1ZXN0KClcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJSaWNlcmNhLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hNb2RlbENoYW5nZWQoKVwiIG5hbWU9XCJzZWFyY2hcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8YT48aSBjbGFzcz1cImZhciBmYS1tYWduaWZ5aW5nLWdsYXNzXCI+PC9pPjwvYT5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1CYXJyYSBsYXRlcmFsZSBjb24gdHV0dGUgbGUgdm9jaSBkaSBNZW51LS0+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXNpZGViYXIgZmxleC1jb2x1bW4gZmxleC1ub3dyYXBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgem9vbTogMVwiIHNsaW0tc2Nyb2xsIFtzbGltU2Nyb2xsT3B0aW9uc109XCJ7aGVpZ2h0OiBtZW51SGVpZ2h0fVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXM7IGxldCBsYXN0ID0gbGFzdDtcIiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzaWRlYmFyLWxpc3QtaXRlbSBsZXZlbC17e2l0ZW0ubGV2ZWx9fVwiIFxyXG4gICAgICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbV09XCJsYXN0ID8gJzQycHgnIDogJzBweCdcIiBcclxuICAgICAgICAgICAgW2NsYXNzLmhhcy1zdWItbWVudV09XCJpdGVtLnN1Yk1lbnVcIlxyXG4gICAgICAgICAgICBbY2xhc3Muc2lkZWJhci1pdGVtLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIiBcclxuICAgICAgICAgICAgW2NsYXNzLnNpZGViYXItaXRlbS13aXBdPVwiaXRlbS53aXBcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVJdGVtOyBjb250ZXh0IDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG4gICAgPCEtLVNlbGV0dG9yZSBCYXJyYSBkZWkgTWVudS0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpZGViYXItaG92ZXItZWxlbVwiPjwvZGl2PlxyXG4gICAgPCEtLUZvb3Rlci0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3RlclwiPlxyXG4gICAgICAgIDwhLS1NaW51c2NvbG8gZmFkZSB0cmEgc2lkZWJhciBlIGluaXppbyBmb290ZXItLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLWZhZGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBhZGRpbmctMTVcIj5cclxuICAgICAgICAgICAgPCEtLUluZm9ybWF6aW9uaSB1dGVudGUgY29sbGVnYXRvLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1NZW50cmUgc3RvIGFuY29yYSBjYXJpY2FuZG8gbGEgUHJvZmlsZVBpYyBtaSBhc3NpY3VybyBkaSBtb3N0cmFyZSB1biBwbGFjZWhvbGRlci0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFwcm9maWxlLlByb2ZpbGVQaWN0dXJlXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1pbWctcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS0yeCBmYS1zcGlubmVyIGZhLXNwaW4tcHVsc2VcIiBzdHlsZT1cImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNXB4O1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLVVuYSB2b2x0YSBjYXJpY2F0YSBsYSBQcm9maWxlUGljIG5hc2NvbmRvIGlsIHBsYWNlaG9sZGVyIGUgbGEgbW9zdHJvLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvZmlsZS5Qcm9maWxlUGljdHVyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9maWxlLlByb2ZpbGVQaWN0dXJlXCIgYWx0PVwiXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1pbWcgYXBwLXBvaW50ZXJcIiBbcm91dGVyTGlua109XCJbJy9wYWdlcy9wcm9maWxlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItc3RhdHVzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS1Vc2VybmFtZSBhbmltYXRvIHF1YW5kbyBzdXBlcmEgaSAxNSBjYXJhdHRlcmktLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1uYW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VybmFtZS10ZXh0XCIgW2NsYXNzLnVzZXJuYW1lLXRleHQtYW5pbWF0b3JdPVwidXNlcj8ubGVuZ3RoID4gMTVcIj57e3VzZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZW5hbnRuYW1lLXRleHRcIj57e3RlbmFudH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS1PcGVyYXppb25pIHJhcGlkZSAoTG9nb3V0LCBDYW1iaWEgdGVuYW50LCBHdWlkYSwgU3VwcG9ydG8sLi4uKS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXF1aWNrLW9wc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25Mb2dvdXQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtZnJvbS1icmFja2V0XCI+PC9pPiZuYnNwO0xvZ291dDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DaGFuZ2VUZW5hbnQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtbGVmdFwiPjwvaT4mbmJzcDtDYW1iaWEgVGVuYW50PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tVmVyc2lvbmUgY29ycmVudGUgYXBwbGljYXppb25lLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdmVyXCI+XHJcbiAgICAgICAgICAgICAgICB2e3thcHBsaWNhdGlvblZlcnNpb259fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWVudUl0ZW0gbGV0LWl0ZW0+XHJcbiAgICA8YSBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cIml0ZW0ucGFkZGluZ19sZWZ0XCIgKm5nSWY9XCIoIWl0ZW0ucm91dGVyTGluayAmJiAhaXRlbS5zdWJNZW51KSB8fCBpdGVtLndpcFwiIFtocmVmXT1cIml0ZW0ubGluayB8fCAnIydcIiAoY2xpY2spPVwiaXRlbS53aXAgJiYgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNpZGViYXItbGlzdC1saW5rIHt7aXRlbS5jc3NDbGFzcyB8fCAnJ319XCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxhIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIml0ZW0ucm91dGVyTGluayAmJiAhaXRlbS5zdWJNZW51ICYmICFpdGVtLndpcFwiIGNsYXNzPVwic2lkZWJhci1saXN0LWxpbmsge3tpdGVtLmNzc0NsYXNzIHx8ICcnfX1cIiBbcm91dGVyTGlua109XCJbaXRlbS5yb3V0ZXJMaW5rXVwiIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZS1saW5rXCIgKGNsaWNrLm91dC16b25lKT1cImNvbGxhcHNlTWVudSgkZXZlbnQsIGl0ZW0pXCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxhIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIml0ZW0uc3ViTWVudSAmJiAhaXRlbS53aXBcIiAoY2xpY2sub3V0LXpvbmUpPVwiY29sbGFwc2VNZW51KCRldmVudCwgaXRlbSlcIiBbYXR0ci5ocmVmXT1cIicnXCIgY2xhc3M9XCJzaWRlYmFyLWxpc3QtbGluayB7e2l0ZW0uY3NzQ2xhc3MgfHwgJyd9fVwiIChtb3VzZWVudGVyLm91dC16b25lKT1cImhvdmVySXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaT48c3Bhbj57eyBpdGVtLnRpdGxlIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Bhbj5cclxuICAgICAgICA8YiBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd25cIj48L2I+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPHVsICpuZ0lmPVwiaXRlbS5zdWJNZW51XCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3RcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJpdGVtIG9mIGl0ZW0uc3ViTWVudVwiID5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwic3ViaXRlbS52aXNpYmxlXCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3QtaXRlbSBsZXZlbC17e2l0ZW0ubGV2ZWx9fVwiIFtjbGFzcy5zaWRlYmFyLWl0ZW0td2lwXT1cInN1Yml0ZW0ud2lwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW07IGNvbnRleHQgOiB7JGltcGxpY2l0OiBzdWJpdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC91bD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gT3ZlcmxheSBwZXIgbGEgcmljZXJjYSBnbG9iYWxlIC0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoaW5nVGVybSB8fCBzZWFyY2hSZXN1bHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhcHAtYWJzb2x1dGUgYXBwLXNlYXJjaC1iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtcmVzdWx0LWJveFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoaW5nVGVybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPjxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPlN0byBlZmZldHR1YW5kbyBsYSByaWNlcmNhLi4uPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoUmVzdWx0ICYmICFzZWFyY2hpbmdUZXJtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGF6aW8gYSBzaW5pc3RyYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEJsb2NjbyBjb24gbGUgY2F0ZWdvcmllIGRlaSByaXN1bHRhdGkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcmVsYXRpdmVcIj48YSBjbGFzcz1cImZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMCBhcHAtZnMtMjAgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xvc2VTZWFyY2goKTtcIj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+Q2F0ZWdvcmllIGRpIFJpY2VyY2E8L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1wb2ludGVyIGFwcC1saW5rXCIgW2NsYXNzLmFwcC1ib2xkXT1cIiFTZWxlY3RlZFJlc3VsdCAmJiAhU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIkZpbHRlclNlYXJjaFJlc3VsdHMoKVwiPnt7U2VsZWN0ZWRSZXN1bHQgPyAnLScgOiAnPid9fSBNb3N0cmEgVHV0dG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VhcmNoUmVzdWx0LnJlc3VsdHNcIiBjbGFzcz1cImFwcC1wb2ludGVyIGFwcC1saW5rXCIgW2NsYXNzLmFwcC1ib2xkXT1cIlNlbGVjdGVkUmVzdWx0Py5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIkZpbHRlclNlYXJjaFJlc3VsdHMoaXRlbSlcIj57e1NlbGVjdGVkUmVzdWx0Py5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uID8gJz4nIDogJy0nfX0gTW9zdHJhIHt7aXRlbS5kZXNjcmlwdGlvbn19ICh7e2l0ZW0uaXRlbXM/Lmxlbmd0aH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIERldHRhZ2xpbyByaXN1bHRhdGkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCIgc3R5bGU9XCJvdmVyZmxvdzogYXV0bzsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVNlbGVjdGVkUmVzdWx0ICYmICFTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJlcyBvZiBzZWFyY2hSZXN1bHQucmVzdWx0czsgbGV0IGkgPSBpbmRleDtcIiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiIFtzdHlsZS5tYXJnaW4tYm90dG9tLnB4XT1cImkgPT0gKHNlYXJjaFJlc3VsdC5yZXN1bHRzPy5sZW5ndGggLSAxKSA/IDIgOiAxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e3Jlcy5kZXNjcmlwdGlvbn19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJyZXMuaXRlbXNcIiBbRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uXT1cInJlcy5lc3RfY29sc1wiIFtBcnJheW1vZGVJdGVtc1BlclBhZ2VdPVwiMTBcIj48L2VzLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2VsZWN0ZWRSZXN1bHQgJiYgU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7U2VsZWN0ZWRSZXN1bHQuZGVzY3JpcHRpb259fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVzLXRhYmxlIFsobmdNb2RlbCldPVwiU2VsZWN0ZWRSZXN1bHQuaXRlbXNcIiBbRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uXT1cIlNlbGVjdGVkUmVzdWx0LmVzdF9jb2xzXCIgW0FycmF5bW9kZUl0ZW1zUGVyUGFnZV09XCIxMFwiPjwvZXMtdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGF6aW8gYSBkZXN0cmEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQVEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBRSxhQUFhLEVBQVUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxGLFdBQVc7QUFDWCxPQUFPLEVBQStCLElBQUksRUFBRSxpQkFBaUIsRUFBdUMsTUFBTSx1QkFBdUIsQ0FBQztBQUlsSSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsV0FBVztBQUNYLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQWVyRCxNQUFNLE9BQU8sT0FB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QkEwRS9CLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBOZ1pvbmUsIE9wdGlvbmFsLCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJMaW5rIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UsIExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gRXNGYWVuemFcclxuaW1wb3J0IHsgQXBwbGljYXRpb25NZW51LCBFbnZPcHRpb25zLCBNRU5VLCBNRU5VX0xPQ0FMSVpBVElPTiwgU2VhcmNoUmVzdWx0LCBTZWFyY2hSZXN1bHRDb250YWluZXIgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcbmltcG9ydCB7IEFwcFN0YXRlLCBHbG9iYWxTZWFyY2hTZXJ2aWNlLCBNZW51RmlsdGVyaW5nU2VydmljZSwgVG9rZW5TZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgU2xpbVNjcm9sbCB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kaXJlY3RpdmVzXCI7XHJcblxyXG4vLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiwgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2lkZUJhckxvYyB9IGZyb20gXCIuL3NpZGViYXIuY29tcG9uZW50LmxvY1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGpRdWVyeTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwic2lkZWJhclwiLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3NpZGViYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3NpZGViYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBTaWRlQmFyTG9jIH1dLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBTbGltU2Nyb2xsLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluaywgRm9ybXNNb2R1bGUsIEVzVGFibGVNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGViYXIge1xyXG4gICAgcHVibGljIG1lbnVJdGVtczogQXJyYXk8YW55PjtcclxuICAgIHB1YmxpYyBtZW51SGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNNZW51U2hvdWxkQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIHNob3dIb3ZlckVsZW06IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgaG92ZXJFbGVtSGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaG92ZXJFbGVtVG9wOiBudW1iZXI7XHJcblxyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uVmVyc2lvbiA9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbjtcclxuICAgIHB1YmxpYyBhcHBsaWNhdGlvbk5hbWUgPSBteWNvbmZpZy5BcHBEYXRhLk1vZHVsZURlc2NyaXB0aW9uO1xyXG4gICAgcHVibGljIHVzZXIgPSBcIlwiO1xyXG4gICAgcHVibGljIHRlbmFudCA9IFwiXCI7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcInNpZGViYXJcIiwgeyBzdGF0aWM6IHRydWUgfSkgc2lkZWJhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9MT0NBTElaQVRJT04pIGxjTWVudTogVHlwZTxMb2NhbGl6YXRpb25TZXJ2aWNlPiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBwdWJsaWMgX3N0YXRlOiBBcHBTdGF0ZSwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgdXRpRXh0czogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYWFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQEluamVjdChNRU5VKSBwcml2YXRlIG1lbnVJdGVtc1JhdzogQXBwbGljYXRpb25NZW51W10sXHJcbiAgICAgICAgcHJpdmF0ZSBtZW51RmlsdGVyaW5nU2VydmljZTogTWVudUZpbHRlcmluZ1NlcnZpY2UsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwdWJsaWMgZ2xvYmFsU2VhcmNoU2VydmljZTogR2xvYmFsU2VhcmNoU2VydmljZSwgcHVibGljIHByb2ZpbGU6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsIHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgdGhpcy5sYyA9IHRoaXMubGMuZ2VuZXJhdGVGcm9tVHlwZShsY01lbnUpO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJtZW51LmlzQ29sbGFwc2VkXCIsIChpc0NvbGxhcHNlZCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwbGljYXRpb24uRGVwbG95QXZhaWxhYmxlXCIsIChhdmFpbGFibGU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSlcclxuICAgICAgICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSAod2luZG93LmlubmVyV2lkdGggPiAwKSA/IHdpbmRvdy5pbm5lcldpZHRoIDogc2NyZWVuLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDc2OClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRVc2VyUHJvZmlsZURhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgbGV0IHRtcE1lbnVJdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1lbnVGaWx0ZXJpbmdTZXJ2aWNlLmZpbHRlcih0bXBNZW51SXRlbXMpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZE1lbnVDb2xsYXBzZSgpKVxyXG4gICAgICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNpZGViYXJIZWlnaHQoKTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRTaWRlYmFyV2lkdGgodGhpcy5zaWRlYmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWVudUl0ZW1zKCk6IEFwcGxpY2F0aW9uTWVudVtdIHtcclxuICAgICAgICBsZXQgbWVudXMgPSB0aGlzLnV0aUV4dHMuZGVlcENsb25lKHRoaXMubWVudUl0ZW1zUmF3KTtcclxuXHJcbiAgICAgICAgLy8gR2lybyAxIGFzc2Vnbm8gaWwgbGl2ZWxsbyBhaSByb290XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW51cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdCA9IG1lbnVzW2ldIGFzIGFueTtcclxuICAgICAgICAgICAgdC5sZXZlbCA9IDE7XHJcbiAgICAgICAgICAgIHQucGFkZGluZ19sZWZ0ID0gMTg7XHJcbiAgICAgICAgICAgIHQudmlzaWJsZSA9ICF0LmFjIHx8IHRoaXMuYWFjLmhhcyh0LmFjKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEdpcm8gcmljb3JzaXZvXHJcbiAgICAgICAgICAgIGlmICh0LnN1Yk1lbnUgJiYgdC5zdWJNZW51Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrU3ViTWVudU92ZXJDbGFpbXModCwgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWVudXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKG1lbnVJdGVtOiBBcHBsaWNhdGlvbk1lbnUsIGxldmVsOiBudW1iZXIpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVJdGVtLnN1Yk1lbnUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHQgPSBtZW51SXRlbS5zdWJNZW51W2ldIGFzIGFueTtcclxuICAgICAgICAgICAgdC5sZXZlbCA9IGxldmVsICsgMTtcclxuICAgICAgICAgICAgdC52aXNpYmxlID0gIXQuYWMgfHwgdGhpcy5hYWMuaGFzKHQuYWMpO1xyXG4gICAgICAgICAgICB0LnBhZGRpbmdfbGVmdCA9IHQubGV2ZWwgKiAxODtcclxuICAgICAgICAgICAgaWYgKHQuc3ViTWVudSAmJiB0LnN1Yk1lbnUubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tTdWJNZW51T3ZlckNsYWltcyh0LCBsZXZlbCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyNyZWdpb24gSlF1ZXJ5XHJcbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gICAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xyXG4gICAgICAgIHZhciBpc01lbnVTaG91bGRDb2xsYXBzZWQgPSB0aGlzLl9zaG91bGRNZW51Q29sbGFwc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNNZW51U2hvdWxkQ29sbGFwc2VkICE9PSBpc01lbnVTaG91bGRDb2xsYXBzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShpc01lbnVTaG91bGRDb2xsYXBzZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTWVudVNob3VsZENvbGxhcHNlZCA9IGlzTWVudVNob3VsZENvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNpZGViYXJIZWlnaHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaG91bGRNZW51Q29sbGFwc2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UoaXNDb2xsYXBzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLm5vdGlmeURhdGFDaGFuZ2VkKFwibWVudS5pc0NvbGxhcHNlZFwiLCB0aGlzLmlzTWVudUNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1lbnVFeHBhbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaG92ZXJJdGVtKGpRdWVyeWV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTWVudUNvbGxhcHNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dIb3ZlckVsZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmhvdmVyRWxlbUhlaWdodCA9IGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLmhvdmVyRWxlbVRvcCA9IGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG5cclxuICAgICAgICAgICAgalF1ZXJ5KFwiLnNpZGViYXItaG92ZXItZWxlbVwiKS5jc3MoXCJ0b3BcIiwgdGhpcy5ob3ZlckVsZW1Ub3AgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICBqUXVlcnkoXCIuc2lkZWJhci1ob3Zlci1lbGVtXCIpLmNzcyhcImhlaWdodFwiLCB0aGlzLmhvdmVyRWxlbUhlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuYWRkQ2xhc3MoXCJzaG93LWhvdmVyLWVsZW1cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZW5kQXdheUhvdmVyRWxlbWVudCgpIHtcclxuICAgICAgICB0aGlzLmhvdmVyRWxlbVRvcCA9IC0yMDA7XHJcblxyXG4gICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuY3NzKFwidG9wXCIsIHRoaXMuaG92ZXJFbGVtVG9wICsgXCJweFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU2lkZWJhckhlaWdodCgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgbWFyZ2luVG9wID0gNjAgKyA0MDtcclxuICAgICAgICBsZXQgZm9vdGVySGVpZ2h0ID0gMTUwO1xyXG5cclxuICAgICAgICB0aGlzLm1lbnVIZWlnaHQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2xpZW50SGVpZ2h0IC0gbWFyZ2luVG9wIC0gZm9vdGVySGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vTm9ub3N0YW50ZSBxdWVzdGEgZnVuemlvbmUgc2lhIGNvbGxlZ2F0YSBjb24gKGNsaWNrLm91dC16b25lKSBwZXIgcXVhbGNoZSBtb3Rpdm8gYW5ndWxhciBsZSBlc2VndWUgY29tdW5xdWUgbmVsbGEgc3VhIHpvbmVcclxuICAgIC8vZ2VuZXJhbmRvIHVuIHBvJyBkaSBpcnJlc3BvbnNpdml0w6AgaW5pemlhbGUuLi4gc3VjY2VkZSBzb2xvIGNvbCBjbGljay4uLiBib2hcclxuICAgIHB1YmxpYyBjb2xsYXBzZU1lbnUoalF1ZXJ5ZXZlbnQsIGl0ZW0pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc01lbnVDb2xsYXBzZWQpXHJcbiAgICAgICAgICAgIHRoaXMubWVudUV4cGFuZCgpO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW0ubGV2ZWwpXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkxpdmVsbG8gbm9uIHByZXNlbnRlIGluIHVuIG9nZ2V0dG8gZGVsIG1lbnUhXCIpO1xyXG5cclxuICAgICAgICAvL04uQjogVHV0dGUgbGUgZnVuemlvbmkgZGkgSlF1ZXJ5IGxlIGVzZ3VvIGZ1b3JpIGRhIEFuZ3VsYXIgZGF0byBjaGUgYyfvv70gdW5hIGJ1b25hIHByb2JhYmlsaXTvv70gY2hlIHNpYW5vIGV2ZW50aSBhc2luY3JvbmlcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4geyB0aGlzLm91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKTsgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKSB7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3MgPSBpdGVtLmxldmVsID8gXCJsZXZlbC1cIiArIChpdGVtLmxldmVsKSA6IFwiXCI7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3NQbHVzT25lID0gaXRlbS5sZXZlbCA/IFwibGV2ZWwtXCIgKyAoaXRlbS5sZXZlbCArIDEpIDogXCJcIjtcclxuICAgICAgICBsZXQgc2xpZGVQZXJpb2QgPSA0MDA7XHJcblxyXG4gICAgICAgIHZhciBsaW5rID0galF1ZXJ5KGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQpO1xyXG5cclxuICAgICAgICAvL1NlIGwnZWxlbWVudG8gbm9uIMOoIGVzcGFuc29cclxuICAgICAgICBpZiAoIWxpbmsuY2xvc2VzdChcIi5zaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vVGlybyBzdSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbG8gc3Rlc3NvIGxpdmVsbG8gZXNwYW5zaSBlIGxpIGNoaXVkb1xyXG5cclxuICAgICAgICAgICAgLy9TZSBobyBjb21wcmVzc28gdW4gbWVudSB2YWRvIGEgdmVkZXJlIHNlIGMnw6ggYW5jaGUgdW4gYWx0cm8gbWVudSBkaSBsaXZlbGxvIHBp77+9IGJhc3NvIGRhIHJpY2hpdWRlcmVcclxuICAgICAgICAgICAgalF1ZXJ5KFwidWwubmF2LXNpZGViYXIgbGlcIiArIFwiLlwiICsgKGxldmVsQ2xhc3NQbHVzT25lKSkuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xvc2VzdExpID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoXCJsaVwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5sZW5ndGggJiYgY2xvc2VzdExpLmhhc0NsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLmNoaWxkcmVuKFwidWxcIikuc2xpZGVVcChzbGlkZVBlcmlvZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIgKyBcIl9cIiArIChsZXZlbENsYXNzUGx1c09uZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RMaS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvL0RvcG9kaWNo77+9IHJpY2hpdWRvIHR1dHRpIHF1ZWxsaSBkZWwgbWlvIGxpdmVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBqUXVlcnkoXCJ1bC5uYXYtc2lkZWJhciBsaVwiICsgXCIuXCIgKyBsZXZlbENsYXNzKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbG9zZXN0TGkgPSBqUXVlcnkodGhpcykuY2xvc2VzdChcImxpXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RMaS5jaGlsZHJlbihcInVsXCIpLmxlbmd0aCAmJiBjbG9zZXN0TGkuaGFzQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vRG9wb2RpY2jvv70gZXNwYW5kbyBxdWVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZURvd24oc2xpZGVQZXJpb2QpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5hZGRDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLmFkZENsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9BbHRyaW1lbnRpLCBzZSBsJ2VsZW1lbnRvIMOoIGdpw6AgZXNwYW5zbyBsbyBjaGl1ZG9cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gRm9vdGVyXHJcbiAgICBwdWJsaWMgb25DaGFuZ2VUZW5hbnQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS8jL2xvZ2luO2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkxvZ291dCgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9LyMvbG9nb3V0O2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0VXNlclByb2ZpbGVEYXRhKCkge1xyXG4gICAgICAgIHZhciBpZGVudGl0eSA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcblxyXG4gICAgICAgIGlmIChpZGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXIgPSBpZGVudGl0eS5GdWxsTmFtZTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnQgPSBpZGVudGl0eS5UZW5hbnROYW1lO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGUuZG9SZWxvYWRQcm9maWxlUGljdHVyZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gR2VzdGlvbmUgUmljZXJjYSBHbG9iYWxlXHJcbiAgICBwdWJsaWMgU2VsZWN0ZWRSZXN1bHQ6IFNlYXJjaFJlc3VsdCA9IG51bGw7XHJcbiAgICBwdWJsaWMgU2hvd1NpbmdsZVRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xyXG4gICAgc2VhcmNoaW5nVGVybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgc2VhcmNoUmVzdWx0OiBTZWFyY2hSZXN1bHRDb250YWluZXI7XHJcblxyXG4gICAgb25TZWFyY2hSZXF1ZXN0KCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCJTY3JpdmVyZSBhbG1lbm8gMyBjYXJhdHRlcmkgcGVyIHV0aWxpenphcmUgbGEgcmljZXJjYSBnbG9iYWxlXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLnNlYXJjaCh0aGlzLnNlYXJjaFRlcm0pLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdDtcclxuXHJcbiAgICAgICAgICAgIC8vIFNob3J0LWNpcmN1aXQgaW4gYXNzZW56YSBkaSByaXN1bHRhdGlcclxuICAgICAgICAgICAgaWYgKCh0aGlzLnNlYXJjaFJlc3VsdC5yZXN1bHRzLmxlbmd0aCB8fCAwKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0LnJlc3VsdHMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHQuZXN0X2NvbHMgPSB0LmNvbHVtbnMubWFwKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xMaW5rID0gdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLmdlbmVyYXRlQ29sdW1uTGluayhjKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbihjLmRlc2NyaXB0aW9uLCBjLmlkLCBjb2xMaW5rPy5yb3V0ZVBhdGgsIGNvbExpbms/LnJvdXRlUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblNlYXJjaE1vZGVsQ2hhbmdlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoaW5nVGVybSlcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW06IFNlYXJjaFJlc3VsdCA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0Py5yZXN1bHRzPy5maW5kKGYgPT4gZi5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U2luZ2xlVGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxufSIsIjxkaXYgI3NpZGViYXIgY2xhc3M9XCJhcHAtc2lkZWJhclwiIFtjbGFzcy5tZW51LWNvbGxhcHNlZF09XCJpc01lbnVDb2xsYXBzZWRcIiAobW91c2VsZWF2ZS5vdXQtem9uZSk9XCJzZW5kQXdheUhvdmVyRWxlbWVudCgpO1wiPlxyXG4gICAgPCEtLUphY2UgTG9nby0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImFwcC1sb2dvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlclwiIFtyb3V0ZXJMaW5rXT1cIlsnL3BhZ2VzL2Rhc2hib2FyZCddXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4OyBvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtbG9nby1pbWdcIiBzcmM9XCJhc3NldHMvaW1nL2xvZ28vbG9nby5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImlzTWVudUNvbGxhcHNlZFwiIGNsYXNzPVwiYXBwLWxvZ28taW1nLXNtXCIgc3JjPVwiYXNzZXRzL2ltZy9sb2dvL2xvZ29fc20ucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1SaWNlcmNhIGdsb2JhbGUtLT5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1zZWFyY2hcIj5cclxuICAgICAgICA8Zm9ybSBub3ZhbGlkYXRlIHJvbGU9XCJzZWFyY2hcIiBjbGFzcz1cImFwcC1zZWFyY2hcIiAobmdTdWJtaXQpPVwib25TZWFyY2hSZXF1ZXN0KClcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJSaWNlcmNhLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hNb2RlbENoYW5nZWQoKVwiIG5hbWU9XCJzZWFyY2hcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8YT48aSBjbGFzcz1cImZhciBmYS1tYWduaWZ5aW5nLWdsYXNzXCI+PC9pPjwvYT5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1CYXJyYSBsYXRlcmFsZSBjb24gdHV0dGUgbGUgdm9jaSBkaSBNZW51LS0+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXNpZGViYXIgZmxleC1jb2x1bW4gZmxleC1ub3dyYXBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgem9vbTogMVwiIHNsaW0tc2Nyb2xsIFtzbGltU2Nyb2xsT3B0aW9uc109XCJ7aGVpZ2h0OiBtZW51SGVpZ2h0fVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXM7IGxldCBsYXN0ID0gbGFzdDtcIiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzaWRlYmFyLWxpc3QtaXRlbSBsZXZlbC17e2l0ZW0ubGV2ZWx9fVwiIFxyXG4gICAgICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbV09XCJsYXN0ID8gJzQycHgnIDogJzBweCdcIiBcclxuICAgICAgICAgICAgW2NsYXNzLmhhcy1zdWItbWVudV09XCJpdGVtLnN1Yk1lbnVcIlxyXG4gICAgICAgICAgICBbY2xhc3Muc2lkZWJhci1pdGVtLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIiBcclxuICAgICAgICAgICAgW2NsYXNzLnNpZGViYXItaXRlbS13aXBdPVwiaXRlbS53aXBcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVJdGVtOyBjb250ZXh0IDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG4gICAgPCEtLVNlbGV0dG9yZSBCYXJyYSBkZWkgTWVudS0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpZGViYXItaG92ZXItZWxlbVwiPjwvZGl2PlxyXG4gICAgPCEtLUZvb3Rlci0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3RlclwiPlxyXG4gICAgICAgIDwhLS1NaW51c2NvbG8gZmFkZSB0cmEgc2lkZWJhciBlIGluaXppbyBmb290ZXItLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLWZhZGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBhZGRpbmctMTVcIj5cclxuICAgICAgICAgICAgPCEtLUluZm9ybWF6aW9uaSB1dGVudGUgY29sbGVnYXRvLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1NZW50cmUgc3RvIGFuY29yYSBjYXJpY2FuZG8gbGEgUHJvZmlsZVBpYyBtaSBhc3NpY3VybyBkaSBtb3N0cmFyZSB1biBwbGFjZWhvbGRlci0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFwcm9maWxlLlByb2ZpbGVQaWN0dXJlXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1pbWctcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS0yeCBmYS1zcGlubmVyIGZhLXNwaW4tcHVsc2VcIiBzdHlsZT1cImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNXB4O1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLVVuYSB2b2x0YSBjYXJpY2F0YSBsYSBQcm9maWxlUGljIG5hc2NvbmRvIGlsIHBsYWNlaG9sZGVyIGUgbGEgbW9zdHJvLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvZmlsZS5Qcm9maWxlUGljdHVyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9maWxlLlByb2ZpbGVQaWN0dXJlXCIgYWx0PVwiXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1pbWcgYXBwLXBvaW50ZXJcIiBbcm91dGVyTGlua109XCJbJy9wYWdlcy9wcm9maWxlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItc3RhdHVzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS1Vc2VybmFtZSBhbmltYXRvIHF1YW5kbyBzdXBlcmEgaSAxNSBjYXJhdHRlcmktLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1uYW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VybmFtZS10ZXh0XCIgW2NsYXNzLnVzZXJuYW1lLXRleHQtYW5pbWF0b3JdPVwidXNlcj8ubGVuZ3RoID4gMTVcIj57e3VzZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZW5hbnRuYW1lLXRleHRcIj57e3RlbmFudH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS1PcGVyYXppb25pIHJhcGlkZSAoTG9nb3V0LCBDYW1iaWEgdGVuYW50LCBHdWlkYSwgU3VwcG9ydG8sLi4uKS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXF1aWNrLW9wc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25Mb2dvdXQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtZnJvbS1icmFja2V0XCI+PC9pPiZuYnNwO0xvZ291dDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DaGFuZ2VUZW5hbnQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtbGVmdFwiPjwvaT4mbmJzcDtDYW1iaWEgVGVuYW50PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tVmVyc2lvbmUgY29ycmVudGUgYXBwbGljYXppb25lLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdmVyXCI+XHJcbiAgICAgICAgICAgICAgICB2e3thcHBsaWNhdGlvblZlcnNpb259fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWVudUl0ZW0gbGV0LWl0ZW0+XHJcbiAgICA8YSBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cIml0ZW0ucGFkZGluZ19sZWZ0XCIgKm5nSWY9XCIoIWl0ZW0ucm91dGVyTGluayAmJiAhaXRlbS5zdWJNZW51KSB8fCBpdGVtLndpcFwiIFtocmVmXT1cIml0ZW0ubGluayB8fCAnIydcIiAoY2xpY2spPVwiaXRlbS53aXAgJiYgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNpZGViYXItbGlzdC1saW5rIHt7aXRlbS5jc3NDbGFzcyB8fCAnJ319XCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxhIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIml0ZW0ucm91dGVyTGluayAmJiAhaXRlbS5zdWJNZW51ICYmICFpdGVtLndpcFwiIGNsYXNzPVwic2lkZWJhci1saXN0LWxpbmsge3tpdGVtLmNzc0NsYXNzIHx8ICcnfX1cIiBbcm91dGVyTGlua109XCJbaXRlbS5yb3V0ZXJMaW5rXVwiIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZS1saW5rXCIgKGNsaWNrLm91dC16b25lKT1cImNvbGxhcHNlTWVudSgkZXZlbnQsIGl0ZW0pXCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxhIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIml0ZW0uc3ViTWVudSAmJiAhaXRlbS53aXBcIiAoY2xpY2sub3V0LXpvbmUpPVwiY29sbGFwc2VNZW51KCRldmVudCwgaXRlbSlcIiBbYXR0ci5ocmVmXT1cIicnXCIgY2xhc3M9XCJzaWRlYmFyLWxpc3QtbGluayB7e2l0ZW0uY3NzQ2xhc3MgfHwgJyd9fVwiIChtb3VzZWVudGVyLm91dC16b25lKT1cImhvdmVySXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaT48c3Bhbj57eyBpdGVtLnRpdGxlIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Bhbj5cclxuICAgICAgICA8YiBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd25cIj48L2I+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPHVsICpuZ0lmPVwiaXRlbS5zdWJNZW51XCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3RcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJpdGVtIG9mIGl0ZW0uc3ViTWVudVwiID5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwic3ViaXRlbS52aXNpYmxlXCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3QtaXRlbSBsZXZlbC17e2l0ZW0ubGV2ZWx9fVwiIFtjbGFzcy5zaWRlYmFyLWl0ZW0td2lwXT1cInN1Yml0ZW0ud2lwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW07IGNvbnRleHQgOiB7JGltcGxpY2l0OiBzdWJpdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC91bD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gT3ZlcmxheSBwZXIgbGEgcmljZXJjYSBnbG9iYWxlIC0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoaW5nVGVybSB8fCBzZWFyY2hSZXN1bHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhcHAtYWJzb2x1dGUgYXBwLXNlYXJjaC1iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtcmVzdWx0LWJveFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoaW5nVGVybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPjxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPlN0byBlZmZldHR1YW5kbyBsYSByaWNlcmNhLi4uPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoUmVzdWx0ICYmICFzZWFyY2hpbmdUZXJtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGF6aW8gYSBzaW5pc3RyYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEJsb2NjbyBjb24gbGUgY2F0ZWdvcmllIGRlaSByaXN1bHRhdGkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcmVsYXRpdmVcIj48YSBjbGFzcz1cImZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMCBhcHAtZnMtMjAgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xvc2VTZWFyY2goKTtcIj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+Q2F0ZWdvcmllIGRpIFJpY2VyY2E8L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1wb2ludGVyIGFwcC1saW5rXCIgW2NsYXNzLmFwcC1ib2xkXT1cIiFTZWxlY3RlZFJlc3VsdCAmJiAhU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIkZpbHRlclNlYXJjaFJlc3VsdHMoKVwiPnt7U2VsZWN0ZWRSZXN1bHQgPyAnLScgOiAnPid9fSBNb3N0cmEgVHV0dG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VhcmNoUmVzdWx0LnJlc3VsdHNcIiBjbGFzcz1cImFwcC1wb2ludGVyIGFwcC1saW5rXCIgW2NsYXNzLmFwcC1ib2xkXT1cIlNlbGVjdGVkUmVzdWx0Py5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIkZpbHRlclNlYXJjaFJlc3VsdHMoaXRlbSlcIj57e1NlbGVjdGVkUmVzdWx0Py5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uID8gJz4nIDogJy0nfX0gTW9zdHJhIHt7aXRlbS5kZXNjcmlwdGlvbn19ICh7e2l0ZW0uaXRlbXM/Lmxlbmd0aH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIERldHRhZ2xpbyByaXN1bHRhdGkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCIgc3R5bGU9XCJvdmVyZmxvdzogYXV0bzsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVNlbGVjdGVkUmVzdWx0ICYmICFTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJlcyBvZiBzZWFyY2hSZXN1bHQucmVzdWx0czsgbGV0IGkgPSBpbmRleDtcIiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiIFtzdHlsZS5tYXJnaW4tYm90dG9tLnB4XT1cImkgPT0gKHNlYXJjaFJlc3VsdC5yZXN1bHRzPy5sZW5ndGggLSAxKSA/IDIgOiAxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e3Jlcy5kZXNjcmlwdGlvbn19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJyZXMuaXRlbXNcIiBbRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uXT1cInJlcy5lc3RfY29sc1wiIFtBcnJheW1vZGVJdGVtc1BlclBhZ2VdPVwiMTBcIj48L2VzLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2VsZWN0ZWRSZXN1bHQgJiYgU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7U2VsZWN0ZWRSZXN1bHQuZGVzY3JpcHRpb259fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVzLXRhYmxlIFsobmdNb2RlbCldPVwiU2VsZWN0ZWRSZXN1bHQuaXRlbXNcIiBbRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uXT1cIlNlbGVjdGVkUmVzdWx0LmVzdF9jb2xzXCIgW0FycmF5bW9kZUl0ZW1zUGVyUGFnZV09XCIxMFwiPjwvZXMtdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGF6aW8gYSBkZXN0cmEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19
|