simpo-component-library 2.0.24 → 2.0.26

Sign up to get free protection for your applications and to get access to all the features.
@@ -54,7 +54,6 @@ export class CartComponent extends BaseSection {
54
54
  this.enteredCouponCode = "";
55
55
  this.couponList = [];
56
56
  this.cartInfo = {
57
- cartId: localStorage.getItem("cartId"),
58
57
  orderedItems: null,
59
58
  businessId: localStorage.getItem("bId") ?? localStorage.getItem("businessId"),
60
59
  billdetails: {
@@ -186,7 +185,7 @@ export class CartComponent extends BaseSection {
186
185
  this.storageService.getCartProduct().then((products) => {
187
186
  const deliveryOption = JSON.parse(localStorage.getItem("deliveryOptions") ?? "{}");
188
187
  this.cartInfo.orderedItems = products;
189
- if (!this.cartInfo?.cartId && !(localStorage.getItem("cartId") == "undefined" || localStorage.getItem("cartId") == "null")) {
188
+ if (!this.cartInfo?.cartId && localStorage.getItem("cartId") && !(localStorage.getItem("cartId") == "undefined" || localStorage.getItem("cartId") == "null")) {
190
189
  this.cartInfo['cartId'] = localStorage.getItem("cartId");
191
190
  }
192
191
  this.userDetails = this.storageService.getUser();
@@ -769,4 +768,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
769
768
  }], customClass: [{
770
769
  type: Input
771
770
  }] } });
772
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXJ0L2NhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2FydC9jYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBR3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBS3JHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxN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QUUsV0FBVyxFQUFFLHFCQUFxQixJQUFJLENBQUMsQ0FBQztZQUMxRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQztZQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUM7WUFFOUQsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFDLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxjQUFjLEVBQUUsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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QUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWRkcmVzcywgQ2FydFNlY3Rpb25Nb2RhbCwgQ2FydFNlY3Rpb25TdHlsZXNNb2RlbCB9IGZyb20gJy4vY2FydC5tb2RhbCc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSBcIi4uL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRlVXNlckNvbXBvbmVudCB9IGZyb20gJy4uL2F1dGhlbnRpY2F0ZS11c2VyL2F1dGhlbnRpY2F0ZS11c2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgQlVTSU5FU1NfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2J1c2luZXNzLmNvbnN0YW50JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEJvdHRvbVNoZWV0LCBNYXRCb3R0b21TaGVldE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldCc7XHJcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IEN1c3RvbWVyUmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tZXItcmV2aWV3L2N1c3RvbWVyLXJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlcXVpcmVkQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0aGVudGljYXRpb24tcmVxdWlyZWQvYXV0aGVudGljYXRpb24tcmVxdWlyZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgbWVyZ2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyByZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xyXG5cclxuaW50ZXJmYWNlIENvdXBvbiB7XHJcbiAgZGlzY291bnRUeXBlOiBzdHJpbmc7XHJcbiAgZGlzY291bnROYW1lOiBzdHJpbmc7XHJcbiAgZGlzY291bnREZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIGFwcGxpY2FibGU6IGJvb2xlYW47XHJcbiAgY291cG9uQ29kZTogc3RyaW5nO1xyXG4gIGNvdXBvbklkOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBib29sZWFuO1xyXG4gIHZhbGlkRnJvbTogRGF0ZTtcclxuICB2YWxpZFRvOiBEYXRlO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWNhcnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgTWF0Qm90dG9tU2hlZXRNb2R1bGUsXHJcbiAgICAvL0RJUkVDVElWRVxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgQWRkcmVzc0NvbXBvbmVudCxcclxuICAgIFRvYXN0TW9kdWxlLFxyXG4gICAgQ3VzdG9tZXJSZXZpZXdDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NhcnQuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkYXRhPzogQ2FydFNlY3Rpb25Nb2RhbDtcclxuICBASW5wdXQoKSByZXNwb25zZURhdGE/OiBhbnk7XHJcbiAgQElucHV0KCkgaW5kZXg/IDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGVkaXQ/IDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzdHlsZXM/OiBDYXJ0U2VjdGlvblN0eWxlc01vZGVsO1xyXG4gIHB1YmxpYyBjdXJyZW50VGFiOiAnQkFHJyB8ICdBRERSRVNTJyB8ICdQQVlNRU5UJyA9IFwiQkFHXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBib3R0b21TaGVldDogTWF0Qm90dG9tU2hlZXQsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIG1hdERpYWxvZ0RhdGE6IGFueSxcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDYXJ0Q29tcG9uZW50PlxyXG4gICl7XHJcbiAgICBzdXBlcigpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVzZXJEZXRhaWxzOiBVc2VyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBVU0VSX0NBUlRfSVRFTVM6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHNlbGVjdGVkQWRkcmVzc0lkeDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgZW50ZXJlZENvdXBvbkNvZGU6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHVibGljIGNvdXBvbkxpc3Q6IENvdXBvbltdID0gW107XHJcblxyXG4gIGNhcnRJbmZvOiBhbnkgPSB7XHJcbiAgICBjYXJ0SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpLFxyXG4gICAgb3JkZXJlZEl0ZW1zOiBudWxsLFxyXG4gICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgYmlsbGRldGFpbHM6IHtcclxuICAgICAgXCJ0b3RhbE5ldFZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhBZnRlckRpc2NvdW50XCI6IDAsXHJcbiAgICAgIFwidG90YWxHcm9zc1ZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgICAgXCJ0b3RhbE9mZmVyZWRWYWx1ZVwiOiAwLFxyXG4gICAgICBcImRpc2NvdW50QW1vdW50XCI6IDAsXHJcbiAgICAgIFwiZGVsaXZlcnlDaGFyZ2VzXCI6IDBcclxuICAgIH0sXHJcbiAgICBwbGF0Zm9ybTogXCJXRUJcIixcclxuICAgIGNhcnRUeXBlOiBcIkNBUlRcIixcclxuICAgIGFkZHJlc3NEZXRhaWxzOiBudWxsLFxyXG4gICAgdXNlckRldGFpbHM6IHtcclxuICAgICAgXCJ1c2VySWRcIjogXCJcIixcclxuICAgICAgXCJ1c2VyTmFtZVwiOiBcIlwiLFxyXG4gICAgICBcIm1vYmlsZVwiOiBcIlwiLFxyXG4gICAgICBcImVtYWlsXCI6IFwiXCJcclxuICAgIH0sXHJcbiAgICB0b3RhbEFtb3VudDogMFxyXG4gIH1cclxuXHJcbiAgbG9hZGluZ1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICBuZ09uSW5pdCgpe1xyXG4gICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRJbmRleERCRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy51cGRhdGVVc2VyQ2FydFYyKCk7XHJcblxyXG4gICAgLy8gaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAvLyAgIHRoaXMudXBkYXRlVXNlckNhcnQoKTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHRoaXMuZ2V0SW5kZXhEQkRhdGEoKTtcclxuICAgIC8vICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgLy8gfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNlckNhcnQoKSB7XHJcbiAgICBjb25zdCBkZWxpdmVyeU9wdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJkZWxpdmVyeU9wdGlvbnNcIikgPz8gXCJ7fVwiKTtcclxuXHJcbiAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgXCJ1c2VyTmFtZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUsXHJcbiAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWwsXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh0aGlzLnVzZXJEZXRhaWxzLnVzZXJJZCwgXCJDQVJUXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIGNvbnN0IHRlbXBVc2VyQ2FydCA9IHJlc3BvbnNlPy5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcyA/PyBbXTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkO1xyXG4gICAgICB0aGlzLmdldENvdXBvbkxpc3QoKTtcclxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGE/LlswXT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5tZXJnZU9yZGVySXRlbXModGVtcFVzZXJDYXJ0KTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKS5vbmNvbXBsZXRlID0gKCk9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyQ2FydCgpLnRoZW4oKGNhcnRSZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uSWRcIikgPT0gXCJ1bmRlZmluZWRcIiB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvdXBvbklkXCIpID09IFwibnVsbFwiKSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvdXBvbklkXCIpO1xyXG4gICAgICAgICAgICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uQ29kZVwiKSA9PSBcInVuZGVmaW5lZFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uQ29kZVwiKSA9PSBcIm51bGxcIikpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbkNvZGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvdXBvbkNvZGVcIik7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzdFJlc3BvbnNlID0gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLmNhcnRJbmZvKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICByZXN0UmVzcG9uc2UudGhlbigocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUX0lURU1TLmZvckVhY2goKGl0ZW0pPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gcmVzcG9uc2U/LmRhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheEFmdGVyRGlzY291bnQgPSByZXNwb25zZT8uZGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkQWxsUHJvZHVjdHNUb0NhcnQodGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25lcnJvciA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0Vycm9yJywgZGV0YWlsOiAnRmFpbGVkIHRvIHVwZGF0ZSBjYXJ0IGRldGFpbHMnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMgPSBjYXJ0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlID0gMDtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXhBZnRlckRpc2NvdW50ID0gY2FydERhdGEuYmlsbGRldGFpbHM/LnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA/PyAwO1xyXG4gICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCk7ICsgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YVtcImNhcnRJZFwiXSA9IHRoaXMuY2FydEluZm9bXCJjYXJ0SWRcIl07XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVVzZXJDYXJ0VjIoKXtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q2FydFByb2R1Y3QoKS50aGVuKChwcm9kdWN0czogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHByb2R1Y3RzO1xyXG5cclxuICAgICAgaWYoIXRoaXMuY2FydEluZm8/LmNhcnRJZCAmJiAhKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mb1snY2FydElkJ10gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcblxyXG4gICAgICBpZih0aGlzLnVzZXJEZXRhaWxzKSB7XHJcbiAgICAgICAgdGhpcy5nZXRDb3Vwb25MaXN0KCk7XHJcblxyXG4gICAgICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgICAgICBcInVzZXJJZFwiOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWQsXHJcbiAgICAgICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAgICAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICAgICAgXCJlbWFpbFwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0LmVtYWlsLFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3Vwb25JZFwiKSA9PSBcInVuZGVmaW5lZFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uSWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5jb3Vwb25JZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uSWRcIik7XHJcbiAgICAgICAgaWYgKCEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3Vwb25Db2RlXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3Vwb25Db2RlXCIpID09IFwibnVsbFwiKSlcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uQ29kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uQ29kZVwiKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzdFJlc3BvbnNlID0gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLmNhcnRJbmZvKS50b1Byb21pc2UoKTtcclxuICAgICAgICByZXN0UmVzcG9uc2UudGhlbigoY2FydFJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8gPSBjYXJ0UmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJVc2VyQ2FydCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuXHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaCgoaXRlbTogYW55KT0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgKyB0aGlzLmdldFRheEFtb3VudCgpOyArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIHVwZGF0ZVVzZXJDYXJ0MigpIHtcclxuICAvLyAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG5cclxuICAvLyAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyO1xyXG4gIC8vICAgdGhpcy5jYXJ0SW5mby51c2VyRGV0YWlscyA9IHtcclxuICAvLyAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gIC8vICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAvLyAgICAgXCJtb2JpbGVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5tb2JpbGUsXHJcbiAgLy8gICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAvLyAgIH1cclxuICAvLyAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlckl0ZW1zKHRoaXMudXNlckRldGFpbHMudXNlcklkLCBcIkNBUlRcIikuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHRlbXBVc2VyQ2FydCA9IHJlc3BvbnNlPy5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcyA/PyBbXTtcclxuICAvLyAgICAgdGhpcy5tZXJnZU9yZGVySXRlbXModGVtcFVzZXJDYXJ0KTtcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICBtZXJnZU9yZGVySXRlbXMoc3luY2VkSXRlbXM6IGFueVtdKSB7XHJcbiAgICBmb3IobGV0IHByb2R1Y3Qgb2Ygc3luY2VkSXRlbXMpIHtcclxuICAgICAgbGV0IGl0ZW1Gb3VuZCA9IGZhbHNlO1xyXG4gICAgICBmb3IobGV0IGNhcnRJdGVtIG9mIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKSB7XHJcbiAgICAgICAgaWYoY2FydEl0ZW0udmFyaWVudElkID09PSBwcm9kdWN0LnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIGNhcnRJdGVtLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoIWl0ZW1Gb3VuZCkge1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zLnB1c2gocHJvZHVjdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvdXBvbkxpc3QoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FydEluZm8uY2FydElkICYmICEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJ1bmRlZmluZWRcIiB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKSA9PSBcIm51bGxcIikpXHJcbiAgICAgIHRoaXMuY2FydEluZm8uY2FydElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmFwcGxpY2FibGVEaXNjb3VudExpc3QodGhpcy5jYXJ0SW5mby5jYXJ0SWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMuY291cG9uTGlzdCA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigoY291cG9uOiBhbnkpPT4gY291cG9uLmFjdGl2ZSk/Lm1hcCgoY291cG9uOiBhbnkpPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNjb3VudFR5cGU6IGNvdXBvbi5kaXNjb3VudCxcclxuICAgICAgICAgIGRpc2NvdW50TmFtZTogY291cG9uLmNvdXBvblRpdGxlLFxyXG4gICAgICAgICAgZGlzY291bnREZXNjcmlwdGlvbjogY291cG9uLmNvdXBvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY291cG9uQ29kZTogY291cG9uLmNvdXBvbkNvZGUsXHJcbiAgICAgICAgICBjb3Vwb25JZDogY291cG9uLmNvdXBvbklkLFxyXG4gICAgICAgICAgYXBwbGljYWJsZTogY291cG9uLmFwcGxpY2FibGUsXHJcbiAgICAgICAgICBzdGF0dXM6IGNvdXBvbi5hY3RpdmUsXHJcbiAgICAgICAgICB2YWxpZFRvOiBjb3Vwb24uZXhwaXJlcyxcclxuICAgICAgICAgIHZhbGlkRnJvbTogY291cG9uLnZhbGlkRnJvbVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSlcclxuICB9XHJcbiAgcmVtb3ZlQ291cG9uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbklkID0gXCJcIjtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uQ29kZSA9IFwiXCI7XHJcbiAgICBjb25zdCByZXN0UmVzcG9uc2UgPSB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgcmVzdFJlc3BvbnNlLnRoZW4oKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG5cclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYXJ0KHJlc3BvbnNlKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb3Vwb25JZFwiKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb3Vwb25Db2RlXCIpO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnQ291cG9uJywgZGV0YWlsOiAnQ291cG9uIFJlbW92ZWQnIH0pO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gMDtcclxuICAgICAgdGhpcy5jb3Vwb25EaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICB9KVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGdldEluZGV4REJEYXRhKCkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyQ2FydCgpLnRoZW4oKGNhcnRSZXNwb25zZSk9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGNhcnRSZXNwb25zZSk7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gMDtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG5cclxuICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMgPSBjYXJ0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnF1YW50aXR5ICogKGl0ZW0uaXRlbVRheCA/PyAwKSk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheEFmdGVyRGlzY291bnQgPSBjYXJ0RGF0YS5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDA7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMpO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgKyB0aGlzLmdldFRheEFtb3VudCgpICsgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuXHJcbiAgICAgICAgaWYodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpXHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJDYXJ0KCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcHJvY2VlZFRvQ2hlY2tvdXQoKXtcclxuICAgIGlmKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKXtcclxuICAgICAgdGhpcy5jdXJyZW50VGFiID0gXCJBRERSRVNTXCI7XHJcbiAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gb3JkZXInIH0pO1xyXG5cclxuICAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCwge3BhbmVsQ2xhc3M6IFwiYXV0aGVudGljYXRlXCIgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICAgICAgICAgIFwidXNlck5hbWVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5uYW1lLFxyXG4gICAgICAgICAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICAgICAgICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJ1bmRlZmluZWRcIiB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKSA9PSBcIm51bGxcIikpXHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJlc3BvbnNlIDogXCIsIHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJDYXJ0VjIoKVxyXG4gICAgICAgICAgICAgIC8vIHRoaXMucHJvY2VlZFRvQ2hlY2tvdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgfSlcclxuICAgICAgLy8gICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNDc1KSB7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuYm90dG9tU2hlZXQub3BlbihBdXRoZW50aWNhdGVVc2VyQ29tcG9uZW50LCB7ZGF0YTogdGhpcy5kYXRhfSkuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgLy8gICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jYXJ0SW5mby51c2VyRGV0YWlscyA9IHtcclxuICAgICAgLy8gICAgICAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgLy8gICAgICAgICAgIFwidXNlck5hbWVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5uYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgXCJtb2JpbGVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5tb2JpbGUsXHJcbiAgICAgIC8vICAgICAgICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWwsXHJcbiAgICAgIC8vICAgICAgICAgfVxyXG5cclxuICAgICAgLy8gICAgICAgICBpZiAoIShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKSA9PSBcInVuZGVmaW5lZFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwibnVsbFwiKSlcclxuICAgICAgLy8gICAgICAgICAgIHRoaXMuY2FydEluZm9bXCJjYXJ0SWRcIl0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhcIlJlc3BvbnNlIDogXCIsIHJlc3BvbnNlKTtcclxuICAgICAgLy8gICAgICAgICBpZiAocmVzcG9uc2UpXHJcbiAgICAgIC8vICAgICAgICAgICB0aGlzLnByb2NlZWRUb0NoZWNrb3V0KCk7XHJcbiAgICAgIC8vICAgICAgIH1cclxuICAgICAgLy8gICAgICk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgLy8gICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQXV0aGVudGljYXRlVXNlckNvbXBvbmVudCwge1xyXG4gICAgICAvLyAgICAgICBoZWlnaHQ6ICdmaXQtY29udGVudCcsXHJcbiAgICAgIC8vICAgICAgIHdpZHRoOiAnMzV2dycsXHJcbiAgICAgIC8vICAgICAgIGRhdGE6IHRoaXMuZGF0YVxyXG4gICAgICAvLyAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgLy8gICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAvLyAgICAgICB0aGlzLmNhcnRJbmZvLnVzZXJEZXRhaWxzID0ge1xyXG4gICAgICAvLyAgICAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgLy8gICAgICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAgICAgLy8gICAgICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgICAgLy8gICAgICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWwsXHJcbiAgICAgIC8vICAgICAgIH1cclxuXHJcbiAgICAgIC8vICAgICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICAvLyAgICAgICAgIHRoaXMuY2FydEluZm9bXCJjYXJ0SWRcIl0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgLy8gICAgICAgY29uc29sZS5sb2coXCJSZXNwb25zZSA6IFwiLCByZXNwb25zZSk7XHJcbiAgICAgIC8vICAgICAgIGlmIChyZXNwb25zZSlcclxuICAgICAgLy8gICAgICAgICB0aGlzLnByb2NlZWRUb0NoZWNrb3V0KCk7XHJcbiAgICAgIC8vICAgICB9KVxyXG4gICAgICAvLyAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ29Ub1Byb2R1Y3REZXRhaWxzKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZGV0YWlscyddLCB7cXVlcnlQYXJhbXM6IHtpZDogcHJvZHVjdC5pdGVtSWQsIHZhcmllbnRJZDogcHJvZHVjdC52YXJpZW50SWR9fSk7XHJcbiAgfVxyXG4gIHByb2NlZWRUb0xpc3RQYWdlKCl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcblxyXG4gICAgU3dhbC5maXJlKHtcclxuICAgICAgaWNvbjogXCJ3YXJuaW5nXCIsXHJcbiAgICAgIGh0bWw6IFwiPHNwYW4+WW91IGNhbiBtb3ZlIDwvc3Bhbj4gPGI+XCIgKyBpdGVtLml0ZW1OYW1lICsgXCI8L2I+IDxzcGFuPnRvIHdpc2hsaXN0IHNvIHlvdSBjYW4gYnV5IGxhdGVyLjwvc3Bhbj5cIixcclxuICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiTW92ZSB0byB3aXNobGlzdFwiLFxyXG4gICAgICBzaG93RGVueUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgZGVueUJ1dHRvblRleHQ6IFwiRGVsZXRlIGl0ZW1cIixcclxuICAgICAgZGVueUJ1dHRvbkNvbG9yOiBcIiM5MjhjOGNcIlxyXG4gICAgfSkudGhlbigocmVzcG9uc2UpPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydFYyKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMubW92ZUl0ZW1Ub1dpc2hsaXN0KGl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmlzRGVuaWVkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtRnJvbUNhcnRWMihpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcHJpdmF0ZSBtb3ZlSXRlbVRvV2lzaGxpc3QoaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0ZhdkZyb21DYXJ0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbUZyb21DYXJ0VjIoaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zLmZpbHRlcigocHJvZHVjdDogYW55KT0+IHByb2R1Y3QudmFyaWVudElkICE9IGl0ZW0udmFyaWVudElkKTtcclxuICAgIGlmKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgIHJlc3RSZXNwb25zZS50aGVuKChjYXJ0UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8gPSBjYXJ0UmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtKTtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYWxjdWxhdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZUNhbGN1bGF0aW9ucygpIHtcclxuICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG5cclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlID0gMDtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gMDtcclxuICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCk7ICsgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtOiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIGl0ZW0ucXVhbnRpdHkgPSAwO1xyXG4gICAgaWYgKHRoaXMuVVNFUl9DQVJUX0lURU1TKVxyXG4gICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TLmZpbHRlcigocHJvZHVjdDogYW55KT0+IHByb2R1Y3QudmFyaWVudElkICE9IGl0ZW0udmFyaWVudElkKTtcclxuICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGlzY291bnRBbW91bnQgPSByZXNwb25zZT8uZGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50ID8/IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uY291cG9uQ29kZSA9IHJlc3BvbnNlLmRhdGE/LmJpbGxkZXRhaWxzPy5jb3Vwb25Db2RlO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmNvdXBvbklkID0gcmVzcG9uc2UuZGF0YT8uYmlsbGRldGFpbHM/LmNvdXBvbklkO1xyXG5cclxuICAgICAgcmVzcG9uc2U/LmRhdGE/Lm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpPT4ge1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnF1YW50aXR5ICogKGl0ZW0uaXRlbVRheCA/PyAwKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgfSlcclxuICB9XHJcbiAgYWRkVG9DYXJ0KGl0ZW06IE9yZGVyZWRJdGVtcywgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgaXRlbS5xdWFudGl0eSArPSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgLT0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbS5xdWFudGl0eSkge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc3QgZGVsaXZlcnlPcHRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGVsaXZlcnlPcHRpb25zXCIpID8/IFwie31cIik7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXhBZnRlckRpc2NvdW50ID0gcmVzcG9uc2U/LmRhdGE/LmJpbGxkZXRhaWxzPy50b3RhbFRheEFmdGVyRGlzY291bnQgPz8gMDtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gcmVzcG9uc2U/LmRhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCA/PyAwO1xyXG5cclxuICAgICAgICByZXNwb25zZT8uZGF0YT8ub3JkZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSk9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnF1YW50aXR5ICogKGl0ZW0uaXRlbVRheCA/PyAwKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWU7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlLCB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4LCB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVG9DYXJ0VjIoaXRlbTogT3JkZXJlZEl0ZW1zLCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICBpdGVtLnF1YW50aXR5ICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaXRlbS5xdWFudGl0eSAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGl0ZW0ucXVhbnRpdHkpe1xyXG4gICAgICBpZih0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgcmVzdFJlc3BvbnNlLnRoZW4oKGNhcnRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvID0gY2FydFJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQoaXRlbSBhcyBPcmRlcmVkSXRlbXMpO1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ2FsY3VsYXRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZXtcclxuICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJvY2VlZFRvUGF5bWVudCgpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0xvZ2luJywgZGV0YWlsOiAnUGxlYXNlIGxvZ2luIHdpdGggbW9iaWxlIG51bWJlciB0byBvcmRlcicgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc1BheW1lbnRHYXRld2F5RW5hYmxlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaXNQYXltZW50R2F0ZXdheUVuYWJsZWRcIikgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImlzUGF5bWVudEdhdGV3YXlFbmFibGVkXCIpID09IFwidHJ1ZVwiIDogdHJ1ZTtcclxuICAgIGNvbnN0IG1lcmNoYW50SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncE1JZCcpID09IFwibnVsbFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwTUlkJykgPT0gXCJ1bmRlZmluZWRcIiA/IG51bGwgOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncE1JZCcpO1xyXG5cclxuICAgIGlmKGlzUGF5bWVudEdhdGV3YXlFbmFibGVkICYmICFtZXJjaGFudElkKXtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ01lcmNoYW50IG9uYm9hcmRlZCcsIGRldGFpbDogJ01lcmNoYW50IGlzIG5vdCBvbmJvYXJkZWQnIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXNlckRldGFpbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICBjb25zdCBhZGRyZXNzID0gdXNlckRldGFpbD8uYWRkcmVzc0RldGFpbHNMaXN0W3RoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4XSBhcyBBZGRyZXNzO1xyXG4gICAgaWYgKGFkZHJlc3M/LnJlY2VpdmVyTmFtZT8ubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ1BheW1lbnQgRmFpbHVyZScsIGRldGFpbDogJ1BsZWFzZSBwcm92aWRlIGFkZHJlc3MgZGV0YWlscycgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnUGxlYXNlIHdhaXQnLCBkZXRhaWw6ICdXZSBhcmUgcHJvY2Vzc2luZyB5b3VyIHBheW1lbnQnLCBsaWZlOiAyMDAwIH0pO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY2FydElkXCIsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuY2FydEluZm9bXCJhZGRyZXNzRGV0YWlsc1wiXSA9IGFkZHJlc3M7XHJcbiAgICBjb25zdCB1cGRhdGVBZGRyZXNzID0gYXdhaXQgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLmNhcnRJbmZvKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIFwidXNlcklkXCI6IHVzZXJEZXRhaWwudXNlcklkLFxyXG4gICAgICBcImNhcnRJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2FydElkJyksXHJcbiAgICAgIFwib3JkZXJBbW91bnRcIjogTnVtYmVyKE51bWJlcigoKHRoaXMucmVzcG9uc2VEYXRhPy50b3RhbEFtb3VudCA/PyAwKSAtICh0aGlzLnJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50ID8/IDApKSkudG9GaXhlZCgyKSksXHJcbiAgICAgIFwiaXNQYXltZW50R2F0ZXdheUVuYWJsZWRcIjogaXNQYXltZW50R2F0ZXdheUVuYWJsZWQsXHJcbiAgICAgIFwiY29udGFjdERldGFpbHNcIjoge1xyXG4gICAgICAgIFwibmFtZVwiOiBhZGRyZXNzLnJlY2VpdmVyTmFtZSxcclxuICAgICAgICBcIm1vYmlsZVwiOiBhZGRyZXNzLnJlY2VpdmVyUGhvbmUsXHJcbiAgICAgICAgXCJjb3VudHJ5Q29kZVwiOiBcIjkxXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBhZGRyZXNzLnJlY2VpdmVyRW1haWxcclxuICAgICAgfSxcclxuICAgICAgXCJwYXltZW50TWVyY2hhbnRJZFwiOm1lcmNoYW50SWRcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUGF5bWVudFRva2VuKHBheWxvYWQpLnN1YnNjcmliZSgocGF5bWVudERldGFpbHM6IGFueSk9PiB7XHJcbiAgICAgIGlmIChpc1BheW1lbnRHYXRld2F5RW5hYmxlZClcclxuICAgICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHBheW1lbnREZXRhaWxzKTtcclxuICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwib3JkZXJJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInBheW1lbnRGb3JcIik7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclVzZXJDYXJ0KCk7XHJcbiAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICAgdGl0bGU6IFwiSHVycmF5XCIsXHJcbiAgICAgICAgICB0ZXh0OiBcIk9yZGVyIHBsYWNlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNlZSBEZXRhaWxzXCJcclxuICAgICAgICB9KS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpPT4ge1xyXG4gICAgICBpZiAoZXJyb3IuZXJyb3JDb2RlID09IDEwMDEgfHwgZXJyb3IuZXJyb3JDb2RlID09IDEwMDIpIHtcclxuICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgaWNvbjogXCJpbmZvXCIsXHJcbiAgICAgICAgICBodG1sOiBcIjxwPlwiICsgZXJyb3IubWVzc2FnZS5yZXBsYWNlKC8gKlxcKFteKV0qXFwpICovZywgXCJcIikgKyBcIjwvcD5cIixcclxuICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGVycm9yLmVycm9yQ29kZSA9PSAxMDAyLFxyXG4gICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiUmVtb3ZlIGl0ZW0gJiBQbGFjZSBPcmRlclwiLFxyXG4gICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJSZWR1Y2UgcXVhbnRpdHlcIixcclxuICAgICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiM5MjhjOGNcIixcclxuICAgICAgICB9KS50aGVuKGFzeW5jIChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdQcm9jZXNzaW5nJywgZGV0YWlsOiAnUGxlYXNlIHdhaXQsIHVwZGFpbmcgeW91ciBjYXJ0JywgbGlmZTogMjAwMH0pO1xyXG4gICAgICAgICAgY29uc3QgcmVnRXhwID0gL3soW159XSspfS9nO1xyXG4gICAgICAgICAgY29uc3QgaWQgPSByZWdFeHAuZXhlYyhlcnJvci5tZXNzYWdlKT8uWzFdO1xyXG4gICAgICAgICAgbGV0IGl0ZW1EZXRhaWw6IFByb2R1Y3QgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgIGNvbnN0IHByb2R1Y3REZXRhaWxzQXN5bmMgPSBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKGlkKS50b1Byb21pc2UoKS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtRGV0YWlsID0gcmVzcG9uc2VbMF0gYXMgUHJvZHVjdDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNEaXNtaXNzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gaXRlbURldGFpbD8uaXRlbUlkKVxyXG4gICAgICAgICAgICAgICAgaXRlbS5xdWFudGl0eSA9IGl0ZW1EZXRhaWw/Lml0ZW1JbnZlbnRvcnkub3BlbmluZ1N0b2NrO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiBpdGVtLml0ZW1JZCAhPSBpdGVtRGV0YWlsPy5pdGVtSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZWVkVG9QYXltZW50KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnUGF5bWVudCBGYWlsdXJlJywgZGV0YWlsOiAnUGxlYXNlIHRyeSBhZ2FpbicgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkcmVzc1NlbGVjdGVkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBuZWVkIGNvbmRpdGlvblxyXG4gIH1cclxuICBnZXRLZXlzKG9iamVjdDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgaWYgKG9iamVjdClcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBlZGl0U2VjdGlvbigpe1xyXG5cclxuICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS50b2dnbGVFZGl0b3JFdmVudC5lbWl0KGZhbHNlKTtcclxuICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHtkYXRhOnRoaXMuZGF0YX0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgY2xvc2VXaW5kb3coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuICBjb3Vwb25EaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xyXG4gIG9wZW5EaWFsb2coY29udGFpbmVyOiBhbnkpIHtcclxuXHJcbiAgICBpZiAodGhpcy5jYXJ0SW5mbz8uYmlsbGRldGFpbHM/LmNvdXBvbklkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKCF0aGlzLmNhcnRJbmZvLmNhcnRJZCAmJiAhKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICB0aGlzLmNhcnRJbmZvLmNhcnRJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpO1xyXG5cclxuICAgIGlmKCF0aGlzLmNhcnRJbmZvPy5jYXJ0SWQpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiBmaXJzdCB0byBhcHBseSBjb3Vwb24nIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5hcHBsaWNhYmxlRGlzY291bnRMaXN0KHRoaXMuY2FydEluZm8uY2FydElkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLmNvdXBvbkxpc3QgPSByZXNwb25zZS5kYXRhPy5maWx0ZXIoKGNvdXBvbjogYW55KT0+IGNvdXBvbi5hY3RpdmUpPy5tYXAoKGNvdXBvbjogYW55KT0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGlzY291bnRUeXBlOiBjb3Vwb24uZGlzY291bnQsXHJcbiAgICAgICAgICBkaXNjb3VudE5hbWU6IGNvdXBvbi5jb3Vwb25UaXRsZSxcclxuICAgICAgICAgIGRpc2NvdW50RGVzY3JpcHRpb246IGNvdXBvbi5jb3Vwb25EZXNjcmlwdGlvbixcclxuICAgICAgICAgIGNvdXBvbkNvZGU6IGNvdXBvbi5jb3Vwb25Db2RlLFxyXG4gICAgICAgICAgY291cG9uSWQ6IGNvdXBvbi5jb3Vwb25JZCxcclxuICAgICAgICAgIGFwcGxpY2FibGU6IGNvdXBvbi5hcHBsaWNhYmxlLFxyXG4gICAgICAgICAgc3RhdHVzOiBjb3Vwb24uYWN0aXZlLFxyXG4gICAgICAgICAgdmFsaWRUbzogY291cG9uLmV4cGlyZXMsXHJcbiAgICAgICAgICB2YWxpZEZyb206IGNvdXBvbi52YWxpZEZyb21cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoISF0aGlzLnVzZXJEZXRhaWxzKVxyXG4gICAgICAgIHRoaXMuY291cG9uRGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3Blbihjb250YWluZXIsIHtwYW5lbENsYXNzOiAnc2lkZXBhbmVsLWNsYXNzJ30pO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gYXBwbHkgY291cG9uJyB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VhcmNoSWZBcHBsaWNhYmxlKCkge31cclxuICBjbG9zZURpYWxvZ1JlZigpIHtcclxuICAgIHRoaXMuY291cG9uRGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gIH1cclxuICBhcHBseUNvdXBvbihjb3Vwb246IENvdXBvbikge1xyXG5cclxuICAgIGlmICghY291cG9uLmFwcGxpY2FibGUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbkNvZGUgPSBjb3Vwb24uY291cG9uQ29kZTtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uSWQgPSBjb3Vwb24uY291cG9uSWQ7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvKTtcclxuICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICByZXN0UmVzcG9uc2UudGhlbigocmVzcG9uc2U6IGFueSk9PiB7XHJcblxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNvdXBvbklkXCIsIGNvdXBvbi5jb3Vwb25JZCk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY291cG9uQ29kZVwiLCBjb3Vwb24uY291cG9uQ29kZSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2U6IFwiLHJlc3BvbnNlKTtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYXJ0KHJlc3BvbnNlKTtcclxuXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NvdXBvbicsIGRldGFpbDogJ0NvdXBvbiBBcHBsaWVkJyB9KTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgPz8gMDtcclxuICAgICAgdGhpcy5jb3Vwb25EaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBjYWxjdWxhdGVDYXJ0KHJlc3BvbnNlOiBhbnkpIHtcclxuICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgPz8gMDtcclxuICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLlVTRVJfQ0FSVF9JVEVNUykge1xyXG5cclxuICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLmNhcnRJbmZvO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGF4QW1vdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gIXRoaXMuY2FydEluZm8uYmlsbGRldGFpbHM/LmNvdXBvbklkID8gKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPz8gMCkgOiAodGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDApIDtcclxuICB9XHJcblxyXG4gIGdldCBnZXRBZGRyZXNzTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJEZXRhaWxzID8gWy4uLnRoaXMudXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdF0gOiBbXTtcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcbiAgZ2V0IGN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQlVTSU5FU1NfQ09OU1RBTlRTLkNVUlJFTkNZO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCIgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxyXG4gICAgPHNlY3Rpb24gW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbYXR0ci5jbGFzc109XCJpc01vYmlsZSA/ICdweS01IHBvc2l0aW9uLXJlbGF0aXZlJyA6ICdwb3NpdGlvbi1yZWxhdGl2ZSdcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbS1hdXRvIG1iLTRcIiBbc3R5bGUubWFyZ2luVG9wLnB4XT1cImlzTW9iaWxlID8gJyc6ICc1MCdcIiBbc3R5bGUud2lkdGguJV09XCJpc01vYmlsZSA/ICc5MCcgOiAnJ1wiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmVcIiBbbmdDbGFzc109XCJ7J2lzQWN0aXZlJzogY3VycmVudFRhYiA9PSAnQkFHJ31cIiAoY2xpY2spPVwiY3VycmVudFRhYiA9ICdCQUcnXCI+QmFnPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYXJcIj48L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVsaW5lXCIgW25nQ2xhc3NdPVwieydpc0FjdGl2ZSc6IGN1cnJlbnRUYWIgPT0gJ0FERFJFU1MnfVwiIChjbGljayk9XCJwcm9jZWVkVG9DaGVja291dCgpXCI+QWRkcmVzczwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFyXCI+PC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZVwiIFtuZ0NsYXNzXT1cInsnaXNBY3RpdmUnOiBjdXJyZW50VGFiID09ICdQQVlNRU5UJ31cIiBzdHlsZT1cImN1cnNvcjogYXV0bztcIj5QYXltZW50PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcnQtcGFyZW50IGNvbnRhaW5lclwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPiAwXCIgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImN1cnJlbnRUYWJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidCQUcnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS1iYWdcIj5cclxuICAgICAgICAgICAgICBNeSBCYWcmbmJzcDsgPHNwYW4+KHt7cmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aH19IEl0ZW1zKTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtczsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1wYXJlbnQgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiIHN0eWxlPVwicGFkZGluZzogMHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIG9uZXJyb3I9XCJ0aGlzLnNyYz0naHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZydcIiBjbGFzcz1cInByb2R1Y3QtaW1nXCIgW3NyY109XCJpdGVtLmltZ1VybCA/PyAnaHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZydcIiBhbHQ9XCJcIiAoY2xpY2spPVwiZ29Ub1Byb2R1Y3REZXRhaWxzKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgaC0xMDBcIiBbc3R5bGUud2lkdGgucHhdPVwiaXNNb2JpbGUgPyAnMjAwJyA6ICcnXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxoLTIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIHRyaW0tdGV4dCBoZWFkaW5nLWxhcmdlXCI+e3tpdGVtLml0ZW1OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS13aXRoLXRheFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soaXRlbS5kaXNjb3VudGVkUHJpY2UpIHwgbnVtYmVyOiAnMS4wLTInfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaXRlbVZhcmlhbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgdmFyaWVudCBvZiBnZXRLZXlzKGl0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZnctYm9sZFwiPnt7IHZhcmllbnQgfX0gOiA8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7IGhlaWdodDogMTNweDsgd2lkdGg6IDEzcHg7IGJvcmRlci1yYWRpdXM6IDUwJTtcIiAqbmdJZj1cInZhcmllbnQudG9Mb3dlckNhc2UoKSA9PSAnY29sb3InXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF1cIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllc1t2YXJpZW50XSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnRWMihpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvQ2FydFYyKGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBwb3NpdGlvbi1yZWxhdGl2ZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87IHdpZHRoOiAwcHg7IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXByaWNlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KChpdGVtLmRpc2NvdW50ZWRQcmljZSkgKiBpdGVtLnF1YW50aXR5KSAgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkZWxldGUtaXRlbVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImlzTW9iaWxlID8gJzUnIDogJzAnXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxociAqbmdJZj1cInJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggIT0gKGlkeCArMSlcIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidBRERSRVNTJ1wiPlxyXG4gICAgICAgICAgICA8c2ltcG8tYWRkcmVzcyBbaXNDYXJ0XT1cInRydWVcIiBbcmVzcG9uc2VEYXRhXT1cImdldEFkZHJlc3NMaXN0XCIgW2RhdGFdPVwiZGF0YVwiIChzZWxlY3RlZEFkZHJlc3MpPVwiYWRkcmVzc1NlbGVjdGVkKCRldmVudClcIj48L3NpbXBvLWFkZHJlc3M+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidQQVlNRU5UJ1wiPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBDb3Vwb25cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbnNcIiAoY2xpY2spPVwib3BlbkRpYWxvZyhDb3Vwb25MaXN0KVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+QXBwbHkgQ291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj5BcHBseTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+Q291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJyZW1vdmVDb3Vwb24oJGV2ZW50KVwiPlJlbW92ZTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBQcmljZSBEZXRhaWxzXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1wYXJlbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiPlRvdGFsIFByaWNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsTmV0VmFsdWUgPz8gMCkgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+VG90YWwgVGF4PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KCghcmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzPy5jb3Vwb25JZCA/IHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsVGF4IDogcmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50KSA/PyAwKSB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRlbGl2ZXJ5Q2hhcmdlcyAmJiByZXNwb25zZURhdGEuYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+RGVsaXZlcnkgQ2hhcmdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7cmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXR5cGVcIj5EaXNjb3VudCBBbW91bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdmFsdWVcIj48c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj4ge3tyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aHI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1wYXJlbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiIHN0eWxlPVwiY29sb3I6IGJsYWNrO2ZvbnQtd2VpZ2h0OiA2MDA7XCI+VG90YWwgQW1vdW50PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCIgc3R5bGU9XCJmb250LXdlaWdodDogNjAwO1wiPjxzcGFuIFtpbm5lckh0bWxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7eygocmVzcG9uc2VEYXRhPy50b3RhbEFtb3VudCA/PyAwKSAtIChyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCA/PyAwKSkgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT0gJ0JBRydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gbW9iaWxlLWZpeGVkXCIgKGNsaWNrKT1cInByb2NlZWRUb0NoZWNrb3V0KClcIiAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5jb250ZW50Py5sYWJlbCA/PyAnQ2hlY2tvdXQgQ2FydCd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm9jZWVkVG9MaXN0UGFnZSgpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImRhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzFdPy5zdHlsZXNcIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7ZGF0YT8uYWN0aW9uPy5idXR0b25zPy5bMV0/LmNvbnRlbnQ/LmxhYmVsID8/ICdDb250aW51ZSBTaG9wcGluZyd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PSAnQUREUkVTUydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gbW9iaWxlLWZpeGVkXCIgKGNsaWNrKT1cInByb2NlZWRUb1BheW1lbnQoKVwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+e3tkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlsyXT8uY29udGVudD8ubGFiZWwgPz8gJ1BsYWNlIE9yZGVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwiaSA9PSAwID8gcHJvY2VlZFRvQ2hlY2tvdXQoKSA6IHByb2NlZWRUb0xpc3RQYWdlKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImVtcHR5LWNhcnRcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY2FydC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgICBbc3JjXT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy51cmxcIiBbYWx0XT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGV4dCBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbbmdDbGFzc109XCJ7J2hlYWRpbmctbWVkaXVtJzogdGV4dC5sYWJlbCA9PSAnSGVhZGluZycsICdkZXNjcmlwdGlvbic6IHRleHQubGFiZWwgPT0gJ1RleHQnfVwiPnt7dGV4dC52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbiBkLWZsZXggbXQtNFwiPlxyXG4gICAgICAgICAgICAgIExvb2tzIGxpa2UgeW91IGhhdmUgbm90IGFkZGVkIGFueXRoaW5nIHRvIHlvdXIgY2FydC4gR28gYWhlYWQgJiBleHBsb3JlIHRvcCBjYXRlZ29yaWVzLlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiIFtpc0Vjb21tZXJjZV09XCJ0cnVlXCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcnQtd2luZG93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIGxoLTIgbWItMyBoZWFkZXItc2VjXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VXaW5kb3coKVwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+WW91ciBDYXJ0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYXZpbmdcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvZmZlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2h0WTU1c3FZL2Rpc2NvdW50LnBuZ1wiIGFsdD1cIlwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiPlxyXG4gICAgICAgICAgPHNwYW4+QXZhaWwgT2ZmZXJzIC8gQ291cG9uczwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHg7IHdpZHRoOiBmaXQtY29udGVudDtcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgY2xhc3M9XCJzbWFsbC1wcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmwgPz8gJ2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgYWx0PVwiXCIgKGNsaWNrKT1cImdvVG9Qcm9kdWN0RGV0YWlscyhpdGVtKVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLW5hbWUgdHJpbS10ZXh0XCI+e3sgaXRlbS5pdGVtTmFtZSB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnRWMihpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnF1YW50aXR5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnRWMihpdGVtLCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLXByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KGl0ZW0uZGlzY291bnRlZFByaWNlKSB8IG51bWJlcjogJzEuMC0yJ319XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInByaWNlLXdpdGgtdGF4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7eyhpdGVtLnNlbGxpbmcpIHwgbnVtYmVyOiAnMS4wLTInfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3R0ZXItc2VjXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWFkZCBkLWZsZXhcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5ob21lPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRyZXNzXCI+VGV0c3Rpbmc8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGF5bWVudC1idG5cIiBbZGlzYWJsZWRdPVwiY2FydEluZm8uYWRkcmVzc0RldGFpbHNcIiAoY2xpY2spPVwicHJvY2VlZFRvQ2hlY2tvdXQoKVwiPiA8c3BhbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPkNsaWNrIHRvIFBheTwvc3Bhbj4gPHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KHJlc3BvbnNlRGF0YT8udG90YWxBbW91bnQgPz8gMCkgfCBudW1iZXI6ICcxLjAtMid9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjQ291cG9uTGlzdD5cclxuICA8c2VjdGlvbiBjbGFzcz1cImNvdXBvbnMtbGlzdGluZy1zZWN0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWhlYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJhY2stYnRuXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nUmVmKClcIj5cclxuICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRleHRcIj5BcHBseSBDb3Vwb248L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiY291cG9uLXNlYXJjaC1zZWNcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJUeXBlIENvdXBvbiBDb2RlXCIgWyhuZ01vZGVsKV09XCJlbnRlcmVkQ291cG9uQ29kZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktYnRuLXNlYXJjaFwiIChjbGljayk9XCJzZWFyY2hJZkFwcGxpY2FibGUoKVwiPkFwcGx5PC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWxpc3RpbmdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdXBvbkxpc3QubGVuZ3RoID4gMDsgZWxzZSBzaG93RW1wdHlTY3JlZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb3Vwb25EZXRhaWxzIG9mIGNvdXBvbkxpc3Q7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1kZXRhaWxzXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogIWNvdXBvbkRldGFpbHMuYXBwbGljYWJsZSA/ICcjRkZGMkY0JyA6ICcjRURGRkZBJ31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHNfX2NvdXBvbi1oZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1icmllZlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1icmllZl9fbGVmdC1zZWNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogIWNvdXBvbkRldGFpbHMuYXBwbGljYWJsZSA/ICcjREIxQTFBJyA6ICcjMDk3RDVGJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjb3Vwb25EZXRhaWxzLmNvdXBvbkNvZGUgfCB1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1kZXNjXCI+e3sgY291cG9uRGV0YWlscy5kaXNjb3VudERlc2NyaXB0aW9uIHwgdGl0bGVjYXNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vwb24tYnJpZWZfX3JpZ2h0LXNlY1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktb2ZmZXItYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJjb3Vwb25EZXRhaWxzLmFwcGxpY2FibGUgPyAnMScgOiAnMC4zJ1wiIFtuZ1N0eWxlXT1cInsnY3Vyc29yJzogY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJ3BvaW50ZXInIDogJyd9XCIgKGNsaWNrKT1cImFwcGx5Q291cG9uKGNvdXBvbkRldGFpbHMpXCI+QXBwbHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdXBvbi10b2dnbGUtZGV0YWlscy1idG5cIiAoY2xpY2spPVwiY291cG9uRGV0YWlscy5zdGF0dXMgPSAhY291cG9uRGV0YWlscy5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiY291cG9uRGV0YWlscy5zdGF0dXNcIj5IaWRlIGRldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvdy1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiIWNvdXBvbkRldGFpbHMuc3RhdHVzXCI+VmlldyBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdXBvbkRldGFpbHMuc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRldGFpbHNfX2NvdXBvbi10ZXJtc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpPk9mZmVyIHZhbGlkIGZyb20ge3sgY291cG9uRGV0YWlscy52YWxpZEZyb20gfCBkYXRlIH19IC0ge3sgY291cG9uRGV0YWlscy52YWxpZFRvIHwgZGF0ZSB9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0VtcHR5U2NyZWVuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zY3JlZW4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2NvbW1vbi9jb3Vwb24tZW1wdHktaW1nLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fcHJpbWFyeS10ZXh0XCI+Tm8gQ291cG9uIEF2YWlsYWJsZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fc2Vjb25kYXJ5LXRleHRcIj5cclxuICAgICAgICAgICAgTG9va3MgbGlrZSB0aGVyZSBhcmUgbm8gY291cG9ucyBhdCB0aGUgbW9tZW50XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fYnV0dG9uXCI+RXhwbG9yZTwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
771
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXJ0L2NhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvY2FydC9jYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBR3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBS3JHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxN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QUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFkZHJlc3MsIENhcnRTZWN0aW9uTW9kYWwsIENhcnRTZWN0aW9uU3R5bGVzTW9kZWwgfSBmcm9tICcuL2NhcnQubW9kYWwnO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkcmVzc0NvbXBvbmVudCB9IGZyb20gXCIuLi9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZVVzZXJDb21wb25lbnQgfSBmcm9tICcuLi9hdXRoZW50aWNhdGUtdXNlci9hdXRoZW50aWNhdGUtdXNlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRCb3R0b21TaGVldCwgTWF0Qm90dG9tU2hlZXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ib3R0b20tc2hlZXQnO1xyXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDdXN0b21lclJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWVyLXJldmlldy9jdXN0b21lci1yZXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCB9IGZyb20gJy4uL2F1dGhlbnRpY2F0aW9uLXJlcXVpcmVkL2F1dGhlbnRpY2F0aW9uLXJlcXVpcmVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcclxuXHJcbmludGVyZmFjZSBDb3Vwb24ge1xyXG4gIGRpc2NvdW50VHlwZTogc3RyaW5nO1xyXG4gIGRpc2NvdW50TmFtZTogc3RyaW5nO1xyXG4gIGRpc2NvdW50RGVzY3JpcHRpb246IHN0cmluZztcclxuICBhcHBsaWNhYmxlOiBib29sZWFuO1xyXG4gIGNvdXBvbkNvZGU6IHN0cmluZztcclxuICBjb3Vwb25JZDogc3RyaW5nO1xyXG4gIHN0YXR1czogYm9vbGVhbjtcclxuICB2YWxpZEZyb206IERhdGU7XHJcbiAgdmFsaWRUbzogRGF0ZTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1jYXJ0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIE1hdEJvdHRvbVNoZWV0TW9kdWxlLFxyXG4gICAgLy9ESVJFQ1RJVkVcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEFkZHJlc3NDb21wb25lbnQsXHJcbiAgICBUb2FzdE1vZHVsZSxcclxuICAgIEN1c3RvbWVyUmV2aWV3Q29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jYXJ0LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJ0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZGF0YT86IENhcnRTZWN0aW9uTW9kYWw7XHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhPzogYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3R5bGVzPzogQ2FydFNlY3Rpb25TdHlsZXNNb2RlbDtcclxuICBwdWJsaWMgY3VycmVudFRhYjogJ0JBRycgfCAnQUREUkVTUycgfCAnUEFZTUVOVCcgPSBcIkJBR1wiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm90dG9tU2hlZXQ6IE1hdEJvdHRvbVNoZWV0LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBtYXREaWFsb2dEYXRhOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q2FydENvbXBvbmVudD5cclxuICApe1xyXG4gICAgc3VwZXIoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1c2VyRGV0YWlsczogVXNlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9DQVJUX0lURU1TOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEFkZHJlc3NJZHg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGVudGVyZWRDb3Vwb25Db2RlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBjb3Vwb25MaXN0OiBDb3Vwb25bXSA9IFtdO1xyXG5cclxuICBjYXJ0SW5mbzogYW55ID0ge1xyXG4gICAgb3JkZXJlZEl0ZW1zOiBudWxsLFxyXG4gICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgYmlsbGRldGFpbHM6IHtcclxuICAgICAgXCJ0b3RhbE5ldFZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhBZnRlckRpc2NvdW50XCI6IDAsXHJcbiAgICAgIFwidG90YWxHcm9zc1ZhbHVlXCI6IDAsXHJcbiAgICAgIFwidG90YWxUYXhcIjogMCxcclxuICAgICAgXCJ0b3RhbE9mZmVyZWRWYWx1ZVwiOiAwLFxyXG4gICAgICBcImRpc2NvdW50QW1vdW50XCI6IDAsXHJcbiAgICAgIFwiZGVsaXZlcnlDaGFyZ2VzXCI6IDBcclxuICAgIH0sXHJcbiAgICBwbGF0Zm9ybTogXCJXRUJcIixcclxuICAgIGNhcnRUeXBlOiBcIkNBUlRcIixcclxuICAgIGFkZHJlc3NEZXRhaWxzOiBudWxsLFxyXG4gICAgdXNlckRldGFpbHM6IHtcclxuICAgICAgXCJ1c2VySWRcIjogXCJcIixcclxuICAgICAgXCJ1c2VyTmFtZVwiOiBcIlwiLFxyXG4gICAgICBcIm1vYmlsZVwiOiBcIlwiLFxyXG4gICAgICBcImVtYWlsXCI6IFwiXCJcclxuICAgIH0sXHJcbiAgICB0b3RhbEFtb3VudDogMFxyXG4gIH1cclxuXHJcbiAgbG9hZGluZ1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICBuZ09uSW5pdCgpe1xyXG4gICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRJbmRleERCRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy51cGRhdGVVc2VyQ2FydFYyKCk7XHJcblxyXG4gICAgLy8gaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAvLyAgIHRoaXMudXBkYXRlVXNlckNhcnQoKTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHRoaXMuZ2V0SW5kZXhEQkRhdGEoKTtcclxuICAgIC8vICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgLy8gfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNlckNhcnQoKSB7XHJcbiAgICBjb25zdCBkZWxpdmVyeU9wdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJkZWxpdmVyeU9wdGlvbnNcIikgPz8gXCJ7fVwiKTtcclxuXHJcbiAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgXCJ1c2VyTmFtZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm5hbWUsXHJcbiAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWwsXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh0aGlzLnVzZXJEZXRhaWxzLnVzZXJJZCwgXCJDQVJUXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIGNvbnN0IHRlbXBVc2VyQ2FydCA9IHJlc3BvbnNlPy5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcyA/PyBbXTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LlswXT8uY2FydElkO1xyXG4gICAgICB0aGlzLmdldENvdXBvbkxpc3QoKTtcclxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGE/LlswXT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5tZXJnZU9yZGVySXRlbXModGVtcFVzZXJDYXJ0KTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKS5vbmNvbXBsZXRlID0gKCk9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyQ2FydCgpLnRoZW4oKGNhcnRSZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uSWRcIikgPT0gXCJ1bmRlZmluZWRcIiB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvdXBvbklkXCIpID09IFwibnVsbFwiKSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvdXBvbklkXCIpO1xyXG4gICAgICAgICAgICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uQ29kZVwiKSA9PSBcInVuZGVmaW5lZFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uQ29kZVwiKSA9PSBcIm51bGxcIikpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbkNvZGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvdXBvbkNvZGVcIik7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzdFJlc3BvbnNlID0gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLmNhcnRJbmZvKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICByZXN0UmVzcG9uc2UudGhlbigocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IGNhcnREYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUX0lURU1TLmZvckVhY2goKGl0ZW0pPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gcmVzcG9uc2U/LmRhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheEFmdGVyRGlzY291bnQgPSByZXNwb25zZT8uZGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkQWxsUHJvZHVjdHNUb0NhcnQodGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25lcnJvciA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0Vycm9yJywgZGV0YWlsOiAnRmFpbGVkIHRvIHVwZGF0ZSBjYXJ0IGRldGFpbHMnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICAgIGNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydERhdGE6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMgPSBjYXJ0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlID0gMDtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXhBZnRlckRpc2NvdW50ID0gY2FydERhdGEuYmlsbGRldGFpbHM/LnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA/PyAwO1xyXG4gICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXgsIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzKTtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCk7ICsgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgICAgIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhcnRJZCcsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YVtcImNhcnRJZFwiXSA9IHRoaXMuY2FydEluZm9bXCJjYXJ0SWRcIl07XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVVzZXJDYXJ0VjIoKXtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q2FydFByb2R1Y3QoKS50aGVuKChwcm9kdWN0czogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHByb2R1Y3RzO1xyXG5cclxuICAgICAgaWYoIXRoaXMuY2FydEluZm8/LmNhcnRJZCAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKSAmJiAhKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mb1snY2FydElkJ10gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcblxyXG4gICAgICBpZih0aGlzLnVzZXJEZXRhaWxzKSB7XHJcbiAgICAgICAgdGhpcy5nZXRDb3Vwb25MaXN0KCk7XHJcblxyXG4gICAgICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgICAgICBcInVzZXJJZFwiOiB0aGlzLnVzZXJEZXRhaWxzPy51c2VySWQsXHJcbiAgICAgICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAgICAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICAgICAgXCJlbWFpbFwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0LmVtYWlsLFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3Vwb25JZFwiKSA9PSBcInVuZGVmaW5lZFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uSWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5jb3Vwb25JZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uSWRcIik7XHJcbiAgICAgICAgaWYgKCEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3Vwb25Db2RlXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3Vwb25Db2RlXCIpID09IFwibnVsbFwiKSlcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uQ29kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY291cG9uQ29kZVwiKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzdFJlc3BvbnNlID0gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLmNhcnRJbmZvKS50b1Byb21pc2UoKTtcclxuICAgICAgICByZXN0UmVzcG9uc2UudGhlbigoY2FydFJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8gPSBjYXJ0UmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJVc2VyQ2FydCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuXHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaCgoaXRlbTogYW55KT0+IHtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgKyB0aGlzLmdldFRheEFtb3VudCgpOyArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIHVwZGF0ZVVzZXJDYXJ0MigpIHtcclxuICAvLyAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG5cclxuICAvLyAgIHRoaXMudXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyO1xyXG4gIC8vICAgdGhpcy5jYXJ0SW5mby51c2VyRGV0YWlscyA9IHtcclxuICAvLyAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gIC8vICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAvLyAgICAgXCJtb2JpbGVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5tb2JpbGUsXHJcbiAgLy8gICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAvLyAgIH1cclxuICAvLyAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlckl0ZW1zKHRoaXMudXNlckRldGFpbHMudXNlcklkLCBcIkNBUlRcIikuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHRlbXBVc2VyQ2FydCA9IHJlc3BvbnNlPy5kYXRhPy5bMF0/Lm9yZGVyZWRJdGVtcyA/PyBbXTtcclxuICAvLyAgICAgdGhpcy5tZXJnZU9yZGVySXRlbXModGVtcFVzZXJDYXJ0KTtcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICBtZXJnZU9yZGVySXRlbXMoc3luY2VkSXRlbXM6IGFueVtdKSB7XHJcbiAgICBmb3IobGV0IHByb2R1Y3Qgb2Ygc3luY2VkSXRlbXMpIHtcclxuICAgICAgbGV0IGl0ZW1Gb3VuZCA9IGZhbHNlO1xyXG4gICAgICBmb3IobGV0IGNhcnRJdGVtIG9mIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKSB7XHJcbiAgICAgICAgaWYoY2FydEl0ZW0udmFyaWVudElkID09PSBwcm9kdWN0LnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIGNhcnRJdGVtLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoIWl0ZW1Gb3VuZCkge1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zLnB1c2gocHJvZHVjdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvdXBvbkxpc3QoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FydEluZm8uY2FydElkICYmICEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJ1bmRlZmluZWRcIiB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKSA9PSBcIm51bGxcIikpXHJcbiAgICAgIHRoaXMuY2FydEluZm8uY2FydElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmFwcGxpY2FibGVEaXNjb3VudExpc3QodGhpcy5jYXJ0SW5mby5jYXJ0SWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMuY291cG9uTGlzdCA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigoY291cG9uOiBhbnkpPT4gY291cG9uLmFjdGl2ZSk/Lm1hcCgoY291cG9uOiBhbnkpPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkaXNjb3VudFR5cGU6IGNvdXBvbi5kaXNjb3VudCxcclxuICAgICAgICAgIGRpc2NvdW50TmFtZTogY291cG9uLmNvdXBvblRpdGxlLFxyXG4gICAgICAgICAgZGlzY291bnREZXNjcmlwdGlvbjogY291cG9uLmNvdXBvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY291cG9uQ29kZTogY291cG9uLmNvdXBvbkNvZGUsXHJcbiAgICAgICAgICBjb3Vwb25JZDogY291cG9uLmNvdXBvbklkLFxyXG4gICAgICAgICAgYXBwbGljYWJsZTogY291cG9uLmFwcGxpY2FibGUsXHJcbiAgICAgICAgICBzdGF0dXM6IGNvdXBvbi5hY3RpdmUsXHJcbiAgICAgICAgICB2YWxpZFRvOiBjb3Vwb24uZXhwaXJlcyxcclxuICAgICAgICAgIHZhbGlkRnJvbTogY291cG9uLnZhbGlkRnJvbVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSlcclxuICB9XHJcbiAgcmVtb3ZlQ291cG9uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbklkID0gXCJcIjtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uQ29kZSA9IFwiXCI7XHJcbiAgICBjb25zdCByZXN0UmVzcG9uc2UgPSB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgcmVzdFJlc3BvbnNlLnRoZW4oKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG5cclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYXJ0KHJlc3BvbnNlKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb3Vwb25JZFwiKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb3Vwb25Db2RlXCIpO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnQ291cG9uJywgZGV0YWlsOiAnQ291cG9uIFJlbW92ZWQnIH0pO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gMDtcclxuICAgICAgdGhpcy5jb3Vwb25EaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICB9KVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGdldEluZGV4REJEYXRhKCkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyQ2FydCgpLnRoZW4oKGNhcnRSZXNwb25zZSk9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGNhcnRSZXNwb25zZSk7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gMDtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG5cclxuICAgICAgY2FydFJlc3BvbnNlLm9uc3VjY2VzcyA9IChjYXJ0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMgPSBjYXJ0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnF1YW50aXR5ICogKGl0ZW0uaXRlbVRheCA/PyAwKSk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheEFmdGVyRGlzY291bnQgPSBjYXJ0RGF0YS5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDA7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMpO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgKyB0aGlzLmdldFRheEFtb3VudCgpICsgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLlVTRVJfQ0FSVF9JVEVNUztcclxuXHJcbiAgICAgICAgaWYodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpXHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJDYXJ0KCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gdGhpcy5jYXJ0SW5mbztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcHJvY2VlZFRvQ2hlY2tvdXQoKXtcclxuICAgIGlmKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKXtcclxuICAgICAgdGhpcy5jdXJyZW50VGFiID0gXCJBRERSRVNTXCI7XHJcbiAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gb3JkZXInIH0pO1xyXG5cclxuICAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCwge3BhbmVsQ2xhc3M6IFwiYXV0aGVudGljYXRlXCIgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FydEluZm8udXNlckRldGFpbHMgPSB7XHJcbiAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdGhpcy51c2VyRGV0YWlscz8udXNlcklkLFxyXG4gICAgICAgICAgICAgIFwidXNlck5hbWVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5uYW1lLFxyXG4gICAgICAgICAgICAgIFwibW9iaWxlXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubW9iaWxlLFxyXG4gICAgICAgICAgICAgIFwiZW1haWxcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5lbWFpbCxcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCEobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJ1bmRlZmluZWRcIiB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKSA9PSBcIm51bGxcIikpXHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJlc3BvbnNlIDogXCIsIHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJDYXJ0VjIoKVxyXG4gICAgICAgICAgICAgIC8vIHRoaXMucHJvY2VlZFRvQ2hlY2tvdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgfSlcclxuICAgICAgLy8gICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNDc1KSB7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuYm90dG9tU2hlZXQub3BlbihBdXRoZW50aWNhdGVVc2VyQ29tcG9uZW50LCB7ZGF0YTogdGhpcy5kYXRhfSkuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgLy8gICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jYXJ0SW5mby51c2VyRGV0YWlscyA9IHtcclxuICAgICAgLy8gICAgICAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgLy8gICAgICAgICAgIFwidXNlck5hbWVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5uYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgXCJtb2JpbGVcIjogdGhpcy51c2VyRGV0YWlscz8uY29udGFjdC5tb2JpbGUsXHJcbiAgICAgIC8vICAgICAgICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWwsXHJcbiAgICAgIC8vICAgICAgICAgfVxyXG5cclxuICAgICAgLy8gICAgICAgICBpZiAoIShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKSA9PSBcInVuZGVmaW5lZFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwibnVsbFwiKSlcclxuICAgICAgLy8gICAgICAgICAgIHRoaXMuY2FydEluZm9bXCJjYXJ0SWRcIl0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhcIlJlc3BvbnNlIDogXCIsIHJlc3BvbnNlKTtcclxuICAgICAgLy8gICAgICAgICBpZiAocmVzcG9uc2UpXHJcbiAgICAgIC8vICAgICAgICAgICB0aGlzLnByb2NlZWRUb0NoZWNrb3V0KCk7XHJcbiAgICAgIC8vICAgICAgIH1cclxuICAgICAgLy8gICAgICk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgLy8gICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQXV0aGVudGljYXRlVXNlckNvbXBvbmVudCwge1xyXG4gICAgICAvLyAgICAgICBoZWlnaHQ6ICdmaXQtY29udGVudCcsXHJcbiAgICAgIC8vICAgICAgIHdpZHRoOiAnMzV2dycsXHJcbiAgICAgIC8vICAgICAgIGRhdGE6IHRoaXMuZGF0YVxyXG4gICAgICAvLyAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcclxuICAgICAgLy8gICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAvLyAgICAgICB0aGlzLmNhcnRJbmZvLnVzZXJEZXRhaWxzID0ge1xyXG4gICAgICAvLyAgICAgICAgIFwidXNlcklkXCI6IHRoaXMudXNlckRldGFpbHM/LnVzZXJJZCxcclxuICAgICAgLy8gICAgICAgICBcInVzZXJOYW1lXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QubmFtZSxcclxuICAgICAgLy8gICAgICAgICBcIm1vYmlsZVwiOiB0aGlzLnVzZXJEZXRhaWxzPy5jb250YWN0Lm1vYmlsZSxcclxuICAgICAgLy8gICAgICAgICBcImVtYWlsXCI6IHRoaXMudXNlckRldGFpbHM/LmNvbnRhY3QuZW1haWwsXHJcbiAgICAgIC8vICAgICAgIH1cclxuXHJcbiAgICAgIC8vICAgICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICAvLyAgICAgICAgIHRoaXMuY2FydEluZm9bXCJjYXJ0SWRcIl0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgLy8gICAgICAgY29uc29sZS5sb2coXCJSZXNwb25zZSA6IFwiLCByZXNwb25zZSk7XHJcbiAgICAgIC8vICAgICAgIGlmIChyZXNwb25zZSlcclxuICAgICAgLy8gICAgICAgICB0aGlzLnByb2NlZWRUb0NoZWNrb3V0KCk7XHJcbiAgICAgIC8vICAgICB9KVxyXG4gICAgICAvLyAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ29Ub1Byb2R1Y3REZXRhaWxzKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZGV0YWlscyddLCB7cXVlcnlQYXJhbXM6IHtpZDogcHJvZHVjdC5pdGVtSWQsIHZhcmllbnRJZDogcHJvZHVjdC52YXJpZW50SWR9fSk7XHJcbiAgfVxyXG4gIHByb2NlZWRUb0xpc3RQYWdlKCl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcblxyXG4gICAgU3dhbC5maXJlKHtcclxuICAgICAgaWNvbjogXCJ3YXJuaW5nXCIsXHJcbiAgICAgIGh0bWw6IFwiPHNwYW4+WW91IGNhbiBtb3ZlIDwvc3Bhbj4gPGI+XCIgKyBpdGVtLml0ZW1OYW1lICsgXCI8L2I+IDxzcGFuPnRvIHdpc2hsaXN0IHNvIHlvdSBjYW4gYnV5IGxhdGVyLjwvc3Bhbj5cIixcclxuICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiTW92ZSB0byB3aXNobGlzdFwiLFxyXG4gICAgICBzaG93RGVueUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgZGVueUJ1dHRvblRleHQ6IFwiRGVsZXRlIGl0ZW1cIixcclxuICAgICAgZGVueUJ1dHRvbkNvbG9yOiBcIiM5MjhjOGNcIlxyXG4gICAgfSkudGhlbigocmVzcG9uc2UpPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydFYyKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMubW92ZUl0ZW1Ub1dpc2hsaXN0KGl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmlzRGVuaWVkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtRnJvbUNhcnRWMihpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcHJpdmF0ZSBtb3ZlSXRlbVRvV2lzaGxpc3QoaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0ZhdkZyb21DYXJ0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbUZyb21DYXJ0VjIoaXRlbTogT3JkZXJlZEl0ZW1zKSB7XHJcbiAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zLmZpbHRlcigocHJvZHVjdDogYW55KT0+IHByb2R1Y3QudmFyaWVudElkICE9IGl0ZW0udmFyaWVudElkKTtcclxuICAgIGlmKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgIHJlc3RSZXNwb25zZS50aGVuKChjYXJ0UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8gPSBjYXJ0UmVzcG9uc2UuZGF0YTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtKTtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYWxjdWxhdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZUNhbGN1bGF0aW9ucygpIHtcclxuICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG5cclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlID0gMDtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gMDtcclxuICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCk7ICsgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUl0ZW1Gcm9tQ2FydChpdGVtOiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIGl0ZW0ucXVhbnRpdHkgPSAwO1xyXG4gICAgaWYgKHRoaXMuVVNFUl9DQVJUX0lURU1TKVxyXG4gICAgICB0aGlzLlVTRVJfQ0FSVF9JVEVNUyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TLmZpbHRlcigocHJvZHVjdDogYW55KT0+IHByb2R1Y3QudmFyaWVudElkICE9IGl0ZW0udmFyaWVudElkKTtcclxuICAgIHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zID0gdGhpcy5VU0VSX0NBUlRfSVRFTVM7XHJcbiAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGlzY291bnRBbW91bnQgPSByZXNwb25zZT8uZGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50ID8/IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICAgIHRoaXMuY2FydEluZm8uY291cG9uQ29kZSA9IHJlc3BvbnNlLmRhdGE/LmJpbGxkZXRhaWxzPy5jb3Vwb25Db2RlO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmNvdXBvbklkID0gcmVzcG9uc2UuZGF0YT8uYmlsbGRldGFpbHM/LmNvdXBvbklkO1xyXG5cclxuICAgICAgcmVzcG9uc2U/LmRhdGE/Lm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpPT4ge1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlICs9IChpdGVtLmRpc2NvdW50ZWRQcmljZSAqIChpdGVtLnF1YW50aXR5ID8/IDEpKTtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnF1YW50aXR5ICogKGl0ZW0uaXRlbVRheCA/PyAwKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gKGRlbGl2ZXJ5T3B0aW9uPy5taW5PcmRlckFtb3VudCA+IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxHcm9zc1ZhbHVlKSA/IDAgOiAoZGVsaXZlcnlPcHRpb24/LmRlbGl2ZXJ5Q2hhcmdlcyA/PyAwKTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCwgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMpO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgfSlcclxuICB9XHJcbiAgYWRkVG9DYXJ0KGl0ZW06IE9yZGVyZWRJdGVtcywgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgaXRlbS5xdWFudGl0eSArPSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGl0ZW0ucXVhbnRpdHkgLT0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXRlbS5xdWFudGl0eSkge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Gcm9tQ2FydFBhZ2UoaXRlbSwgdGhpcy5yZXNwb25zZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgICAgY29uc3QgZGVsaXZlcnlPcHRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGVsaXZlcnlPcHRpb25zXCIpID8/IFwie31cIik7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXhBZnRlckRpc2NvdW50ID0gcmVzcG9uc2U/LmRhdGE/LmJpbGxkZXRhaWxzPy50b3RhbFRheEFmdGVyRGlzY291bnQgPz8gMDtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID0gMDtcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRpc2NvdW50QW1vdW50ID0gcmVzcG9uc2U/LmRhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCA/PyAwO1xyXG5cclxuICAgICAgICByZXNwb25zZT8uZGF0YT8ub3JkZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSk9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSArPSAoaXRlbS5kaXNjb3VudGVkUHJpY2UgKiAoaXRlbS5xdWFudGl0eSA/PyAxKSk7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4ICs9IChpdGVtLnF1YW50aXR5ICogKGl0ZW0uaXRlbVRheCA/PyAwKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IChkZWxpdmVyeU9wdGlvbj8ubWluT3JkZXJBbW91bnQgPiB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSkgPyAwIDogKGRlbGl2ZXJ5T3B0aW9uPy5kZWxpdmVyeUNoYXJnZXMgPz8gMCk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWU7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlLCB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4LCB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby50b3RhbEFtb3VudCA9IHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxOZXRWYWx1ZSArIHRoaXMuZ2V0VGF4QW1vdW50KCkgKyB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcztcclxuICAgICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVG9DYXJ0VjIoaXRlbTogT3JkZXJlZEl0ZW1zLCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICBpdGVtLnF1YW50aXR5ICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaXRlbS5xdWFudGl0eSAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGl0ZW0ucXVhbnRpdHkpe1xyXG4gICAgICBpZih0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgcmVzdFJlc3BvbnNlLnRoZW4oKGNhcnRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhcnRJbmZvID0gY2FydFJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHRoaXMuY2FydEluZm87XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQoaXRlbSBhcyBPcmRlcmVkSXRlbXMpO1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQ2FsY3VsYXRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZXtcclxuICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJvY2VlZFRvUGF5bWVudCgpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0xvZ2luJywgZGV0YWlsOiAnUGxlYXNlIGxvZ2luIHdpdGggbW9iaWxlIG51bWJlciB0byBvcmRlcicgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc1BheW1lbnRHYXRld2F5RW5hYmxlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaXNQYXltZW50R2F0ZXdheUVuYWJsZWRcIikgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImlzUGF5bWVudEdhdGV3YXlFbmFibGVkXCIpID09IFwidHJ1ZVwiIDogdHJ1ZTtcclxuICAgIGNvbnN0IG1lcmNoYW50SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncE1JZCcpID09IFwibnVsbFwiIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwTUlkJykgPT0gXCJ1bmRlZmluZWRcIiA/IG51bGwgOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncE1JZCcpO1xyXG5cclxuICAgIGlmKGlzUGF5bWVudEdhdGV3YXlFbmFibGVkICYmICFtZXJjaGFudElkKXtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ01lcmNoYW50IG9uYm9hcmRlZCcsIGRldGFpbDogJ01lcmNoYW50IGlzIG5vdCBvbmJvYXJkZWQnIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXNlckRldGFpbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXI7XHJcbiAgICBjb25zdCBhZGRyZXNzID0gdXNlckRldGFpbD8uYWRkcmVzc0RldGFpbHNMaXN0W3RoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4XSBhcyBBZGRyZXNzO1xyXG4gICAgaWYgKGFkZHJlc3M/LnJlY2VpdmVyTmFtZT8ubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ1BheW1lbnQgRmFpbHVyZScsIGRldGFpbDogJ1BsZWFzZSBwcm92aWRlIGFkZHJlc3MgZGV0YWlscycgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICB0aGlzLmNhcnRJbmZvW1wiY2FydElkXCJdID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIik7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnUGxlYXNlIHdhaXQnLCBkZXRhaWw6ICdXZSBhcmUgcHJvY2Vzc2luZyB5b3VyIHBheW1lbnQnLCBsaWZlOiAyMDAwIH0pO1xyXG4gICAgICBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHRoaXMuY2FydEluZm8pLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY2FydElkXCIsIHJlc3BvbnNlLmRhdGE/LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mb1tcImNhcnRJZFwiXSA9IHJlc3BvbnNlLmRhdGE/LmNhcnRJZDtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuY2FydEluZm9bXCJhZGRyZXNzRGV0YWlsc1wiXSA9IGFkZHJlc3M7XHJcbiAgICBjb25zdCB1cGRhdGVBZGRyZXNzID0gYXdhaXQgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih0aGlzLmNhcnRJbmZvKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIFwidXNlcklkXCI6IHVzZXJEZXRhaWwudXNlcklkLFxyXG4gICAgICBcImNhcnRJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2FydElkJyksXHJcbiAgICAgIFwib3JkZXJBbW91bnRcIjogTnVtYmVyKE51bWJlcigoKHRoaXMucmVzcG9uc2VEYXRhPy50b3RhbEFtb3VudCA/PyAwKSAtICh0aGlzLnJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50ID8/IDApKSkudG9GaXhlZCgyKSksXHJcbiAgICAgIFwiaXNQYXltZW50R2F0ZXdheUVuYWJsZWRcIjogaXNQYXltZW50R2F0ZXdheUVuYWJsZWQsXHJcbiAgICAgIFwiY29udGFjdERldGFpbHNcIjoge1xyXG4gICAgICAgIFwibmFtZVwiOiBhZGRyZXNzLnJlY2VpdmVyTmFtZSxcclxuICAgICAgICBcIm1vYmlsZVwiOiBhZGRyZXNzLnJlY2VpdmVyUGhvbmUsXHJcbiAgICAgICAgXCJjb3VudHJ5Q29kZVwiOiBcIjkxXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBhZGRyZXNzLnJlY2VpdmVyRW1haWxcclxuICAgICAgfSxcclxuICAgICAgXCJwYXltZW50TWVyY2hhbnRJZFwiOm1lcmNoYW50SWRcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUGF5bWVudFRva2VuKHBheWxvYWQpLnN1YnNjcmliZSgocGF5bWVudERldGFpbHM6IGFueSk9PiB7XHJcbiAgICAgIGlmIChpc1BheW1lbnRHYXRld2F5RW5hYmxlZClcclxuICAgICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHBheW1lbnREZXRhaWxzKTtcclxuICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwib3JkZXJJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImNhcnRJZFwiKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInBheW1lbnRGb3JcIik7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclVzZXJDYXJ0KCk7XHJcbiAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICAgdGl0bGU6IFwiSHVycmF5XCIsXHJcbiAgICAgICAgICB0ZXh0OiBcIk9yZGVyIHBsYWNlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNlZSBEZXRhaWxzXCJcclxuICAgICAgICB9KS50aGVuKChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpPT4ge1xyXG4gICAgICBpZiAoZXJyb3IuZXJyb3JDb2RlID09IDEwMDEgfHwgZXJyb3IuZXJyb3JDb2RlID09IDEwMDIpIHtcclxuICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgaWNvbjogXCJpbmZvXCIsXHJcbiAgICAgICAgICBodG1sOiBcIjxwPlwiICsgZXJyb3IubWVzc2FnZS5yZXBsYWNlKC8gKlxcKFteKV0qXFwpICovZywgXCJcIikgKyBcIjwvcD5cIixcclxuICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGVycm9yLmVycm9yQ29kZSA9PSAxMDAyLFxyXG4gICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiUmVtb3ZlIGl0ZW0gJiBQbGFjZSBPcmRlclwiLFxyXG4gICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJSZWR1Y2UgcXVhbnRpdHlcIixcclxuICAgICAgICAgIGNhbmNlbEJ1dHRvbkNvbG9yOiBcIiM5MjhjOGNcIixcclxuICAgICAgICB9KS50aGVuKGFzeW5jIChyZXNwb25zZSk9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdQcm9jZXNzaW5nJywgZGV0YWlsOiAnUGxlYXNlIHdhaXQsIHVwZGFpbmcgeW91ciBjYXJ0JywgbGlmZTogMjAwMH0pO1xyXG4gICAgICAgICAgY29uc3QgcmVnRXhwID0gL3soW159XSspfS9nO1xyXG4gICAgICAgICAgY29uc3QgaWQgPSByZWdFeHAuZXhlYyhlcnJvci5tZXNzYWdlKT8uWzFdO1xyXG4gICAgICAgICAgbGV0IGl0ZW1EZXRhaWw6IFByb2R1Y3QgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgIGNvbnN0IHByb2R1Y3REZXRhaWxzQXN5bmMgPSBhd2FpdCB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKGlkKS50b1Byb21pc2UoKS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtRGV0YWlsID0gcmVzcG9uc2VbMF0gYXMgUHJvZHVjdDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNEaXNtaXNzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gaXRlbURldGFpbD8uaXRlbUlkKVxyXG4gICAgICAgICAgICAgICAgaXRlbS5xdWFudGl0eSA9IGl0ZW1EZXRhaWw/Lml0ZW1JbnZlbnRvcnkub3BlbmluZ1N0b2NrO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaXNDb25maXJtZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJ0SW5mby5vcmRlcmVkSXRlbXMgPSB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcy5maWx0ZXIoKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiBpdGVtLml0ZW1JZCAhPSBpdGVtRGV0YWlsPy5pdGVtSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRJdGVtREJBc3luYyA9IGF3YWl0IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZEl0ZW1JbmRleERCQXN5bmMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZEFsbFByb2R1Y3RzVG9DYXJ0KHRoaXMuY2FydEluZm8ub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgICAgdGhpcy5wcm9jZWVkVG9QYXltZW50KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnUGF5bWVudCBGYWlsdXJlJywgZGV0YWlsOiAnUGxlYXNlIHRyeSBhZ2FpbicgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkcmVzc1NlbGVjdGVkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzSWR4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBuZWVkIGNvbmRpdGlvblxyXG4gIH1cclxuICBnZXRLZXlzKG9iamVjdDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgaWYgKG9iamVjdClcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBlZGl0U2VjdGlvbigpe1xyXG5cclxuICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS50b2dnbGVFZGl0b3JFdmVudC5lbWl0KGZhbHNlKTtcclxuICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHtkYXRhOnRoaXMuZGF0YX0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcbiAgY2xvc2VXaW5kb3coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuICBjb3Vwb25EaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xyXG4gIG9wZW5EaWFsb2coY29udGFpbmVyOiBhbnkpIHtcclxuXHJcbiAgICBpZiAodGhpcy5jYXJ0SW5mbz8uYmlsbGRldGFpbHM/LmNvdXBvbklkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKCF0aGlzLmNhcnRJbmZvLmNhcnRJZCAmJiAhKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpID09IFwidW5kZWZpbmVkXCIgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjYXJ0SWRcIikgPT0gXCJudWxsXCIpKVxyXG4gICAgICB0aGlzLmNhcnRJbmZvLmNhcnRJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2FydElkXCIpO1xyXG5cclxuICAgIGlmKCF0aGlzLmNhcnRJbmZvPy5jYXJ0SWQpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiBmaXJzdCB0byBhcHBseSBjb3Vwb24nIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5hcHBsaWNhYmxlRGlzY291bnRMaXN0KHRoaXMuY2FydEluZm8uY2FydElkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLmNvdXBvbkxpc3QgPSByZXNwb25zZS5kYXRhPy5maWx0ZXIoKGNvdXBvbjogYW55KT0+IGNvdXBvbi5hY3RpdmUpPy5tYXAoKGNvdXBvbjogYW55KT0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGlzY291bnRUeXBlOiBjb3Vwb24uZGlzY291bnQsXHJcbiAgICAgICAgICBkaXNjb3VudE5hbWU6IGNvdXBvbi5jb3Vwb25UaXRsZSxcclxuICAgICAgICAgIGRpc2NvdW50RGVzY3JpcHRpb246IGNvdXBvbi5jb3Vwb25EZXNjcmlwdGlvbixcclxuICAgICAgICAgIGNvdXBvbkNvZGU6IGNvdXBvbi5jb3Vwb25Db2RlLFxyXG4gICAgICAgICAgY291cG9uSWQ6IGNvdXBvbi5jb3Vwb25JZCxcclxuICAgICAgICAgIGFwcGxpY2FibGU6IGNvdXBvbi5hcHBsaWNhYmxlLFxyXG4gICAgICAgICAgc3RhdHVzOiBjb3Vwb24uYWN0aXZlLFxyXG4gICAgICAgICAgdmFsaWRUbzogY291cG9uLmV4cGlyZXMsXHJcbiAgICAgICAgICB2YWxpZEZyb206IGNvdXBvbi52YWxpZEZyb21cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoISF0aGlzLnVzZXJEZXRhaWxzKVxyXG4gICAgICAgIHRoaXMuY291cG9uRGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3Blbihjb250YWluZXIsIHtwYW5lbENsYXNzOiAnc2lkZXBhbmVsLWNsYXNzJ30pO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdMb2dpbicsIGRldGFpbDogJ1BsZWFzZSBsb2dpbiB3aXRoIG1vYmlsZSBudW1iZXIgdG8gYXBwbHkgY291cG9uJyB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VhcmNoSWZBcHBsaWNhYmxlKCkge31cclxuICBjbG9zZURpYWxvZ1JlZigpIHtcclxuICAgIHRoaXMuY291cG9uRGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gIH1cclxuICBhcHBseUNvdXBvbihjb3Vwb246IENvdXBvbikge1xyXG5cclxuICAgIGlmICghY291cG9uLmFwcGxpY2FibGUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmNvdXBvbkNvZGUgPSBjb3Vwb24uY291cG9uQ29kZTtcclxuICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuY291cG9uSWQgPSBjb3Vwb24uY291cG9uSWQ7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNhcnRJbmZvKTtcclxuICAgIGNvbnN0IHJlc3RSZXNwb25zZSA9IHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodGhpcy5jYXJ0SW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICByZXN0UmVzcG9uc2UudGhlbigocmVzcG9uc2U6IGFueSk9PiB7XHJcblxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNvdXBvbklkXCIsIGNvdXBvbi5jb3Vwb25JZCk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY291cG9uQ29kZVwiLCBjb3Vwb24uY291cG9uQ29kZSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2U6IFwiLHJlc3BvbnNlKTtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVDYXJ0KHJlc3BvbnNlKTtcclxuXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NvdXBvbicsIGRldGFpbDogJ0NvdXBvbiBBcHBsaWVkJyB9KTtcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgPz8gMDtcclxuICAgICAgdGhpcy5jb3Vwb25EaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBjYWxjdWxhdGVDYXJ0KHJlc3BvbnNlOiBhbnkpIHtcclxuICAgIGNvbnN0IGRlbGl2ZXJ5T3B0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImRlbGl2ZXJ5T3B0aW9uc1wiKSA/PyBcInt9XCIpO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbFRheCA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsVGF4QWZ0ZXJEaXNjb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyA9IDA7XHJcbiAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSAwO1xyXG4gICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kaXNjb3VudEFtb3VudCA9IHJlc3BvbnNlPy5kYXRhPy5iaWxsZGV0YWlscz8uZGlzY291bnRBbW91bnQgPz8gMDtcclxuICAgIHRoaXMuY2FydEluZm8udG90YWxBbW91bnQgPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLlVTRVJfQ0FSVF9JVEVNUykge1xyXG5cclxuICAgICAgdGhpcy5VU0VSX0NBUlRfSVRFTVMuZm9yRWFjaCgoaXRlbSk9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUgKz0gKGl0ZW0uZGlzY291bnRlZFByaWNlICogKGl0ZW0ucXVhbnRpdHkgPz8gMSkpO1xyXG4gICAgICAgIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggKz0gKGl0ZW0ucXVhbnRpdHkgKiAoaXRlbS5pdGVtVGF4ID8/IDApKTtcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy5kZWxpdmVyeUNoYXJnZXMgPSAoZGVsaXZlcnlPcHRpb24/Lm1pbk9yZGVyQW1vdW50ID4gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbEdyb3NzVmFsdWUpID8gMCA6IChkZWxpdmVyeU9wdGlvbj8uZGVsaXZlcnlDaGFyZ2VzID8/IDApO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsTmV0VmFsdWUgPSB0aGlzLmNhcnRJbmZvLmJpbGxkZXRhaWxzLnRvdGFsR3Jvc3NWYWx1ZSAtIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLnRvdGFsQW1vdW50ID0gdGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscy50b3RhbE5ldFZhbHVlICsgdGhpcy5nZXRUYXhBbW91bnQoKSArIHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzO1xyXG4gICAgICB0aGlzLmNhcnRJbmZvLm9yZGVyZWRJdGVtcyA9IHRoaXMuVVNFUl9DQVJUX0lURU1TO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zZURhdGEgPSB0aGlzLmNhcnRJbmZvO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGF4QW1vdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gIXRoaXMuY2FydEluZm8uYmlsbGRldGFpbHM/LmNvdXBvbklkID8gKHRoaXMuY2FydEluZm8uYmlsbGRldGFpbHMudG90YWxUYXggPz8gMCkgOiAodGhpcy5jYXJ0SW5mby5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50ID8/IDApIDtcclxuICB9XHJcblxyXG4gIGdldCBnZXRBZGRyZXNzTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJEZXRhaWxzID8gWy4uLnRoaXMudXNlckRldGFpbHM/LmFkZHJlc3NEZXRhaWxzTGlzdF0gOiBbXTtcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcbiAgZ2V0IGN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQlVTSU5FU1NfQ09OU1RBTlRTLkNVUlJFTkNZO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCIgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxyXG4gICAgPHNlY3Rpb24gW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbYXR0ci5jbGFzc109XCJpc01vYmlsZSA/ICdweS01IHBvc2l0aW9uLXJlbGF0aXZlJyA6ICdwb3NpdGlvbi1yZWxhdGl2ZSdcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbS1hdXRvIG1iLTRcIiBbc3R5bGUubWFyZ2luVG9wLnB4XT1cImlzTW9iaWxlID8gJyc6ICc1MCdcIiBbc3R5bGUud2lkdGguJV09XCJpc01vYmlsZSA/ICc5MCcgOiAnJ1wiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmVcIiBbbmdDbGFzc109XCJ7J2lzQWN0aXZlJzogY3VycmVudFRhYiA9PSAnQkFHJ31cIiAoY2xpY2spPVwiY3VycmVudFRhYiA9ICdCQUcnXCI+QmFnPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYXJcIj48L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVsaW5lXCIgW25nQ2xhc3NdPVwieydpc0FjdGl2ZSc6IGN1cnJlbnRUYWIgPT0gJ0FERFJFU1MnfVwiIChjbGljayk9XCJwcm9jZWVkVG9DaGVja291dCgpXCI+QWRkcmVzczwvc3Bhbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFyXCI+PC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lbGluZVwiIFtuZ0NsYXNzXT1cInsnaXNBY3RpdmUnOiBjdXJyZW50VGFiID09ICdQQVlNRU5UJ31cIiBzdHlsZT1cImN1cnNvcjogYXV0bztcIj5QYXltZW50PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcnQtcGFyZW50IGNvbnRhaW5lclwiICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggfHwgMCkgPiAwXCIgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImN1cnJlbnRUYWJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidCQUcnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS1iYWdcIj5cclxuICAgICAgICAgICAgICBNeSBCYWcmbmJzcDsgPHNwYW4+KHt7cmVzcG9uc2VEYXRhPy5vcmRlcmVkSXRlbXM/Lmxlbmd0aH19IEl0ZW1zKTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtczsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1wYXJlbnQgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMFwiIHN0eWxlPVwicGFkZGluZzogMHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIG9uZXJyb3I9XCJ0aGlzLnNyYz0naHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZydcIiBjbGFzcz1cInByb2R1Y3QtaW1nXCIgW3NyY109XCJpdGVtLmltZ1VybCA/PyAnaHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZydcIiBhbHQ9XCJcIiAoY2xpY2spPVwiZ29Ub1Byb2R1Y3REZXRhaWxzKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgaC0xMDBcIiBbc3R5bGUud2lkdGgucHhdPVwiaXNNb2JpbGUgPyAnMjAwJyA6ICcnXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxoLTIzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIHRyaW0tdGV4dCBoZWFkaW5nLWxhcmdlXCI+e3tpdGVtLml0ZW1OYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS13aXRoLXRheFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3soaXRlbS5kaXNjb3VudGVkUHJpY2UpIHwgbnVtYmVyOiAnMS4wLTInfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaXRlbVZhcmlhbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgdmFyaWVudCBvZiBnZXRLZXlzKGl0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZnctYm9sZFwiPnt7IHZhcmllbnQgfX0gOiA8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmdy1ub3JtYWxcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7IGhlaWdodDogMTNweDsgd2lkdGg6IDEzcHg7IGJvcmRlci1yYWRpdXM6IDUwJTtcIiAqbmdJZj1cInZhcmllbnQudG9Mb3dlckNhc2UoKSA9PSAnY29sb3InXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLml0ZW1WYXJpYW50LnByb3BlcnRpZXNbdmFyaWVudF1cIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaXRlbVZhcmlhbnQucHJvcGVydGllc1t2YXJpZW50XSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnRWMihpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yXCIgKGNsaWNrKT1cImFkZFRvQ2FydFYyKGl0ZW0sICdBREQnKVwiPis8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBwb3NpdGlvbi1yZWxhdGl2ZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87IHdpZHRoOiAwcHg7IFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXByaWNlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KChpdGVtLmRpc2NvdW50ZWRQcmljZSkgKiBpdGVtLnF1YW50aXR5KSAgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkZWxldGUtaXRlbVwiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImlzTW9iaWxlID8gJzUnIDogJzAnXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxociAqbmdJZj1cInJlc3BvbnNlRGF0YT8ub3JkZXJlZEl0ZW1zPy5sZW5ndGggIT0gKGlkeCArMSlcIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidBRERSRVNTJ1wiPlxyXG4gICAgICAgICAgICA8c2ltcG8tYWRkcmVzcyBbaXNDYXJ0XT1cInRydWVcIiBbcmVzcG9uc2VEYXRhXT1cImdldEFkZHJlc3NMaXN0XCIgW2RhdGFdPVwiZGF0YVwiIChzZWxlY3RlZEFkZHJlc3MpPVwiYWRkcmVzc1NlbGVjdGVkKCRldmVudClcIj48L3NpbXBvLWFkZHJlc3M+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidQQVlNRU5UJ1wiPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBDb3Vwb25cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbnNcIiAoY2xpY2spPVwib3BlbkRpYWxvZyhDb3Vwb25MaXN0KVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+QXBwbHkgQ291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj5BcHBseTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNlRGF0YS5iaWxsZGV0YWlscz8uY291cG9uSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCI+Q291cG9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEzcHg7XCI+U2F2ZSBtb3JlIHdpdGggY291cG9uIGFuZCBvZmZlcnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJyZW1vdmVDb3Vwb24oJGV2ZW50KVwiPlJlbW92ZTwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm15LWJhZ1wiPlxyXG4gICAgICAgICAgICBQcmljZSBEZXRhaWxzXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1wYXJlbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiPlRvdGFsIFByaWNlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsTmV0VmFsdWUgPz8gMCkgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXBhcmVudC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+VG90YWwgVGF4PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KCghcmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzPy5jb3Vwb25JZCA/IHJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LnRvdGFsVGF4IDogcmVzcG9uc2VEYXRhPy5iaWxsZGV0YWlscz8udG90YWxUYXhBZnRlckRpc2NvdW50KSA/PyAwKSB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRlbGl2ZXJ5Q2hhcmdlcyAmJiByZXNwb25zZURhdGEuYmlsbGRldGFpbHMuZGVsaXZlcnlDaGFyZ2VzID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS10eXBlXCI+RGVsaXZlcnkgQ2hhcmdlPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCI+PHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7cmVzcG9uc2VEYXRhLmJpbGxkZXRhaWxzLmRlbGl2ZXJ5Q2hhcmdlcyB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtcGFyZW50LWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYmlsbGRldGFpbHM/LmRpc2NvdW50QW1vdW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXR5cGVcIj5EaXNjb3VudCBBbW91bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdmFsdWVcIj48c3BhbiBbaW5uZXJIdG1sXT0nY3VycmVuY3knPjwvc3Bhbj4ge3tyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCB8IG51bWJlcjogJzEuMC0yJ319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aHI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1wYXJlbnQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtdHlwZVwiIHN0eWxlPVwiY29sb3I6IGJsYWNrO2ZvbnQtd2VpZ2h0OiA2MDA7XCI+VG90YWwgQW1vdW50PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXZhbHVlXCIgc3R5bGU9XCJmb250LXdlaWdodDogNjAwO1wiPjxzcGFuIFtpbm5lckh0bWxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7eygocmVzcG9uc2VEYXRhPy50b3RhbEFtb3VudCA/PyAwKSAtIChyZXNwb25zZURhdGE/LmJpbGxkZXRhaWxzPy5kaXNjb3VudEFtb3VudCA/PyAwKSkgfCBudW1iZXI6ICcxLjAtMid9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT0gJ0JBRydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gbW9iaWxlLWZpeGVkXCIgKGNsaWNrKT1cInByb2NlZWRUb0NoZWNrb3V0KClcIiAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5jb250ZW50Py5sYWJlbCA/PyAnQ2hlY2tvdXQgQ2FydCd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm9jZWVkVG9MaXN0UGFnZSgpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImRhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzFdPy5zdHlsZXNcIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7ZGF0YT8uYWN0aW9uPy5idXR0b25zPy5bMV0/LmNvbnRlbnQ/LmxhYmVsID8/ICdDb250aW51ZSBTaG9wcGluZyd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PSAnQUREUkVTUydcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gbW9iaWxlLWZpeGVkXCIgKGNsaWNrKT1cInByb2NlZWRUb1BheW1lbnQoKVwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+e3tkYXRhPy5hY3Rpb24/LmJ1dHRvbnM/LlsyXT8uY29udGVudD8ubGFiZWwgPz8gJ1BsYWNlIE9yZGVyJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwiaSA9PSAwID8gcHJvY2VlZFRvQ2hlY2tvdXQoKSA6IHByb2NlZWRUb0xpc3RQYWdlKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImVtcHR5LWNhcnRcIiAqbmdJZj1cIihyZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtcz8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY2FydC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LWltYWdlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgICBbc3JjXT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy51cmxcIiBbYWx0XT1cImRhdGE/LmNvbnRlbnQ/LmltYWdlPy5hbHRUZXh0XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXRleHRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGV4dCBvZiBkYXRhPy5jb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbbmdDbGFzc109XCJ7J2hlYWRpbmctbWVkaXVtJzogdGV4dC5sYWJlbCA9PSAnSGVhZGluZycsICdkZXNjcmlwdGlvbic6IHRleHQubGFiZWwgPT0gJ1RleHQnfVwiPnt7dGV4dC52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbiBkLWZsZXggbXQtNFwiPlxyXG4gICAgICAgICAgICAgIExvb2tzIGxpa2UgeW91IGhhdmUgbm90IGFkZGVkIGFueXRoaW5nIHRvIHlvdXIgY2FydC4gR28gYWhlYWQgJiBleHBsb3JlIHRvcCBjYXRlZ29yaWVzLlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiIFtpc0Vjb21tZXJjZV09XCJ0cnVlXCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcnQtd2luZG93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlIGxoLTIgbWItMyBoZWFkZXItc2VjXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VXaW5kb3coKVwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+WW91ciBDYXJ0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYXZpbmdcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvZmZlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2h0WTU1c3FZL2Rpc2NvdW50LnBuZ1wiIGFsdD1cIlwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiPlxyXG4gICAgICAgICAgPHNwYW4+QXZhaWwgT2ZmZXJzIC8gQ291cG9uczwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNwb25zZURhdGE/Lm9yZGVyZWRJdGVtc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHg7IHdpZHRoOiBmaXQtY29udGVudDtcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBvbmVycm9yPVwidGhpcy5zcmM9J2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgY2xhc3M9XCJzbWFsbC1wcm9kdWN0LWltZ1wiIFtzcmNdPVwiaXRlbS5pbWdVcmwgPz8gJ2h0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGcnXCIgYWx0PVwiXCIgKGNsaWNrKT1cImdvVG9Qcm9kdWN0RGV0YWlscyhpdGVtKVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLW5hbWUgdHJpbS10ZXh0XCI+e3sgaXRlbS5pdGVtTmFtZSB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnRWMihpdGVtLCAnU1VCU1RSQUNUJylcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnF1YW50aXR5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvclwiIChjbGljayk9XCJhZGRUb0NhcnRWMihpdGVtLCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbC1pdGVtLXByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2Utd2l0aC10YXhcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KGl0ZW0uZGlzY291bnRlZFByaWNlKSB8IG51bWJlcjogJzEuMC0yJ319XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInByaWNlLXdpdGgtdGF4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7eyhpdGVtLnNlbGxpbmcpIHwgbnVtYmVyOiAnMS4wLTInfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3R0ZXItc2VjXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWFkZCBkLWZsZXhcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5ob21lPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGRyZXNzXCI+VGV0c3Rpbmc8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGF5bWVudC1idG5cIiBbZGlzYWJsZWRdPVwiY2FydEluZm8uYWRkcmVzc0RldGFpbHNcIiAoY2xpY2spPVwicHJvY2VlZFRvQ2hlY2tvdXQoKVwiPiA8c3BhbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPkNsaWNrIHRvIFBheTwvc3Bhbj4gPHNwYW4gW2lubmVySHRtbF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7KHJlc3BvbnNlRGF0YT8udG90YWxBbW91bnQgPz8gMCkgfCBudW1iZXI6ICcxLjAtMid9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjQ291cG9uTGlzdD5cclxuICA8c2VjdGlvbiBjbGFzcz1cImNvdXBvbnMtbGlzdGluZy1zZWN0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWhlYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJhY2stYnRuXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nUmVmKClcIj5cclxuICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRleHRcIj5BcHBseSBDb3Vwb248L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiY291cG9uLXNlYXJjaC1zZWNcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJUeXBlIENvdXBvbiBDb2RlXCIgWyhuZ01vZGVsKV09XCJlbnRlcmVkQ291cG9uQ29kZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktYnRuLXNlYXJjaFwiIChjbGljayk9XCJzZWFyY2hJZkFwcGxpY2FibGUoKVwiPkFwcGx5PC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291cG9uLWxpc3RpbmdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdXBvbkxpc3QubGVuZ3RoID4gMDsgZWxzZSBzaG93RW1wdHlTY3JlZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb3Vwb25EZXRhaWxzIG9mIGNvdXBvbkxpc3Q7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1kZXRhaWxzXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogIWNvdXBvbkRldGFpbHMuYXBwbGljYWJsZSA/ICcjRkZGMkY0JyA6ICcjRURGRkZBJ31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHNfX2NvdXBvbi1oZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1icmllZlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1icmllZl9fbGVmdC1zZWNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogIWNvdXBvbkRldGFpbHMuYXBwbGljYWJsZSA/ICcjREIxQTFBJyA6ICcjMDk3RDVGJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjb3Vwb25EZXRhaWxzLmNvdXBvbkNvZGUgfCB1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXBvbi1kZXNjXCI+e3sgY291cG9uRGV0YWlscy5kaXNjb3VudERlc2NyaXB0aW9uIHwgdGl0bGVjYXNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vwb24tYnJpZWZfX3JpZ2h0LXNlY1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbHktb2ZmZXItYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJjb3Vwb25EZXRhaWxzLmFwcGxpY2FibGUgPyAnMScgOiAnMC4zJ1wiIFtuZ1N0eWxlXT1cInsnY3Vyc29yJzogY291cG9uRGV0YWlscy5hcHBsaWNhYmxlID8gJ3BvaW50ZXInIDogJyd9XCIgKGNsaWNrKT1cImFwcGx5Q291cG9uKGNvdXBvbkRldGFpbHMpXCI+QXBwbHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdXBvbi10b2dnbGUtZGV0YWlscy1idG5cIiAoY2xpY2spPVwiY291cG9uRGV0YWlscy5zdGF0dXMgPSAhY291cG9uRGV0YWlscy5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZS1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiY291cG9uRGV0YWlscy5zdGF0dXNcIj5IaWRlIGRldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvdy1kZXRhaWxzLWJ0blwiICpuZ0lmPVwiIWNvdXBvbkRldGFpbHMuc3RhdHVzXCI+VmlldyBkZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdXBvbkRldGFpbHMuc3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRldGFpbHNfX2NvdXBvbi10ZXJtc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpPk9mZmVyIHZhbGlkIGZyb20ge3sgY291cG9uRGV0YWlscy52YWxpZEZyb20gfCBkYXRlIH19IC0ge3sgY291cG9uRGV0YWlscy52YWxpZFRvIHwgZGF0ZSB9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0VtcHR5U2NyZWVuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zY3JlZW4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2NvbW1vbi9jb3Vwb24tZW1wdHktaW1nLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fcHJpbWFyeS10ZXh0XCI+Tm8gQ291cG9uIEF2YWlsYWJsZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fc2Vjb25kYXJ5LXRleHRcIj5cclxuICAgICAgICAgICAgTG9va3MgbGlrZSB0aGVyZSBhcmUgbm8gY291cG9ucyBhdCB0aGUgbW9tZW50XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImVtcHR5LXNjcmVlbl9fYnV0dG9uXCI+RXhwbG9yZTwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
@@ -4772,7 +4772,6 @@ class CartComponent extends BaseSection {
4772
4772
  this.enteredCouponCode = "";
4773
4773
  this.couponList = [];
4774
4774
  this.cartInfo = {
4775
- cartId: localStorage.getItem("cartId"),
4776
4775
  orderedItems: null,
4777
4776
  businessId: localStorage.getItem("bId") ?? localStorage.getItem("businessId"),
4778
4777
  billdetails: {
@@ -4904,7 +4903,7 @@ class CartComponent extends BaseSection {
4904
4903
  this.storageService.getCartProduct().then((products) => {
4905
4904
  const deliveryOption = JSON.parse(localStorage.getItem("deliveryOptions") ?? "{}");
4906
4905
  this.cartInfo.orderedItems = products;
4907
- if (!this.cartInfo?.cartId && !(localStorage.getItem("cartId") == "undefined" || localStorage.getItem("cartId") == "null")) {
4906
+ if (!this.cartInfo?.cartId && localStorage.getItem("cartId") && !(localStorage.getItem("cartId") == "undefined" || localStorage.getItem("cartId") == "null")) {
4908
4907
  this.cartInfo['cartId'] = localStorage.getItem("cartId");
4909
4908
  }
4910
4909
  this.userDetails = this.storageService.getUser();