@po-ui/ng-components 15.11.0 → 15.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1pdGVtLWZpbHRlcmVkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtaXRlbS9wby1tZW51LWl0ZW0tZmlsdGVyZWQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQHVzZWRCeSBQb01lbnVDb21wb25lbnRcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEludGVyZmFjZSBkbyBvYmpldG8gcXVlIGRldmUgY29udGVyIG5hIGNvbGXDp8OjbyBkZSBpdGVucyBmaWx0cmFkb3Mgbm8gY29tcG9uZW50ZSBgcG8tbWVudWAuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBvTWVudUl0ZW1GaWx0ZXJlZCB7XHJcbiAgLyoqIFRleHRvIGRvIGl0ZW0gZGUgbWVudS4gKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKiogKkxpbmsqIHBhcmEgcmVkaXJlY2lvbmFtZW50byBubyBjbGlxdWUgZG8gaXRlbSBkbyBtZW51LCBwb2RlbmRvIHNlciB1bSAqbGluayogaW50ZXJubyBvdSBleHRlcm5vLiAqL1xyXG4gIGxpbms6IHN0cmluZztcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS1pdGVtLWZpbHRlcmVkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUtaXRlbS9wby1tZW51LWl0ZW0tZmlsdGVyZWQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQHVzZWRCeSBQb01lbnVDb21wb25lbnRcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEludGVyZmFjZSBkbyBvYmpldG8gcXVlIGRldmUgY29udGVyIG5hIGNvbGXDp8OjbyBkZSBpdGVucyBmaWx0cmFkb3Mgbm8gY29tcG9uZW50ZSBgcG8tbWVudWAuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBvTWVudUl0ZW1GaWx0ZXJlZCB7XHJcbiAgLyoqIFRleHRvIGRvIGl0ZW0gZGUgbWVudS4gKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKiogKkxpbmsqIHBhcmEgcmVkaXJlY2lvbmFtZW50byBubyBjbGlxdWUgZG8gaXRlbSBkbyBtZW51LCBwb2RlbmRvIHNlciB1bSAqbGluayogaW50ZXJubyBvdSBleHRlcm5vLiAqL1xyXG4gIGxpbms6IHN0cmluZztcclxuXHJcbiAgLyoqIEHDp8OjbyBhIHNlciBleGVjdXRhZGEgcXVhbmRvIG8gaXRlbSBkZSBtZW51IGZvciBjbGljYWRvLiAqL1xyXG4gIGFjdGlvbjogKCkgPT4gdm9pZDtcclxufVxyXG4iXX0=
@@ -364,9 +364,9 @@ export class PoMenuComponent extends PoMenuBaseComponent {
364
364
  this.mobileOpened = false;
365
365
  }
366
366
  }
367
- convertToMenuItemFiltered(menuItem = { label: '', link: '' }) {
368
- const { label, link } = menuItem;
369
- const menuItemFiltered = { label, link };
367
+ convertToMenuItemFiltered(menuItem = { label: '', link: '', action: () => { } }) {
368
+ const { label, link, action } = menuItem;
369
+ const menuItemFiltered = { label, link, action };
370
370
  this.setMenuItemProperties(menuItemFiltered);
371
371
  return menuItemFiltered;
372
372
  }
@@ -595,4 +595,4 @@ PoMenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoMenuCompo
595
595
  type: ContentChild,
596
596
  args: [PoMenuHeaderTemplateDirective, { static: true }]
597
597
  }] }); })();
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbWVudS9wby1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBTWIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRzFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBSTVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUMxQjNELCtCQUErRTtJQUE3Qix5SkFBUyxlQUFBLHlCQUFrQixDQUFBLElBQUM7SUFBQyxpQkFBTTs7O0lBUS9FLCtCQUF5RjtJQUN2Riw4QkFJVztJQUNiLGlCQUFNOzs7SUFKRixlQUFrRTtJQUFsRSx1RkFBa0UsaUZBQUEsOEJBQUE7OztJQU9wRSx3QkFBZ0Y7OztJQURsRiwrQkFBbUY7SUFDakYseUZBQWdGO0lBQ2xGLGlCQUFNOzs7SUFEVyxlQUFnRDtJQUFoRCx3RUFBZ0Q7Ozs7SUFHakUsMENB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SyxhQUFBO1FBQ3NDLHlGQUFTLHNCQUFrQixJQUFDO1FBQ25FLDBCQUEwQztRQUM1QyxpQkFBTTtRQUVOLDhCQUF1RSxhQUFBO1FBRW5FLGdFQU1NO1FBRU4sZ0VBRU07UUFFTixzRkFJa0I7UUFDcEIsaUJBQU07UUFFTiw4QkFBMEIsY0FBQSxlQUFBO1FBSXBCLG1FQU9NO1FBRU4sb0VBaUJNO1FBQ1IsaUJBQU0sRUFBQSxFQUFBO1FBSVYsbUVBU007UUFDUixpQkFBTSxFQUFBOztRQXhFRix1Q0FBa0I7UUFNRCxlQUFpRDtRQUFqRCxzRUFBaUQ7UUFFNUQsZUFBMkM7UUFBM0Msc0VBQTJDO1FBUTNDLGVBQTJDO1FBQTNDLG9FQUEyQztRQUs5QyxlQUErQjtRQUEvQix3REFBK0I7UUFVeEIsZUFBWTtRQUFaLGlDQUFZO1FBU0ksZUFBa0I7UUFBbEIsMkNBQWtCO1FBc0J4QyxlQUFlO1FBQWYsb0NBQWU7O3VGRHlEWixlQUFlO2NBTDNCLFNBQVM7MkJBQ0UsU0FBUyxhQUVSLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDO3lRQUdpQixrQkFBa0I7a0JBQWhGLFlBQVk7bUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRG9DaGVjayxcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGdldEZvcm1hdHRlZExpbmssIGlzTW9iaWxlLCBvcGVuRXh0ZXJuYWxMaW5rLCB1dWlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XHJcblxyXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb01lbnVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1tZW51LWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9NZW51SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLW1lbnUtaGVhZGVyLXRlbXBsYXRlL3BvLW1lbnUtaGVhZGVyLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFBvTWVudUl0ZW0gfSBmcm9tICcuL3BvLW1lbnUtaXRlbS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQb01lbnVJdGVtRmlsdGVyZWQgfSBmcm9tICcuL3BvLW1lbnUtaXRlbS9wby1tZW51LWl0ZW0tZmlsdGVyZWQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9NZW51R2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvTWVudUl0ZW1zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1pdGVtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9NZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IHBvTWVudURlYm91bmNlVGltZSA9IDQwMDtcclxuY29uc3QgcG9NZW51TWluTGVuZ3RoID0gMztcclxuY29uc3QgcG9NZW51Um9vdExldmVsID0gMTtcclxuXHJcbi8qKlxyXG4gKiBAZG9jc0V4dGVuZHMgUG9NZW51QmFzZUNvbXBvbmVudFxyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogQXBhcmVjZSBjb21wbGV0byBlbSB0ZWxhcyBjb20gbGFyZ3VyYSBtYWlvciBxdWUgMTIwMHB4LCBjYXNvIGNvbnRyw6FyaW8gbyBtZW51IMOpIGVzY29uZGlkbyBlIGNoYW1hZG8gcG9yIG1laW8gZGUgdW0gYm90w6NvLlxyXG4gKlxyXG4gKiBPIG1lbnUgdGFtYsOpbSBwb2RlIHNlciBjb2xhcHNhZG8uIEVzc2Egb3DDp8OjbyDDqSBoYWJpbGl0YWRhIHF1YW5kbyB0b2RvcyBvcyBpdGVucyBkZSBwcmltZWlybyBuw612ZWwgcG9zc3XDrXJlbSDDrWNvbmVzIGUgdGV4dG9zIGN1cnRvcy5cclxuICogU2UgY29sYXBzYWRvLCBzb21lbnRlIG9zIGl0ZW5zIGRlIHByaW1laXJvIG7DrXZlbCBzZXLDo28gZXhpYmlkb3MgZSwgY2FzbyBvIGl0ZW0gc2VsZWNpb25hZG8gcG9zc3VhIHN1Yi1uw612ZWlzLFxyXG4gKiBlbnTDo28gbyBtZW51IGFsdGVybmFyw6Egbm92YW1lbnRlIHBhcmEgbyBlc3RhZG8gYWJlcnRvLlxyXG4gKlxyXG4gKiBFeGlzdGUgYSBwb3NzaWJpbGlkYWRlIGRlIGN1c3RvbWl6YXIgYSBsb2dvbWFyY2EsIHF1ZSDDqSBleGliaWRhIG5hIHBhcnRlIHN1cGVyaW9yIGRvIGNvbXBvbmVudGUuXHJcbiAqXHJcbiAqIEUgcGFyYSBhZGljaW9uYXIgdW0gY29udGXDumRvIHBlcnNvbmFsaXphZG8gZW50cmUgYSBsb2dvbWFyY2EgZSBvIGNhbXBvIGRlIGZpbHRybyxcclxuICogYmFzdGEgYWRpY2lvbmFyIGVzdGUgY29udGXDumRvIGNvbSBhIGRpcmV0aXZhIFsqKnAtbWVudS1oZWFkZXItdGVtcGxhdGUqKl0oL2RvY3VtZW50YXRpb24vcG8tbWVudS1oZWFkZXItdGVtcGxhdGUpLlxyXG4gKlxyXG4gKiBDYXNvIHV0aWxpemFyIG8gZmlsdHJvIGRlIG1lbnVzLCDDqSBwb3Nzw612ZWwgcmVhbGl6YXIgYnVzY2FzIGVtIHNlcnZpw6dvLCBhcGVuYXMgaW5mb3JtYW5kbyBhIFVSTCBkbyBzZXJ2acOnbyBvdSBhIGluc3TDom5jaWEgZGVcclxuICogdW0gc2VydmnDp28gY3VzdG9taXphZG8gaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBgUG9NZW51RmlsdGVyYC5cclxuICpcclxuICogUGFyYSBvIG1lbnUgZnVuY2lvbmFyIGNvcnJldGFtZW50ZSDDqSBuZWNlc3PDoXJpbyBpbXBvcnRhciBvIGBSb3V0ZXJNb2R1bGVgIGUgYFJvdXRlc2AgZG8gbcOzZHVsbyBwcmluY2lwYWwgZGVcclxuICogIHN1YSBhcGxpY2HDp8OjbzpcclxuICpcclxuICogYGBgYFxyXG4gKiBpbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbiAqXHJcbiAqIC4uLlxyXG4gKlxyXG4gKiBATmdNb2R1bGUoe1xyXG4gKiAgIGltcG9ydHM6IFtcclxuICogICAgIFJvdXRlck1vZHVsZSxcclxuICogICAgIFJvdXRlcyxcclxuICogICAgIC4uLlxyXG4gKiAgICAgUG9Nb2R1bGUsXHJcbiAqICAgICAuLi5cclxuICogICBdLFxyXG4gKiAgIGRlY2xhcmF0aW9uczogW1xyXG4gKiAgICAgQXBwQ29tcG9uZW50XHJcbiAqICAgXSxcclxuICogICBwcm92aWRlcnM6IFtdLFxyXG4gKiAgIGJvb3RzdHJhcDogW0FwcENvbXBvbmVudF1cclxuICogfSlcclxuICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7IH1cclxuICogYGBgXHJcbiAqXHJcbiAqIEFsw6ltIGRpc3NvIMOpIG5lY2Vzc8OhcmlvIGNyaWFyIHVtIG3Ds2R1bG8gY29uZmlndXJhbmRvIGFzIHJvdGFzIGRhIGFwbGljYcOnw6NvLlxyXG4gKlxyXG4gKiBgYGBcclxuICogaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuICpcclxuICogaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG4gKlxyXG4gKiBpbXBvcnQgeyBIZWxsb1dvcmxkQ29tcG9uZW50IH0gZnJvbSAnLi9oZWxsby13b3JsZC9oZWxsby13b3JsZC5jb21wb25lbnQnO1xyXG4gKlxyXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcclxuICogICB7cGF0aDogJ2hlbGxvLXdvcmxkJywgY29tcG9uZW50OiBIZWxsb1dvcmxkQ29tcG9uZW50fVxyXG4gKiBdO1xyXG4gKlxyXG4gKiBATmdNb2R1bGUoe1xyXG4gKiAgIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yUm9vdChyb3V0ZXMsIHt1c2VIYXNoOiB0cnVlfSldLFxyXG4gKiAgIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBBcHBSb3V0aW5nTW9kdWxlIHt9XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbWVudS1iYXNpY1wiIHRpdGxlPVwiUE8gTWVudSBCYXNpY1wiPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1iYXNpYy9zYW1wbGUtcG8tbWVudS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWJhc2ljL3NhbXBsZS1wby1tZW51LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLW1lbnUtbGFic1wiIHRpdGxlPVwiUE8gTWVudSBMYWJzXCI+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWxhYnMvc2FtcGxlLXBvLW1lbnUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWxhYnMvc2FtcGxlLXBvLW1lbnUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tZW51LWh1bWFuLXJlc291cmNlc1wiIHRpdGxlPVwiUE8gTWVudSAtIEh1bWFuIFJlc291cmNlc1wiPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BvLW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtQb01lbnVJdGVtc1NlcnZpY2UsIFBvTWVudVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb01lbnVDb21wb25lbnQgZXh0ZW5kcyBQb01lbnVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQsIERvQ2hlY2sge1xyXG4gIEBDb250ZW50Q2hpbGQoUG9NZW51SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnVIZWFkZXJUZW1wbGF0ZTogUG9NZW51SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmU7XHJcblxyXG4gIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtO1xyXG4gIGNvbGxhcHNlZE1vYmlsZTogYm9vbGVhbjtcclxuICBmaWx0ZXJMb2FkaW5nID0gZmFsc2U7XHJcbiAgZ3JvdXBlZE1lbnVJdGVtOiBQb01lbnVJdGVtO1xyXG4gIGlkID0gdXVpZCgpO1xyXG4gIGxpbmtBY3RpdmU6IHN0cmluZztcclxuICBtb2JpbGVPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBub0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0aW1lb3V0RmlsdGVyOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyaW5nSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIG1lbnVJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgbWVudVByZXZpb3VzID0gbnVsbDtcclxuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xyXG5cclxuICBwcml2YXRlIGl0ZW1TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHJvdXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG1lbnVJdGVtc1NlcnZpY2U6IFBvTWVudUl0ZW1zU2VydmljZSxcclxuICAgIG1lbnVHbG9iYWxTZXJ2aWNlOiBQb01lbnVHbG9iYWxTZXJ2aWNlLFxyXG4gICAgbWVudVNlcnZpY2U6IFBvTWVudVNlcnZpY2UsXHJcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtZW51R2xvYmFsU2VydmljZSwgbWVudVNlcnZpY2UsIGxhbmd1YWdlU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBpc0FjdGl2ZUl0ZW1NZW51U3ViTWVudSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZU1lbnVJdGVtWydsZXZlbCddID4gdGhpcy5ncm91cGVkTWVudUl0ZW1bJ2xldmVsJ107XHJcbiAgfVxyXG5cclxuICBnZXQgZW5hYmxlQ29sbGFwc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0NvbGxhcHNlZCAmJiAhdGhpcy5jb2xsYXBzZWRNb2JpbGU7XHJcbiAgfVxyXG5cclxuICBnZXQgZW5hYmxlQ29sbGFwc2VCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxvd0NvbGxhcHNlTWVudSAmJiAhdGhpcy5jb2xsYXBzZWQgJiYgIXRoaXMubW9iaWxlT3BlbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0Zvb3RlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmVuYWJsZUNvbGxhcHNlQnV0dG9uIHx8IHRoaXMuZW5hYmxlQ29sbGFwc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDb2xsYXBzZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxvd0NvbGxhcHNlTWVudSAmJiB0aGlzLmNvbGxhcHNlZDtcclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlcmluZ0l0ZW1zICYmIHRoaXMuZmlsdGVyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtZW51Q3VycmVudCA9IHRoaXMuc3RyaW5naWZ5KHRoaXMubWVudXMpO1xyXG5cclxuICAgIGlmICh0aGlzLm1lbnVQcmV2aW91cyAhPT0gbWVudUN1cnJlbnQgfHwgIXRoaXMubWVudUluaXRpYWxpemVkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTWVudSgpO1xyXG4gICAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLml0ZW1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tZW51R2xvYmFsU2VydmljZS5zZW5kUmVtb3ZlZEFwcGxpY2F0aW9uTWVudSh0aGlzLmlkKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb01lbnVJdGVtKCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvUm91dGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubWVudUdsb2JhbFNlcnZpY2Uuc2VuZEFwcGxpY2F0aW9uTWVudSh0aGlzKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlTWVudUJ5VXJsKHVybFBhdGg6IHN0cmluZywgbWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KSB7XHJcbiAgICBpZiAobWVudXMpIHtcclxuICAgICAgY29uc3QgdXJsUGF0aFdpdGhvdXRMYXN0RnJhZ21lbnQgPSB1cmxQYXRoLnN1YnN0cigwLCB1cmxQYXRoLmxhc3RJbmRleE9mKCcvJykpO1xyXG4gICAgICByZXR1cm4gbWVudXMuc29tZShtZW51ID0+IHtcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRNZW51TGluayA9IGdldEZvcm1hdHRlZExpbmsobWVudS5saW5rKTtcclxuICAgICAgICBjb25zdCBtZW51TGlua1BhdGggPSBgJHt1cmxQYXRoV2l0aG91dExhc3RGcmFnbWVudH0ke2Zvcm1hdHRlZE1lbnVMaW5rLnN1YnN0cihcclxuICAgICAgICAgIGZvcm1hdHRlZE1lbnVMaW5rLmxhc3RJbmRleE9mKCcvJylcclxuICAgICAgICApfWA7XHJcblxyXG4gICAgICAgIGlmIChtZW51TGlua1BhdGggPT09IHVybFBhdGggJiYgbWVudUxpbmtQYXRoID09PSBmb3JtYXR0ZWRNZW51TGluaykge1xyXG4gICAgICAgICAgdGhpcy5saW5rQWN0aXZlID0gZm9ybWF0dGVkTWVudUxpbms7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlTWVudUl0ZW0obWVudSk7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVNZW51QnlVcmwodXJsUGF0aCwgbWVudS5zdWJJdGVtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFBhdGg6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmxpbmtBY3RpdmUgfHwgdGhpcy5saW5rQWN0aXZlICE9PSB1cmxQYXRoKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVNZW51QnlVcmwodXJsUGF0aCwgdGhpcy5tZW51cyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiA8YSBpZD1cImNvbGFwc2VNZXRob2RcIj48L2E+XHJcbiAgICpcclxuICAgKiAqTcOpdG9kbyBwYXJhIGNvbGFwc2FyIChyZXRyYWlyKSBvIG1lbnUuXHJcbiAgICovXHJcbiAgY29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlVG9nZ2xlTWVudSh0cnVlKTtcclxuICB9XHJcblxyXG4gIGRlYm91bmNlRmlsdGVyKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0RmlsdGVyKTtcclxuXHJcbiAgICB0aGlzLnRpbWVvdXRGaWx0ZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJQcm9jZXNzKGZpbHRlcik7XHJcbiAgICB9LCBwb01lbnVEZWJvdW5jZVRpbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogPGEgaWQ9XCJleHBhbmRNZXRob2RcIj48L2E+XHJcbiAgICpcclxuICAgKiAqTcOpdG9kbyBwYXJhIGV4cGFuZGlyIChhdW1lbnRhcikgbyBtZW51LlxyXG4gICAqL1xyXG4gIGV4cGFuZCgpIHtcclxuICAgIHRoaXMudmFsaWRhdGVUb2dnbGVNZW51KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZVRvTWVudUl0ZW0oKSB7XHJcbiAgICB0aGlzLml0ZW1TdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVJdGVtc1NlcnZpY2UucmVjZWl2ZUZyb21DaGlsZE1lbnVDbGlja2VkKCkuc3Vic2NyaWJlKChtZW51OiBQb01lbnVJdGVtKSA9PiB7XHJcbiAgICAgIHRoaXMuY2xpY2tNZW51SXRlbShtZW51KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlVG9Sb3V0ZSgpIHtcclxuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IHZhbCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwpIHtcclxuICAgICAgICBjb25zdCB1cmxSb3V0ZXIgPSB0aGlzLmNoZWNraW5nUm91dGVyQ2hpbGRyZW5GcmFnbWVudHMoKTtcclxuICAgICAgICB0aGlzLmNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFJvdXRlcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogPGEgaWQ9XCJ0b2dnbGVNZXRob2RcIj48L2E+XHJcbiAgICogKk3DqXRvZG8gcXVlIGNvbGFwc2EgZSBleHBhbmRlIG8gbWVudSBhbHRlcm5hZGFtZW50ZS5cclxuICAgKlxyXG4gICAqID4gKk9zIG3DqXRvZG9zIGFwZW5hcyB2w6NvIGNvbGFwc2FyL2V4cGFuZGlyIG8gbWVudSBzZTpcclxuICAgKiAgLSBUb2RvcyBvcyBpdGVucyBkZSBtZW51IHRpdmVyZW0gdmFsb3IgbmFzIHByb3ByaWVkYWRlcyBgaWNvbmAgZSBgc2hvcnRMYWJlbGAuXHJcbiAgICovXHJcbiAgdG9nZ2xlKCkge1xyXG4gICAgdGhpcy52YWxpZGF0ZVRvZ2dsZU1lbnUoIXRoaXMuY29sbGFwc2VkKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU1lbnVNb2JpbGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vYmlsZU9wZW5lZCA9ICF0aGlzLm1vYmlsZU9wZW5lZDtcclxuICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gdGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5tb2JpbGVPcGVuZWQ7XHJcblxyXG4gICAgdGhpcy52YWxpZGF0ZUNvbGxhcHNlQ2xhc3ModGhpcy5jb2xsYXBzZWRNb2JpbGUpO1xyXG5cclxuICAgIGlmIChpc01vYmlsZSgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tb2JpbGVPcGVuZWQpIHtcclxuICAgICAgdGhpcy5jcmVhdGVSZXNpemVMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNoZWNraW5nUm91dGVyQ2hpbGRyZW5GcmFnbWVudHMoKSB7XHJcbiAgICBjb25zdCBjaGlsZHJlblByaW1hcnkgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpLnJvb3QuY2hpbGRyZW5bJ3ByaW1hcnknXTtcclxuXHJcbiAgICByZXR1cm4gY2hpbGRyZW5QcmltYXJ5ID8gYC8ke2NoaWxkcmVuUHJpbWFyeS5zZWdtZW50cy5tYXAoaXQgPT4gaXQucGF0aCkuam9pbignLycpfWAgOiAnJztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUNvbGxhcHNlQ2xhc3MoY29sbGFwc2VkTW9iaWxlOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xyXG4gICAgdGhpcy5yZW5kZXJlclt0aGlzLmlzQ29sbGFwc2VkICYmICFjb2xsYXBzZWRNb2JpbGUgPyAnYWRkQ2xhc3MnIDogJ3JlbW92ZUNsYXNzJ10od3JhcHBlciwgJ3BvLWNvbGxhcHNlZC1tZW51Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlQ29sbGFwc2VTdWJNZW51SXRlbSgpIHtcclxuICAgIHRoaXMuY2xlYXJHcm91cE1lbnVJZkZpcnN0TGV2ZWwodGhpcy5hY3RpdmVNZW51SXRlbSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtWydsZXZlbCddID4gcG9NZW51Um9vdExldmVsICYmIHRoaXMuaXNBY3RpdmVJdGVtTWVudVN1Yk1lbnUpIHtcclxuICAgICAgdGhpcy5vcGVuUGFyZW50TWVudSh0aGlzLmFjdGl2ZU1lbnVJdGVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGVNZW51SXRlbShtZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gbWVudTtcclxuICAgIHRoaXMubGlua0FjdGl2ZSA9IG1lbnUubGluaztcclxuICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtWydsZXZlbCddID4gcG9NZW51Um9vdExldmVsKSB7XHJcbiAgICAgIHRoaXMub3BlblBhcmVudE1lbnUodGhpcy5hY3RpdmVNZW51SXRlbSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1lbnVJdGVtc1NlcnZpY2Uuc2VuZFRvQ2hpbGRNZW51Q2xpY2tlZCh7XHJcbiAgICAgIGFjdGl2ZTogdGhpcy5hY3RpdmVNZW51SXRlbSxcclxuICAgICAgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0sXHJcbiAgICAgIGFjdGl2YXRlZEJ5Um91dGU6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcmVTdWJNZW51cyhtZW51czogQXJyYXk8UG9NZW51SXRlbT4pIHtcclxuICAgIHJldHVybiBtZW51cy5ldmVyeShtZW51ID0+IG1lbnVbJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckdyb3VwTWVudUlmRmlyc3RMZXZlbChhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbSkge1xyXG4gICAgaWYgKGFjdGl2ZU1lbnVJdGVtWydsZXZlbCddID09PSBwb01lbnVSb290TGV2ZWwpIHtcclxuICAgICAgdGhpcy5ncm91cGVkTWVudUl0ZW0gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsaWNrTWVudUl0ZW0obWVudTogUG9NZW51SXRlbSkge1xyXG4gICAgaWYgKG1lbnUuYWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZXhlY3V0ZU1lbnVBY3Rpb24obWVudSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1lbnVbJ3R5cGUnXSA9PT0gJ2V4dGVybmFsTGluaycpIHtcclxuICAgICAgb3BlbkV4dGVybmFsTGluayhtZW51LmxpbmspO1xyXG4gICAgfSBlbHNlIGlmIChtZW51Wyd0eXBlJ10gPT09ICdpbnRlcm5hbExpbmsnKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVNZW51SXRlbShtZW51KTtcclxuICAgIH0gZWxzZSBpZiAobWVudVsndHlwZSddID09PSAnc3ViSXRlbXMnKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlcmluZ0l0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJpbmdJdGVtcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdyb3VwTWVudUl0ZW0obWVudSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1lbnVbJ3R5cGUnXSAhPT0gJ3N1Ykl0ZW1zJykge1xyXG4gICAgICB0aGlzLm1vYmlsZU9wZW5lZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9NZW51SXRlbUZpbHRlcmVkKG1lbnVJdGVtOiBhbnkgPSB7IGxhYmVsOiAnJywgbGluazogJycgfSk6IFBvTWVudUl0ZW1GaWx0ZXJlZCB7XHJcbiAgICBjb25zdCB7IGxhYmVsLCBsaW5rIH0gPSBtZW51SXRlbTtcclxuXHJcbiAgICBjb25zdCBtZW51SXRlbUZpbHRlcmVkOiBQb01lbnVJdGVtRmlsdGVyZWQgPSB7IGxhYmVsLCBsaW5rIH07XHJcblxyXG4gICAgdGhpcy5zZXRNZW51SXRlbVByb3BlcnRpZXMobWVudUl0ZW1GaWx0ZXJlZCk7XHJcblxyXG4gICAgcmV0dXJuIG1lbnVJdGVtRmlsdGVyZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVJlc2l6ZUxpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnRvZ2dsZVJlc2l6ZSgpO1xyXG4gICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhlY3V0ZU1lbnVBY3Rpb24obWVudTogUG9NZW51SXRlbSk6IHZvaWQge1xyXG4gICAgbWVudS5hY3Rpb24obWVudSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbHRlckl0ZW1zKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0cmltRmlsdGVyID0gZmlsdGVyICYmIGZpbHRlci50cmltKCk7XHJcblxyXG4gICAgaWYgKHRyaW1GaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuZmlsdGVyU2VydmljZVxyXG4gICAgICAgID8gYXdhaXQgdGhpcy5maWx0ZXJPblNlcnZpY2UodHJpbUZpbHRlcilcclxuICAgICAgICA6IHRoaXMuZmlsdGVyTG9jYWxJdGVtcyh0cmltRmlsdGVyKTtcclxuICAgICAgdGhpcy5maWx0ZXJpbmdJdGVtcyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5tZW51c107XHJcbiAgICAgIHRoaXMuZmlsdGVyaW5nSXRlbXMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyTG9jYWxJdGVtcyhmaWx0ZXI6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IFtdO1xyXG5cclxuICAgIHRoaXMuZmluZEl0ZW1zKHRoaXMubWVudXMsIGZpbHRlci50b0xvd2VyQ2FzZSgpLCBmaWx0ZXJlZEl0ZW1zKTtcclxuXHJcbiAgICByZXR1cm4gZmlsdGVyZWRJdGVtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyUHJvY2VzcyhmaWx0ZXI6IHN0cmluZykge1xyXG4gICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmZpbHRlckl0ZW1zKGZpbHRlcilcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNob3dOb0RhdGEoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtc1NlcnZpY2Uuc2VuZFRvQ2hpbGRNZW51Q2xpY2tlZCh7IGFjdGl2ZTogdGhpcy5hY3RpdmVNZW51SXRlbSwgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0gfSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmlsdGVyT25TZXJ2aWNlKHNlYXJjaDogc3RyaW5nID0gJycpIHtcclxuICAgIGlmIChzZWFyY2gubGVuZ3RoID49IHBvTWVudU1pbkxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlXHJcbiAgICAgICAgLmdldEZpbHRlcmVkRGF0YShzZWFyY2gsIHRoaXMucGFyYW1zKVxyXG4gICAgICAgIC5waXBlKG1hcChtZW51SXRlbXNGaWx0ZXJlZCA9PiBtZW51SXRlbXNGaWx0ZXJlZC5tYXAobWVudUl0ZW0gPT4gdGhpcy5jb252ZXJ0VG9NZW51SXRlbUZpbHRlcmVkKG1lbnVJdGVtKSkpKVxyXG4gICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSXRlbXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRJdGVtcyhtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIGZpbHRlcjogc3RyaW5nLCBmaWx0ZXJlZEl0ZW1zOiBBcnJheTxhbnk+KSB7XHJcbiAgICBtZW51cy5mb3JFYWNoKG1lbnUgPT4ge1xyXG4gICAgICBjb25zdCBoYXNBY3Rpb24gPSBtZW51LmFjdGlvbiB8fCBtZW51Lmxpbms7XHJcbiAgICAgIGNvbnN0IGxhYmVsSGFzRmlsdGVyID0gbWVudS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlcik7XHJcblxyXG4gICAgICBpZiAobGFiZWxIYXNGaWx0ZXIgJiYgaGFzQWN0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgbmV3TWVudSA9IHsgLi4ubWVudSB9O1xyXG5cclxuICAgICAgICBpZiAobmV3TWVudS5zdWJJdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBkZWxldGUgbmV3TWVudS5zdWJJdGVtcztcclxuICAgICAgICAgIG5ld01lbnVbJ3R5cGUnXSA9IHRoaXMuc2V0TWVudVR5cGUobmV3TWVudSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmaWx0ZXJlZEl0ZW1zLnB1c2gobmV3TWVudSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtZW51LnN1Ykl0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5maW5kSXRlbXMobWVudS5zdWJJdGVtcywgZmlsdGVyLCBmaWx0ZXJlZEl0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRQYXJlbnQobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LCBtZW51SXRlbTogUG9NZW51SXRlbSk6IFBvTWVudUl0ZW0ge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gZnVuY3Rpb24gKG1lbnVJdGVtczogQXJyYXk8UG9NZW51SXRlbT4sIGlkKSB7XHJcbiAgICAgIGlmIChtZW51SXRlbXMpIHtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWVudUl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgbWVudSA9IG1lbnVJdGVtc1tpbmRleF07XHJcbiAgICAgICAgICBpZiAobWVudS5zdWJJdGVtcyAmJiBtZW51LnN1Ykl0ZW1zLmZpbmQoc3ViSXRlbSA9PiBzdWJJdGVtWydpZCddID09PSBpZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1lbnU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGdldFBhcmVudChtZW51LnN1Ykl0ZW1zLCBpZCk7XHJcbiAgICAgICAgICBpZiAoZm91bmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBnZXRQYXJlbnQobWVudXMsIG1lbnVJdGVtWydpZCddKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFJvb3RQYXJlbnQobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LCBtZW51OiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XHJcbiAgICBjb25zdCBmaW5kUGFyZW50ID0gdGhpcy5maW5kUGFyZW50O1xyXG5cclxuICAgIGNvbnN0IGdldFJvb3RQYXJlbnQgPSBmdW5jdGlvbiAobWVudUl0ZW1zOiBBcnJheTxQb01lbnVJdGVtPiwgbWVudUl0ZW0pOiBQb01lbnVJdGVtIHtcclxuICAgICAgbGV0IHBhcmVudCA9IGZpbmRQYXJlbnQobWVudUl0ZW1zLCBtZW51SXRlbSk7XHJcblxyXG4gICAgICBpZiAocGFyZW50WydsZXZlbCddICE9PSBwb01lbnVSb290TGV2ZWwpIHtcclxuICAgICAgICBwYXJlbnQgPSBnZXRSb290UGFyZW50KG1lbnVJdGVtcywgcGFyZW50KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBnZXRSb290UGFyZW50KG1lbnVzLCBtZW51KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWN0aXZlTWVudVBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtLCBncm91cGVkTWVudUl0ZW06IFBvTWVudUl0ZW0pIHtcclxuICAgIGlmICh0aGlzLmFyZVN1Yk1lbnVzKFtncm91cGVkTWVudUl0ZW0sIGFjdGl2ZU1lbnVJdGVtXSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JvdXBNZW51SXRlbShtZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcclxuICAgICAgdGhpcy50b2dnbGVNZW51Q29sbGFwc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBtZW51Wydpc09wZW5lZCddID0gIW1lbnVbJ2lzT3BlbmVkJ107XHJcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IG1lbnU7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtICYmXHJcbiAgICAgIG1lbnVbJ2lzT3BlbmVkJ10gJiZcclxuICAgICAgdGhpcy5pc0FjdGl2ZUl0ZW1NZW51U3ViTWVudSAmJlxyXG4gICAgICB0aGlzLmlzUm9vdE1lbnVFcXVhbEdyb3VwZWRNZW51KHRoaXMubWVudXMsIHRoaXMuYWN0aXZlTWVudUl0ZW0sIG1lbnUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHsgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNSb290TWVudUVxdWFsR3JvdXBlZE1lbnUoXHJcbiAgICBtZW51czogQXJyYXk8UG9NZW51SXRlbT4sXHJcbiAgICBhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbSxcclxuICAgIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbVxyXG4gICkge1xyXG4gICAgY29uc3QgYWN0aXZlTWVudVJvb3RQYXJlbnQgPSB0aGlzLmZpbmRSb290UGFyZW50KG1lbnVzLCBhY3RpdmVNZW51SXRlbSk7XHJcbiAgICByZXR1cm4gYWN0aXZlTWVudVJvb3RQYXJlbnRbJ2lkJ10gPT09IGdyb3VwZWRNZW51SXRlbVsnaWQnXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3BlblBhcmVudE1lbnUoY2hpbGRNZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQodGhpcy5tZW51cywgY2hpbGRNZW51KTtcclxuICAgIHBhcmVudFsnaXNPcGVuZWQnXSA9IHRydWU7XHJcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IHBhcmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd05vRGF0YSgpIHtcclxuICAgIHRoaXMubm9EYXRhID0gdGhpcy5maWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RyaW5naWZ5KG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPik6IHN0cmluZyB7XHJcbiAgICAvLyBuw6NvIGZheiBvIHN0cmluZ2lmeSBkYSBwcm9wcmllZGFkZSBpY29uLCBwb2lzIHBvZGUgY29udGVyIG9iamV0byBjb21wbGV4byBlIGRpc3BhcmFyIHVtIGVycm8uXHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5tZW51cywgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgaWYgKGtleSAhPT0gJ2ljb24nKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlR3JvdXBlZE1lbnVJdGVtKCkge1xyXG4gICAgdGhpcy5ncm91cGVkTWVudUl0ZW1bJ2lzT3BlbmVkJ10gPSAhdGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5hbGxvd0NvbGxhcHNlTWVudTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlTWVudUNvbGxhcHNlKGNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcclxuXHJcbiAgICBpZiAodGhpcy5ncm91cGVkTWVudUl0ZW0gJiYgdGhpcy5hY3RpdmVNZW51SXRlbSkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9XHJcbiAgICAgICAgdGhpcy5nZXRBY3RpdmVNZW51UGFyZW50KHRoaXMubWVudXMsIHRoaXMuYWN0aXZlTWVudUl0ZW0sIHRoaXMuZ3JvdXBlZE1lbnVJdGVtKSB8fCB0aGlzLmdyb3VwZWRNZW51SXRlbTtcclxuICAgICAgdGhpcy50b2dnbGVHcm91cGVkTWVudUl0ZW0oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVNZW51SXRlbSkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlQ29sbGFwc2VTdWJNZW51SXRlbSgpO1xyXG4gICAgICB0aGlzLm1lbnVJdGVtc1NlcnZpY2Uuc2VuZFRvQ2hpbGRNZW51Q2xpY2tlZCh7XHJcbiAgICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLFxyXG4gICAgICAgIGdyb3VwZWQ6IHRoaXMuZ3JvdXBlZE1lbnVJdGVtLFxyXG4gICAgICAgIGFjdGl2YXRlZEJ5Um91dGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVNZW51KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZVJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLm1vYmlsZU9wZW5lZCkge1xyXG4gICAgICB0aGlzLm1vYmlsZU9wZW5lZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbGxhcHNlZE1vYmlsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcyh0aGlzLmNvbGxhcHNlZE1vYmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlVG9nZ2xlTWVudShjb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghdGhpcy5hbGxvd0NvbGxhcHNlTWVudSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTWVudSgpIHtcclxuICAgIHRoaXMubWVudUluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0TWVudUV4dHJhUHJvcGVydGllcygpO1xyXG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMubWVudXNdO1xyXG4gICAgdGhpcy5tZW51UHJldmlvdXMgPSB0aGlzLnN0cmluZ2lmeSh0aGlzLm1lbnVzKTtcclxuICAgIHRoaXMudmFsaWRhdGVNZW51cyh0aGlzLm1lbnVzKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cIm1vYmlsZU9wZW5lZFwiIGNsYXNzPVwicG8tbWVudS1vdmVybGF5XCIgKGNsaWNrKT1cInRvZ2dsZU1lbnVNb2JpbGUoKVwiPjwvZGl2PlxyXG48bmF2PlxyXG4gIDxkaXYgY2xhc3M9XCJwby1tZW51LW1vYmlsZSBwby1jbGlja2FibGVcIiAoY2xpY2spPVwidG9nZ2xlTWVudU1vYmlsZSgpXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1tZW51XCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicG8tbWVudVwiIFtuZ0NsYXNzXT1cInsgJ3BvLW1lbnUtYW5pbWF0aW9uJzogbW9iaWxlT3BlbmVkIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwby1tZW51LWhlYWRlclwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwibG9nbyB8fCAoc2hvcnRMb2dvICYmIGVuYWJsZUNvbGxhcHNlKVwiIGNsYXNzPVwicG8tbWVudS1oZWFkZXItY29udGFpbmVyLWxvZ29cIj5cclxuICAgICAgICA8cG8tbG9nb1xyXG4gICAgICAgICAgW3AtY2xhc3NdPVwiZW5hYmxlQ29sbGFwc2UgPyAncG8tbWVudS1zaG9ydC1sb2dvJyA6ICdwby1tZW51LWxvZ28nXCJcclxuICAgICAgICAgIFtwLWxvZ29dPVwiZW5hYmxlQ29sbGFwc2UgPyBzaG9ydExvZ28gfHwgbG9nbyA6IGxvZ29cIlxyXG4gICAgICAgICAgW3AtbG9nby1hbHRdPVwibG9nb0FsdFwiXHJcbiAgICAgICAgPjwvcG8tbG9nbz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWVuYWJsZUNvbGxhcHNlICYmIG1lbnVIZWFkZXJUZW1wbGF0ZVwiIGNsYXNzPVwicG8tbWVudS1oZWFkZXItdGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUhlYWRlclRlbXBsYXRlLnRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHBvLW1lbnUtZmlsdGVyXHJcbiAgICAgICAgKm5nSWY9XCJmaWx0ZXIgJiYgIWVuYWJsZUNvbGxhcHNlXCJcclxuICAgICAgICBbcC1sb2FkaW5nXT1cImZpbHRlckxvYWRpbmdcIlxyXG4gICAgICAgIChwLWZpbHRlcik9XCJkZWJvdW5jZUZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgPjwvcG8tbWVudS1maWx0ZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1ib2R5XCI+XHJcbiAgICAgIDwhLS0gSW5uZXIgZSBvdXRlciBwYXJhIGVzY29uZGVyIHNjcm9sbCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvLW1lbnUtb3V0ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1pbm5lclwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicG8tbWVudS1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvLW1lbnUtaXRlbS1maXJzdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1tZW51LWljb24tY29udGFpbmVyIHBvLW1lbnUtaXRlbS1uby1kYXRhXCI+XHJcbiAgICAgICAgICAgICAgICA8cG8taWNvbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1pbmZvIHBvLW1lbnUtaWNvbi1pdGVtIHBvLWxnLTJcIj48L3BvLWljb24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbGctMTAgcG8tbWVudS1pY29uLWxhYmVsXCI+e3sgbGl0ZXJhbHMuaXRlbU5vdEZvdW5kIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWVudSBvZiBmaWx0ZXJlZEl0ZW1zOyBsZXQgbWVudUluZGV4ID0gaW5kZXhcIiBjbGFzcz1cInBvLW1lbnUtaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxwby1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbY2xhc3MucG8tbWVudS1pdGVtLWZpcnN0XT1cIm1lbnVJbmRleCA9PT0gMFwiXHJcbiAgICAgICAgICAgICAgW3AtYWN0aW9uXT1cIm1lbnUuYWN0aW9uXCJcclxuICAgICAgICAgICAgICBbcC1iYWRnZS1hbGVydF09XCJtZW51LmJhZGdlQWxlcnRcIlxyXG4gICAgICAgICAgICAgIFtwLWJhZGdlLWNvbG9yXT1cIm1lbnUuYmFkZ2UgPyBtZW51LmJhZGdlLmNvbG9yIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbcC1iYWRnZS12YWx1ZV09XCJtZW51LmJhZGdlID8gbWVudS5iYWRnZS52YWx1ZSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgW3AtY29sbGFwc2VkLW1lbnVdPVwiZW5hYmxlQ29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgIFtwLWljb25dPVwiYWxsb3dJY29ucyA/IG1lbnUuaWNvbiA6IG51bGxcIlxyXG4gICAgICAgICAgICAgIFtwLWlkXT1cIm1lbnUuaWRcIlxyXG4gICAgICAgICAgICAgIFtwLWxhYmVsXT1cIm1lbnUubGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtwLWxldmVsXT1cIm1lbnUubGV2ZWxcIlxyXG4gICAgICAgICAgICAgIFtwLWxpbmtdPVwibWVudS5saW5rXCJcclxuICAgICAgICAgICAgICBbcC1zaG9ydC1sYWJlbF09XCJtZW51LnNob3J0TGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtwLXN1Yi1pdGVtc109XCJtZW51LnN1Ykl0ZW1zXCJcclxuICAgICAgICAgICAgICBbcC10eXBlXT1cIm1lbnUudHlwZVwiXHJcbiAgICAgICAgICAgID48L3BvLW1lbnUtaXRlbT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJoYXNGb290ZXJcIiBjbGFzcz1cInBvLW1lbnUtZm9vdGVyXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwicG8tbWVudS1jb2xsYXBzZS1idXR0b24taWNvbiBwby1jbGlja2FibGVcIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJwby1pY29uXCJcclxuICAgICAgICAgIFtjbGFzcy5wby1pY29uLW1lbnUtY2xvc2VdPVwiZW5hYmxlQ29sbGFwc2VCdXR0b25cIlxyXG4gICAgICAgICAgW2NsYXNzLnBvLWljb24tbWVudS1vcGVuXT1cImVuYWJsZUNvbGxhcHNlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uYXY+XHJcbiJdfQ==
598
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbWVudS9wby1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBTWIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRzFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBSTVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUMxQjNELCtCQUErRTtJQUE3Qix5SkFBUyxlQUFBLHlCQUFrQixDQUFBLElBQUM7SUFBQyxpQkFBTTs7O0lBUS9FLCtCQUF5RjtJQUN2Riw4QkFJVztJQUNiLGlCQUFNOzs7SUFKRixlQUFrRTtJQUFsRSx1RkFBa0UsaUZBQUEsOEJBQUE7OztJQU9wRSx3QkFBZ0Y7OztJQURsRiwrQkFBbUY7SUFDakYseUZBQWdGO0lBQ2xGLGlCQUFNOzs7SUFEVyxlQUFnRDtJQUFoRCx3RUFBZ0Q7Ozs7SUFHakUsMENB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SGhDLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDO1FDckhoRCxnRUFBcUY7UUFDckYsMkJBQUssYUFBQTtRQUNzQyx5RkFBUyxzQkFBa0IsSUFBQztRQUNuRSwwQkFBMEM7UUFDNUMsaUJBQU07UUFFTiw4QkFBdUUsYUFBQTtRQUVuRSxnRUFNTTtRQUVOLGdFQUVNO1FBRU4sc0ZBSWtCO1FBQ3BCLGlCQUFNO1FBRU4sOEJBQTBCLGNBQUEsZUFBQTtRQUlwQixtRUFPTTtRQUVOLG9FQWlCTTtRQUNSLGlCQUFNLEVBQUEsRUFBQTtRQUlWLG1FQVNNO1FBQ1IsaUJBQU0sRUFBQTs7UUF4RUYsdUNBQWtCO1FBTUQsZUFBaUQ7UUFBakQsc0VBQWlEO1FBRTVELGVBQTJDO1FBQTNDLHNFQUEyQztRQVEzQyxlQUEyQztRQUEzQyxvRUFBMkM7UUFLOUMsZUFBK0I7UUFBL0Isd0RBQStCO1FBVXhCLGVBQVk7UUFBWixpQ0FBWTtRQVNJLGVBQWtCO1FBQWxCLDJDQUFrQjtRQXNCeEMsZUFBZTtRQUFmLG9DQUFlOzt1RkR5RFosZUFBZTtjQUwzQixTQUFTOzJCQUNFLFNBQVMsYUFFUixDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQzt5UUFHaUIsa0JBQWtCO2tCQUFoRixZQUFZO21CQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFJlbmRlcmVyMlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWRMaW5rLCBpc01vYmlsZSwgb3BlbkV4dGVybmFsTGluaywgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xyXG5cclxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9NZW51QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbWVudS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby1tZW51LWhlYWRlci10ZW1wbGF0ZS9wby1tZW51LWhlYWRlci10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBQb01lbnVJdGVtIH0gZnJvbSAnLi9wby1tZW51LWl0ZW0uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9NZW51SXRlbUZpbHRlcmVkIH0gZnJvbSAnLi9wby1tZW51LWl0ZW0vcG8tbWVudS1pdGVtLWZpbHRlcmVkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvTWVudUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUtZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb01lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUtaXRlbXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvTWVudVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUuc2VydmljZSc7XHJcblxyXG5jb25zdCBwb01lbnVEZWJvdW5jZVRpbWUgPSA0MDA7XHJcbmNvbnN0IHBvTWVudU1pbkxlbmd0aCA9IDM7XHJcbmNvbnN0IHBvTWVudVJvb3RMZXZlbCA9IDE7XHJcblxyXG4vKipcclxuICogQGRvY3NFeHRlbmRzIFBvTWVudUJhc2VDb21wb25lbnRcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEFwYXJlY2UgY29tcGxldG8gZW0gdGVsYXMgY29tIGxhcmd1cmEgbWFpb3IgcXVlIDEyMDBweCwgY2FzbyBjb250csOhcmlvIG8gbWVudSDDqSBlc2NvbmRpZG8gZSBjaGFtYWRvIHBvciBtZWlvIGRlIHVtIGJvdMOjby5cclxuICpcclxuICogTyBtZW51IHRhbWLDqW0gcG9kZSBzZXIgY29sYXBzYWRvLiBFc3NhIG9ww6fDo28gw6kgaGFiaWxpdGFkYSBxdWFuZG8gdG9kb3Mgb3MgaXRlbnMgZGUgcHJpbWVpcm8gbsOtdmVsIHBvc3N1w61yZW0gw61jb25lcyBlIHRleHRvcyBjdXJ0b3MuXHJcbiAqIFNlIGNvbGFwc2Fkbywgc29tZW50ZSBvcyBpdGVucyBkZSBwcmltZWlybyBuw612ZWwgc2Vyw6NvIGV4aWJpZG9zIGUsIGNhc28gbyBpdGVtIHNlbGVjaW9uYWRvIHBvc3N1YSBzdWItbsOtdmVpcyxcclxuICogZW50w6NvIG8gbWVudSBhbHRlcm5hcsOhIG5vdmFtZW50ZSBwYXJhIG8gZXN0YWRvIGFiZXJ0by5cclxuICpcclxuICogRXhpc3RlIGEgcG9zc2liaWxpZGFkZSBkZSBjdXN0b21pemFyIGEgbG9nb21hcmNhLCBxdWUgw6kgZXhpYmlkYSBuYSBwYXJ0ZSBzdXBlcmlvciBkbyBjb21wb25lbnRlLlxyXG4gKlxyXG4gKiBFIHBhcmEgYWRpY2lvbmFyIHVtIGNvbnRlw7pkbyBwZXJzb25hbGl6YWRvIGVudHJlIGEgbG9nb21hcmNhIGUgbyBjYW1wbyBkZSBmaWx0cm8sXHJcbiAqIGJhc3RhIGFkaWNpb25hciBlc3RlIGNvbnRlw7pkbyBjb20gYSBkaXJldGl2YSBbKipwLW1lbnUtaGVhZGVyLXRlbXBsYXRlKipdKC9kb2N1bWVudGF0aW9uL3BvLW1lbnUtaGVhZGVyLXRlbXBsYXRlKS5cclxuICpcclxuICogQ2FzbyB1dGlsaXphciBvIGZpbHRybyBkZSBtZW51cywgw6kgcG9zc8OtdmVsIHJlYWxpemFyIGJ1c2NhcyBlbSBzZXJ2acOnbywgYXBlbmFzIGluZm9ybWFuZG8gYSBVUkwgZG8gc2VydmnDp28gb3UgYSBpbnN0w6JuY2lhIGRlXHJcbiAqIHVtIHNlcnZpw6dvIGN1c3RvbWl6YWRvIGltcGxlbWVudGFuZG8gYSBpbnRlcmZhY2UgYFBvTWVudUZpbHRlcmAuXHJcbiAqXHJcbiAqIFBhcmEgbyBtZW51IGZ1bmNpb25hciBjb3JyZXRhbWVudGUgw6kgbmVjZXNzw6FyaW8gaW1wb3J0YXIgbyBgUm91dGVyTW9kdWxlYCBlIGBSb3V0ZXNgIGRvIG3Ds2R1bG8gcHJpbmNpcGFsIGRlXHJcbiAqICBzdWEgYXBsaWNhw6fDo286XHJcbiAqXHJcbiAqIGBgYGBcclxuICogaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG4gKlxyXG4gKiAuLi5cclxuICpcclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbXHJcbiAqICAgICBSb3V0ZXJNb2R1bGUsXHJcbiAqICAgICBSb3V0ZXMsXHJcbiAqICAgICAuLi5cclxuICogICAgIFBvTW9kdWxlLFxyXG4gKiAgICAgLi4uXHJcbiAqICAgXSxcclxuICogICBkZWNsYXJhdGlvbnM6IFtcclxuICogICAgIEFwcENvbXBvbmVudFxyXG4gKiAgIF0sXHJcbiAqICAgcHJvdmlkZXJzOiBbXSxcclxuICogICBib290c3RyYXA6IFtBcHBDb21wb25lbnRdXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBBcHBNb2R1bGUgeyB9XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBBbMOpbSBkaXNzbyDDqSBuZWNlc3PDoXJpbyBjcmlhciB1bSBtw7NkdWxvIGNvbmZpZ3VyYW5kbyBhcyByb3RhcyBkYSBhcGxpY2HDp8Ojby5cclxuICpcclxuICogYGBgXHJcbiAqIGltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiAqXHJcbiAqIGltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuICpcclxuICogaW1wb3J0IHsgSGVsbG9Xb3JsZENvbXBvbmVudCB9IGZyb20gJy4vaGVsbG8td29ybGQvaGVsbG8td29ybGQuY29tcG9uZW50JztcclxuICpcclxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXHJcbiAqICAge3BhdGg6ICdoZWxsby13b3JsZCcsIGNvbXBvbmVudDogSGVsbG9Xb3JsZENvbXBvbmVudH1cclxuICogXTtcclxuICpcclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzLCB7dXNlSGFzaDogdHJ1ZX0pXSxcclxuICogICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxyXG4gKiB9KVxyXG4gKiBleHBvcnQgY2xhc3MgQXBwUm91dGluZ01vZHVsZSB7fVxyXG4gKiBgYGBcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLW1lbnUtYmFzaWNcIiB0aXRsZT1cIlBPIE1lbnUgQmFzaWNcIj5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtYmFzaWMvc2FtcGxlLXBvLW1lbnUtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1iYXNpYy9zYW1wbGUtcG8tbWVudS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tZW51LWxhYnNcIiB0aXRsZT1cIlBPIE1lbnUgTGFic1wiPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1sYWJzL3NhbXBsZS1wby1tZW51LWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1sYWJzL3NhbXBsZS1wby1tZW51LWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbWVudS1odW1hbi1yZXNvdXJjZXNcIiB0aXRsZT1cIlBPIE1lbnUgLSBIdW1hbiBSZXNvdXJjZXNcIj5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwby1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbUG9NZW51SXRlbXNTZXJ2aWNlLCBQb01lbnVTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9NZW51Q29tcG9uZW50IGV4dGVuZHMgUG9NZW51QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0LCBEb0NoZWNrIHtcclxuICBAQ29udGVudENoaWxkKFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51SGVhZGVyVGVtcGxhdGU6IFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlO1xyXG5cclxuICBhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbTtcclxuICBjb2xsYXBzZWRNb2JpbGU6IGJvb2xlYW47XHJcbiAgZmlsdGVyTG9hZGluZyA9IGZhbHNlO1xyXG4gIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbTtcclxuICBpZCA9IHV1aWQoKTtcclxuICBsaW5rQWN0aXZlOiBzdHJpbmc7XHJcbiAgbW9iaWxlT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdGltZW91dEZpbHRlcjogYW55O1xyXG5cclxuICBwcml2YXRlIGZpbHRlcmluZ0l0ZW1zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtZW51SW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIG1lbnVQcmV2aW91cyA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuXHJcbiAgcHJpdmF0ZSBpdGVtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByb3V0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBtZW51SXRlbXNTZXJ2aWNlOiBQb01lbnVJdGVtc1NlcnZpY2UsXHJcbiAgICBtZW51R2xvYmFsU2VydmljZTogUG9NZW51R2xvYmFsU2VydmljZSxcclxuICAgIG1lbnVTZXJ2aWNlOiBQb01lbnVTZXJ2aWNlLFxyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWVudUdsb2JhbFNlcnZpY2UsIG1lbnVTZXJ2aWNlLCBsYW5ndWFnZVNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgaXNBY3RpdmVJdGVtTWVudVN1Yk1lbnUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVNZW51SXRlbVsnbGV2ZWwnXSA+IHRoaXMuZ3JvdXBlZE1lbnVJdGVtWydsZXZlbCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuYWJsZUNvbGxhcHNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQgJiYgIXRoaXMuY29sbGFwc2VkTW9iaWxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuYWJsZUNvbGxhcHNlQnV0dG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgJiYgIXRoaXMuY29sbGFwc2VkICYmICF0aGlzLm1vYmlsZU9wZW5lZDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNGb290ZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lbmFibGVDb2xsYXBzZUJ1dHRvbiB8fCB0aGlzLmVuYWJsZUNvbGxhcHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQ29sbGFwc2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgJiYgdGhpcy5jb2xsYXBzZWQ7XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJpbmdJdGVtcyAmJiB0aGlzLmZpbHRlcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWVudUN1cnJlbnQgPSB0aGlzLnN0cmluZ2lmeSh0aGlzLm1lbnVzKTtcclxuXHJcbiAgICBpZiAodGhpcy5tZW51UHJldmlvdXMgIT09IG1lbnVDdXJyZW50IHx8ICF0aGlzLm1lbnVJbml0aWFsaXplZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcclxuICAgICAgdGhpcy52YWxpZGF0ZUNvbGxhcHNlQ2xhc3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5pdGVtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWVudUdsb2JhbFNlcnZpY2Uuc2VuZFJlbW92ZWRBcHBsaWNhdGlvbk1lbnUodGhpcy5pZCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9NZW51SXRlbSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1JvdXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLm1lbnVHbG9iYWxTZXJ2aWNlLnNlbmRBcHBsaWNhdGlvbk1lbnUodGhpcyk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoOiBzdHJpbmcsIG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xyXG4gICAgaWYgKG1lbnVzKSB7XHJcbiAgICAgIGNvbnN0IHVybFBhdGhXaXRob3V0TGFzdEZyYWdtZW50ID0gdXJsUGF0aC5zdWJzdHIoMCwgdXJsUGF0aC5sYXN0SW5kZXhPZignLycpKTtcclxuICAgICAgcmV0dXJuIG1lbnVzLnNvbWUobWVudSA9PiB7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTWVudUxpbmsgPSBnZXRGb3JtYXR0ZWRMaW5rKG1lbnUubGluayk7XHJcbiAgICAgICAgY29uc3QgbWVudUxpbmtQYXRoID0gYCR7dXJsUGF0aFdpdGhvdXRMYXN0RnJhZ21lbnR9JHtmb3JtYXR0ZWRNZW51TGluay5zdWJzdHIoXHJcbiAgICAgICAgICBmb3JtYXR0ZWRNZW51TGluay5sYXN0SW5kZXhPZignLycpXHJcbiAgICAgICAgKX1gO1xyXG5cclxuICAgICAgICBpZiAobWVudUxpbmtQYXRoID09PSB1cmxQYXRoICYmIG1lbnVMaW5rUGF0aCA9PT0gZm9ybWF0dGVkTWVudUxpbmspIHtcclxuICAgICAgICAgIHRoaXMubGlua0FjdGl2ZSA9IGZvcm1hdHRlZE1lbnVMaW5rO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKG1lbnUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2YXRlTWVudUJ5VXJsKHVybFBhdGgsIG1lbnUuc3ViSXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0FjdGl2ZU1lbnVCeVVybCh1cmxQYXRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5saW5rQWN0aXZlIHx8IHRoaXMubGlua0FjdGl2ZSAhPT0gdXJsUGF0aCkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlTWVudUJ5VXJsKHVybFBhdGgsIHRoaXMubWVudXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogPGEgaWQ9XCJjb2xhcHNlTWV0aG9kXCI+PC9hPlxyXG4gICAqXHJcbiAgICogKk3DqXRvZG8gcGFyYSBjb2xhcHNhciAocmV0cmFpcikgbyBtZW51LlxyXG4gICAqL1xyXG4gIGNvbGxhcHNlKCkge1xyXG4gICAgdGhpcy52YWxpZGF0ZVRvZ2dsZU1lbnUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBkZWJvdW5jZUZpbHRlcihmaWx0ZXI6IHN0cmluZykge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dEZpbHRlcik7XHJcblxyXG4gICAgdGhpcy50aW1lb3V0RmlsdGVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyUHJvY2VzcyhmaWx0ZXIpO1xyXG4gICAgfSwgcG9NZW51RGVib3VuY2VUaW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIDxhIGlkPVwiZXhwYW5kTWV0aG9kXCI+PC9hPlxyXG4gICAqXHJcbiAgICogKk3DqXRvZG8gcGFyYSBleHBhbmRpciAoYXVtZW50YXIpIG8gbWVudS5cclxuICAgKi9cclxuICBleHBhbmQoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlVG9nZ2xlTWVudShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmVUb01lbnVJdGVtKCkge1xyXG4gICAgdGhpcy5pdGVtU3Vic2NyaXB0aW9uID0gdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnJlY2VpdmVGcm9tQ2hpbGRNZW51Q2xpY2tlZCgpLnN1YnNjcmliZSgobWVudTogUG9NZW51SXRlbSkgPT4ge1xyXG4gICAgICB0aGlzLmNsaWNrTWVudUl0ZW0obWVudSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZVRvUm91dGUoKSB7XHJcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCB2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XHJcbiAgICAgICAgY29uc3QgdXJsUm91dGVyID0gdGhpcy5jaGVja2luZ1JvdXRlckNoaWxkcmVuRnJhZ21lbnRzKCk7XHJcbiAgICAgICAgdGhpcy5jaGVja0FjdGl2ZU1lbnVCeVVybCh1cmxSb3V0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIDxhIGlkPVwidG9nZ2xlTWV0aG9kXCI+PC9hPlxyXG4gICAqICpNw6l0b2RvIHF1ZSBjb2xhcHNhIGUgZXhwYW5kZSBvIG1lbnUgYWx0ZXJuYWRhbWVudGUuXHJcbiAgICpcclxuICAgKiA+ICpPcyBtw6l0b2RvcyBhcGVuYXMgdsOjbyBjb2xhcHNhci9leHBhbmRpciBvIG1lbnUgc2U6XHJcbiAgICogIC0gVG9kb3Mgb3MgaXRlbnMgZGUgbWVudSB0aXZlcmVtIHZhbG9yIG5hcyBwcm9wcmllZGFkZXMgYGljb25gIGUgYHNob3J0TGFiZWxgLlxyXG4gICAqL1xyXG4gIHRvZ2dsZSgpIHtcclxuICAgIHRoaXMudmFsaWRhdGVUb2dnbGVNZW51KCF0aGlzLmNvbGxhcHNlZCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVNZW51TW9iaWxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2JpbGVPcGVuZWQgPSAhdGhpcy5tb2JpbGVPcGVuZWQ7XHJcbiAgICB0aGlzLmNvbGxhcHNlZE1vYmlsZSA9IHRoaXMuY29sbGFwc2VkICYmIHRoaXMubW9iaWxlT3BlbmVkO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGVDb2xsYXBzZUNsYXNzKHRoaXMuY29sbGFwc2VkTW9iaWxlKTtcclxuXHJcbiAgICBpZiAoaXNNb2JpbGUoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubW9iaWxlT3BlbmVkKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlUmVzaXplTGlzdGVuZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjaGVja2luZ1JvdXRlckNoaWxkcmVuRnJhZ21lbnRzKCkge1xyXG4gICAgY29uc3QgY2hpbGRyZW5QcmltYXJ5ID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKS5yb290LmNoaWxkcmVuWydwcmltYXJ5J107XHJcblxyXG4gICAgcmV0dXJuIGNoaWxkcmVuUHJpbWFyeSA/IGAvJHtjaGlsZHJlblByaW1hcnkuc2VnbWVudHMubWFwKGl0ID0+IGl0LnBhdGgpLmpvaW4oJy8nKX1gIDogJyc7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGVDb2xsYXBzZUNsYXNzKGNvbGxhcHNlZE1vYmlsZTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZTtcclxuICAgIHRoaXMucmVuZGVyZXJbdGhpcy5pc0NvbGxhcHNlZCAmJiAhY29sbGFwc2VkTW9iaWxlID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKHdyYXBwZXIsICdwby1jb2xsYXBzZWQtbWVudScpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmF0ZUNvbGxhcHNlU3ViTWVudUl0ZW0oKSB7XHJcbiAgICB0aGlzLmNsZWFyR3JvdXBNZW51SWZGaXJzdExldmVsKHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xyXG5cclxuICAgIGlmICghdGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5hY3RpdmVNZW51SXRlbVsnbGV2ZWwnXSA+IHBvTWVudVJvb3RMZXZlbCAmJiB0aGlzLmlzQWN0aXZlSXRlbU1lbnVTdWJNZW51KSB7XHJcbiAgICAgIHRoaXMub3BlblBhcmVudE1lbnUodGhpcy5hY3RpdmVNZW51SXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlTWVudUl0ZW0obWVudTogUG9NZW51SXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IG1lbnU7XHJcbiAgICB0aGlzLmxpbmtBY3RpdmUgPSBtZW51Lmxpbms7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVNZW51SXRlbVsnbGV2ZWwnXSA+IHBvTWVudVJvb3RMZXZlbCkge1xyXG4gICAgICB0aGlzLm9wZW5QYXJlbnRNZW51KHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncm91cGVkTWVudUl0ZW0gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoe1xyXG4gICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sXHJcbiAgICAgIGdyb3VwZWQ6IHRoaXMuZ3JvdXBlZE1lbnVJdGVtLFxyXG4gICAgICBhY3RpdmF0ZWRCeVJvdXRlOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXJlU3ViTWVudXMobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KSB7XHJcbiAgICByZXR1cm4gbWVudXMuZXZlcnkobWVudSA9PiBtZW51WydsZXZlbCddID4gcG9NZW51Um9vdExldmVsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJHcm91cE1lbnVJZkZpcnN0TGV2ZWwoYWN0aXZlTWVudUl0ZW06IFBvTWVudUl0ZW0pIHtcclxuICAgIGlmIChhY3RpdmVNZW51SXRlbVsnbGV2ZWwnXSA9PT0gcG9NZW51Um9vdExldmVsKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGlja01lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pIHtcclxuICAgIGlmIChtZW51LmFjdGlvbikge1xyXG4gICAgICB0aGlzLmV4ZWN1dGVNZW51QWN0aW9uKG1lbnUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtZW51Wyd0eXBlJ10gPT09ICdleHRlcm5hbExpbmsnKSB7XHJcbiAgICAgIG9wZW5FeHRlcm5hbExpbmsobWVudS5saW5rKTtcclxuICAgIH0gZWxzZSBpZiAobWVudVsndHlwZSddID09PSAnaW50ZXJuYWxMaW5rJykge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlTWVudUl0ZW0obWVudSk7XHJcbiAgICB9IGVsc2UgaWYgKG1lbnVbJ3R5cGUnXSA9PT0gJ3N1Ykl0ZW1zJykge1xyXG4gICAgICBpZiAodGhpcy5maWx0ZXJpbmdJdGVtcykge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyaW5nSXRlbXMgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5ncm91cE1lbnVJdGVtKG1lbnUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtZW51Wyd0eXBlJ10gIT09ICdzdWJJdGVtcycpIHtcclxuICAgICAgdGhpcy5tb2JpbGVPcGVuZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29udmVydFRvTWVudUl0ZW1GaWx0ZXJlZChtZW51SXRlbTogYW55ID0geyBsYWJlbDogJycsIGxpbms6ICcnLCBhY3Rpb246ICgpID0+IHt9IH0pOiBQb01lbnVJdGVtRmlsdGVyZWQge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgbGluaywgYWN0aW9uIH0gPSBtZW51SXRlbTtcclxuXHJcbiAgICBjb25zdCBtZW51SXRlbUZpbHRlcmVkOiBQb01lbnVJdGVtRmlsdGVyZWQgPSB7IGxhYmVsLCBsaW5rLCBhY3Rpb24gfTtcclxuXHJcbiAgICB0aGlzLnNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbUZpbHRlcmVkKTtcclxuXHJcbiAgICByZXR1cm4gbWVudUl0ZW1GaWx0ZXJlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplTGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudG9nZ2xlUmVzaXplKCk7XHJcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlTWVudUFjdGlvbihtZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XHJcbiAgICBtZW51LmFjdGlvbihtZW51KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmlsdGVySXRlbXMoZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRyaW1GaWx0ZXIgPSBmaWx0ZXIgJiYgZmlsdGVyLnRyaW0oKTtcclxuXHJcbiAgICBpZiAodHJpbUZpbHRlcikge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcclxuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5maWx0ZXJTZXJ2aWNlXHJcbiAgICAgICAgPyBhd2FpdCB0aGlzLmZpbHRlck9uU2VydmljZSh0cmltRmlsdGVyKVxyXG4gICAgICAgIDogdGhpcy5maWx0ZXJMb2NhbEl0ZW1zKHRyaW1GaWx0ZXIpO1xyXG4gICAgICB0aGlzLmZpbHRlcmluZ0l0ZW1zID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLm1lbnVzXTtcclxuICAgICAgdGhpcy5maWx0ZXJpbmdJdGVtcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJMb2NhbEl0ZW1zKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gW107XHJcblxyXG4gICAgdGhpcy5maW5kSXRlbXModGhpcy5tZW51cywgZmlsdGVyLnRvTG93ZXJDYXNlKCksIGZpbHRlcmVkSXRlbXMpO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJQcm9jZXNzKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbHRlckxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZmlsdGVySXRlbXMoZmlsdGVyKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd05vRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHsgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSB9KTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlckxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaWx0ZXJPblNlcnZpY2Uoc2VhcmNoOiBzdHJpbmcgPSAnJykge1xyXG4gICAgaWYgKHNlYXJjaC5sZW5ndGggPj0gcG9NZW51TWluTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2VcclxuICAgICAgICAuZ2V0RmlsdGVyZWREYXRhKHNlYXJjaCwgdGhpcy5wYXJhbXMpXHJcbiAgICAgICAgLnBpcGUobWFwKG1lbnVJdGVtc0ZpbHRlcmVkID0+IG1lbnVJdGVtc0ZpbHRlcmVkLm1hcChtZW51SXRlbSA9PiB0aGlzLmNvbnZlcnRUb01lbnVJdGVtRmlsdGVyZWQobWVudUl0ZW0pKSkpXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJdGVtcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEl0ZW1zKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPiwgZmlsdGVyOiBzdHJpbmcsIGZpbHRlcmVkSXRlbXM6IEFycmF5PGFueT4pIHtcclxuICAgIG1lbnVzLmZvckVhY2gobWVudSA9PiB7XHJcbiAgICAgIGNvbnN0IGhhc0FjdGlvbiA9IG1lbnUuYWN0aW9uIHx8IG1lbnUubGluaztcclxuICAgICAgY29uc3QgbGFiZWxIYXNGaWx0ZXIgPSBtZW51LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyKTtcclxuXHJcbiAgICAgIGlmIChsYWJlbEhhc0ZpbHRlciAmJiBoYXNBY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBuZXdNZW51ID0geyAuLi5tZW51IH07XHJcblxyXG4gICAgICAgIGlmIChuZXdNZW51LnN1Ykl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGRlbGV0ZSBuZXdNZW51LnN1Ykl0ZW1zO1xyXG4gICAgICAgICAgbmV3TWVudVsndHlwZSddID0gdGhpcy5zZXRNZW51VHlwZShuZXdNZW51KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZpbHRlcmVkSXRlbXMucHVzaChuZXdNZW51KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG1lbnUuc3ViSXRlbXMpIHtcclxuICAgICAgICB0aGlzLmZpbmRJdGVtcyhtZW51LnN1Ykl0ZW1zLCBmaWx0ZXIsIGZpbHRlcmVkSXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnVJdGVtOiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XHJcbiAgICBjb25zdCBnZXRQYXJlbnQgPSBmdW5jdGlvbiAobWVudUl0ZW1zOiBBcnJheTxQb01lbnVJdGVtPiwgaWQpIHtcclxuICAgICAgaWYgKG1lbnVJdGVtcykge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtZW51SXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBtZW51ID0gbWVudUl0ZW1zW2luZGV4XTtcclxuICAgICAgICAgIGlmIChtZW51LnN1Ykl0ZW1zICYmIG1lbnUuc3ViSXRlbXMuZmluZChzdWJJdGVtID0+IHN1Ykl0ZW1bJ2lkJ10gPT09IGlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbWVudTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZ2V0UGFyZW50KG1lbnUuc3ViSXRlbXMsIGlkKTtcclxuICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm91bmQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGdldFBhcmVudChtZW51cywgbWVudUl0ZW1bJ2lkJ10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kUm9vdFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnU6IFBvTWVudUl0ZW0pOiBQb01lbnVJdGVtIHtcclxuICAgIGNvbnN0IGZpbmRQYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQ7XHJcblxyXG4gICAgY29uc3QgZ2V0Um9vdFBhcmVudCA9IGZ1bmN0aW9uIChtZW51SXRlbXM6IEFycmF5PFBvTWVudUl0ZW0+LCBtZW51SXRlbSk6IFBvTWVudUl0ZW0ge1xyXG4gICAgICBsZXQgcGFyZW50ID0gZmluZFBhcmVudChtZW51SXRlbXMsIG1lbnVJdGVtKTtcclxuXHJcbiAgICAgIGlmIChwYXJlbnRbJ2xldmVsJ10gIT09IHBvTWVudVJvb3RMZXZlbCkge1xyXG4gICAgICAgIHBhcmVudCA9IGdldFJvb3RQYXJlbnQobWVudUl0ZW1zLCBwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGdldFJvb3RQYXJlbnQobWVudXMsIG1lbnUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY3RpdmVNZW51UGFyZW50KG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPiwgYWN0aXZlTWVudUl0ZW06IFBvTWVudUl0ZW0sIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbSkge1xyXG4gICAgaWYgKHRoaXMuYXJlU3ViTWVudXMoW2dyb3VwZWRNZW51SXRlbSwgYWN0aXZlTWVudUl0ZW1dKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maW5kUm9vdFBhcmVudChtZW51cywgYWN0aXZlTWVudUl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBncm91cE1lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICB0aGlzLnRvZ2dsZU1lbnVDb2xsYXBzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVbJ2lzT3BlbmVkJ10gPSAhbWVudVsnaXNPcGVuZWQnXTtcclxuICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gbWVudTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gJiZcclxuICAgICAgbWVudVsnaXNPcGVuZWQnXSAmJlxyXG4gICAgICB0aGlzLmlzQWN0aXZlSXRlbU1lbnVTdWJNZW51ICYmXHJcbiAgICAgIHRoaXMuaXNSb290TWVudUVxdWFsR3JvdXBlZE1lbnUodGhpcy5tZW51cywgdGhpcy5hY3RpdmVNZW51SXRlbSwgbWVudSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlTWVudUl0ZW0odGhpcy5hY3RpdmVNZW51SXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoeyBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sIGdyb3VwZWQ6IHRoaXMuZ3JvdXBlZE1lbnVJdGVtIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1Jvb3RNZW51RXF1YWxHcm91cGVkTWVudShcclxuICAgIG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPixcclxuICAgIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtLFxyXG4gICAgZ3JvdXBlZE1lbnVJdGVtOiBQb01lbnVJdGVtXHJcbiAgKSB7XHJcbiAgICBjb25zdCBhY3RpdmVNZW51Um9vdFBhcmVudCA9IHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcclxuICAgIHJldHVybiBhY3RpdmVNZW51Um9vdFBhcmVudFsnaWQnXSA9PT0gZ3JvdXBlZE1lbnVJdGVtWydpZCddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuUGFyZW50TWVudShjaGlsZE1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudCh0aGlzLm1lbnVzLCBjaGlsZE1lbnUpO1xyXG4gICAgcGFyZW50Wydpc09wZW5lZCddID0gdHJ1ZTtcclxuICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93Tm9EYXRhKCkge1xyXG4gICAgdGhpcy5ub0RhdGEgPSB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdHJpbmdpZnkobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KTogc3RyaW5nIHtcclxuICAgIC8vIG7Do28gZmF6IG8gc3RyaW5naWZ5IGRhIHByb3ByaWVkYWRlIGljb24sIHBvaXMgcG9kZSBjb250ZXIgb2JqZXRvIGNvbXBsZXhvIGUgZGlzcGFyYXIgdW0gZXJyby5cclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLm1lbnVzLCAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoa2V5ICE9PSAnaWNvbicpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVHcm91cGVkTWVudUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbVsnaXNPcGVuZWQnXSA9ICF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFsbG93Q29sbGFwc2VNZW51O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gY29sbGFwc2VkO1xyXG5cclxuICAgIGlmICh0aGlzLmdyb3VwZWRNZW51SXRlbSAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID1cclxuICAgICAgICB0aGlzLmdldEFjdGl2ZU1lbnVQYXJlbnQodGhpcy5tZW51cywgdGhpcy5hY3RpdmVNZW51SXRlbSwgdGhpcy5ncm91cGVkTWVudUl0ZW0pIHx8IHRoaXMuZ3JvdXBlZE1lbnVJdGVtO1xyXG4gICAgICB0aGlzLnRvZ2dsZUdyb3VwZWRNZW51SXRlbSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVDb2xsYXBzZVN1Yk1lbnVJdGVtKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHtcclxuICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sXHJcbiAgICAgICAgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0sXHJcbiAgICAgICAgYWN0aXZhdGVkQnlSb3V0ZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubW9iaWxlT3BlbmVkKSB7XHJcbiAgICAgIHRoaXMubW9iaWxlT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVDb2xsYXBzZUNsYXNzKHRoaXMuY29sbGFwc2VkTW9iaWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVUb2dnbGVNZW51KGNvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmFsbG93Q29sbGFwc2VNZW51KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRvZ2dsZU1lbnVDb2xsYXBzZShjb2xsYXBzZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVNZW51KCkge1xyXG4gICAgdGhpcy5tZW51SW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRNZW51RXh0cmFQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5tZW51c107XHJcbiAgICB0aGlzLm1lbnVQcmV2aW91cyA9IHRoaXMuc3RyaW5naWZ5KHRoaXMubWVudXMpO1xyXG4gICAgdGhpcy52YWxpZGF0ZU1lbnVzKHRoaXMubWVudXMpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwibW9iaWxlT3BlbmVkXCIgY2xhc3M9XCJwby1tZW51LW92ZXJsYXlcIiAoY2xpY2spPVwidG9nZ2xlTWVudU1vYmlsZSgpXCI+PC9kaXY+XHJcbjxuYXY+XHJcbiAgPGRpdiBjbGFzcz1cInBvLW1lbnUtbW9iaWxlIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGVNZW51TW9iaWxlKClcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLW1lbnVcIj48L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwby1tZW51XCIgW25nQ2xhc3NdPVwieyAncG8tbWVudS1hbmltYXRpb24nOiBtb2JpbGVPcGVuZWQgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBvLW1lbnUtaGVhZGVyXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJsb2dvIHx8IChzaG9ydExvZ28gJiYgZW5hYmxlQ29sbGFwc2UpXCIgY2xhc3M9XCJwby1tZW51LWhlYWRlci1jb250YWluZXItbG9nb1wiPlxyXG4gICAgICAgIDxwby1sb2dvXHJcbiAgICAgICAgICBbcC1jbGFzc109XCJlbmFibGVDb2xsYXBzZSA/ICdwby1tZW51LXNob3J0LWxvZ28nIDogJ3BvLW1lbnUtbG9nbydcIlxyXG4gICAgICAgICAgW3AtbG9nb109XCJlbmFibGVDb2xsYXBzZSA/IHNob3J0TG9nbyB8fCBsb2dvIDogbG9nb1wiXHJcbiAgICAgICAgICBbcC1sb2dvLWFsdF09XCJsb2dvQWx0XCJcclxuICAgICAgICA+PC9wby1sb2dvPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhZW5hYmxlQ29sbGFwc2UgJiYgbWVudUhlYWRlclRlbXBsYXRlXCIgY2xhc3M9XCJwby1tZW51LWhlYWRlci10ZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SGVhZGVyVGVtcGxhdGUudGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cG8tbWVudS1maWx0ZXJcclxuICAgICAgICAqbmdJZj1cImZpbHRlciAmJiAhZW5hYmxlQ29sbGFwc2VcIlxyXG4gICAgICAgIFtwLWxvYWRpbmddPVwiZmlsdGVyTG9hZGluZ1wiXHJcbiAgICAgICAgKHAtZmlsdGVyKT1cImRlYm91bmNlRmlsdGVyKCRldmVudClcIlxyXG4gICAgICA+PC9wby1tZW51LWZpbHRlcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwby1tZW51LWJvZHlcIj5cclxuICAgICAgPCEtLSBJbm5lciBlIG91dGVyIHBhcmEgZXNjb25kZXIgc2Nyb2xsIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1vdXRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1tZW51LWlubmVyXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJwby1tZW51LWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1pdGVtLWZpcnN0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvLW1lbnUtaWNvbi1jb250YWluZXIgcG8tbWVudS1pdGVtLW5vLWRhdGFcIj5cclxuICAgICAgICAgICAgICAgIDxwby1pY29uIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWluZm8gcG8tbWVudS1pY29uLWl0ZW0gcG8tbGctMlwiPjwvcG8taWNvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMCBwby1tZW51LWljb24tbGFiZWxcIj57eyBsaXRlcmFscy5pdGVtTm90Rm91bmQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtZW51IG9mIGZpbHRlcmVkSXRlbXM7IGxldCBtZW51SW5kZXggPSBpbmRleFwiIGNsYXNzPVwicG8tbWVudS1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPHBvLW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAgIFtjbGFzcy5wby1tZW51LWl0ZW0tZmlyc3RdPVwibWVudUluZGV4ID09PSAwXCJcclxuICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwibWVudS5hY3Rpb25cIlxyXG4gICAgICAgICAgICAgIFtwLWJhZGdlLWFsZXJ0XT1cIm1lbnUuYmFkZ2VBbGVydFwiXHJcbiAgICAgICAgICAgICAgW3AtYmFkZ2UtY29sb3JdPVwibWVudS5iYWRnZSA/IG1lbnUuYmFkZ2UuY29sb3IgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgIFtwLWJhZGdlLXZhbHVlXT1cIm1lbnUuYmFkZ2UgPyBtZW51LmJhZGdlLnZhbHVlIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbcC1jb2xsYXBzZWQtbWVudV09XCJlbmFibGVDb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgW3AtaWNvbl09XCJhbGxvd0ljb25zID8gbWVudS5pY29uIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW3AtaWRdPVwibWVudS5pZFwiXHJcbiAgICAgICAgICAgICAgW3AtbGFiZWxdPVwibWVudS5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgW3AtbGV2ZWxdPVwibWVudS5sZXZlbFwiXHJcbiAgICAgICAgICAgICAgW3AtbGlua109XCJtZW51LmxpbmtcIlxyXG4gICAgICAgICAgICAgIFtwLXNob3J0LWxhYmVsXT1cIm1lbnUuc2hvcnRMYWJlbFwiXHJcbiAgICAgICAgICAgICAgW3Atc3ViLWl0ZW1zXT1cIm1lbnUuc3ViSXRlbXNcIlxyXG4gICAgICAgICAgICAgIFtwLXR5cGVdPVwibWVudS50eXBlXCJcclxuICAgICAgICAgICAgPjwvcG8tbWVudS1pdGVtPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImhhc0Zvb3RlclwiIGNsYXNzPVwicG8tbWVudS1mb290ZXJcIj5cclxuICAgICAgPGEgY2xhc3M9XCJwby1tZW51LWNvbGxhcHNlLWJ1dHRvbi1pY29uIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInBvLWljb25cIlxyXG4gICAgICAgICAgW2NsYXNzLnBvLWljb24tbWVudS1jbG9zZV09XCJlbmFibGVDb2xsYXBzZUJ1dHRvblwiXHJcbiAgICAgICAgICBbY2xhc3MucG8taWNvbi1tZW51LW9wZW5dPVwiZW5hYmxlQ29sbGFwc2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25hdj5cclxuIl19
@@ -43082,9 +43082,9 @@ class PoMenuComponent extends PoMenuBaseComponent {
43082
43082
  this.mobileOpened = false;
43083
43083
  }
43084
43084
  }
43085
- convertToMenuItemFiltered(menuItem = { label: '', link: '' }) {
43086
- const { label, link } = menuItem;
43087
- const menuItemFiltered = { label, link };
43085
+ convertToMenuItemFiltered(menuItem = { label: '', link: '', action: () => { } }) {
43086
+ const { label, link, action } = menuItem;
43087
+ const menuItemFiltered = { label, link, action };
43088
43088
  this.setMenuItemProperties(menuItemFiltered);
43089
43089
  return menuItemFiltered;
43090
43090
  }
@@ -51663,3 +51663,4 @@ function initializeLanguageDefault(config, languageService) {
51663
51663
 
51664
51664
  export { ForceOptionComponentEnum, I18N_CONFIG, InputBoolean, InputRequired, PO_CONTROL_POSITIONS, PoAccordionComponent, PoAccordionItemComponent, PoAccordionModule, PoActiveOverlayModule, PoActiveOverlayService, PoAvatarComponent, PoAvatarModule, PoBreadcrumbComponent, PoBreadcrumbModule, PoButtonComponent, PoButtonGroupComponent, PoButtonGroupModule, PoButtonGroupToggle, PoButtonModule, PoCalendarComponent, PoCalendarMode, PoCalendarModule, PoChartComponent, PoChartModule, PoChartType, PoCheckboxComponent, PoCheckboxGroupComponent, PoCheckboxGroupModule, PoCheckboxModule, PoCheckboxSize, PoCleanComponent, PoCleanModule, PoColorPaletteModule, PoColorPaletteService, PoComboComponent, PoComboFilterMode, PoComboOptionTemplateDirective, PoComponentInjectorModule, PoComponentInjectorService, PoComponentsModule, PoContainerComponent, PoContainerModule, PoControlPositionModule, PoDateService, PoDateTimeModule, PoDatepickerComponent, PoDatepickerIsoFormat, PoDatepickerModule, PoDatepickerRangeComponent, PoDecimalComponent, PoDialogComponent, PoDialogModule, PoDialogService, PoDialogType, PoDirectivesModule, PoDisclaimerComponent, PoDisclaimerGroupComponent, PoDisclaimerGroupModule, PoDisclaimerModule, PoDividerComponent, PoDividerModule, PoDividerSize, PoDropdownComponent, PoDropdownModule, PoDynamicFieldType, PoDynamicFormComponent, PoDynamicModule, PoDynamicViewComponent, PoEmailComponent, PoFieldContainerBottomComponent, PoFieldContainerComponent, PoFieldContainerModule, PoFieldModule, PoGaugeComponent, PoGaugeModule, PoGridComponent, PoGridModule, PoGuardsModule, PoHttpInterceptorModule, PoHttpInterceptorService, PoHttpRequestInterceptorService, PoHttpRequestModule, PoI18nModule, PoI18nPipe, PoI18nService, PoIconComponent, PoIconModule, PoImageComponent, PoImageModule, PoInfoComponent, PoInfoModule, PoInfoOrientation, PoInputComponent, PoInterceptorsModule, PoItemListComponent, PoLabelComponent, PoLabelModule, PoLanguageModule, PoLanguageService, PoLinkComponent, PoLinkModule, PoListBoxComponent, PoListBoxModule, PoListViewComponent, PoListViewContentTemplateDirective, PoListViewDetailTemplateDirective, PoListViewModule, PoLoadingComponent, PoLoadingIconComponent, PoLoadingModule, PoLoadingOverlayComponent, PoLoginComponent, PoLogoComponent, PoLogoModule, PoLookupComponent, PoLookupModalComponent, PoMenuComponent, PoMenuGlobalService, PoMenuHeaderTemplateDirective, PoMenuModule, PoMenuPanelComponent, PoMenuPanelModule, PoModalComponent, PoModalFooterComponent, PoModalModule, PoModule, PoMultiselectComponent, PoMultiselectFilterMode, PoMultiselectOptionTemplateDirective, PoNavbarComponent, PoNavbarModule, PoNotificationModule, PoNotificationService, PoNumberComponent, PoPageDefaultComponent, PoPageDetailComponent, PoPageEditComponent, PoPageListComponent, PoPageModule, PoPageSlideComponent, PoPageSlideModule, PoPasswordComponent, PoPipesModule, PoPopoverComponent, PoPopoverModule, PoPopupComponent, PoPopupModule, PoProgressComponent, PoProgressModule, PoProgressStatus, PoRadioComponent, PoRadioGroupComponent, PoRadioGroupModule, PoRadioModule, PoRichTextComponent, PoSelectComponent, PoServicesModule, PoSlideComponent, PoSlideContentTemplateDirective, PoSlideModule, PoStepComponent, PoStepperComponent, PoStepperModule, PoStepperOrientation, PoStepperStatus, PoSwitchComponent, PoSwitchLabelPosition, PoSwitchModule, PoTabComponent, PoTableCellTemplateDirective, PoTableColumnSortType, PoTableColumnTemplateDirective, PoTableComponent, PoTableModule, PoTableRowTemplateArrowDirection, PoTableRowTemplateDirective, PoTabsComponent, PoTabsModule, PoTagComponent, PoTagModule, PoTagOrientation, PoTagType, PoTextareaComponent, PoTimeModule, PoTimePipe, PoToasterOrientation, PoToasterType, PoToolbarComponent, PoToolbarModule, PoTooltipDirective, PoTooltipModule, PoTreeViewComponent, PoTreeViewModule, PoUploadComponent, PoUploadFile, PoUploadStatus, PoUrlComponent, PoWidgetComponent, PoWidgetModule, initializeLanguageDefault, poDialogAlertLiteralsDefault, poDialogConfirmLiteralsDefault, poLanguageDefault, poLocaleDateSeparatorList, poLocaleDecimalSeparatorList, poLocaleDefault, poLocaleThousandSeparatorList, poLocales, poTabsLiterals, returnPoI18nService };
51665
51665
  //# sourceMappingURL=po-ui-ng-components.mjs.map
51666
+ //# sourceMappingURL=po-ui-ng-components.mjs.map