simpo-component-library 1.4.217 → 1.4.219
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +13 -10
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +4 -4
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +8 -5
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +40 -6
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +1 -3
- package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +10 -7
- package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +7 -1
- package/esm2022/lib/services/rest.service.mjs +19 -4
- package/fesm2022/simpo-component-library.mjs +94 -32
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/cart/cart.component.d.ts +3 -2
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +3 -0
- package/lib/ecommerce/sections/whislist/whislist.component.d.ts +1 -0
- package/lib/ecommerce/styles/OrderedItems.modal.d.ts +2 -0
- package/lib/services/rest.service.d.ts +12 -3
- package/package.json +1 -1
- package/simpo-component-library-1.4.218.tgz +0 -0
- package/simpo-component-library-1.4.219.tgz +0 -0
@@ -128,10 +128,8 @@ export class UserProfileComponent extends BaseSection {
|
|
128
128
|
}
|
129
129
|
async editProfileData(type) {
|
130
130
|
// TODO: Should be OTP based validation
|
131
|
-
// debugger;
|
132
131
|
// if (!this.userDetails)
|
133
132
|
// return;
|
134
|
-
// debugger;
|
135
133
|
// if (type == "EMAIL") {
|
136
134
|
// const { value: email } = await Swal.fire({
|
137
135
|
// title: "User Details",
|
@@ -324,4 +322,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
324
322
|
}], delete: [{
|
325
323
|
type: Input
|
326
324
|
}] } });
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3VzZXItcHJvZmlsZS91c2VyLXByb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvdXNlci1wcm9maWxlL3VzZXItcHJvZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUkxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVB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QUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FydCwgVXNlckRldGFpbHMgfSBmcm9tICcuLi8uLi9zdHlsZXMvY2FydC5tb2RhbCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQlVTSU5FU1NfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2J1c2luZXNzLmNvbnN0YW50JztcclxuaW1wb3J0IHsgUHJvZmlsZUNvbnRlbnRNb2RhbCwgUHJvZmlsZVN0eWxlc01vZGFsLCBSZXNwb25zZURhdGEsIFRhYnMsIFVzZXJQcm9maWxlTW9kYWwgfSBmcm9tICcuL3VzZXItcHJvZmlsZS5tb2RhbCc7XHJcbmltcG9ydCB7IE9yZGVySXRlbSB9IGZyb20gJy4uLy4uL3N0eWxlcy9vcmRlci5tb2RhbCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9yZGVyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gXCIuLi9vcmRlci1kZXRhaWxzL29yZGVyLWRldGFpbHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSB9IGZyb20gJ25neC1za2VsZXRvbi1sb2FkZXInO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29sb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29sb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgVXNlckJhc2ljSW5mb0NvbXBvbmVudCB9IGZyb20gJy4uL3VzZXItYmFzaWMtaW5mby91c2VyLWJhc2ljLWluZm8uY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tdXNlci1wcm9maWxlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIE9yZGVyRGV0YWlsc0NvbXBvbmVudCxcclxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBUb2FzdE1vZHVsZVxyXG5dLFxyXG5wcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VzZXItcHJvZmlsZS5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclByb2ZpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBkYXRhPzogVXNlclByb2ZpbGVNb2RhbDtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT8gOiBib29sZWFuO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0eWxlcz86IFByb2ZpbGVTdHlsZXNNb2RhbDtcclxuICBjb250ZW50PzogUHJvZmlsZUNvbnRlbnRNb2RhbDtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkU2lkZVBhbmVsVGFiOiBzdHJpbmcgfCBudWxsID0gXCJPcmRlcnNcIjtcclxuICBwdWJsaWMgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgYWRkcmVzc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlckRldGFpbHNEYXRhOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBzaWRlUGFuZWxMaXN0OiBUYWJzW10gPSBbXHJcbiAgICB7IHZhbHVlOiBcIk9yZGVyc1wiLCBpY29uOiBcImFjY2Vzc2liaWxpdHlcIiwgc3RhdHVzOiB0cnVlLCBsYWJlbDogXCJIZWFkaW5nXCIsIHVybDogJ29yZGVyJyB9LFxyXG4gICAgeyB2YWx1ZTogXCJBZGRyZXNzXCIsIGljb246IFwibG9jYXRpb25fb25cIiwgc3RhdHVzOiBmYWxzZSwgbGFiZWw6IFwiSGVhZGluZ1wiLCB1cmw6ICdhZGRyZXNzJyB9LFxyXG4gICAgeyB2YWx1ZTogXCJXaXNobGlzdFwiLCBpY29uOiBcImxvY2F0aW9uX29uXCIsIHN0YXR1czogZmFsc2UsIGxhYmVsOiBcIkhlYWRpbmdcIiwgdXJsOiAnYWRkcmVzcycgfSxcclxuICAgIC8vIHsgdmFsdWU6IFwiQWNjb3VudCBEZXRhaWxzXCIsIGljb246IFwic3VwZXJ2aXNlZF91c2VyX2NpcmNsZVwiLCBzdGF0dXM6IGZhbHNlLCBsYWJlbDogXCJIZWFkaW5nXCIsIHVybDogJ2FjY291bnQnIH0sXHJcbiAgICAvLyB7IHZhbHVlOiBcIkxvZ291dFwiLCBpY29uOiBcInRyYW5zaXRfZW50ZXJleGl0XCIsIHN0YXR1czogZmFsc2UsIGxhYmVsOiBcIkhlYWRpbmdcIiwgdXJsOiAnJyB9XHJcbiAgXTtcclxuICBwdWJsaWMgdGFiczogVGFic1tdID0gW107XHJcbiAgcHVibGljIG9yZGVyTGlzdDogT3JkZXJlZEl0ZW1zW10gPSBbXTtcclxuICBwdWJsaWMgd2lzaGxpc3REYXRhOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSByZXNwb25zZTtcclxuICAgIH0pXHJcbiAgICBcclxuICAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyO1xyXG4gICAgaWYgKCF0aGlzLnVzZXJEZXRhaWxzKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB0byBhY2Nlc3MgcHJvZmlsZScgfSk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLmdldFVzZXJPcmRlckRldGFpbHMoKTtcclxuICAgIHRoaXMuZ2V0VXNlcldpc2xpc3REZXRhaWxzKCk7XHJcbiAgfVxyXG4gIGdldFVzZXJPcmRlckRldGFpbHMoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcInVzZXJJZFwiOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWQsXHJcbiAgICAgIFwib3JkZXJTdGF0dXNcIjogbnVsbCxcclxuICAgICAgXCJwbGF0Zm9ybVwiOiBudWxsLFxyXG4gICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICBcInBhZ2VTaXplXCI6IDEwMFxyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VyT3JkZXJzKHBheWxvYWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLm9yZGVyTGlzdCA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXRVc2VyV2lzbGlzdERldGFpbHMoKSB7XHJcbiAgICBjb25zdCB1c2VySWQgPSB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWQ7XHJcbiAgICBpZiAoIXVzZXJJZClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VyV2lzaGxpc3QodXNlcklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLndpc2hsaXN0RGF0YSA9IHJlc3BvbnNlLmRhdGE/LlswXT8ub3JkZXJlZEl0ZW1zO1xyXG4gICAgfSlcclxuICB9XHJcbiAgZGVsZXRlRnJvbVdoaXNsaXN0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdC5pdGVtSWQpO1xyXG4gICAgdHJhbnNhY3Rpb24ub25zdWNjZXNzID0gKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy53aXNobGlzdERhdGEgPSB0aGlzLndpc2hsaXN0RGF0YS5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiBpdGVtLml0ZW1JZCAhPSBwcm9kdWN0Lml0ZW1JZCk7O1xyXG4gICAgfVxyXG4gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJFcnJvclwiKTtcclxuICAgIH1cclxuICB9IFxyXG4gIG1vdmVUb0NhcnQocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICBpZiAoIXByb2R1Y3QucXVhbnRpdHkpXHJcbiAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSAxO1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdCk7XHJcbiAgICB0cmFuc2FjdGlvbi5vbnN1Y2Nlc3MgPSAod2lzaGxpc3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdC5pdGVtSWQpLm9uc3VjY2VzcyA9ICh3aXNsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlN1Y2Nlc3NcIik7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9DYXJ0KHByb2R1Y3QpLm9uc3VjY2VzcyA9IChjYXJ0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMud2lzaGxpc3REYXRhID0gdGhpcy53aXNobGlzdERhdGEuZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpPT4gaXRlbS5pdGVtSWQgIT0gcHJvZHVjdC5pdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdNb3ZlIHRvIGNhcnQnLCBkZXRhaWw6ICdJdGVtIHN1Y2Nlc3NmdWxseSBtb3ZlZCB0byBjYXJ0JyB9KTtcclxuICAgIH1cclxuICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSAod2lzaGxpc3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRmFpbHVyZScsIGRldGFpbDogJ0ZhaWxlZCB0byBtb3ZlIGl0ZW0gdG8gY2FydCcgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFRvRmF2KGl0ZW06IE9yZGVyZWRJdGVtcywgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpXHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgKz0gMTtcclxuICAgIGVsc2VcclxuICAgICAgaXRlbS5xdWFudGl0eSAtPSAxO1xyXG4gICAgdGhpcy5jYXJ0U2VydmljZS5hZGRPcmRlcmVkSXRlbVRvRmF2b3VyaXRlKGl0ZW0pO1xyXG4gIH1cclxuICBhc3luYyBlZGl0UHJvZmlsZURhdGEodHlwZTogJ01PQklMRScgfCAnRU1BSUwnKSB7XHJcbiAgICAvLyBUT0RPOiBTaG91bGQgYmUgT1RQIGJhc2VkIHZhbGlkYXRpb25cclxuICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgLy8gaWYgKCF0aGlzLnVzZXJEZXRhaWxzKVxyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyBkZWJ1Z2dlcjtcclxuICAgIC8vIGlmICh0eXBlID09IFwiRU1BSUxcIikge1xyXG4gICAgLy8gICBjb25zdCB7IHZhbHVlOiBlbWFpbCB9ID0gYXdhaXQgU3dhbC5maXJlKHtcclxuICAgIC8vICAgICB0aXRsZTogXCJVc2VyIERldGFpbHNcIixcclxuICAgIC8vICAgICBpbnB1dDogXCJlbWFpbFwiLFxyXG4gICAgLy8gICAgIGlucHV0TGFiZWw6IFwiWW91ciBlbWFpbCBhZGRyZXNzXCIsXHJcbiAgICAvLyAgICAgaW5wdXRQbGFjZWhvbGRlcjogXCJFbnRlciB5b3VyIGVtYWlsIGFkZHJlc3NcIixcclxuICAgIC8vICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgLy8gICAgICAgdGl0bGU6ICdzd2FsMi10aXRsZS1sZWZ0J1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgaWYgKGVtYWlsKVxyXG4gICAgLy8gICAgIHRoaXMudXNlckRldGFpbHMuY29udGFjdC5lbWFpbCA9IGVtYWlsO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHR5cGUgPT0gXCJNT0JJTEVcIikge1xyXG4gICAgLy8gICBjb25zdCB7IHZhbHVlOiBtb2JpbGUgfSA9IGF3YWl0IFN3YWwuZmlyZSh7XHJcbiAgICAvLyAgICAgdGl0bGU6IFwiVXNlciBEZXRhaWxzXCIsXHJcbiAgICAvLyAgICAgaW5wdXQ6IFwidGVsXCIsXHJcbiAgICAvLyAgICAgaW5wdXRMYWJlbDogXCJZb3VyIG1vYmlsZSBudW1iZXJcIixcclxuICAgIC8vICAgICBpbnB1dFBsYWNlaG9sZGVyOiBcIkVudGVyIHlvdXIgbW9iaWxlIG51bWJlclwiLFxyXG4gICAgLy8gICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAvLyAgICAgICB0aXRsZTogJ3N3YWwyLXRpdGxlLWxlZnQnXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICBpZiAobW9iaWxlKVxyXG4gICAgLy8gICAgIHRoaXMudXNlckRldGFpbHMuY29udGFjdC5tb2JpbGUgPSBtb2JpbGU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gY29uc3QgcGF5bG9hZCA9IHtcclxuICAgIC8vICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgLy8gICBcImJ1c2luZXNzSWRcIjogdGhpcy51c2VyRGV0YWlscz8uYnVzaW5lc3NJZCxcclxuICAgIC8vICAgXCJjb250YWN0XCI6IHtcclxuICAgIC8vICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgIC8vICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5yZXN0U2VydmljZS51cGRhdGVQcm9maWxlKHBheWxvYWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXCJ1c2VyXCIsIHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgLy8gfSlcclxuICB9XHJcbiAgZ2V0IGdldFByb2R1Y3RXaWR0aCgpIHtcclxuICAgIFxyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID4gNDc1ID8gKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNSA/ICcyNSUnIDogJ2NhbGMoJyArICgoMTAwIC8gKHRoaXMuc3R5bGVzPy5lbGVtZW50SW5Sb3cgfHwgNCkpIC0xKSArICclKScpIDogKHRoaXMuc3R5bGVzPy5tb2JpbGVDb2x1bW4gPT09IDEgPyAnMTAwJScgOiAnNTAlJylcclxuICB9XHJcbiAgZ2V0U3VwcG9ydGluZ0NvbG9yKGJnQ29sb3I6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb21wbGVtZW50Q29sb3IoYmdDb2xvcik7XHJcbiAgfVxyXG4gIGdldFVzZXJJbmZvKCkge1xyXG4gIFxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VySW5mbyhcImVkYjkxNDJjLTVlMDMtNDAyZi1hYWM1LTU5ZjFhMWY3MzY3YVwiKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgdGhpcy5nZXRVc2VyT3JkZXJEZXRhaWxzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBnb1RvUGFuZWwocGFuZWw6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNpZGVQYW5lbFRhYiA9IHBhbmVsLnZhbHVlO1xyXG4gIH1cclxuICBnb0JhY2soKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFNpZGVQYW5lbFRhYiA9PSAnJykge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2lkZVBhbmVsVGFiID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdvVG9PcmRlckRldGFpbHMob3JkZXI6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNpZGVQYW5lbFRhYiA9ICdPcmRlcnNfRGV0YWlscyc7XHJcbiAgICB0aGlzLm9yZGVyRGV0YWlsc0RhdGEgPSBvcmRlcjtcclxuICB9XHJcbiAgYWRkTmV3QWRkcmVzcygpIHtcclxuICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQWRkcmVzc0NvbXBvbmVudCwge1xyXG4gICAgICAgIGhlaWdodDogJ2ZpdC1jb250ZW50JyxcclxuICAgICAgICB3aWR0aDogJzM1dncnLFxyXG4gICAgICAgIGRhdGE6IHsgZGF0YTogdGhpcy5kYXRhLCBhZGRyZXNzTGlzdDogdGhpcy51c2VyRGV0YWlscz8uYWRkcmVzc0RldGFpbHNMaXN0IH0gXHJcbiAgICAgIH1cclxuICAgICkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlKVxyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdC5wdXNoKHJlc3BvbnNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBnb1RvSG9tZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICB9XHJcbiAgZWRpdEFkZHJlc3MoaW5kZXg6IG51bWJlcikge1xyXG4gIH1cclxuICBkZWxldGVBZGRyZXNzKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICghIXRoaXMudXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy51c2VyRGV0YWlscy5hZGRyZXNzRGV0YWlsc0xpc3QgPSB0aGlzLnVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3QuZmlsdGVyKChfLCBpZHg6IG51bWJlcikgPT4gaWR4ICE9IGluZGV4KTtcclxuICAgICAgdGhpcy5zYXZlUHJvZmlsZSgpOyBcclxuICAgIH1cclxuICB9XHJcbiAgZWRpdFByb2ZpbGUoKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5vcGVuKFVzZXJCYXNpY0luZm9Db21wb25lbnQsIHtcclxuICAgICAgaGVpZ2h0OiAnNTB2aCcsXHJcbiAgICAgIHdpZHRoOiAnNDB2dycsXHJcbiAgICAgIGRhdGE6IHsgfVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICB9KVxyXG4gIH1cclxuICBsb2dvdXQoKSB7XHJcbiAgICBTd2FsLmZpcmUoe1xyXG4gICAgICBpY29uOiBcIndhcm5pbmdcIixcclxuICAgICAgdGl0bGU6IFwiVGhhbmtzIGZvciBjaG9vc2luZyB1c1wiLFxyXG4gICAgICB0ZXh0OiBcIllvdSB3aWxsIGJlIGxvZ2dlZCBvdXQgaW1tZWRpYXRlbHkhXCIsXHJcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIkxvZ291dFwiLFxyXG4gICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIkNhbmNlbFwiLFxyXG4gICAgICBjYW5jZWxCdXR0b25Db2xvcjogXCIjOTI4YzhjXCIsXHJcbiAgICB9KS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5pc0NvbmZpcm1lZCkge1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUoXCJ1c2VyXCIpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICAgICAgfSBcclxuICAgIH0pXHJcbiAgfVxyXG4gIHByaXZhdGUgc2F2ZVByb2ZpbGUoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICB1c2VySWQ6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgYWRkcmVzc0RldGFpbHNMaXN0OiB0aGlzLnVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3RcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UudXBkYXRlUHJvZmlsZShwYXlsb2FkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFwidXNlclwiLCByZXNwb25zZS5kYXRhKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0VGFiKHRhYjogVGFicykge1xyXG4gICAgdGhpcy50YWJzLmZvckVhY2goKHQpPT4gdC5zdGF0dXMgPSAodGFiLnZhbHVlID09IHQudmFsdWUpKTtcclxuICB9XHJcbiAgcHVibGljIHRvZ2dsZVNpZGVwYW5lbFRhYih0YWI6IFRhYnMpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTaWRlUGFuZWxUYWIgPSB0YWIudmFsdWU7XHJcbiAgICB0aGlzLnNpZGVQYW5lbExpc3QuZm9yRWFjaCgodCk9PiB0LnN0YXR1cyA9ICh0YWIudmFsdWUgPT0gdC52YWx1ZSkpO1xyXG4gIH1cclxuICBnZXQgZ2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyRGV0YWlscztcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcbiAgZ2V0IGdldFVzZXJQcm9maWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckRldGFpbHM/LnByb2ZpbGVQaWMgPyB0aGlzLnVzZXJEZXRhaWxzLnByb2ZpbGVQaWMgOiAodGhpcy51c2VyRGV0YWlscz8uZ2VuZGVyID09IFwiTUFMRVwiID8gJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vP3NpemU9MTAwJmlkPTEwODI5NiZmb3JtYXQ9cG5nJmNvbG9yPTAwMDAwMCcgOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS8/c2l6ZT0xMDAmaWQ9MTA4Mjk1JmZvcm1hdD1wbmcmY29sb3I9MDAwMDAwYXNzZXRzL2ZlbWFsZS1pY29uLnN2ZycpO1xyXG4gIH1cclxuICBnZXQgZ2V0Q2FyZEJHQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb21wbGVtZW50Q29sb3IodGhpcy5zdHlsZXM/LmJhY2tncm91bmQuY29sb3IgPz8gXCIjMDAwMDBcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbXBsZW1lbnRDb2xvcihoZXhDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIFxyXG4gICAgaWYgKGhleENvbG9yLmxlbmd0aCA8PSA0KVxyXG4gICAgICBoZXhDb2xvciA9IHRoaXMuY29udmVydEhFWChoZXhDb2xvcik7XHJcblxyXG4gICAgaGV4Q29sb3IgPSBoZXhDb2xvci5yZXBsYWNlKC9eIy8sICcnKTtcclxuXHJcbiAgICBsZXQgciA9IHBhcnNlSW50KGhleENvbG9yLnN1YnN0cmluZygwLCAyKSwgMTYpO1xyXG4gICAgbGV0IGcgPSBwYXJzZUludChoZXhDb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KTtcclxuICAgIGxldCBiID0gcGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDQsIDYpLCAxNik7XHJcblxyXG4gICAgciA9IDI1NSAtIHI7XHJcbiAgICBnID0gMjU1IC0gZztcclxuICAgIGIgPSAyNTUgLSBiO1xyXG5cclxuICAgIGxldCBjb21wSGV4ID0gYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtnLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xyXG5cclxuICAgIHJldHVybiBjb21wSGV4LnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29udmVydEhFWChoZXhDb2xvcjogc3RyaW5nKSB7XHJcbiAgICBoZXhDb2xvciA9IGhleENvbG9yLnJlcGxhY2UoL14jLywgJycpO1xyXG4gICAgbGV0IGNvbG9yID0gXCIjXCI7XHJcbiAgICBmb3IgKGxldCBpPTA7IGk8MzsgaSsrKVxyXG4gICAgICBjb2xvciArPSAoaGV4Q29sb3JbaV0gKyBoZXhDb2xvcltpKzFdKTtcclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcbiAgZ2V0IGN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQlVTSU5FU1NfQ09OU1RBTlRTLkNVUlJFTkNZO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0VXNlckluZm8oKSB7XHJcbiAgLy8gICBjb25zdCB1c2VySWQgPSBcImRjOTE1YmQ0LWZhNmYtNDQ2ZS1iY2UyLTQ0MGI2ODA0YWYyMlwiO1xyXG4gIC8vICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlckluZm8odXNlcklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gIC8vICAgICB0aGlzLnVzZXJEZXRhaWxzID0gcmVzcG9uc2UuZGF0YTtcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG59XHJcbiIsIjxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCI+PC9wLXRvYXN0PlxyXG5cclxuPHNlY3Rpb24gKm5nSWY9XCIhaXNMb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXggdy0xMDBcIiBzdHlsZT1cIm1hcmdpbjogYXV0bzsgb3ZlcmZsb3cteTogYXV0bztcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzPy5sYXlvdXRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW3N0eWxlLmhlaWdodC52aF09XCJpc01vYmlsZSA/ICcxMDAnOic5MCdcIiBbc3R5bGUuekluZGV4XT1cImlzTW9iaWxlID8gJzEwMDAwMCcgOiAnJ1wiIFtuZ0NsYXNzXT1cInsncG9zaXRpb24tYWJzb2x1dGUgdG9wLTAnOiBpc01vYmlsZX1cIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgcHJvZmlsZS1ib3hcIiBzdHlsZT1cIndpZHRoOiAyNSU7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGhlaWdodDogZml0LWNvbnRlbnQ7XCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJnZXRDYXJkQkdDb2xvclwiIFtzdHlsZS5vcmRlcl09XCJzdHlsZXM/LnN3YXAgPyAnMScgOiAnMCdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImdhcDogNXB4OyBoZWlnaHQ6IDcwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0VXNlclByb2ZpbGVcIiBhbHQ9XCJcIiBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGgtMTAwXCIgc3R5bGU9XCJ3aWR0aDogNzBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiIFtzdHlsZS5jb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCI+e3tnZXRVc2VyRGV0YWlscz8uY29udGFjdD8ubmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtd2VpZ2h0LW5vcm1hbCBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5zdGF5X3ByaW1hcnlfcG9ydHJhaXQ8L21hdC1pY29uPiA8c3Bhbj57e2dldFVzZXJEZXRhaWxzPy5jb250YWN0Py5tb2JpbGV9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwiZWRpdC1pY29uXCIgKGNsaWNrKT1cImVkaXRQcm9maWxlRGF0YSgnTU9CSUxFJylcIj5lZGl0PC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtd2VpZ2h0LW5vcm1hbCBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tYWlsX291dGxpbmU8L21hdC1pY29uPiA8c3Bhbj57e2dldFVzZXJEZXRhaWxzPy5jb250YWN0Py5lbWFpbH19PC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJlZGl0LWljb25cIiAoY2xpY2spPVwiZWRpdFByb2ZpbGVEYXRhKCdFTUFJTCcpXCI+ZWRpdDwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2Ygc2lkZVBhbmVsTGlzdDsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHktM1wiIHN0eWxlPVwiZ2FwOiA1cHg7IGN1cnNvcjogcG9pbnRlcjtcIiBbc3R5bGUuYm9yZGVyQm90dG9tXT1cImlkeCAhPSAoc2lkZVBhbmVsTGlzdC5sZW5ndGggLTEpID8gJzJweCBzb2xpZCAjY2NjY2NjNGQnIDogJydcIiBbbmdDbGFzc109XCJ7J3RhYi1zZWxlY3RlZCc6IHRhYi5zdGF0dXN9XCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVwYW5lbFRhYih0YWIpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiZ2V0U3VwcG9ydGluZ0NvbG9yKGdldENhcmRCR0NvbG9yKVwiPnt7dGFiLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgZm9udC13ZWlnaHQtbm9ybWFsXCIgW3N0eWxlLmNvbG9yXT1cImdldFN1cHBvcnRpbmdDb2xvcihnZXRDYXJkQkdDb2xvcilcIj57e3RhYi52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlZGl0LWJ0blwiIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCIgW3N0eWxlLmNvbG9yXT1cImdldFN1cHBvcnRpbmdDb2xvcihnZXRDYXJkQkdDb2xvcilcIiAoY2xpY2spPVwiZWRpdFByb2ZpbGUoKVwiPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibG9nb3V0LWJ0blwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZ2V0U3VwcG9ydGluZ0NvbG9yKGdldENhcmRCR0NvbG9yKVwiIFtzdHlsZS5jb2xvcl09XCJnZXRDYXJkQkdDb2xvclwiIChjbGljayk9XCJsb2dvdXQoKVwiPkxvZ291dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcmRlcnMtc2VjXCIgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCIgW3N0eWxlLm9yZGVyXT1cInN0eWxlcz8uc3dhcCA/ICcwJyA6ICcxJ1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWxlY3RlZFNpZGVQYW5lbFRhYlwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ09yZGVycydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiT3JkZXJTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidBZGRyZXNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJBZGRyZXNzU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQWNjb3VudCBEZXRhaWxzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJBY2NvdW50c1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0xvZ291dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTG9nb3V0U2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT3JkZXJzX0RldGFpbHMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIk9yZGVyRGV0YWlsc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInV2lzaGxpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIldpc2hsaXN0RGV0YWlsc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIiBzdHlsZT1cImhlaWdodDogODB2aDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbW9iaWxlQWNjb3VudEhlYWRlclwiIHN0eWxlPVwiZ2FwOiAxMHB4OyBoZWlnaHQ6IDUwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+a2V5Ym9hcmRfYmFja3NwYWNlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxoND5NeSB7eyFzZWxlY3RlZFNpZGVQYW5lbFRhYj8ubGVuZ3RoID8gJ0FjY291bnQnIDogc2VsZWN0ZWRTaWRlUGFuZWxUYWI/LnJlcGxhY2VBbGwoJ18nLCAnICcpfX08L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VsZWN0ZWRTaWRlUGFuZWxUYWJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIicnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ0b3Atc2VjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRVc2VyUHJvZmlsZVwiIGFsdD1cIlwiIGNsYXNzPVwicm91bmRlZC1jaXJjbGVcIiBzdHlsZT1cIndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tnZXRVc2VyRGV0YWlscz8uY29udGFjdD8ubmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9udC13ZWlnaHQtbm9ybWFsXCI+PG1hdC1pY29uPnN0YXlfcHJpbWFyeV9wb3J0cmFpdDwvbWF0LWljb24+IDxzcGFuPnt7Z2V0VXNlckRldGFpbHM/LmNvbnRhY3Q/Lm1vYmlsZX19PC9zcGFuPjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtd2VpZ2h0LW5vcm1hbFwiPjxtYXQtaWNvbj5tYWlsX291dGxpbmU8L21hdC1pY29uPiA8c3Bhbj57e2dldFVzZXJEZXRhaWxzPy5jb250YWN0Py5lbWFpbH19PC9zcGFuPjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImxpc3Qtc2VjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiBzaWRlUGFuZWxMaXN0OyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB5LTNcIiBzdHlsZT1cImdhcDogNXB4OyBjdXJzb3I6IHBvaW50ZXI7XCIgW3N0eWxlLmJvcmRlckJvdHRvbV09XCJpZHggIT0gKHNpZGVQYW5lbExpc3QubGVuZ3RoIC0xKSA/ICcycHggc29saWQgI2NjY2NjYzRkJyA6ICcnXCIgW25nQ2xhc3NdPVwieyd0YWItc2VsZWN0ZWQnOiB0YWIuc3RhdHVzfVwiIChjbGljayk9XCJnb1RvUGFuZWwodGFiKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3RhYi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgZm9udC13ZWlnaHQtbm9ybWFsXCI+e3t0YWIudmFsdWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT3JkZXJzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJPcmRlclNlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0FkZHJlc3MnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkFkZHJlc3NTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidBY2NvdW50IERldGFpbHMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkFjY291bnRzU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInTG9nb3V0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJMb2dvdXRTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidPcmRlcnNfRGV0YWlscydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiT3JkZXJEZXRhaWxzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI09yZGVyU2VjdGlvbj5cclxuICAgIDxoMSBjbGFzcz1cIm9ubHlEZXNrdG9wXCI+TXkgT3JkZXJzPC9oMT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXktMyBvcmRlcmxpc3Qgb25seURlc2t0b3BcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRhYlwiIFtuZ0NsYXNzXT1cInsnZmlsdGVyLXRhYi1zZWxlY3RlZCc6IHRhYi5zdGF0dXN9XCIgKGNsaWNrKT1cInNlbGVjdFRhYih0YWIpXCI+e3t0YWIudmFsdWV9fTwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwib3JkZXItbGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcmRlckxpc3Q/Lmxlbmd0aDsgZWxzZSBzaG93RW1wdHlTY3JlZW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZGVyXCIgW3N0eWxlLndpZHRoXT1cImdldFByb2R1Y3RXaWR0aFwiICpuZ0Zvcj1cImxldCBvcmRlciBvZiBvcmRlckxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJPcmRlckNhcmQ7IGNvbnRleHQ6IHtkYXRhOiBvcmRlcn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93RW1wdHlTY3JlZW4+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZW1wdHktY2FydCBtLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQ/LmltYWdlPy51cmxcIiBbYWx0XT1cImNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGV4dCBvZiBjb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgW25nQ2xhc3NdPVwieydoZWFkaW5nLW1lZGl1bSc6IHRleHQubGFiZWwgPT0gJ0hlYWRpbmcnLCAnZGVzY3JpcHRpb24nOiB0ZXh0LmxhYmVsID09ICdUZXh0J31cIj57eyB0ZXh0LnZhbHVlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjT3JkZXJEZXRhaWxzPlxyXG4gICAgPHNpbXBvLW9yZGVyLWRldGFpbHMgW2RhdGFdPVwiZGF0YVwiIFtvcmRlckRldGFpbERhdGFdPVwib3JkZXJEZXRhaWxzRGF0YVwiIChnb0JhY2tFbWl0dGVyKT1cInNlbGVjdGVkU2lkZVBhbmVsVGFiID0gJ09yZGVycydcIj48L3NpbXBvLW9yZGVyLWRldGFpbHM+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkcmVzc1NlY3Rpb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTIgb25seURlc2t0b3BcIj5cclxuICAgICAgICA8aDE+TXkgQWRkcmVzczwvaDE+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZHJlc3MtYnRuXCIgKGNsaWNrKT1cImFkZE5ld0FkZHJlc3MoKVwiPnt7ZGF0YT8uYWN0aW9uPy5idXR0b25zPy5bMF0/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtbGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VyRGV0YWlscz8uYWRkcmVzc0RldGFpbHNMaXN0Py5sZW5ndGg7IGVsc2Ugc2hvd0VtcHR5QWRkcmVzc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhZGRyZXNzIG9mIHVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3Q7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3NcIiBbc3R5bGUud2lkdGhdPVwiZ2V0UHJvZHVjdFdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgbXItMlwiPnt7YWRkcmVzcy5yZWNlaXZlck5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkcmVzcy10eXBlXCI+e3thZGRyZXNzLmFkZHJlc3NUeXBlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1kZXRcIj57e2FkZHJlc3MuYWRkcmVzc0xpbmUxfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QaG9uZTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtcGhvbmVcIj57e2FkZHJlc3MucmVjZWl2ZXJQaG9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImVkaXRBZGRyZXNzKGlkeClcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJkZWxldGVBZGRyZXNzKGlkeClcIj5kZWxldGVfb3V0bGluZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93RW1wdHlBZGRyZXNzPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImVtcHR5LWNhcnQgbS1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9pLnBvc3RpbWcuY2MvMjVyVDhXd3AvNjIxNjc5Ny5qcGdcIiBbYWx0XT1cImNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0ZXh0IG9mIGNvbnRlbnQ/LmlucHV0VGV4dFwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+Tm8gYWRkcmVzcyBhZGRlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5QbGVhc2UgcHJvdmlkZSBhZGRyZXNzIGZvciBlYXN5IGRlbGl2ZXJ5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjQWNjb3VudHNTZWN0aW9uPlxyXG4gICAgPGgxIGNsYXNzPVwib25seURlc2t0b3BcIj5NeSBBY2NvdW50czwvaDE+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjTG9nb3V0U2VjdGlvbj5cclxuICAgIDxoMSBjbGFzcz1cIm9ubHlEZXNrdG9wXCI+TG9nb3V0PC9oMT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNPcmRlckNhcmQgbGV0LW9yZGVyPVwiZGF0YVwiPlxyXG4gICAgPGRpdiAoY2xpY2spPVwiZ29Ub09yZGVyRGV0YWlscyhvcmRlcilcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LW5vcm1hbFwiPnt7b3JkZXIub3JkZXJOdW19fTwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmRfaW9zPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlkZGxlIG15LTJcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3tvcmRlci5jcmVhdGVkVGltZVN0YW1wIHwgZGF0ZTogJ21lZGl1bSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tvcmRlcj8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8uYnJhbmROYW1lIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LW5vcm1hbFwiPkFtb3VudDogPHNwYW4+IDxzcGFuIFtpbm5lckhUTUxdPVwiY3VycmVuY3lcIj48L3NwYW4+IHt7IG9yZGVyLmJpbGxEZXRhaWxzLnRvdGFsTmV0VmFsdWUgfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBbYXR0ci5jbGFzc109XCJvcmRlcj8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8ub3JkZXJTdGF0dXMgKyAnIG9yZGVyLXN0YXR1cydcIj57eyBvcmRlcj8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8ub3JkZXJTdGF0dXMucmVwbGFjZUFsbChcIl9cIiwgXCIgXCIpIHwgdXBwZXJjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjV2lzaGxpc3REZXRhaWxzPlxyXG4gICAgPGgxIGNsYXNzPVwib25seURlc2t0b3BcIj5NeSBXaXNobGlzdDwvaDE+XHJcbiAgICA8ZGl2IGNsYXNzPVwid2lzaGxpc3QtbGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygd2lzaGxpc3REYXRhOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBpdGVtLXBhcmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiIHN0eWxlPVwicGFkZGluZzogMHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgaC0xMDAgaXRlbS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaC0yM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIGhlYWRpbmctbGFyZ2VcIj57e2l0ZW0uaXRlbU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7e2l0ZW0uZGlzY291bnRlZFByaWNlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcXVhbnRpdHlcIiAqbmdJZj1cIml0ZW0ucXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvRmF2KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKm5nSWY9XCIhaXRlbS5xdWFudGl0eVwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnQUREJylcIj5BZGQgdG8gUXVhbnRpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKGNsaWNrKT1cIm1vdmVUb0NhcnQoaXRlbSlcIj5Nb3ZlIHRvIENhcnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBpdGVtUHJpY2VcIiBzdHlsZT1cIm1hcmdpbi10b3A6IGF1dG87IHJpZ2h0OiA1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcHJpY2VcIiAqbmdJZj1cIml0ZW0ucXVhbnRpdHlcIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soaXRlbS5kaXNjb3VudGVkUHJpY2UpICogaXRlbS5xdWFudGl0eX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRlbGV0ZS1pdGVtXCIgKGNsaWNrKT1cImRlbGV0ZUZyb21XaGlzbGlzdChpdGVtKVwiPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0VtcHR5V2lzaGxpc3RTY3JlZW4+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJlbXB0eS1jYXJ0IG0tYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY29udGVudD8uaW1hZ2U/LnVybFwiIFthbHRdPVwiY29udGVudD8uaW1hZ2U/LmFsdFRleHRcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0ZXh0IG9mIGNvbnRlbnQ/LmlucHV0VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtuZ0NsYXNzXT1cInsnaGVhZGluZy1tZWRpdW0nOiB0ZXh0LmxhYmVsID09ICdIZWFkaW5nJywgJ2Rlc2NyaXB0aW9uJzogdGV4dC5sYWJlbCA9PSAnVGV4dCd9XCI+e3sgdGV4dC52YWx1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gICAgd2lkdGg6ICcxMDAlJyxcclxuICAgIGhlaWdodDogJzQwdmgnLFxyXG4gICAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICAgJ3JpZ2h0JzogJzVweCdcclxuICB9XCI+XHJcbiAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPiJdfQ==
|
325
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3VzZXItcHJvZmlsZS91c2VyLXByb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvdXNlci1wcm9maWxlL3VzZXItcHJvZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUkxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUEyQnRGLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxXQUFXO0lBRW5ELFlBQ21CLE1BQWMsRUFDZCxhQUE0QixFQUM1QixXQUF3QixFQUN4QixjQUFxQyxFQUNyQyxXQUF3QixFQUN4QixTQUFvQixFQUNwQixhQUE0QixFQUM1QixjQUE4QjtRQUUvQyxLQUFLLEVBQUUsQ0FBQztRQVRTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFTakQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUlwQix5QkFBb0IsR0FBa0IsUUFBUSxDQUFDO1FBQy9DLGdCQUFXLEdBQWdCLElBQUksQ0FBQztRQUNoQyxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUd0QixrQkFBYSxHQUFXO1lBQzdCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO1lBQ3hGLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1lBQzFGLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1lBQzNGLGlIQUFpSDtZQUNqSCwyRkFBMkY7U0FDNUYsQ0FBQztRQUNLLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsY0FBUyxHQUFtQixFQUFFLENBQUM7UUFDL0IsaUJBQVksR0FBbUIsRUFBRSxDQUFDO0lBeEJ6QyxDQUFDO0lBMEJELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBVSxDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdDQUFnQyxFQUFFLENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsbUJBQW1CO1FBQ2pCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsWUFBWSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDL0UsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTTtZQUNsQyxhQUFhLEVBQUUsSUFBSTtZQUNuQixVQUFVLEVBQUUsSUFBSTtZQUNoQixRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxHQUFHO1NBQ2hCLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUMsRUFBRTtZQUVqRSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNO1lBQ1QsT0FBTztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUFxQjtRQUN0QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRixXQUFXLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtZQUUzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBa0IsRUFBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFBQSxDQUFDO1FBQ3RHLENBQUMsQ0FBQTtRQUNELFdBQVcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxPQUFxQjtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDbkIsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRSxXQUFXLENBQUMsU0FBUyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDNUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRTtvQkFDekUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWtCLEVBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyRyxDQUFDLENBQUE7WUFDSCxDQUFDLENBQUE7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZILENBQUMsQ0FBQTtRQUNELFdBQVcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSw2QkFBNkIsRUFBRSxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFrQixFQUFFLElBQXlCO1FBQ3BELElBQUksSUFBSSxJQUFJLEtBQUs7WUFDZixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQzs7WUFFbkIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUF3QjtRQUM1Qyx1Q0FBdUM7UUFDdkMseUJBQXlCO1FBQ3pCLFlBQVk7UUFDWix5QkFBeUI7UUFDekIsK0NBQStDO1FBQy9DLDZCQUE2QjtRQUM3QixzQkFBc0I7UUFDdEIsd0NBQXdDO1FBQ3hDLG9EQUFvRDtRQUNwRCxxQkFBcUI7UUFDckIsa0NBQWtDO1FBQ2xDLFFBQVE7UUFDUixPQUFPO1FBQ1AsZUFBZTtRQUNmLDhDQUE4QztRQUM5QyxJQUFJO1FBQ0osMEJBQTBCO1FBQzFCLGdEQUFnRDtRQUNoRCw2QkFBNkI7UUFDN0Isb0JBQW9CO1FBQ3BCLHdDQUF3QztRQUN4QyxvREFBb0Q7UUFDcEQscUJBQXFCO1FBQ3JCLGtDQUFrQztRQUNsQyxRQUFRO1FBQ1IsT0FBTztRQUNQLGdCQUFnQjtRQUNoQixnREFBZ0Q7UUFDaEQsSUFBSTtRQUVKLG9CQUFvQjtRQUNwQix3Q0FBd0M7UUFDeEMsZ0RBQWdEO1FBQ2hELGlCQUFpQjtRQUNqQixrREFBa0Q7UUFDbEQsK0NBQStDO1FBQy9DLE1BQU07UUFDTixJQUFJO1FBQ0osd0VBQXdFO1FBQ3hFLG1EQUFtRDtRQUNuRCxLQUFLO0lBQ1AsQ0FBQztJQUNELElBQUksZUFBZTtRQUVqQixPQUFPLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDM0wsQ0FBQztJQUNELGtCQUFrQixDQUFDLE9BQWU7UUFDaEMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELFdBQVc7UUFFVCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBQyxFQUFFO1lBQzlGLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEMsTUFBTSxFQUFFLGFBQWE7WUFDckIsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtTQUM3RSxDQUNGLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFDLEVBQUU7WUFDcEMsSUFBSSxRQUFRO2dCQUNWLElBQUksQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFhO0lBQ3pCLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQztZQUNwSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDMUMsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxFQUFHO1NBQ1YsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQVUsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQztZQUNSLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLHdCQUF3QjtZQUMvQixJQUFJLEVBQUUscUNBQXFDO1lBQzNDLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsaUJBQWlCLEVBQUUsUUFBUTtZQUMzQixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLGlCQUFpQixFQUFFLFNBQVM7U0FDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO1lBQ2xCLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDTyxXQUFXO1FBQ2pCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTTtZQUNoQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFrQjtTQUN6RCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFDLEVBQUU7WUFDakUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxTQUFTLENBQUMsR0FBUztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNNLGtCQUFrQixDQUFDLEdBQVM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDLENBQUMsMEZBQTBGLENBQUMsQ0FBQztJQUMvUSxDQUFDO0lBQ0QsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsUUFBZ0I7UUFFekMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDdEIsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUVaLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUV4SCxPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ08sVUFBVSxDQUFDLFFBQWdCO1FBQ2pDLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEIsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDOzhHQTlSVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwySUFKdEIsQ0FBQyxjQUFjLENBQUMsaURDdEQzQixtemdCQXNRd0IsMnFKRC9OcEIsWUFBWSw4MkJBQ1osT0FBTywwSUFFUCxvQkFBb0IsZ05BRXBCLG1CQUFtQixtRkFDbkIsY0FBYyxnRkFDZCxxQkFBcUIsMktBQ3JCLHVCQUF1QiwrQkFDdkIsbUJBQW1CLDBHQUNuQiwwQkFBMEIsK0ZBRTFCLGVBQWUsa0ZBQ2YsV0FBVzs7MkZBTUYsb0JBQW9CO2tCQXZCaEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCx3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsV0FBVztxQkFDZCxhQUNVLENBQUMsY0FBYyxDQUFDO2dSQW1CaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhcnQsIFVzZXJEZXRhaWxzIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2NhcnQubW9kYWwnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IFByb2ZpbGVDb250ZW50TW9kYWwsIFByb2ZpbGVTdHlsZXNNb2RhbCwgUmVzcG9uc2VEYXRhLCBUYWJzLCBVc2VyUHJvZmlsZU1vZGFsIH0gZnJvbSAnLi91c2VyLXByb2ZpbGUubW9kYWwnO1xyXG5pbXBvcnQgeyBPcmRlckl0ZW0gfSBmcm9tICcuLi8uLi9zdHlsZXMvb3JkZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPcmRlckRldGFpbHNDb21wb25lbnQgfSBmcm9tIFwiLi4vb3JkZXItZGV0YWlscy9vcmRlci1kZXRhaWxzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQWRkcmVzc0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJvcmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ib3JkZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IFVzZXJCYXNpY0luZm9Db21wb25lbnQgfSBmcm9tICcuLi91c2VyLWJhc2ljLWluZm8vdXNlci1iYXNpYy1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXVzZXItcHJvZmlsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBPcmRlckRldGFpbHNDb21wb25lbnQsXHJcbiAgICBOZ3hTa2VsZXRvbkxvYWRlck1vZHVsZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIENvbG9yRGlyZWN0aXZlLFxyXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxyXG4gICAgVG9hc3RNb2R1bGVcclxuXSxcclxucHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91c2VyLXByb2ZpbGUuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJQcm9maWxlQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZGF0YT86IFVzZXJQcm9maWxlTW9kYWw7XHJcbiAgQElucHV0KCkgaW5kZXg/IDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGVkaXQ/IDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdHlsZXM/OiBQcm9maWxlU3R5bGVzTW9kYWw7XHJcbiAgY29udGVudD86IFByb2ZpbGVDb250ZW50TW9kYWw7XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZFNpZGVQYW5lbFRhYjogc3RyaW5nIHwgbnVsbCA9IFwiT3JkZXJzXCI7XHJcbiAgcHVibGljIHVzZXJEZXRhaWxzOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIGFkZHJlc3NMaXN0OiBhbnkgPSBbXTtcclxuICBwdWJsaWMgb3JkZXJEZXRhaWxzRGF0YTogYW55O1xyXG5cclxuICBwdWJsaWMgc2lkZVBhbmVsTGlzdDogVGFic1tdID0gW1xyXG4gICAgeyB2YWx1ZTogXCJPcmRlcnNcIiwgaWNvbjogXCJhY2Nlc3NpYmlsaXR5XCIsIHN0YXR1czogdHJ1ZSwgbGFiZWw6IFwiSGVhZGluZ1wiLCB1cmw6ICdvcmRlcicgfSxcclxuICAgIHsgdmFsdWU6IFwiQWRkcmVzc1wiLCBpY29uOiBcImxvY2F0aW9uX29uXCIsIHN0YXR1czogZmFsc2UsIGxhYmVsOiBcIkhlYWRpbmdcIiwgdXJsOiAnYWRkcmVzcycgfSxcclxuICAgIHsgdmFsdWU6IFwiV2lzaGxpc3RcIiwgaWNvbjogXCJsb2NhdGlvbl9vblwiLCBzdGF0dXM6IGZhbHNlLCBsYWJlbDogXCJIZWFkaW5nXCIsIHVybDogJ2FkZHJlc3MnIH0sXHJcbiAgICAvLyB7IHZhbHVlOiBcIkFjY291bnQgRGV0YWlsc1wiLCBpY29uOiBcInN1cGVydmlzZWRfdXNlcl9jaXJjbGVcIiwgc3RhdHVzOiBmYWxzZSwgbGFiZWw6IFwiSGVhZGluZ1wiLCB1cmw6ICdhY2NvdW50JyB9LFxyXG4gICAgLy8geyB2YWx1ZTogXCJMb2dvdXRcIiwgaWNvbjogXCJ0cmFuc2l0X2VudGVyZXhpdFwiLCBzdGF0dXM6IGZhbHNlLCBsYWJlbDogXCJIZWFkaW5nXCIsIHVybDogJycgfVxyXG4gIF07XHJcbiAgcHVibGljIHRhYnM6IFRhYnNbXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlckxpc3Q6IE9yZGVyZWRJdGVtc1tdID0gW107XHJcbiAgcHVibGljIHdpc2hsaXN0RGF0YTogT3JkZXJlZEl0ZW1zW10gPSBbXTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gICAgXHJcbiAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgIGlmICghdGhpcy51c2VyRGV0YWlscykge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3InLCBkZXRhaWw6ICdQbGVhc2UgbG9naW4gdG8gYWNjZXNzIHByb2ZpbGUnIH0pO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5nZXRVc2VyT3JkZXJEZXRhaWxzKCk7XHJcbiAgICB0aGlzLmdldFVzZXJXaXNsaXN0RGV0YWlscygpO1xyXG4gIH1cclxuICBnZXRVc2VyT3JkZXJEZXRhaWxzKCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICBcIm9yZGVyU3RhdHVzXCI6IG51bGwsXHJcbiAgICAgIFwicGxhdGZvcm1cIjogbnVsbCxcclxuICAgICAgXCJwYWdlTm9cIjogMCxcclxuICAgICAgXCJwYWdlU2l6ZVwiOiAxMDBcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlck9yZGVycyhwYXlsb2FkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICBcclxuICAgICAgdGhpcy5vcmRlckxpc3QgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0VXNlcldpc2xpc3REZXRhaWxzKCkge1xyXG4gICAgY29uc3QgdXNlcklkID0gdGhpcy51c2VyRGV0YWlscz8udXNlcklkO1xyXG4gICAgaWYgKCF1c2VySWQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlcldpc2hsaXN0KHVzZXJJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgdGhpcy53aXNobGlzdERhdGEgPSByZXNwb25zZS5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcztcclxuICAgIH0pXHJcbiAgfVxyXG4gIGRlbGV0ZUZyb21XaGlzbGlzdChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3QuaXRlbUlkKTtcclxuICAgIHRyYW5zYWN0aW9uLm9uc3VjY2VzcyA9ICgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMud2lzaGxpc3REYXRhID0gdGhpcy53aXNobGlzdERhdGEuZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpPT4gaXRlbS5pdGVtSWQgIT0gcHJvZHVjdC5pdGVtSWQpOztcclxuICAgIH1cclxuICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXJyb3JcIik7XHJcbiAgICB9XHJcbiAgfSBcclxuICBtb3ZlVG9DYXJ0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgaWYgKCFwcm9kdWN0LnF1YW50aXR5KVxyXG4gICAgICBwcm9kdWN0LnF1YW50aXR5ID0gMTtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9DYXJ0KHByb2R1Y3QpO1xyXG4gICAgdHJhbnNhY3Rpb24ub25zdWNjZXNzID0gKHdpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3QuaXRlbUlkKS5vbnN1Y2Nlc3MgPSAod2lzbGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzXCIpO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0KS5vbnN1Y2Nlc3MgPSAoY2FydFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndpc2hsaXN0RGF0YSA9IHRoaXMud2lzaGxpc3REYXRhLmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IGl0ZW0uaXRlbUlkICE9IHByb2R1Y3QuaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnTW92ZSB0byBjYXJ0JywgZGV0YWlsOiAnSXRlbSBzdWNjZXNzZnVsbHkgbW92ZWQgdG8gY2FydCcgfSk7XHJcbiAgICB9XHJcbiAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gKHdpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0ZhaWx1cmUnLCBkZXRhaWw6ICdGYWlsZWQgdG8gbW92ZSBpdGVtIHRvIGNhcnQnIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBhZGRUb0ZhdihpdGVtOiBPcmRlcmVkSXRlbXMsIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKVxyXG4gICAgICBpdGVtLnF1YW50aXR5ICs9IDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgLT0gMTtcclxuICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkT3JkZXJlZEl0ZW1Ub0Zhdm91cml0ZShpdGVtKTtcclxuICB9XHJcbiAgYXN5bmMgZWRpdFByb2ZpbGVEYXRhKHR5cGU6ICdNT0JJTEUnIHwgJ0VNQUlMJykge1xyXG4gICAgLy8gVE9ETzogU2hvdWxkIGJlIE9UUCBiYXNlZCB2YWxpZGF0aW9uXHJcbiAgICAvLyBpZiAoIXRoaXMudXNlckRldGFpbHMpXHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIGlmICh0eXBlID09IFwiRU1BSUxcIikge1xyXG4gICAgLy8gICBjb25zdCB7IHZhbHVlOiBlbWFpbCB9ID0gYXdhaXQgU3dhbC5maXJlKHtcclxuICAgIC8vICAgICB0aXRsZTogXCJVc2VyIERldGFpbHNcIixcclxuICAgIC8vICAgICBpbnB1dDogXCJlbWFpbFwiLFxyXG4gICAgLy8gICAgIGlucHV0TGFiZWw6IFwiWW91ciBlbWFpbCBhZGRyZXNzXCIsXHJcbiAgICAvLyAgICAgaW5wdXRQbGFjZWhvbGRlcjogXCJFbnRlciB5b3VyIGVtYWlsIGFkZHJlc3NcIixcclxuICAgIC8vICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgLy8gICAgICAgdGl0bGU6ICdzd2FsMi10aXRsZS1sZWZ0J1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgaWYgKGVtYWlsKVxyXG4gICAgLy8gICAgIHRoaXMudXNlckRldGFpbHMuY29udGFjdC5lbWFpbCA9IGVtYWlsO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHR5cGUgPT0gXCJNT0JJTEVcIikge1xyXG4gICAgLy8gICBjb25zdCB7IHZhbHVlOiBtb2JpbGUgfSA9IGF3YWl0IFN3YWwuZmlyZSh7XHJcbiAgICAvLyAgICAgdGl0bGU6IFwiVXNlciBEZXRhaWxzXCIsXHJcbiAgICAvLyAgICAgaW5wdXQ6IFwidGVsXCIsXHJcbiAgICAvLyAgICAgaW5wdXRMYWJlbDogXCJZb3VyIG1vYmlsZSBudW1iZXJcIixcclxuICAgIC8vICAgICBpbnB1dFBsYWNlaG9sZGVyOiBcIkVudGVyIHlvdXIgbW9iaWxlIG51bWJlclwiLFxyXG4gICAgLy8gICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAvLyAgICAgICB0aXRsZTogJ3N3YWwyLXRpdGxlLWxlZnQnXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gICBpZiAobW9iaWxlKVxyXG4gICAgLy8gICAgIHRoaXMudXNlckRldGFpbHMuY29udGFjdC5tb2JpbGUgPSBtb2JpbGU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gY29uc3QgcGF5bG9hZCA9IHtcclxuICAgIC8vICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgLy8gICBcImJ1c2luZXNzSWRcIjogdGhpcy51c2VyRGV0YWlscz8uYnVzaW5lc3NJZCxcclxuICAgIC8vICAgXCJjb250YWN0XCI6IHtcclxuICAgIC8vICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgIC8vICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWxcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5yZXN0U2VydmljZS51cGRhdGVQcm9maWxlKHBheWxvYWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoXCJ1c2VyXCIsIHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgLy8gfSlcclxuICB9XHJcbiAgZ2V0IGdldFByb2R1Y3RXaWR0aCgpIHtcclxuICAgIFxyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID4gNDc1ID8gKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNSA/ICcyNSUnIDogJ2NhbGMoJyArICgoMTAwIC8gKHRoaXMuc3R5bGVzPy5lbGVtZW50SW5Sb3cgfHwgNCkpIC0xKSArICclKScpIDogKHRoaXMuc3R5bGVzPy5tb2JpbGVDb2x1bW4gPT09IDEgPyAnMTAwJScgOiAnNTAlJylcclxuICB9XHJcbiAgZ2V0U3VwcG9ydGluZ0NvbG9yKGJnQ29sb3I6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb21wbGVtZW50Q29sb3IoYmdDb2xvcik7XHJcbiAgfVxyXG4gIGdldFVzZXJJbmZvKCkge1xyXG4gIFxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VySW5mbyhcImVkYjkxNDJjLTVlMDMtNDAyZi1hYWM1LTU5ZjFhMWY3MzY3YVwiKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgdGhpcy5nZXRVc2VyT3JkZXJEZXRhaWxzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBnb1RvUGFuZWwocGFuZWw6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNpZGVQYW5lbFRhYiA9IHBhbmVsLnZhbHVlO1xyXG4gIH1cclxuICBnb0JhY2soKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFNpZGVQYW5lbFRhYiA9PSAnJykge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2lkZVBhbmVsVGFiID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdvVG9PcmRlckRldGFpbHMob3JkZXI6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNpZGVQYW5lbFRhYiA9ICdPcmRlcnNfRGV0YWlscyc7XHJcbiAgICB0aGlzLm9yZGVyRGV0YWlsc0RhdGEgPSBvcmRlcjtcclxuICB9XHJcbiAgYWRkTmV3QWRkcmVzcygpIHtcclxuICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQWRkcmVzc0NvbXBvbmVudCwge1xyXG4gICAgICAgIGhlaWdodDogJ2ZpdC1jb250ZW50JyxcclxuICAgICAgICB3aWR0aDogJzM1dncnLFxyXG4gICAgICAgIGRhdGE6IHsgZGF0YTogdGhpcy5kYXRhLCBhZGRyZXNzTGlzdDogdGhpcy51c2VyRGV0YWlscz8uYWRkcmVzc0RldGFpbHNMaXN0IH0gXHJcbiAgICAgIH1cclxuICAgICkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlKVxyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdC5wdXNoKHJlc3BvbnNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBnb1RvSG9tZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICB9XHJcbiAgZWRpdEFkZHJlc3MoaW5kZXg6IG51bWJlcikge1xyXG4gIH1cclxuICBkZWxldGVBZGRyZXNzKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICghIXRoaXMudXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy51c2VyRGV0YWlscy5hZGRyZXNzRGV0YWlsc0xpc3QgPSB0aGlzLnVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3QuZmlsdGVyKChfLCBpZHg6IG51bWJlcikgPT4gaWR4ICE9IGluZGV4KTtcclxuICAgICAgdGhpcy5zYXZlUHJvZmlsZSgpOyBcclxuICAgIH1cclxuICB9XHJcbiAgZWRpdFByb2ZpbGUoKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5vcGVuKFVzZXJCYXNpY0luZm9Db21wb25lbnQsIHtcclxuICAgICAgaGVpZ2h0OiAnNTB2aCcsXHJcbiAgICAgIHdpZHRoOiAnNDB2dycsXHJcbiAgICAgIGRhdGE6IHsgfVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICB9KVxyXG4gIH1cclxuICBsb2dvdXQoKSB7XHJcbiAgICBTd2FsLmZpcmUoe1xyXG4gICAgICBpY29uOiBcIndhcm5pbmdcIixcclxuICAgICAgdGl0bGU6IFwiVGhhbmtzIGZvciBjaG9vc2luZyB1c1wiLFxyXG4gICAgICB0ZXh0OiBcIllvdSB3aWxsIGJlIGxvZ2dlZCBvdXQgaW1tZWRpYXRlbHkhXCIsXHJcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIkxvZ291dFwiLFxyXG4gICAgICBjYW5jZWxCdXR0b25UZXh0OiBcIkNhbmNlbFwiLFxyXG4gICAgICBjYW5jZWxCdXR0b25Db2xvcjogXCIjOTI4YzhjXCIsXHJcbiAgICB9KS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5pc0NvbmZpcm1lZCkge1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUoXCJ1c2VyXCIpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICAgICAgfSBcclxuICAgIH0pXHJcbiAgfVxyXG4gIHByaXZhdGUgc2F2ZVByb2ZpbGUoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICB1c2VySWQ6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgYWRkcmVzc0RldGFpbHNMaXN0OiB0aGlzLnVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3RcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UudXBkYXRlUHJvZmlsZShwYXlsb2FkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFwidXNlclwiLCByZXNwb25zZS5kYXRhKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0VGFiKHRhYjogVGFicykge1xyXG4gICAgdGhpcy50YWJzLmZvckVhY2goKHQpPT4gdC5zdGF0dXMgPSAodGFiLnZhbHVlID09IHQudmFsdWUpKTtcclxuICB9XHJcbiAgcHVibGljIHRvZ2dsZVNpZGVwYW5lbFRhYih0YWI6IFRhYnMpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTaWRlUGFuZWxUYWIgPSB0YWIudmFsdWU7XHJcbiAgICB0aGlzLnNpZGVQYW5lbExpc3QuZm9yRWFjaCgodCk9PiB0LnN0YXR1cyA9ICh0YWIudmFsdWUgPT0gdC52YWx1ZSkpO1xyXG4gIH1cclxuICBnZXQgZ2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyRGV0YWlscztcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcbiAgZ2V0IGdldFVzZXJQcm9maWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckRldGFpbHM/LnByb2ZpbGVQaWMgPyB0aGlzLnVzZXJEZXRhaWxzLnByb2ZpbGVQaWMgOiAodGhpcy51c2VyRGV0YWlscz8uZ2VuZGVyID09IFwiTUFMRVwiID8gJ2h0dHBzOi8vaW1nLmljb25zOC5jb20vP3NpemU9MTAwJmlkPTEwODI5NiZmb3JtYXQ9cG5nJmNvbG9yPTAwMDAwMCcgOiAnaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS8/c2l6ZT0xMDAmaWQ9MTA4Mjk1JmZvcm1hdD1wbmcmY29sb3I9MDAwMDAwYXNzZXRzL2ZlbWFsZS1pY29uLnN2ZycpO1xyXG4gIH1cclxuICBnZXQgZ2V0Q2FyZEJHQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb21wbGVtZW50Q29sb3IodGhpcy5zdHlsZXM/LmJhY2tncm91bmQuY29sb3IgPz8gXCIjMDAwMDBcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbXBsZW1lbnRDb2xvcihoZXhDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIFxyXG4gICAgaWYgKGhleENvbG9yLmxlbmd0aCA8PSA0KVxyXG4gICAgICBoZXhDb2xvciA9IHRoaXMuY29udmVydEhFWChoZXhDb2xvcik7XHJcblxyXG4gICAgaGV4Q29sb3IgPSBoZXhDb2xvci5yZXBsYWNlKC9eIy8sICcnKTtcclxuXHJcbiAgICBsZXQgciA9IHBhcnNlSW50KGhleENvbG9yLnN1YnN0cmluZygwLCAyKSwgMTYpO1xyXG4gICAgbGV0IGcgPSBwYXJzZUludChoZXhDb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KTtcclxuICAgIGxldCBiID0gcGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDQsIDYpLCAxNik7XHJcblxyXG4gICAgciA9IDI1NSAtIHI7XHJcbiAgICBnID0gMjU1IC0gZztcclxuICAgIGIgPSAyNTUgLSBiO1xyXG5cclxuICAgIGxldCBjb21wSGV4ID0gYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtnLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xyXG5cclxuICAgIHJldHVybiBjb21wSGV4LnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29udmVydEhFWChoZXhDb2xvcjogc3RyaW5nKSB7XHJcbiAgICBoZXhDb2xvciA9IGhleENvbG9yLnJlcGxhY2UoL14jLywgJycpO1xyXG4gICAgbGV0IGNvbG9yID0gXCIjXCI7XHJcbiAgICBmb3IgKGxldCBpPTA7IGk8MzsgaSsrKVxyXG4gICAgICBjb2xvciArPSAoaGV4Q29sb3JbaV0gKyBoZXhDb2xvcltpKzFdKTtcclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcbiAgZ2V0IGN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQlVTSU5FU1NfQ09OU1RBTlRTLkNVUlJFTkNZO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0VXNlckluZm8oKSB7XHJcbiAgLy8gICBjb25zdCB1c2VySWQgPSBcImRjOTE1YmQ0LWZhNmYtNDQ2ZS1iY2UyLTQ0MGI2ODA0YWYyMlwiO1xyXG4gIC8vICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlckluZm8odXNlcklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gIC8vICAgICB0aGlzLnVzZXJEZXRhaWxzID0gcmVzcG9uc2UuZGF0YTtcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG59XHJcbiIsIjxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCI+PC9wLXRvYXN0PlxyXG5cclxuPHNlY3Rpb24gKm5nSWY9XCIhaXNMb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXggdy0xMDBcIiBzdHlsZT1cIm1hcmdpbjogYXV0bzsgb3ZlcmZsb3cteTogYXV0bztcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzPy5sYXlvdXRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtzdHlsZS5jb2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW3N0eWxlLmhlaWdodC52aF09XCJpc01vYmlsZSA/ICcxMDAnOic5MCdcIiBbc3R5bGUuekluZGV4XT1cImlzTW9iaWxlID8gJzEwMDAwMCcgOiAnJ1wiIFtuZ0NsYXNzXT1cInsncG9zaXRpb24tYWJzb2x1dGUgdG9wLTAnOiBpc01vYmlsZX1cIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgcHJvZmlsZS1ib3hcIiBzdHlsZT1cIndpZHRoOiAyNSU7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGhlaWdodDogZml0LWNvbnRlbnQ7XCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJnZXRDYXJkQkdDb2xvclwiIFtzdHlsZS5vcmRlcl09XCJzdHlsZXM/LnN3YXAgPyAnMScgOiAnMCdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImdhcDogNXB4OyBoZWlnaHQ6IDcwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0VXNlclByb2ZpbGVcIiBhbHQ9XCJcIiBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGgtMTAwXCIgc3R5bGU9XCJ3aWR0aDogNzBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiIFtzdHlsZS5jb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCI+e3tnZXRVc2VyRGV0YWlscz8uY29udGFjdD8ubmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtd2VpZ2h0LW5vcm1hbCBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5zdGF5X3ByaW1hcnlfcG9ydHJhaXQ8L21hdC1pY29uPiA8c3Bhbj57e2dldFVzZXJEZXRhaWxzPy5jb250YWN0Py5tb2JpbGV9fTwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwiZWRpdC1pY29uXCIgKGNsaWNrKT1cImVkaXRQcm9maWxlRGF0YSgnTU9CSUxFJylcIj5lZGl0PC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtd2VpZ2h0LW5vcm1hbCBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtzdHlsZS5jb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tYWlsX291dGxpbmU8L21hdC1pY29uPiA8c3Bhbj57e2dldFVzZXJEZXRhaWxzPy5jb250YWN0Py5lbWFpbH19PC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJlZGl0LWljb25cIiAoY2xpY2spPVwiZWRpdFByb2ZpbGVEYXRhKCdFTUFJTCcpXCI+ZWRpdDwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2Ygc2lkZVBhbmVsTGlzdDsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHktM1wiIHN0eWxlPVwiZ2FwOiA1cHg7IGN1cnNvcjogcG9pbnRlcjtcIiBbc3R5bGUuYm9yZGVyQm90dG9tXT1cImlkeCAhPSAoc2lkZVBhbmVsTGlzdC5sZW5ndGggLTEpID8gJzJweCBzb2xpZCAjY2NjY2NjNGQnIDogJydcIiBbbmdDbGFzc109XCJ7J3RhYi1zZWxlY3RlZCc6IHRhYi5zdGF0dXN9XCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVwYW5lbFRhYih0YWIpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiZ2V0U3VwcG9ydGluZ0NvbG9yKGdldENhcmRCR0NvbG9yKVwiPnt7dGFiLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgZm9udC13ZWlnaHQtbm9ybWFsXCIgW3N0eWxlLmNvbG9yXT1cImdldFN1cHBvcnRpbmdDb2xvcihnZXRDYXJkQkdDb2xvcilcIj57e3RhYi52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlZGl0LWJ0blwiIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZ2V0Q2FyZEJHQ29sb3IpXCIgW3N0eWxlLmNvbG9yXT1cImdldFN1cHBvcnRpbmdDb2xvcihnZXRDYXJkQkdDb2xvcilcIiAoY2xpY2spPVwiZWRpdFByb2ZpbGUoKVwiPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibG9nb3V0LWJ0blwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZ2V0U3VwcG9ydGluZ0NvbG9yKGdldENhcmRCR0NvbG9yKVwiIFtzdHlsZS5jb2xvcl09XCJnZXRDYXJkQkdDb2xvclwiIChjbGljayk9XCJsb2dvdXQoKVwiPkxvZ291dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcmRlcnMtc2VjXCIgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCIgW3N0eWxlLm9yZGVyXT1cInN0eWxlcz8uc3dhcCA/ICcwJyA6ICcxJ1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWxlY3RlZFNpZGVQYW5lbFRhYlwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ09yZGVycydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiT3JkZXJTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidBZGRyZXNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJBZGRyZXNzU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQWNjb3VudCBEZXRhaWxzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJBY2NvdW50c1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0xvZ291dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTG9nb3V0U2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT3JkZXJzX0RldGFpbHMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIk9yZGVyRGV0YWlsc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInV2lzaGxpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIldpc2hsaXN0RGV0YWlsc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIiBzdHlsZT1cImhlaWdodDogODB2aDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbW9iaWxlQWNjb3VudEhlYWRlclwiIHN0eWxlPVwiZ2FwOiAxMHB4OyBoZWlnaHQ6IDUwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+a2V5Ym9hcmRfYmFja3NwYWNlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxoND5NeSB7eyFzZWxlY3RlZFNpZGVQYW5lbFRhYj8ubGVuZ3RoID8gJ0FjY291bnQnIDogc2VsZWN0ZWRTaWRlUGFuZWxUYWI/LnJlcGxhY2VBbGwoJ18nLCAnICcpfX08L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VsZWN0ZWRTaWRlUGFuZWxUYWJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIicnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ0b3Atc2VjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRVc2VyUHJvZmlsZVwiIGFsdD1cIlwiIGNsYXNzPVwicm91bmRlZC1jaXJjbGVcIiBzdHlsZT1cIndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tnZXRVc2VyRGV0YWlscz8uY29udGFjdD8ubmFtZX19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9udC13ZWlnaHQtbm9ybWFsXCI+PG1hdC1pY29uPnN0YXlfcHJpbWFyeV9wb3J0cmFpdDwvbWF0LWljb24+IDxzcGFuPnt7Z2V0VXNlckRldGFpbHM/LmNvbnRhY3Q/Lm1vYmlsZX19PC9zcGFuPjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZvbnQtd2VpZ2h0LW5vcm1hbFwiPjxtYXQtaWNvbj5tYWlsX291dGxpbmU8L21hdC1pY29uPiA8c3Bhbj57e2dldFVzZXJEZXRhaWxzPy5jb250YWN0Py5lbWFpbH19PC9zcGFuPjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImxpc3Qtc2VjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiBzaWRlUGFuZWxMaXN0OyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB5LTNcIiBzdHlsZT1cImdhcDogNXB4OyBjdXJzb3I6IHBvaW50ZXI7XCIgW3N0eWxlLmJvcmRlckJvdHRvbV09XCJpZHggIT0gKHNpZGVQYW5lbExpc3QubGVuZ3RoIC0xKSA/ICcycHggc29saWQgI2NjY2NjYzRkJyA6ICcnXCIgW25nQ2xhc3NdPVwieyd0YWItc2VsZWN0ZWQnOiB0YWIuc3RhdHVzfVwiIChjbGljayk9XCJnb1RvUGFuZWwodGFiKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3RhYi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgZm9udC13ZWlnaHQtbm9ybWFsXCI+e3t0YWIudmFsdWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT3JkZXJzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJPcmRlclNlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0FkZHJlc3MnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkFkZHJlc3NTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidBY2NvdW50IERldGFpbHMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkFjY291bnRzU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInTG9nb3V0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJMb2dvdXRTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidPcmRlcnNfRGV0YWlscydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiT3JkZXJEZXRhaWxzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI09yZGVyU2VjdGlvbj5cclxuICAgIDxoMSBjbGFzcz1cIm9ubHlEZXNrdG9wXCI+TXkgT3JkZXJzPC9oMT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXktMyBvcmRlcmxpc3Qgb25seURlc2t0b3BcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRhYlwiIFtuZ0NsYXNzXT1cInsnZmlsdGVyLXRhYi1zZWxlY3RlZCc6IHRhYi5zdGF0dXN9XCIgKGNsaWNrKT1cInNlbGVjdFRhYih0YWIpXCI+e3t0YWIudmFsdWV9fTwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwib3JkZXItbGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcmRlckxpc3Q/Lmxlbmd0aDsgZWxzZSBzaG93RW1wdHlTY3JlZW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZGVyXCIgW3N0eWxlLndpZHRoXT1cImdldFByb2R1Y3RXaWR0aFwiICpuZ0Zvcj1cImxldCBvcmRlciBvZiBvcmRlckxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJPcmRlckNhcmQ7IGNvbnRleHQ6IHtkYXRhOiBvcmRlcn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93RW1wdHlTY3JlZW4+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZW1wdHktY2FydCBtLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQ/LmltYWdlPy51cmxcIiBbYWx0XT1cImNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGV4dCBvZiBjb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgW25nQ2xhc3NdPVwieydoZWFkaW5nLW1lZGl1bSc6IHRleHQubGFiZWwgPT0gJ0hlYWRpbmcnLCAnZGVzY3JpcHRpb24nOiB0ZXh0LmxhYmVsID09ICdUZXh0J31cIj57eyB0ZXh0LnZhbHVlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjT3JkZXJEZXRhaWxzPlxyXG4gICAgPHNpbXBvLW9yZGVyLWRldGFpbHMgW2RhdGFdPVwiZGF0YVwiIFtvcmRlckRldGFpbERhdGFdPVwib3JkZXJEZXRhaWxzRGF0YVwiIChnb0JhY2tFbWl0dGVyKT1cInNlbGVjdGVkU2lkZVBhbmVsVGFiID0gJ09yZGVycydcIj48L3NpbXBvLW9yZGVyLWRldGFpbHM+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkcmVzc1NlY3Rpb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTIgb25seURlc2t0b3BcIj5cclxuICAgICAgICA8aDE+TXkgQWRkcmVzczwvaDE+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZHJlc3MtYnRuXCIgKGNsaWNrKT1cImFkZE5ld0FkZHJlc3MoKVwiPnt7ZGF0YT8uYWN0aW9uPy5idXR0b25zPy5bMF0/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtbGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VyRGV0YWlscz8uYWRkcmVzc0RldGFpbHNMaXN0Py5sZW5ndGg7IGVsc2Ugc2hvd0VtcHR5QWRkcmVzc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhZGRyZXNzIG9mIHVzZXJEZXRhaWxzPy5hZGRyZXNzRGV0YWlsc0xpc3Q7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3NcIiBbc3R5bGUud2lkdGhdPVwiZ2V0UHJvZHVjdFdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZHJlc3MtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgbXItMlwiPnt7YWRkcmVzcy5yZWNlaXZlck5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkcmVzcy10eXBlXCI+e3thZGRyZXNzLmFkZHJlc3NUeXBlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1kZXRcIj57e2FkZHJlc3MuYWRkcmVzc0xpbmUxfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QaG9uZTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZHJlc3MtcGhvbmVcIj57e2FkZHJlc3MucmVjZWl2ZXJQaG9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkcmVzcy1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImVkaXRBZGRyZXNzKGlkeClcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJkZWxldGVBZGRyZXNzKGlkeClcIj5kZWxldGVfb3V0bGluZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93RW1wdHlBZGRyZXNzPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImVtcHR5LWNhcnQgbS1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9pLnBvc3RpbWcuY2MvMjVyVDhXd3AvNjIxNjc5Ny5qcGdcIiBbYWx0XT1cImNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0ZXh0IG9mIGNvbnRlbnQ/LmlucHV0VGV4dFwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+Tm8gYWRkcmVzcyBhZGRlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5QbGVhc2UgcHJvdmlkZSBhZGRyZXNzIGZvciBlYXN5IGRlbGl2ZXJ5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjQWNjb3VudHNTZWN0aW9uPlxyXG4gICAgPGgxIGNsYXNzPVwib25seURlc2t0b3BcIj5NeSBBY2NvdW50czwvaDE+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjTG9nb3V0U2VjdGlvbj5cclxuICAgIDxoMSBjbGFzcz1cIm9ubHlEZXNrdG9wXCI+TG9nb3V0PC9oMT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNPcmRlckNhcmQgbGV0LW9yZGVyPVwiZGF0YVwiPlxyXG4gICAgPGRpdiAoY2xpY2spPVwiZ29Ub09yZGVyRGV0YWlscyhvcmRlcilcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LW5vcm1hbFwiPnt7b3JkZXIub3JkZXJOdW19fTwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmRfaW9zPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlkZGxlIG15LTJcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3tvcmRlci5jcmVhdGVkVGltZVN0YW1wIHwgZGF0ZTogJ21lZGl1bSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tvcmRlcj8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8uYnJhbmROYW1lIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LW5vcm1hbFwiPkFtb3VudDogPHNwYW4+IDxzcGFuIFtpbm5lckhUTUxdPVwiY3VycmVuY3lcIj48L3NwYW4+IHt7IG9yZGVyLmJpbGxEZXRhaWxzLnRvdGFsTmV0VmFsdWUgfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBbYXR0ci5jbGFzc109XCJvcmRlcj8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8ub3JkZXJTdGF0dXMgKyAnIG9yZGVyLXN0YXR1cydcIj57eyBvcmRlcj8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8ub3JkZXJTdGF0dXMucmVwbGFjZUFsbChcIl9cIiwgXCIgXCIpIHwgdXBwZXJjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjV2lzaGxpc3REZXRhaWxzPlxyXG4gICAgPGgxIGNsYXNzPVwib25seURlc2t0b3BcIj5NeSBXaXNobGlzdDwvaDE+XHJcbiAgICA8ZGl2IGNsYXNzPVwid2lzaGxpc3QtbGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygd2lzaGxpc3REYXRhOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBpdGVtLXBhcmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiIHN0eWxlPVwicGFkZGluZzogMHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgaC0xMDAgaXRlbS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaC0yM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIGhlYWRpbmctbGFyZ2VcIj57e2l0ZW0uaXRlbU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7e2l0ZW0uZGlzY291bnRlZFByaWNlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcXVhbnRpdHlcIiAqbmdJZj1cIml0ZW0ucXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvRmF2KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKm5nSWY9XCIhaXRlbS5xdWFudGl0eVwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnQUREJylcIj5BZGQgdG8gUXVhbnRpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKGNsaWNrKT1cIm1vdmVUb0NhcnQoaXRlbSlcIj5Nb3ZlIHRvIENhcnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBpdGVtUHJpY2VcIiBzdHlsZT1cIm1hcmdpbi10b3A6IGF1dG87IHJpZ2h0OiA1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcHJpY2VcIiAqbmdJZj1cIml0ZW0ucXVhbnRpdHlcIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soaXRlbS5kaXNjb3VudGVkUHJpY2UpICogaXRlbS5xdWFudGl0eX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRlbGV0ZS1pdGVtXCIgKGNsaWNrKT1cImRlbGV0ZUZyb21XaGlzbGlzdChpdGVtKVwiPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0VtcHR5V2lzaGxpc3RTY3JlZW4+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJlbXB0eS1jYXJ0IG0tYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY29udGVudD8uaW1hZ2U/LnVybFwiIFthbHRdPVwiY29udGVudD8uaW1hZ2U/LmFsdFRleHRcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0ZXh0IG9mIGNvbnRlbnQ/LmlucHV0VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtuZ0NsYXNzXT1cInsnaGVhZGluZy1tZWRpdW0nOiB0ZXh0LmxhYmVsID09ICdIZWFkaW5nJywgJ2Rlc2NyaXB0aW9uJzogdGV4dC5sYWJlbCA9PSAnVGV4dCd9XCI+e3sgdGV4dC52YWx1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gICAgd2lkdGg6ICcxMDAlJyxcclxuICAgIGhlaWdodDogJzQwdmgnLFxyXG4gICAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICAgJ3JpZ2h0JzogJzVweCdcclxuICB9XCI+XHJcbiAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPiJdfQ==
|
@@ -156,7 +156,7 @@ export class WhislistComponent extends BaseSection {
|
|
156
156
|
this.storageService.removeProductFromWishlist(product.itemId).onsuccess = (wislistResponse) => {
|
157
157
|
console.log("Success");
|
158
158
|
// this.storageService.addProductToCart(product).onsuccess = (cartResponse) => {
|
159
|
-
this.USER_WISHLIST_ITEMS = this.USER_WISHLIST_ITEMS.filter((item) => item.
|
159
|
+
this.USER_WISHLIST_ITEMS = this.USER_WISHLIST_ITEMS.filter((item) => item.varientId != product.varientId);
|
160
160
|
this.wishlistInfo.orderedItems = this.USER_WISHLIST_ITEMS;
|
161
161
|
this.responseData = this.wishlistInfo;
|
162
162
|
// }
|
@@ -177,14 +177,14 @@ export class WhislistComponent extends BaseSection {
|
|
177
177
|
});
|
178
178
|
}
|
179
179
|
deleteFromWhislist(product) {
|
180
|
-
this.USER_WISHLIST_ITEMS = this.USER_WISHLIST_ITEMS.filter((item) => item.
|
180
|
+
this.USER_WISHLIST_ITEMS = this.USER_WISHLIST_ITEMS.filter((item) => item.varientId != product.varientId);
|
181
181
|
this.wishlistInfo.orderedItems = this.USER_WISHLIST_ITEMS;
|
182
182
|
this.responseData = this.wishlistInfo;
|
183
183
|
if (this.storageService.getUser()) {
|
184
184
|
this.cartService.removeItemFromWishlistPage(product, this.wishlistInfo).subscribe((response) => { });
|
185
185
|
}
|
186
186
|
else {
|
187
|
-
const transaction = this.storageService.removeProductFromWishlist(product.
|
187
|
+
const transaction = this.storageService.removeProductFromWishlist(product.varientId);
|
188
188
|
}
|
189
189
|
}
|
190
190
|
addToFav(item, type) {
|
@@ -194,7 +194,7 @@ export class WhislistComponent extends BaseSection {
|
|
194
194
|
item.quantity -= 1;
|
195
195
|
if (this.storageService.getUser()) {
|
196
196
|
this.wishlistInfo.orderedItems?.forEach((product) => {
|
197
|
-
if (item.
|
197
|
+
if (item.varientId == product.varientId)
|
198
198
|
product.quantity = item.quantity;
|
199
199
|
});
|
200
200
|
this.cartService.addItemFromWishlistPage(item, this.wishlistInfo).subscribe((response) => { });
|
@@ -203,11 +203,14 @@ export class WhislistComponent extends BaseSection {
|
|
203
203
|
this.storageService.addProductToWishlist(item);
|
204
204
|
}
|
205
205
|
}
|
206
|
+
getKeys(object) {
|
207
|
+
return Object.keys(object);
|
208
|
+
}
|
206
209
|
get currency() {
|
207
210
|
return BUSINESS_CONSTANTS.CURRENCY;
|
208
211
|
}
|
209
212
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: WhislistComponent, deps: [{ token: i1.CartService }, { token: i2.EventsService }, { token: i3.StorageServiceService }, { token: i4.RestService }, { token: i5.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
210
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: WhislistComponent, isStandalone: true, selector: "simpo-whislist", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "\r\n<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"left-panel\">\r\n <div class=\"my-bag\">\r\n My Wishlist <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n \r\n <div class=\"d-flex flex-wrap justify-content-between\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"cart-items\">\r\n <div class=\"row item-parent\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img class=\"product-img\" [src]=\"item.imgUrl\" alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 h-100 item-desc\">\r\n <div class=\"lh-23\">\r\n <div class=\"item-name heading-large\">{{item.itemName}}</div>\r\n <div class=\"price-with-tax\">\r\n <span [innerHTML]='currency'></span> {{item.discountedPrice}}\r\n </div>\r\n <div class=\"d-flex action-btn\" style=\"gap: 5px;\">\r\n <div class=\"item-quantity\" *ngIf=\"item.quantity\">\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'ADD')\">+</span>\r\n </div>\r\n <div class=\"item-quantity\" *ngIf=\"!item.quantity\" (click)=\"addToFav(item, 'ADD')\">Add Quantity</div>\r\n <div class=\"item-quantity\" (click)=\"moveToCart(item)\">Move to Cart</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-relative itemPrice\" style=\"margin-left: auto; width: 30%;\">\r\n <div class=\"item-price\" *ngIf=\"item.quantity\"><span [innerHTML]='currency'></span> {{(item.discountedPrice) * item.quantity}}</div>\r\n <div>\r\n <mat-icon class=\"delete-item\" (click)=\"deleteFromWhislist(item)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <section class=\"empty-cart\" *ngIf=\"(responseData?.orderedItems?.length || 0) == 0\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\" alt=\"\">\r\n </div>\r\n <div class=\"cart-text\">\r\n <div class=\"heading-medium d-flex justify-content-center\">\r\n Your Whislist is empty\r\n </div>\r\n <div class=\"description d-flex mt-4\">\r\n Looks like you have not added anything to your Whislist. Go ahead & explore top categories.\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n \r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".cart-parent{display:flex;flex-wrap:wrap;margin-top:15px;gap:20px}.left-panel{width:100%}.cart-items{padding:10px;margin-top:10px;margin-bottom:15px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;width:48%;display:flex;flex-wrap:wrap}.my-bag{font-size:16px;font-weight:600;color:#000}.my-bag span{color:#939393}.item-parent{margin:10px 0;width:100%}.lh-23{line-height:23px}.item-name{color:#141514;font-size:16px;line-height:30px;font-weight:600}.price-with-tax{font-weight:400;font-size:16px;color:#626262}.item-sku{font-weight:400;font-size:14px;color:#626262}.cart-item{position:absolute;right:50px;bottom:10px;cursor:pointer}.item-price{display:flex;justify-content:flex-end;font-weight:600;font-size:16px;color:#141514}.product-img{border-radius:5px;height:95px;width:100px;padding:0}.quantity-box{display:flex;gap:5px;align-items:center;border:1px solid #E8E8E8;width:45px;height:22px}.quantity-box input{outline:none;text-align:center;border:none;width:30px;height:100%}.quantity-box .plus{font-size:20px;position:relative;top:-3px;font-weight:500}.quantity-box .minus{font-size:30px;position:relative;top:-3px;font-weight:500}.delete-item{color:#df2e2e;cursor:pointer}.item-quantity{margin-top:5px;cursor:pointer;display:flex;width:90px;min-width:fit-content;border:1px solid lightgray;justify-content:space-between;align-items:center;padding:5px 10px;border-radius:3px}.coupon{display:flex;justify-content:space-between;border:1px solid #E8E8E8;border-radius:5px;padding:10px;margin-top:10px}.apply-coupon{font-weight:500;color:#626262;font-size:15px}.coupon-desc{color:#939393;font-size:12px;font-weight:500}.apply-coupon-btn{color:#0267c1;font-size:16px;font-weight:600}.price-details{padding:10px;margin-top:10px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px}.price-parent-block{display:flex;justify-content:space-between;margin-top:5px}.price-type{font-weight:400;font-size:16px;color:#434443}.price-value{font-weight:500;font-size:18px;color:#141514}.button-parent{margin-top:20px;display:flex;flex-direction:column;gap:10px}hr{border:1px solid #E8E8E8}.btn{height:40px;font-size:16px!important}.cursor{cursor:pointer}.delete-item{text-align:right;position:absolute;right:16px;bottom:10px}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:47px;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.cart-image{width:13%;display:flex;margin-right:auto;margin-left:auto}.cart-image img{width:100%}.heading-medium{font-weight:600;color:#000}.description{font-size:18px;color:#7f7676;margin-left:auto;margin-right:auto;width:30%;text-align:center}@media only screen and (max-width: 475px){.cart-parent{flex-direction:column}.item-parent{flex-direction:row!important;flex-wrap:nowrap!important}.cart-items,.left-panel{width:100%}.cart-image{width:42%}.description{width:84%}.heading-medium{font-size:28px}.item-desc{width:73%}.itemPrice{width:24%!important}.action-btn{flex-wrap:wrap}.action-btn .item-quantity{width:100%;text-align:center;justify-content:center!important}}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i6.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: i7.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i8.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i10.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
213
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: WhislistComponent, isStandalone: true, selector: "simpo-whislist", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\"\r\n [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"left-panel\">\r\n <div class=\"my-bag\">\r\n My Wishlist <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"cart-items\">\r\n <div class=\"row item-parent\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img class=\"product-img\" [src]=\"item.imgUrl\" alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 h-100 item-desc\">\r\n <div class=\"lh-23\">\r\n <div class=\"item-name heading-large\">{{item.itemName}}</div>\r\n <div class=\"price-with-tax\">\r\n <span [innerHTML]='currency'></span> {{item.discountedPrice}}\r\n </div>\r\n <ng-container *ngIf=\"item.itemVariant\"> \r\n <div class=\"d-flex align-items-center\" *ngFor=\"let varient of getKeys(item.itemVariant.properties)\">\r\n <div class=\"fw-bold\">{{ varient }} : </div>\r\n <!-- <div class=\"fw-normal\" style=\"margin-left: 5px; height: 13px; width: 13px; border-radius: 50%;\" *ngIf=\"varient.toLowerCase() == 'color'\" [style.backgroundColor]=\"item.itemVariant.properties[varient]\"></div> -->\r\n <div class=\"fw-normal\" style=\"margin-left: 5px;\"> {{ item.itemVariant.properties[varient] | uppercase }}</div>\r\n </div>\r\n </ng-container>\r\n <div class=\"d-flex action-btn\" style=\"gap: 5px;\">\r\n <div class=\"item-quantity\" *ngIf=\"item.quantity\">\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'ADD')\">+</span>\r\n </div>\r\n <div class=\"item-quantity\" *ngIf=\"!item.quantity\" (click)=\"addToFav(item, 'ADD')\">Add Quantity\r\n </div>\r\n <div class=\"item-quantity\" (click)=\"moveToCart(item)\">Move to Cart</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-relative itemPrice\" style=\"margin-left: auto; width: 30%;\">\r\n <div class=\"item-price\" *ngIf=\"item.quantity\"><span [innerHTML]='currency'></span>\r\n {{(item.discountedPrice) * item.quantity}}</div>\r\n <div>\r\n <mat-icon class=\"delete-item\" (click)=\"deleteFromWhislist(item)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section class=\"empty-cart\" *ngIf=\"(responseData?.orderedItems?.length || 0) == 0\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"cart-text\">\r\n <div class=\"heading-medium d-flex justify-content-center\">\r\n Your Whislist is empty\r\n </div>\r\n <div class=\"description d-flex mt-4\">\r\n Looks like you have not added anything to your Whislist. Go ahead & explore top categories.\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".cart-parent{display:flex;flex-wrap:wrap;margin-top:15px;gap:20px}.left-panel{width:100%}.cart-items{padding:10px;margin-top:10px;margin-bottom:15px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;width:48%;display:flex;flex-wrap:wrap}.my-bag{font-size:16px;font-weight:600;color:#000}.my-bag span{color:#939393}.item-parent{margin:10px 0;width:100%}.lh-23{line-height:23px}.item-name{color:#141514;font-size:16px;line-height:30px;font-weight:600}.price-with-tax{font-weight:400;font-size:16px;color:#626262}.item-sku{font-weight:400;font-size:14px;color:#626262}.cart-item{position:absolute;right:50px;bottom:10px;cursor:pointer}.item-price{display:flex;justify-content:flex-end;font-weight:600;font-size:16px;color:#141514}.product-img{border-radius:5px;height:100%;width:110px;padding:0}.quantity-box{display:flex;gap:5px;align-items:center;border:1px solid #E8E8E8;width:45px;height:22px}.quantity-box input{outline:none;text-align:center;border:none;width:30px;height:100%}.quantity-box .plus{font-size:20px;position:relative;top:-3px;font-weight:500}.quantity-box .minus{font-size:30px;position:relative;top:-3px;font-weight:500}.delete-item{color:#df2e2e;cursor:pointer}.item-quantity{margin-top:5px;cursor:pointer;display:flex;width:90px;min-width:fit-content;border:1px solid lightgray;justify-content:space-between;align-items:center;padding:5px 10px;border-radius:3px}.coupon{display:flex;justify-content:space-between;border:1px solid #E8E8E8;border-radius:5px;padding:10px;margin-top:10px}.apply-coupon{font-weight:500;color:#626262;font-size:15px}.coupon-desc{color:#939393;font-size:12px;font-weight:500}.apply-coupon-btn{color:#0267c1;font-size:16px;font-weight:600}.price-details{padding:10px;margin-top:10px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px}.price-parent-block{display:flex;justify-content:space-between;margin-top:5px}.price-type{font-weight:400;font-size:16px;color:#434443}.price-value{font-weight:500;font-size:18px;color:#141514}.button-parent{margin-top:20px;display:flex;flex-direction:column;gap:10px}hr{border:1px solid #E8E8E8}.btn{height:40px;font-size:16px!important}.cursor{cursor:pointer}.delete-item{text-align:right;position:absolute;right:16px;bottom:10px}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:47px;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.cart-image{width:13%;display:flex;margin-right:auto;margin-left:auto}.cart-image img{width:100%}.heading-medium{font-weight:600;color:#000}.description{font-size:18px;color:#7f7676;margin-left:auto;margin-right:auto;width:30%;text-align:center}@media only screen and (max-width: 475px){.cart-parent{flex-direction:column}.item-parent{flex-direction:row!important;flex-wrap:nowrap!important}.cart-items,.left-panel{width:100%}.cart-image{width:42%}.description{width:84%}.heading-medium{font-size:28px}.item-desc{width:73%}.itemPrice{width:24%!important}.action-btn{flex-wrap:wrap}.action-btn .item-quantity{width:100%;text-align:center;justify-content:center!important}}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i6.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: i7.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i8.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i9.UpperCasePipe, name: "uppercase" }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i10.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
211
214
|
}
|
212
215
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: WhislistComponent, decorators: [{
|
213
216
|
type: Component,
|
@@ -221,7 +224,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
221
224
|
ContentFitDirective,
|
222
225
|
HoverDirective,
|
223
226
|
ToastModule
|
224
|
-
], providers: [MessageService], template: "
|
227
|
+
], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"></p-toast>\r\n<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"total-container\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"cart-parent container\" *ngIf=\"(responseData?.orderedItems?.length || 0) > 0\" [id]=\"data?.id\"\r\n [simpoAnimation]=\"styles?.animation\">\r\n <div class=\"left-panel\">\r\n <div class=\"my-bag\">\r\n My Wishlist <span>({{responseData?.orderedItems?.length}} Items)</span>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between\" style=\"gap: 10px;\">\r\n <ng-container *ngFor=\"let item of responseData?.orderedItems; let idx = index\">\r\n <div class=\"cart-items\">\r\n <div class=\"row item-parent\">\r\n <div class=\"h-100\" style=\"padding: 0px; width: fit-content;\">\r\n <img class=\"product-img\" [src]=\"item.imgUrl\" alt=\"\">\r\n </div>\r\n <div class=\"col-md-6 h-100 item-desc\">\r\n <div class=\"lh-23\">\r\n <div class=\"item-name heading-large\">{{item.itemName}}</div>\r\n <div class=\"price-with-tax\">\r\n <span [innerHTML]='currency'></span> {{item.discountedPrice}}\r\n </div>\r\n <ng-container *ngIf=\"item.itemVariant\"> \r\n <div class=\"d-flex align-items-center\" *ngFor=\"let varient of getKeys(item.itemVariant.properties)\">\r\n <div class=\"fw-bold\">{{ varient }} : </div>\r\n <!-- <div class=\"fw-normal\" style=\"margin-left: 5px; height: 13px; width: 13px; border-radius: 50%;\" *ngIf=\"varient.toLowerCase() == 'color'\" [style.backgroundColor]=\"item.itemVariant.properties[varient]\"></div> -->\r\n <div class=\"fw-normal\" style=\"margin-left: 5px;\"> {{ item.itemVariant.properties[varient] | uppercase }}</div>\r\n </div>\r\n </ng-container>\r\n <div class=\"d-flex action-btn\" style=\"gap: 5px;\">\r\n <div class=\"item-quantity\" *ngIf=\"item.quantity\">\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'SUBSTRACT')\">-</span>\r\n <span>{{item.quantity}}</span>\r\n <span class=\"cursor\" (click)=\"addToFav(item, 'ADD')\">+</span>\r\n </div>\r\n <div class=\"item-quantity\" *ngIf=\"!item.quantity\" (click)=\"addToFav(item, 'ADD')\">Add Quantity\r\n </div>\r\n <div class=\"item-quantity\" (click)=\"moveToCart(item)\">Move to Cart</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"position-relative itemPrice\" style=\"margin-left: auto; width: 30%;\">\r\n <div class=\"item-price\" *ngIf=\"item.quantity\"><span [innerHTML]='currency'></span>\r\n {{(item.discountedPrice) * item.quantity}}</div>\r\n <div>\r\n <mat-icon class=\"delete-item\" (click)=\"deleteFromWhislist(item)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <section class=\"empty-cart\" *ngIf=\"(responseData?.orderedItems?.length || 0) == 0\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"cart-text\">\r\n <div class=\"heading-medium d-flex justify-content-center\">\r\n Your Whislist is empty\r\n </div>\r\n <div class=\"description d-flex mt-4\">\r\n Looks like you have not added anything to your Whislist. Go ahead & explore top categories.\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".cart-parent{display:flex;flex-wrap:wrap;margin-top:15px;gap:20px}.left-panel{width:100%}.cart-items{padding:10px;margin-top:10px;margin-bottom:15px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;width:48%;display:flex;flex-wrap:wrap}.my-bag{font-size:16px;font-weight:600;color:#000}.my-bag span{color:#939393}.item-parent{margin:10px 0;width:100%}.lh-23{line-height:23px}.item-name{color:#141514;font-size:16px;line-height:30px;font-weight:600}.price-with-tax{font-weight:400;font-size:16px;color:#626262}.item-sku{font-weight:400;font-size:14px;color:#626262}.cart-item{position:absolute;right:50px;bottom:10px;cursor:pointer}.item-price{display:flex;justify-content:flex-end;font-weight:600;font-size:16px;color:#141514}.product-img{border-radius:5px;height:100%;width:110px;padding:0}.quantity-box{display:flex;gap:5px;align-items:center;border:1px solid #E8E8E8;width:45px;height:22px}.quantity-box input{outline:none;text-align:center;border:none;width:30px;height:100%}.quantity-box .plus{font-size:20px;position:relative;top:-3px;font-weight:500}.quantity-box .minus{font-size:30px;position:relative;top:-3px;font-weight:500}.delete-item{color:#df2e2e;cursor:pointer}.item-quantity{margin-top:5px;cursor:pointer;display:flex;width:90px;min-width:fit-content;border:1px solid lightgray;justify-content:space-between;align-items:center;padding:5px 10px;border-radius:3px}.coupon{display:flex;justify-content:space-between;border:1px solid #E8E8E8;border-radius:5px;padding:10px;margin-top:10px}.apply-coupon{font-weight:500;color:#626262;font-size:15px}.coupon-desc{color:#939393;font-size:12px;font-weight:500}.apply-coupon-btn{color:#0267c1;font-size:16px;font-weight:600}.price-details{padding:10px;margin-top:10px;border-radius:5px;box-shadow:0 0 1px #28293d14,0 0 2px #60617029;margin-bottom:15px}.price-parent-block{display:flex;justify-content:space-between;margin-top:5px}.price-type{font-weight:400;font-size:16px;color:#434443}.price-value{font-weight:500;font-size:18px;color:#141514}.button-parent{margin-top:20px;display:flex;flex-direction:column;gap:10px}hr{border:1px solid #E8E8E8}.btn{height:40px;font-size:16px!important}.cursor{cursor:pointer}.delete-item{text-align:right;position:absolute;right:16px;bottom:10px}.quantity{display:flex;border:2px solid #E6E6E6;align-items:center;gap:15px;height:47px;margin-top:1rem;border-radius:5px}.quantity .plus{position:relative;left:10px;font-size:18px;font-weight:600;cursor:pointer;color:#848484}.quantity .minus{position:relative;right:15px;font-size:18px;font-weight:600;color:#848484;cursor:pointer}.quantity input{width:60px;border:none;outline:none;text-align:center}.total-container{height:auto;position:relative;display:block!important}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.cart-image{width:13%;display:flex;margin-right:auto;margin-left:auto}.cart-image img{width:100%}.heading-medium{font-weight:600;color:#000}.description{font-size:18px;color:#7f7676;margin-left:auto;margin-right:auto;width:30%;text-align:center}@media only screen and (max-width: 475px){.cart-parent{flex-direction:column}.item-parent{flex-direction:row!important;flex-wrap:nowrap!important}.cart-items,.left-panel{width:100%}.cart-image{width:42%}.description{width:84%}.heading-medium{font-size:28px}.item-desc{width:73%}.itemPrice{width:24%!important}.action-btn{flex-wrap:wrap}.action-btn .item-quantity{width:100%;text-align:center;justify-content:center!important}}\n"] }]
|
225
228
|
}], ctorParameters: () => [{ type: i1.CartService }, { type: i2.EventsService }, { type: i3.StorageServiceService }, { type: i4.RestService }, { type: i5.MessageService }], propDecorators: { responseData: [{
|
226
229
|
type: Input
|
227
230
|
}], data: [{
|
@@ -233,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
233
236
|
}], delete: [{
|
234
237
|
type: Input
|
235
238
|
}] } });
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpc2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNL0MsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7QUFxQjVDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxXQUFXO0lBV2hELFlBQ21CLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGNBQXFDLEVBQ3JDLFdBQXdCLEVBQ3hCLGNBQThCO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBTlMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVh4QyxTQUFJLEdBQWMsSUFBSSxDQUFDO1FBRWhDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFlbkIsd0JBQW1CLEdBQW1CLEVBQUUsQ0FBQztRQUNqRCxpQkFBWSxHQUFRO1lBQ2xCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFVBQVUsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQzdFLFdBQVcsRUFBRTtnQkFDWCxlQUFlLEVBQUUsQ0FBQztnQkFDbEIsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsbUJBQW1CLEVBQUUsQ0FBQztnQkFDdEIsaUJBQWlCLEVBQUUsQ0FBQzthQUNyQjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLFVBQVU7WUFDcEIsV0FBVyxFQUFFO2dCQUNYLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFFBQVEsRUFBRSxFQUFFO2dCQUNaLE9BQU8sRUFBRSxFQUFFO2dCQUNYLGlCQUFpQixFQUFFO29CQUNqQixhQUFhLEVBQUUsRUFBRTtvQkFDakIsY0FBYyxFQUFFLEVBQUU7b0JBQ2xCLGVBQWUsRUFBRSxFQUFFO29CQUNuQixhQUFhLEVBQUUsRUFBRTtvQkFDakIsV0FBVyxFQUFFLEVBQUU7b0JBQ2YsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsY0FBYyxFQUFFLEVBQUU7b0JBQ2xCLGNBQWMsRUFBRSxFQUFFO29CQUNsQixjQUFjLEVBQUUsRUFBRTtvQkFDbEIsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsYUFBYSxFQUFFO3dCQUNiLFVBQVUsRUFBRSxDQUFDO3dCQUNiLFdBQVcsRUFBRSxDQUFDO3FCQUNmO29CQUNELFdBQVcsRUFBRSxFQUFFO2lCQUNoQjthQUNGO1lBQ0QsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFBO0lBekNELENBQUM7SUE0Q0QsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFVLENBQUM7WUFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUc7Z0JBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU07Z0JBQ2xDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUMxQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3hDLGlCQUFpQixFQUFFLElBQUk7YUFDeEIsQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBQyxFQUFFO2dCQUM1RixNQUFNLGdCQUFnQixHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFBO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7Z0JBQ3pELElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUU7d0JBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFDLEVBQUU7NEJBQy9ELGlCQUFpQixDQUFDLFNBQVMsR0FBRyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtnQ0FFbEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0NBQ3JGLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFFLEVBQUU7b0NBRTNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUM7b0NBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQW1DLENBQUM7b0NBQ25GLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztvQ0FDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO29DQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQ0FDakMsQ0FBQyxDQUFDLENBQUE7NEJBQ0osQ0FBQyxDQUFBO3dCQUNILENBQUMsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQTtnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO3dCQUN0RCxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsb0JBQXlCLEVBQUMsRUFBRTs0QkFFaEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7NEJBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQzs0QkFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDOzRCQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFDLEVBQUU7Z0NBQ3pFLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0NBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7Z0NBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQzs0QkFDeEMsQ0FBQyxDQUFDLENBQUE7d0JBQ0osQ0FBQyxDQUFBO29CQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxDQUFDO1lBRU4sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsT0FBcUI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ25CLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTt3QkFDeEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVO3dCQUNoQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVE7d0JBQzVCLGNBQWMsRUFBRSxPQUFPLENBQUMsWUFBWTt3QkFDcEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNO3dCQUN4QixhQUFhLEVBQUUsU0FBUzt3QkFDeEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRO3dCQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUs7d0JBQ3RCLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTzt3QkFDMUIsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGVBQWU7cUJBQzNDO2lCQUNGO2FBQ0YsQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFDLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQTtRQUN6RixDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRSxXQUFXLENBQUMsU0FBUyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDNUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsZ0ZBQWdGO2dCQUM5RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWtCLEVBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqSCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDeEMsSUFBSTtZQUNOLENBQUMsQ0FBQTtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxpQ0FBaUMsRUFBRSxDQUFDLENBQUM7UUFDdkgsQ0FBQyxDQUFBO1FBQ0QsV0FBVyxDQUFDLE9BQU8sR0FBRyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLDZCQUE2QixFQUFFLENBQUMsQ0FBQztRQUM1RyxDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0Qsc0JBQXNCO1FBRXBCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUMsRUFBRTtZQUN0RCxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsb0JBQXlCLEVBQUMsRUFBRTtnQkFFaEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3hDLENBQUMsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGtCQUFrQixDQUFDLE9BQXFCO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBa0IsRUFBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakgsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFDLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUSxDQUFDLElBQWtCLEVBQUUsSUFBeUI7UUFDcEQsSUFBSSxJQUFJLElBQUksS0FBSztZQUNmLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDOztZQUVuQixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFxQixFQUFDLEVBQUU7Z0JBQy9ELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTTtvQkFDL0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBQyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEcsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQzs4R0ExTVUsaUJBQWlCO2tHQUFqQixpQkFBaUIscUtBSmpCLENBQUMsY0FBYyxDQUFDLGlEQ2xDN0IsbXlJQThFc0IsMjhHRHREbEIsT0FBTywwSUFDUCxvQkFBb0Isb2dCQUNwQixZQUFZLDhWQUdaLGtCQUFrQix5RkFDbEIsbUJBQW1CLG1GQUNuQixjQUFjLCtFQUNkLFdBQVc7OzJGQU1GLGlCQUFpQjtrQkFsQjdCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1Asb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxXQUFXO3FCQUNaLGFBQ1UsQ0FBQyxjQUFjLENBQUM7dU1BTWxCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9zdHlsZXMvdXNlci5tb2RhbCc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBCVVNJTkVTU19DT05TVEFOVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYnVzaW5lc3MuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgQ2FydCB9IGZyb20gJy4uLy4uL3N0eWxlcy9jYXJ0Lm1vZGFsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8td2hpc2xpc3QnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0SWNvbixcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgLy9ESVJFQ1RJVkVcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIFRvYXN0TW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3doaXNsaXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vd2hpc2xpc3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFdoaXNsaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIFxyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IENhcnQ7XHJcbiAgQElucHV0KCkgZGF0YT86IGFueTtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3R5bGVzOiBhbnk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVzZXJEZXRhaWxzOiBhbnk7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUX0lURU1TOiBPcmRlcmVkSXRlbXNbXSA9IFtdO1xyXG4gIHdpc2hsaXN0SW5mbzogYW55ID0ge1xyXG4gICAgb3JkZXJlZEl0ZW1zOiBudWxsLFxyXG4gICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgYmlsbGRldGFpbHM6IHtcclxuICAgICAgXCJ0b3RhbE5ldFZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxHcm9zc1ZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgICAgXCJ0b3RhbE9mZmVyZWRWYWx1ZVwiOiAwLFxyXG4gICAgICBcImRlbGl2ZXJ5Q2hhcmdlc1wiOiAwXHJcbiAgICB9LFxyXG4gICAgcGxhdGZvcm06IFwiV0VCXCIsXHJcbiAgICBjYXJ0VHlwZTogXCJXSVNITElTVFwiLFxyXG4gICAgdXNlckRldGFpbHM6IHtcclxuICAgICAgXCJ1c2VySWRcIjogXCJcIixcclxuICAgICAgXCJ1c2VyTmFtZVwiOiBcIlwiLFxyXG4gICAgICBcIm1vYmlsZVwiOiBcIlwiLFxyXG4gICAgICBcImVtYWlsXCI6IFwiXCIsXHJcbiAgICAgIFwiZGVsaXZlcnlBZGRyZXNzXCI6IHtcclxuICAgICAgICBcImFkZHJlc3NUeXBlXCI6IFwiXCIsXHJcbiAgICAgICAgXCJyZWNlaXZlck5hbWVcIjogXCJcIixcclxuICAgICAgICBcInJlY2VpdmVyUGhvbmVcIjogXCJcIixcclxuICAgICAgICBcImNvdW50cnlOYW1lXCI6IFwiXCIsXHJcbiAgICAgICAgXCJzdGF0ZU5hbWVcIjogXCJcIixcclxuICAgICAgICBcImNpdHlOYW1lXCI6IFwiXCIsXHJcbiAgICAgICAgXCJsb2NhbGl0eU5hbWVcIjogXCJcIixcclxuICAgICAgICBcImFkZHJlc3NMaW5lMVwiOiBcIlwiLFxyXG4gICAgICAgIFwiYWRkcmVzc0xpbmUyXCI6IFwiXCIsXHJcbiAgICAgICAgXCJsYW5kbWFya1wiOiBcIlwiLFxyXG4gICAgICAgIFwiemlwQ29kZVwiOiBcIlwiLFxyXG4gICAgICAgIFwiZ2VvbG9jYXRpb25cIjoge1xyXG4gICAgICAgICAgXCJsYXRpdHVkZVwiOiAwLFxyXG4gICAgICAgICAgXCJsb25naXR1ZGVcIjogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJzdGF0ZUNvZGVcIjogXCJcIlxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgdG90YWxBbW91bnQ6IDBcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICAgIGlmICghdGhpcy5pc0xvYWRpbmcpIHtcclxuICAgICAgICB0aGlzLmdldFdpc2hsaXN0SW5kZXhEQkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgICAgdGhpcy53aXNobGlzdEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICAgIFwidXNlck5hbWVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5uYW1lLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAgICAgICBcImRlbGl2ZXJ5QWRkcmVzc1wiOiBudWxsLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlckl0ZW1zKHRoaXMudXNlckRldGFpbHMudXNlcklkLCBcIldJU0hMSVNUXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc3QgdGVtcFVzZXJXaXNobGlzdCA9IHJlc3BvbnNlPy5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcyA/PyBbXVxyXG4gICAgICAgIHRoaXMud2lzaGxpc3RJbmZvW1wiY2FydElkXCJdID0gcmVzcG9uc2UuZGF0YT8uWzBdPy5jYXJ0SWQ7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGE/LlswXT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkQWxsUHJvZHVjdFRvV2lzaGxpc3QodGVtcFVzZXJXaXNobGlzdCkub25jb21wbGV0ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGVtcFVzZXJXaXNobGlzdCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHdpc2h0bGlzdFJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgICAgICB3aXNodGxpc3RSZXNwb25zZS5vbnN1Y2Nlc3MgPSAod2lzaGxpc3REYXRhOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB3aXNobGlzdFJlc3BvbnNlID0gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLndpc2hsaXN0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICB3aXNobGlzdFJlc3BvbnNlLmZpbmFsbHkoKCk9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIndpc2h0bGlzdCBEYXRhXCIsIHdpc2hsaXN0RGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUyA9IHdpc2hsaXN0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLndpc2hsaXN0SW5mbztcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgICAgcmVzcG9uc2Uub25zdWNjZXNzID0gKHVzZXJXaXNobGlzdFJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUyA9IHVzZXJXaXNobGlzdFJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgICAgdGhpcy53aXNobGlzdEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLnJlc3BvbnNlRGF0YSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd3aXNobGlzdElkJywgcmVzcG9uc2UuZGF0YT8uY2FydElkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2lzaGxpc3RJbmZvW1wiY2FydElkXCJdID0gcmVzcG9uc2UuZGF0YT8uY2FydElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLndpc2hsaXN0SW5mbztcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmdldFdpc2hsaXN0SW5kZXhEQkRhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdmVUb0NhcnQocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICBpZiAoIXByb2R1Y3QucXVhbnRpdHkpXHJcbiAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSAxO1xyXG5cclxuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICBpZiAoISF1c2VyRGV0YWlscykge1xyXG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgIFwiaXRlbXNcIjogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcIml0ZW1JZFwiOiBwcm9kdWN0Lml0ZW1JZCxcclxuICAgICAgICAgICAgXCJidXNpbmVzc0lkXCI6IHByb2R1Y3QuYnVzaW5lc3NJZCxcclxuICAgICAgICAgICAgXCJpdGVtTmFtZVwiOiBwcm9kdWN0Lml0ZW1OYW1lLFxyXG4gICAgICAgICAgICBcImJ1c2luZXNzTmFtZVwiOiBwcm9kdWN0LmJ1c2luZXNzTmFtZSxcclxuICAgICAgICAgICAgXCJpbWdVcmxcIjogcHJvZHVjdC5pbWdVcmwsXHJcbiAgICAgICAgICAgIFwidGF4Q2F0ZWdvcnlcIjogXCJOT05fTVJQXCIsXHJcbiAgICAgICAgICAgIFwicXVhbnRpdHlcIjogcHJvZHVjdC5xdWFudGl0eSxcclxuICAgICAgICAgICAgXCJwcmljZVwiOiBwcm9kdWN0LnByaWNlLFxyXG4gICAgICAgICAgICBcIml0ZW1UYXhcIjogcHJvZHVjdC5pdGVtVGF4LFxyXG4gICAgICAgICAgICBcImRpc2NvdW50ZWRQcmljZVwiOiBwcm9kdWN0LmRpc2NvdW50ZWRQcmljZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLm1vdmVJdGVtVG9DYXJ0KHVzZXJEZXRhaWxzLnVzZXJJZCwgcGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7fSlcclxuICAgIH1cclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9DYXJ0KHByb2R1Y3QpO1xyXG4gICAgdHJhbnNhY3Rpb24ub25zdWNjZXNzID0gKHdpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3QuaXRlbUlkKS5vbnN1Y2Nlc3MgPSAod2lzbGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzXCIpO1xyXG4gICAgICAgIC8vIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0KS5vbnN1Y2Nlc3MgPSAoY2FydFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMuZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpPT4gaXRlbS5pdGVtSWQgIT0gcHJvZHVjdC5pdGVtSWQpO1xyXG4gICAgICAgICAgdGhpcy53aXNobGlzdEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLndpc2hsaXN0SW5mbztcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnTW92ZSB0byBjYXJ0JywgZGV0YWlsOiAnSXRlbSBzdWNjZXNzZnVsbHkgbW92ZWQgdG8gY2FydCcgfSk7XHJcbiAgICB9XHJcbiAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gKHdpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0ZhaWx1cmUnLCBkZXRhaWw6ICdGYWlsZWQgdG8gbW92ZSBpdGVtIHRvIGNhcnQnIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRXaXNobGlzdEluZGV4REJEYXRhKCkge1xyXG4gICAgXHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHJlc3BvbnNlLm9uc3VjY2VzcyA9ICh1c2VyV2lzaGxpc3RSZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMgPSB1c2VyV2lzaGxpc3RSZXNwb25zZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUztcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMud2lzaGxpc3RJbmZvO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBkZWxldGVGcm9tV2hpc2xpc3QocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVMuZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpPT4gaXRlbS5pdGVtSWQgIT0gcHJvZHVjdC5pdGVtSWQpO1xyXG4gICAgdGhpcy53aXNobGlzdEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TO1xyXG4gICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLndpc2hsaXN0SW5mbztcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tV2lzaGxpc3RQYWdlKHByb2R1Y3QsIHRoaXMud2lzaGxpc3RJbmZvKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHt9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3QuaXRlbUlkKTtcclxuICAgIH1cclxuICB9IFxyXG4gIGFkZFRvRmF2KGl0ZW06IE9yZGVyZWRJdGVtcywgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpXHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgKz0gMTtcclxuICAgIGVsc2VcclxuICAgICAgaXRlbS5xdWFudGl0eSAtPSAxO1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIHRoaXMud2lzaGxpc3RJbmZvLm9yZGVyZWRJdGVtcz8uZm9yRWFjaCgocHJvZHVjdDogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdC5pdGVtSWQpXHJcbiAgICAgICAgICBwcm9kdWN0LnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtRnJvbVdpc2hsaXN0UGFnZShpdGVtLCB0aGlzLndpc2hsaXN0SW5mbykuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHt9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvV2lzaGxpc3QoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcbn1cclxuIiwiXHJcbjxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCI+PC9wLXRvYXN0PlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcnQtcGFyZW50IGNvbnRhaW5lclwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPiAwXCIgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktYmFnXCI+XHJcbiAgICAgICAgICAgIE15IFdpc2hsaXN0Jm5ic3A7IDxzcGFuPih7e3Jlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGh9fSBJdGVtcyk8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cImdhcDogMTBweDtcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtczsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaXRlbS1wYXJlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicHJvZHVjdC1pbWdcIiBbc3JjXT1cIml0ZW0uaW1nVXJsXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGgtMTAwIGl0ZW0tZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGgtMjNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSBoZWFkaW5nLWxhcmdlXCI+e3tpdGVtLml0ZW1OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXdpdGgtdGF4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3tpdGVtLmRpc2NvdW50ZWRQcmljZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFjdGlvbi1idG5cIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcXVhbnRpdHlcIiAqbmdJZj1cIml0ZW0ucXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvRmF2KGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKm5nSWY9XCIhaXRlbS5xdWFudGl0eVwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnQUREJylcIj5BZGQgUXVhbnRpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKGNsaWNrKT1cIm1vdmVUb0NhcnQoaXRlbSlcIj5Nb3ZlIHRvIENhcnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBpdGVtUHJpY2VcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvOyB3aWR0aDogMzAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1wcmljZVwiICpuZ0lmPVwiaXRlbS5xdWFudGl0eVwiPjxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7eyhpdGVtLmRpc2NvdW50ZWRQcmljZSkgKiBpdGVtLnF1YW50aXR5fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZGVsZXRlLWl0ZW1cIiAoY2xpY2spPVwiZGVsZXRlRnJvbVdoaXNsaXN0KGl0ZW0pXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJlbXB0eS1jYXJ0XCIgKm5nSWY9XCIocmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8xMDcyMTNjMTcxNjU0MzMzNDA0MGVtcHR5LWNhcnQucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgWW91ciBXaGlzbGlzdCBpcyBlbXB0eVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uIGQtZmxleCBtdC00XCI+XHJcbiAgICAgICAgICAgICAgTG9va3MgbGlrZSB5b3UgaGF2ZSBub3QgYWRkZWQgYW55dGhpbmcgdG8geW91ciBXaGlzbGlzdC4gR28gYWhlYWQgJiBleHBsb3JlIHRvcCBjYXRlZ29yaWVzLlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICBcclxuICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj4iXX0=
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpc2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvd2hpc2xpc3Qvd2hpc2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNL0MsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7QUFxQjVDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxXQUFXO0lBV2hELFlBQ21CLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGNBQXFD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cHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBDYXJ0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL2NhcnQubW9kYWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby13aGlzbGlzdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRJY29uLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAvL0RJUkVDVElWRVxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgVG9hc3RNb2R1bGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vd2hpc2xpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi93aGlzbGlzdC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2hpc2xpc3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgXHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhPzogQ2FydDtcclxuICBASW5wdXQoKSBkYXRhPzogYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT8gOiBib29sZWFuO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzdHlsZXM6IGFueTtcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXNlckRldGFpbHM6IGFueTtcclxuICBwcml2YXRlIFVTRVJfV0lTSExJU1RfSVRFTVM6IE9yZGVyZWRJdGVtc1tdID0gW107XHJcbiAgd2lzaGxpc3RJbmZvOiBhbnkgPSB7XHJcbiAgICBvcmRlcmVkSXRlbXM6IG51bGwsXHJcbiAgICBidXNpbmVzc0lkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXHJcbiAgICBiaWxsZGV0YWlsczoge1xyXG4gICAgICBcInRvdGFsTmV0VmFsdWVcIjogMCxcclxuICAgICAgXCJ0b3RhbEdyb3NzVmFsdWVcIjogMCxcclxuICAgICAgXCJ0b3RhbFRheFwiOiAwLFxyXG4gICAgICBcInRvdGFsT2ZmZXJlZFZhbHVlXCI6IDAsXHJcbiAgICAgIFwiZGVsaXZlcnlDaGFyZ2VzXCI6IDBcclxuICAgIH0sXHJcbiAgICBwbGF0Zm9ybTogXCJXRUJcIixcclxuICAgIGNhcnRUeXBlOiBcIldJU0hMSVNUXCIsXHJcbiAgICB1c2VyRGV0YWlsczoge1xyXG4gICAgICBcInVzZXJJZFwiOiBcIlwiLFxyXG4gICAgICBcInVzZXJOYW1lXCI6IFwiXCIsXHJcbiAgICAgIFwibW9iaWxlXCI6IFwiXCIsXHJcbiAgICAgIFwiZW1haWxcIjogXCJcIixcclxuICAgICAgXCJkZWxpdmVyeUFkZHJlc3NcIjoge1xyXG4gICAgICAgIFwiYWRkcmVzc1R5cGVcIjogXCJcIixcclxuICAgICAgICBcInJlY2VpdmVyTmFtZVwiOiBcIlwiLFxyXG4gICAgICAgIFwicmVjZWl2ZXJQaG9uZVwiOiBcIlwiLFxyXG4gICAgICAgIFwiY291bnRyeU5hbWVcIjogXCJcIixcclxuICAgICAgICBcInN0YXRlTmFtZVwiOiBcIlwiLFxyXG4gICAgICAgIFwiY2l0eU5hbWVcIjogXCJcIixcclxuICAgICAgICBcImxvY2FsaXR5TmFtZVwiOiBcIlwiLFxyXG4gICAgICAgIFwiYWRkcmVzc0xpbmUxXCI6IFwiXCIsXHJcbiAgICAgICAgXCJhZGRyZXNzTGluZTJcIjogXCJcIixcclxuICAgICAgICBcImxhbmRtYXJrXCI6IFwiXCIsXHJcbiAgICAgICAgXCJ6aXBDb2RlXCI6IFwiXCIsXHJcbiAgICAgICAgXCJnZW9sb2NhdGlvblwiOiB7XHJcbiAgICAgICAgICBcImxhdGl0dWRlXCI6IDAsXHJcbiAgICAgICAgICBcImxvbmdpdHVkZVwiOiAwXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcInN0YXRlQ29kZVwiOiBcIlwiXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB0b3RhbEFtb3VudDogMFxyXG4gIH1cclxuXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSByZXNwb25zZTtcclxuICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZykge1xyXG4gICAgICAgIHRoaXMuZ2V0V2lzaGxpc3RJbmRleERCRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyO1xyXG4gICAgICB0aGlzLndpc2hsaXN0SW5mby51c2VyRGV0YWlscyA9IHtcclxuICAgICAgICBcInVzZXJJZFwiOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWQsXHJcbiAgICAgICAgXCJ1c2VyTmFtZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUsXHJcbiAgICAgICAgXCJtb2JpbGVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5tb2JpbGUsXHJcbiAgICAgICAgXCJlbWFpbFwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0LmVtYWlsLFxyXG4gICAgICAgIFwiZGVsaXZlcnlBZGRyZXNzXCI6IG51bGwsXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VySXRlbXModGhpcy51c2VyRGV0YWlscy51c2VySWQsIFwiV0lTSExJU1RcIikuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+IHtcclxuICAgICAgICBjb25zdCB0ZW1wVXNlcldpc2hsaXN0ID0gcmVzcG9uc2U/LmRhdGE/LlswXT8ub3JkZXJlZEl0ZW1zID8/IFtdXHJcbiAgICAgICAgdGhpcy53aXNobGlzdEluZm9bXCJjYXJ0SWRcIl0gPSByZXNwb25zZS5kYXRhPy5bMF0/LmNhcnRJZDtcclxuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YT8uWzBdPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRBbGxQcm9kdWN0VG9XaXNobGlzdCh0ZW1wVXNlcldpc2hsaXN0KS5vbmNvbXBsZXRlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0ZW1wVXNlcldpc2hsaXN0KTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigod2lzaHRsaXN0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICAgIHdpc2h0bGlzdFJlc3BvbnNlLm9uc3VjY2VzcyA9ICh3aXNobGlzdERhdGE6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHdpc2hsaXN0UmVzcG9uc2UgPSB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMud2lzaGxpc3RJbmZvKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICAgIHdpc2hsaXN0UmVzcG9uc2UuZmluYWxseSgoKT0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwid2lzaHRsaXN0IERhdGFcIiwgd2lzaGxpc3REYXRhKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gd2lzaGxpc3REYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy53aXNobGlzdEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMud2lzaGxpc3RJbmZvO1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigocmVzcG9uc2UpPT4ge1xyXG4gICAgICAgICAgICByZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlcldpc2hsaXN0UmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TID0gdXNlcldpc2hsaXN0UmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICAgICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVM7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLndpc2hsaXN0SW5mbztcclxuICAgICAgICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMucmVzcG9uc2VEYXRhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3dpc2hsaXN0SWQnLCByZXNwb25zZS5kYXRhPy5jYXJ0SWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53aXNobGlzdEluZm9bXCJjYXJ0SWRcIl0gPSByZXNwb25zZS5kYXRhPy5jYXJ0SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMud2lzaGxpc3RJbmZvO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuZ2V0V2lzaGxpc3RJbmRleERCRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW92ZVRvQ2FydChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIGlmICghcHJvZHVjdC5xdWFudGl0eSlcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IDE7XHJcblxyXG4gICAgY29uc3QgdXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgIGlmICghIXVzZXJEZXRhaWxzKSB7XHJcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgXCJpdGVtc1wiOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwiaXRlbUlkXCI6IHByb2R1Y3QuaXRlbUlkLFxyXG4gICAgICAgICAgICBcImJ1c2luZXNzSWRcIjogcHJvZHVjdC5idXNpbmVzc0lkLFxyXG4gICAgICAgICAgICBcIml0ZW1OYW1lXCI6IHByb2R1Y3QuaXRlbU5hbWUsXHJcbiAgICAgICAgICAgIFwiYnVzaW5lc3NOYW1lXCI6IHByb2R1Y3QuYnVzaW5lc3NOYW1lLFxyXG4gICAgICAgICAgICBcImltZ1VybFwiOiBwcm9kdWN0LmltZ1VybCxcclxuICAgICAgICAgICAgXCJ0YXhDYXRlZ29yeVwiOiBcIk5PTl9NUlBcIixcclxuICAgICAgICAgICAgXCJxdWFudGl0eVwiOiBwcm9kdWN0LnF1YW50aXR5LFxyXG4gICAgICAgICAgICBcInByaWNlXCI6IHByb2R1Y3QucHJpY2UsXHJcbiAgICAgICAgICAgIFwiaXRlbVRheFwiOiBwcm9kdWN0Lml0ZW1UYXgsXHJcbiAgICAgICAgICAgIFwiZGlzY291bnRlZFByaWNlXCI6IHByb2R1Y3QuZGlzY291bnRlZFByaWNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UubW92ZUl0ZW1Ub0NhcnQodXNlckRldGFpbHMudXNlcklkLCBwYXlsb2FkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHt9KVxyXG4gICAgfVxyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdCk7XHJcbiAgICB0cmFuc2FjdGlvbi5vbnN1Y2Nlc3MgPSAod2lzaGxpc3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdC5pdGVtSWQpLm9uc3VjY2VzcyA9ICh3aXNsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlN1Y2Nlc3NcIik7XHJcbiAgICAgICAgLy8gdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9DYXJ0KHByb2R1Y3QpLm9uc3VjY2VzcyA9IChjYXJ0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICAgICAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVM7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMud2lzaGxpc3RJbmZvO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdNb3ZlIHRvIGNhcnQnLCBkZXRhaWw6ICdJdGVtIHN1Y2Nlc3NmdWxseSBtb3ZlZCB0byBjYXJ0JyB9KTtcclxuICAgIH1cclxuICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSAod2lzaGxpc3RSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRmFpbHVyZScsIGRldGFpbDogJ0ZhaWxlZCB0byBtb3ZlIGl0ZW0gdG8gY2FydCcgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFdpc2hsaXN0SW5kZXhEQkRhdGEoKSB7XHJcbiAgICBcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHJlc3BvbnNlKT0+IHtcclxuICAgICAgcmVzcG9uc2Uub25zdWNjZXNzID0gKHVzZXJXaXNobGlzdFJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUyA9IHVzZXJXaXNobGlzdFJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy53aXNobGlzdEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX1dJU0hMSVNUX0lURU1TO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy53aXNobGlzdEluZm87XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGRlbGV0ZUZyb21XaGlzbGlzdChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUyA9IHRoaXMuVVNFUl9XSVNITElTVF9JVEVNUy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCk7XHJcbiAgICB0aGlzLndpc2hsaXN0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfV0lTSExJU1RfSVRFTVM7XHJcbiAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMud2lzaGxpc3RJbmZvO1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21XaXNobGlzdFBhZ2UocHJvZHVjdCwgdGhpcy53aXNobGlzdEluZm8pLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge30pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdC52YXJpZW50SWQpO1xyXG4gICAgfVxyXG4gIH0gXHJcbiAgYWRkVG9GYXYoaXRlbTogT3JkZXJlZEl0ZW1zLCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJylcclxuICAgICAgaXRlbS5xdWFudGl0eSArPSAxO1xyXG4gICAgZWxzZVxyXG4gICAgICBpdGVtLnF1YW50aXR5IC09IDE7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcclxuICAgICAgdGhpcy53aXNobGlzdEluZm8ub3JkZXJlZEl0ZW1zPy5mb3JFYWNoKChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnZhcmllbnRJZCA9PSBwcm9kdWN0LnZhcmllbnRJZClcclxuICAgICAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tV2lzaGxpc3RQYWdlKGl0ZW0sIHRoaXMud2lzaGxpc3RJbmZvKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge30pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChpdGVtKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0S2V5cyhvYmplY3Q6IE9iamVjdCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpO1xyXG4gIH1cclxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCVVNJTkVTU19DT05TVEFOVFMuQ1VSUkVOQ1k7XHJcbiAgfVxyXG59XHJcbiIsIjxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCI+PC9wLXRvYXN0PlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXBhcmVudCBjb250YWluZXJcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID4gMFwiIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdC1wYW5lbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1iYWdcIj5cclxuICAgICAgICAgIE15IFdpc2hsaXN0Jm5ic3A7IDxzcGFuPih7e3Jlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGh9fSBJdGVtcyk8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgc3R5bGU9XCJnYXA6IDEwcHg7XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtaXRlbXNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGl0ZW0tcGFyZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIiBzdHlsZT1cInBhZGRpbmc6IDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicHJvZHVjdC1pbWdcIiBbc3JjXT1cIml0ZW0uaW1nVXJsXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBoLTEwMCBpdGVtLWRlc2NcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxoLTIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSBoZWFkaW5nLWxhcmdlXCI+e3tpdGVtLml0ZW1OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7e2l0ZW0uZGlzY291bnRlZFByaWNlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pdGVtVmFyaWFudFwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKm5nRm9yPVwibGV0IHZhcmllbnQgb2YgZ2V0S2V5cyhpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+e3sgdmFyaWVudCB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7IGhlaWdodDogMTNweDsgd2lkdGg6IDEzcHg7IGJvcmRlci1yYWRpdXM6IDUwJTtcIiAqbmdJZj1cInZhcmllbnQudG9Mb3dlckNhc2UoKSA9PSAnY29sb3InXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF1cIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7XCI+IHt7IGl0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllc1t2YXJpZW50XSB8IHVwcGVyY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhY3Rpb24tYnRuXCIgc3R5bGU9XCJnYXA6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKm5nSWY9XCJpdGVtLnF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvRmF2KGl0ZW0sICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0ZhdihpdGVtLCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1xdWFudGl0eVwiICpuZ0lmPVwiIWl0ZW0ucXVhbnRpdHlcIiAoY2xpY2spPVwiYWRkVG9GYXYoaXRlbSwgJ0FERCcpXCI+QWRkIFF1YW50aXR5XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXF1YW50aXR5XCIgKGNsaWNrKT1cIm1vdmVUb0NhcnQoaXRlbSlcIj5Nb3ZlIHRvIENhcnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBpdGVtUHJpY2VcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvOyB3aWR0aDogMzAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1wcmljZVwiICpuZ0lmPVwiaXRlbS5xdWFudGl0eVwiPjxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7KGl0ZW0uZGlzY291bnRlZFByaWNlKSAqIGl0ZW0ucXVhbnRpdHl9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRlbGV0ZS1pdGVtXCIgKGNsaWNrKT1cImRlbGV0ZUZyb21XaGlzbGlzdChpdGVtKVwiPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJlbXB0eS1jYXJ0XCIgKm5nSWY9XCIocmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtaW1hZ2VcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8xMDcyMTNjMTcxNjU0MzMzNDA0MGVtcHR5LWNhcnQucG5nXCJcclxuICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcnQtdGV4dFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIFlvdXIgV2hpc2xpc3QgaXMgZW1wdHlcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uIGQtZmxleCBtdC00XCI+XHJcbiAgICAgICAgICAgIExvb2tzIGxpa2UgeW91IGhhdmUgbm90IGFkZGVkIGFueXRoaW5nIHRvIHlvdXIgV2hpc2xpc3QuIEdvIGFoZWFkICYgZXhwbG9yZSB0b3AgY2F0ZWdvcmllcy5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj4iXX0=
|