@smarterplan/ngx-smarterplan-core 1.2.53 → 1.2.55

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.
@@ -316,6 +316,7 @@ export class NavigationBarComponent {
316
316
  zone.parentID === parentZoneForVisit.id);
317
317
  }
318
318
  async goTo() {
319
+ this.viewerService.goToTriggered.next();
319
320
  if (this.selectedZone && !this.selectedZone.virtual) {
320
321
  this.sweepToGo = this.selectedZone.startSweepID
321
322
  ? this.selectedZone.startSweepID
@@ -386,4 +387,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
386
387
  type: ViewChild,
387
388
  args: ['navbarSelectMenu']
388
389
  }] } });
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL25hdmlnYXRpb24tYmFyL25hdmlnYXRpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9uYXZpZ2F0aW9uLWJhci9uYXZpZ2F0aW9uLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFnQnJELE1BQU0sT0FBTyxzQkFBc0I7SUF1Q2pDLFlBRUUsMkJBQWdDLEVBQ3hCLE1BQWMsRUFDZCxZQUEwQixFQUMxQixXQUE0QixFQUM1QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsaUJBQW9DLEVBQ3BDLHFCQUE0QztRQVI1QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNw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LENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUNFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRztZQUN2QixJQUFJLENBQUMsZ0JBQWdCO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGdCQUFnQixFQUNyQjtZQUNBLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztTQUNuQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O29IQXJjVSxzQkFBc0Isa0JBd0N2QixtQ0FBbUM7d0dBeENsQyxzQkFBc0IsZ0xDbkJuQywyOEdBaURNOzRGRDlCTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9COzswQkE0QzNCLE1BQU07MkJBQUMsbUNBQW1DOzhTQXJDZCxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTcGFjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbHMvc3BhY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpc2l0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVscy92aXNpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3BhY2UsIFZpc2l0LCBab25lIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3pvbmVDaGFuZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlVmlzaWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW5hdmlnYXRpb24tYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdmlnYXRpb24tYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ25hdmJhclNlbGVjdE1lbnUnKSBuYXZiYXJTZWxlY3RNZW51ITogYW55O1xyXG5cclxuICBsb2NhdGlvbnM6IFNwYWNlW107XHJcblxyXG4gIGN1cnJlbnRMb2NhdGlvbklEOiBzdHJpbmc7XHJcblxyXG4gIGN1cnJlbnRNb2RlbDNkOiBzdHJpbmc7XHJcblxyXG4gIHNlbGVjdGVkTG9jYXRpb246IFNwYWNlID0gbnVsbDtcclxuXHJcbiAgc2VsZWN0ZWRNb2RlbDNkOiBzdHJpbmc7XHJcblxyXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZFpvbmU6IFpvbmUgPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZENoaWxkWm9uZTogWm9uZSA9IG51bGw7XHJcblxyXG4gIHZpc2l0c1BlclNwYWNlOiBWaXNpdFtdID0gbnVsbDtcclxuXHJcbiAgZmxvb3JzUGVyU3BhY2U6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHpvbmVzUGVyU3BhY2U6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHpvbmVzUGVyRmxvb3I6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIGNoaWxkcmVuWm9uZXM6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHN3ZWVwVG9Hbzogc3RyaW5nO1xyXG5cclxuICBmbG9vclRvR286IFpvbmU7XHJcblxyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgbmF2RXZlbnRzOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXHJcbiAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhc2VWaXNpYmlsaXR5U2VydmljZTogQmFzZVZpc2liaWxpdHlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XHJcbiAgICB0aGlzLnNwYWNlU2VydmljZS5sb2NhdGlvblVwZGF0ZWRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2NzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbnMgPSBsb2NzO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYXRpb24pIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkXHJcbiAgICAgICAgICApOyAvLyBVcGRhdGUgT2JqZWN0IChvYmplY3QgYWRkcmVzcyB3aWxsIGNoYW5nZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMudmlld2VyU2VydmljZS52aWV3ZXJJc09uXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YTogeyBzcGFjZUlEOiBzdHJpbmc7IG1vZGVsM0Q6IHN0cmluZzsgc3dlZXA6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ21lbnUgbmF2aWdhdGlvbiByZWNlaXZlZCB1cGRhdGUnLCBkYXRhKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uSUQgPSBkYXRhLnNwYWNlSUQ7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNkID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgICAgaWYgKCFkYXRhLnNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvY2F0aW9uSWQnKTtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICghdGhpcy5zZWxlY3RlZExvY2F0aW9uIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkICE9PSBkYXRhLnNwYWNlSUQpICYmXHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25zXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gdGhpcy5maW5kTG9jYXRpb25CeUlEKGRhdGEuc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZFVwZGF0ZUxvY2F0aW9uRXZlbnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXZSBsaXN0ZW4gZm9yIExvY2F0aW9uIGNoYW5nZSBldmVudFxyXG4gICAgICovXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubG9jYXRpb25JRENoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uSUQgPSBpZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPSB0aGlzLmZpbmRMb2NhdGlvbkJ5SUQoaWQpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyTG9jYXRpb25JRCA9IGlkO1xyXG4gICAgICAgIHRoaXMub25TZWxlY3RlZExvY2F0aW9uQ2hhbmdlZCgpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lc0ZvclVzZXJDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICh6b25lcykgPT4ge1xyXG4gICAgICAgIGlmICh6b25lcykge1xyXG4gICAgICAgICAgYXdhaXQgd2FpdFVudGlsKCgpID0+IHRoaXMuZmxvb3JzUGVyU3BhY2UgIT09IG51bGwpO1xyXG4gICAgICAgICAgY29uc3QgZmxvb3Jab25lID0gem9uZXMuZmluZChcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lID09PSAnRkxPT1InXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGZsb29yWm9uZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSB0aGlzLmZsb29yc1BlclNwYWNlLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGYpID0+IGYuaWQgPT09IGZsb29yWm9uZS5pZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBFbWl0IGV2ZW50IHRvIGRpc3BhdGNoIHZhbHVlIG9mICB0aGlzLnNlbGVjdGVkRmxvb3IgaW4gYWxsIHBvaS90aWNrZXQvZXF1aXBtZW50L21lYXN1cmUgc2VydmljZXNcclxuICAgICAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5mbG9vckhhc0NoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkRmxvb3IpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRmxvb3JDbGljayhmYWxzZSkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIGF3YWl0IHRoaXMuaW5pdExvY2F0aW9ucygpO1xyXG4gICAgdGhpcy5oYW5kbGVTdGFydFVybCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBDYXB0dXJlIHRoZSBcImlkXCIgaW4gbG9jYWxpc2F0aW9uLzppZCByb3V0ZXNcclxuICBoYW5kbGVTdGFydFVybCgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ2xvY2FsaXNhdGlvbi8nKSkge1xyXG4gICAgICBjb25zdCBwYXRocyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpOyAvLyAvZGFzaGJvYXJkL2xvY2FsaXNhdGlvbi9mYzBhYWRiNy0zYzg5LTQzNDktYWQxZi1iZmU5YjQ0OTE2YzBcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXHJcbiAgICAgIGNvbnN0IGxvY0lEID0gcGF0aHNbM107XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRMb2NhdGlvbklEICE9PSBsb2NJRCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJEYXRhKCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9IGxvY0lEO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRChsb2NJRCk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJMb2NhdGlvbklEID0gbG9jSUQ7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdGVkTG9jYXRpb25DaGFuZ2VkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0TG9jYXRpb25zKCkge1xyXG4gICAgdGhpcy5sb2NhdGlvbnMgPSB0aGlzLnNwYWNlU2VydmljZS5sb2NhdGlvbnNGb3JVc2VyO1xyXG4gICAgaWYgKHRoaXMubG9jYXRpb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmxvY2F0aW9ucyA9IGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLmdldExvY2F0aW9uc0ZvckN1cnJlbnRVc2VyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TG9jYXRpb25JRCAmJiB0aGlzLmxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRCh0aGlzLmN1cnJlbnRMb2NhdGlvbklEKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xyXG4gICAgICAgIHRoaXMuc2VuZFVwZGF0ZUxvY2F0aW9uRXZlbnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZCBhIGxvY2F0aW9uIHdpdGggYSBnaXZlbiBJRFxyXG4gICAqIEBwYXJhbSBpZCBJRCBmb3IgdGhlIGxvY2F0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGxvY2F0aW9uIG9yIG51bGwgaWYgbm8gbG9jYXRpb24gd2VyZSBmb3VuZFxyXG4gICAqL1xyXG4gIGZpbmRMb2NhdGlvbkJ5SUQoaWQ6IHN0cmluZyk6IFNwYWNlIHtcclxuICAgIGNvbnN0IHNwYWNlID0gdGhpcy5sb2NhdGlvbnMuZmluZCgobG9jKSA9PiBsb2MuaWQgPT09IGlkKTtcclxuICAgIHJldHVybiBzcGFjZSB8fCBudWxsOyAvKiogQ29udmVydCB0byBudWxsIGlmIHVuZGVmaW5lZCAqL1xyXG4gIH1cclxuXHJcbiAgY2xlYXJEYXRhKGNsZWFyVmlzaXRzOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5mbG9vcnNQZXJTcGFjZSA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBudWxsO1xyXG4gICAgdGhpcy56b25lc1BlckZsb29yID0gbnVsbDtcclxuICAgIHRoaXMuY2hpbGRyZW5ab25lcyA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkTW9kZWwzZCA9IG51bGw7XHJcbiAgICB0aGlzLnN3ZWVwVG9HbyA9IG51bGw7XHJcbiAgICB0aGlzLmZsb29yVG9HbyA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkWm9uZSA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hpbGRab25lID0gbnVsbDtcclxuICAgIGlmIChjbGVhclZpc2l0cykge1xyXG4gICAgICB0aGlzLnZpc2l0c1BlclNwYWNlID0gbnVsbDtcclxuICAgICAgdGhpcy56b25lc1BlclNwYWNlID0gbnVsbDtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsb2NhdGlvbklkJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmxvb3JJZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3pvbmVJZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NoaWxkWm9uZUlkJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVuIHRoZSBzZWxlY3RlZExvY2F0aW9uIGNoYW5nZXNcclxuICAgKiBTZW5kIGEgZXZlbnQgdG8gbG9jYXRpb25JRENoYW5nZSBmcm9tIE5hdmlnYXRvclNlcnZpY2VcclxuICAgKiBUaGUgZXZlbnQgd2lsbCBiZSBjYXRjaCBieSB0aGlzIGNvbXBvbmVudCBhbmQgdGhlIGZpbHRlciBiYXIgd2lsbCBiZSB1cGRhdGVcclxuICAgKi9cclxuICBzZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpIHtcclxuICAgIGNvbnN0IGxvY2F0aW9uSUQgPSB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPyB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQgOiBudWxsO1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmxvY2F0aW9uSURDaGFuZ2UubmV4dChsb2NhdGlvbklEKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYXRpb24pIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xvY2F0aW9uSWQnLCB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvY2F0aW9uSWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU2VsZWN0ZWRMb2NhdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnZpc2l0c1BlclNwYWNlID0gYXdhaXQgdGhpcy52aXNpdFNlcnZpY2UuZ2V0VmlzaXRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5pZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnpvbmVzUGVyU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLnZpc2l0c1BlclNwYWNlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID0gdGhpcy52aXNpdHNQZXJTcGFjZVswXS5tb2RlbDNkO1xyXG4gICAgICAgIHRoaXMuZmxvb3JzUGVyU3BhY2UgPSB0aGlzLnpvbmVzUGVyU3BhY2UuZmlsdGVyKFxyXG4gICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKCdGTE9PUicpXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBzb3J0IGZyb20gaGlnaGVzdCBmbG9vciB0byBsb3dlc3RcclxuICAgICAgICB0aGlzLmZsb29yc1BlclNwYWNlLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmIChhLm1ldGFkYXRhICYmIGIubWV0YWRhdGEpIHtcclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGFBID0gSlNPTi5wYXJzZShhLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGFCID0gSlNPTi5wYXJzZShiLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICBtZXRhZGF0YUIubWF0dGVycG9ydEZsb29yU2VxdWVuY2UgLVxyXG4gICAgICAgICAgICAgIG1ldGFkYXRhQS5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgbXVsdGlGbG9vclpvbmVzID0gdGhpcy56b25lc1BlclNwYWNlLmZpbHRlcihcclxuICAgICAgICAgICh6b25lKSA9PiB6b25lLmlzTXVsdGlwbGVGbG9vclpvbmVcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHNvcnQgYWxwaGFiZXRpY2FsbHlcclxuICAgICAgICBtdWx0aUZsb29yWm9uZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XHJcbiAgICAgICAgLy8gbWVyZ2UgbXVsdGlGbG9vciBhbmQgRmxvb3JzXHJcbiAgICAgICAgdGhpcy5mbG9vcnNQZXJTcGFjZSA9IFsuLi50aGlzLmZsb29yc1BlclNwYWNlLCAuLi5tdWx0aUZsb29yWm9uZXNdO1xyXG4gICAgICAgIGlmICh0aGlzLmZsb29yc1BlclNwYWNlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgW3RoaXMuc2VsZWN0ZWRGbG9vcl0gPSB0aGlzLmZsb29yc1BlclNwYWNlO1xyXG4gICAgICAgICAgdGhpcy5vbkZsb29yQ2xpY2soZmFsc2UpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBvbkNob3NlbkxvY2F0aW9uJywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Mb2NhdGlvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5jbGVhckRhdGEoKTtcclxuICAgIHRoaXMuc2VuZFVwZGF0ZUxvY2F0aW9uRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uRmxvb3JDbGljayhlbWl0RXZlbnQgPSB0cnVlKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsb29yKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmbG9vcklkJywgdGhpcy5zZWxlY3RlZEZsb29yLmlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmbG9vcklkJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsb29yICYmIHRoaXMuc2VsZWN0ZWRGbG9vci5pc011bHRpcGxlRmxvb3Jab25lKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRab25lID0gdGhpcy5zZWxlY3RlZEZsb29yO1xyXG4gICAgICB0aGlzLm9uWm9uZUNsaWNrKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uWm9uZUNsaWNrKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zd2VlcFRvR28gPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZFpvbmUgPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoaWxkWm9uZSA9IG51bGw7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnem9uZUlkJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2hpbGRab25lSWQnKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KG51bGwpO1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChlbWl0RXZlbnQpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KHRoaXMuc2VsZWN0ZWRGbG9vci5pZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJab25lSUQgPSB0aGlzLnNlbGVjdGVkRmxvb3IuaWQ7XHJcbiAgICBhd2FpdCB3YWl0VW50aWwoXHJcbiAgICAgICgpID0+IHRoaXMuem9uZXNQZXJTcGFjZSAhPT0gbnVsbCAmJiB0aGlzLnpvbmVzUGVyU3BhY2UgIT09IHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICAgIHRoaXMuem9uZXNQZXJGbG9vciA9IHRoaXMuem9uZXNQZXJTcGFjZS5maWx0ZXIoXHJcbiAgICAgICh6b25lKSA9PlxyXG4gICAgICAgIC8vIHpvbmUuaWQgPT09IHRoaXMuc2VsZWN0ZWRGbG9vci5pZCB8fFxyXG4gICAgICAgIHpvbmUucGFyZW50SUQgPT09IHRoaXMuc2VsZWN0ZWRGbG9vci5pZFxyXG4gICAgKTtcclxuICAgIHRoaXMuem9uZXNQZXJGbG9vci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGNvbnN0IENvbGxhdG9yID0gbmV3IEludGwuQ29sbGF0b3IodW5kZWZpbmVkLCB7XHJcbiAgICAgICAgbnVtZXJpYzogdHJ1ZSxcclxuICAgICAgICBzZW5zaXRpdml0eTogJ2FjY2VudCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIENvbGxhdG9yLmNvbXBhcmUoYS5jb2RlX3JlZiwgYi5jb2RlX3JlZikgfHxcclxuICAgICAgICBDb2xsYXRvci5jb21wYXJlKGEubmFtZSwgYi5uYW1lKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblpvbmVDbGljaygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmUgPSBudWxsO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NoaWxkWm9uZUlkJyk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFpvbmUpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3pvbmVJZCcsIHRoaXMuc2VsZWN0ZWRab25lLmlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd6b25lSWQnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZSA9PT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZsb29yID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KG51bGwpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyWm9uZUlEID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZEZsb29yLmlkKTtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IHRoaXMuc2VsZWN0ZWRGbG9vci5pZDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbmRLaW5lc2lzQW5hbHl0aWNzRXZlbnRGb3Jab25lKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRab25lPy5pZCxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWm9uZT8ubmFtZVxyXG4gICAgICApLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGlsZHJlblpvbmVzID0gdGhpcy56b25lc1BlclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUucGFyZW50SUQgPT09IHRoaXMuc2VsZWN0ZWRab25lLmlkXHJcbiAgICApO1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KHRoaXMuc2VsZWN0ZWRab25lLmlkKTtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyWm9uZUlEID0gdGhpcy5zZWxlY3RlZFpvbmUuaWQ7XHJcbiAgICB0aGlzLnNlbmRLaW5lc2lzQW5hbHl0aWNzRXZlbnRGb3Jab25lKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9uZT8uaWQsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRab25lPy5uYW1lXHJcbiAgICApLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICB9XHJcblxyXG4gIG9uQ2hpbGRab25lQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENoaWxkWm9uZSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2hpbGRab25lSWQnLCB0aGlzLnNlbGVjdGVkQ2hpbGRab25lPy5pZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2hpbGRab25lSWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHNlbmRLaW5lc2lzQW5hbHl0aWNzRXZlbnRGb3Jab25lKFxyXG4gICAgem9uZUlkOiBzdHJpbmcsXHJcbiAgICB6b25lTmFtZTogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgJiYgISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xyXG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiAnWm9uZSBDaGFuZ2UnLFxyXG4gICAgICAgICAgICB6b25lSWQ6IHpvbmVJZCxcclxuICAgICAgICAgICAgem9uZU5hbWU6IHpvbmVOYW1lLFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLnNlbGVjdGVkTG9jYXRpb24/LmlkLFxyXG4gICAgICAgICAgICBsb2NhdGlvbk5hbWU6IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbj8ubmFtZSxcclxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZT8uY3UsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcclxuICAgICAgICAgICAgY2hpbGRab25lSWQ6IHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmU/LmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcclxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgICdBV1NLaW5lc2lzJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25WaXNpdENsaWNrKGV2ZW50KSB7XHJcbiAgICB0aGlzLmNsZWFyRGF0YShmYWxzZSk7XHJcbiAgICBjb25zdCBpbmRleCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHZpc2l0ID0gdGhpcy52aXNpdHNQZXJTcGFjZVtpbmRleF07XHJcbiAgICB0aGlzLnNlbGVjdGVkTW9kZWwzZCA9IHZpc2l0Lm1vZGVsM2Q7XHJcbiAgICBjb25zdCBwYXJlbnRab25lRm9yVmlzaXQgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXREZWZhdWx0Wm9uZUZvclZpc2l0KFxyXG4gICAgICB2aXNpdFxyXG4gICAgKTtcclxuICAgIHRoaXMuZmxvb3JzUGVyU3BhY2UgPSB0aGlzLnpvbmVzUGVyU3BhY2UuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT5cclxuICAgICAgICB6b25lLmxheWVyICYmXHJcbiAgICAgICAgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKCdGTE9PUicpICYmXHJcbiAgICAgICAgem9uZS5wYXJlbnRJRCA9PT0gcGFyZW50Wm9uZUZvclZpc2l0LmlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ29UbygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZSAmJiAhdGhpcy5zZWxlY3RlZFpvbmUudmlydHVhbCkge1xyXG4gICAgICB0aGlzLnN3ZWVwVG9HbyA9IHRoaXMuc2VsZWN0ZWRab25lLnN0YXJ0U3dlZXBJRFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFpvbmUuc3RhcnRTd2VlcElEXHJcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkWm9uZS5zd2VlcElEc1swXTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgJiYgIXRoaXMuc2VsZWN0ZWRab25lKSB7XHJcbiAgICAgIHRoaXMuZmxvb3JUb0dvID0gdGhpcy5zZWxlY3RlZEZsb29yO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNXaXRoaW5TYW1lVmlzaXQoKSkge1xyXG4gICAgICB0aGlzLmdvVG9Td2VlcE9yRmxvb3IoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnN3ZWVwVG9Hbykge1xyXG4gICAgICAgIHRoaXMudmlld2VyU2VydmljZS5zZXRTd2VlcFRvTW92ZSh0aGlzLnN3ZWVwVG9Hbyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmxvb3JUb0dvICYmIHRoaXMuZmxvb3JzUGVyU3BhY2UubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZsb29yVG9HbyA9IHRoaXMuZmxvb3JUb0dvO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyXHJcbiAgICAgICAgLm5hdmlnYXRlKFsndmlzaXQnLCB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWRdLCB7XHJcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyBtb2RlbDNEOiB0aGlzLnNlbGVjdGVkTW9kZWwzZCB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzV2l0aGluU2FtZVZpc2l0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9PT0gdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID09PSB0aGlzLmN1cnJlbnRNb2RlbDNkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N3ZWVwT3JGbG9vcigpIHtcclxuICAgIGlmICh0aGlzLnN3ZWVwVG9Hbykge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHRoaXMuc3dlZXBUb0dvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuZ29Ub0Zsb29yKHRoaXMuZmxvb3JUb0dvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGhhc0hpc3RvcnkoKTogYm9vbGVhbiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLm5hdmlnYXRvclNlcnZpY2UubW9kZWxIYXNIaXN0b3J5KHRoaXMuc2VsZWN0ZWRNb2RlbDNkKTtcclxuICAvLyB9XHJcblxyXG4gIGNhbkdvKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgdmlld2VySXNSZWFkeSA9XHJcbiAgICAgIHRoaXMudmlld2VyU2VydmljZS5pc0xvYWRlZCAmJiB0aGlzLnZpZXdlclNlcnZpY2Uuc2hvd2luZ1ZpZXdlcjtcclxuICAgIGNvbnN0IG5vVmlld2VyID0gIXRoaXMudmlld2VyU2VydmljZS5zaG93aW5nVmlld2VyO1xyXG4gICAgcmV0dXJuIHZpZXdlcklzUmVhZHkgfHwgbm9WaWV3ZXI7XHJcbiAgfVxyXG5cclxuICBzaG93TG9jYXRpb24oKTogc3RyaW5nIHtcclxuICAgIGlmIChcclxuICAgICAgd2luZG93LmlubmVyV2lkdGggPCA3NTAgJiZcclxuICAgICAgdGhpcy5uYXZiYXJTZWxlY3RNZW51ICYmXHJcbiAgICAgIHRoaXMubmF2YmFyU2VsZWN0TWVudS5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5zZWFyY2goJ3Nob3cnKSA9PT0gLTEgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5uYW1lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgb25IaWRlQ2xpY2soKSB7XHJcbiAgICB0aGlzLmJhc2VWaXNpYmlsaXR5U2VydmljZS5pc0NoYW5nZVBvc2l0aW9uVmlzaWJsZS5uZXh0KGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPG5hdiBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLW1kIG5hdmJhci1kYXJrIG5hdmJhci1pbnZlcnNlIHNlY29uZC1uYXZcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggdy0xMDBcIj5cclxuICAgICAgICA8ZGl2ICNuYXZiYXJTZWxlY3RNZW51IGNsYXNzPVwidy0xMDBcIiBpZD1cIm5hdi1pdGVtLWNvbnRhaW5lci1ibHVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgcC0xIG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIGxvY2F0aW9uIHNlbGVjdC1tZW51XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZExvY2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkxvY2F0aW9uQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPnt7ICdMb2NhdGlvbicgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb2Mgb2YgbG9jYXRpb25zOyBpbmRleCBhcyBpbmRleFwiIFtuZ1ZhbHVlXT1cImxvY1wiPiB7eyBsb2MubmFtZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZsZXgtZmlsbCBzZWxlY3QtbWVudVwiIChjaGFuZ2UpPVwib25WaXNpdENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlzaXRzUGVyU3BhY2UgJiYgdmlzaXRzUGVyU3BhY2UubGVuZ3RoID4gMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCIgc2VsZWN0ZWQgZGlzYWJsZWQgaGlkZGVuPnt7J1Zpc2l0JyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmlzaXQgb2YgdmlzaXRzUGVyU3BhY2U7IGluZGV4IGFzIGluZGV4XCIgdmFsdWU9XCJ7e2luZGV4fX1cIj57eyB2aXNpdC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGwgZmxvb3Igc2VsZWN0LW1lbnVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRmxvb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmxvb3JDbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgc2VsZWN0ZWQ+e3snRmxvb3InIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmbG9vciBvZiBmbG9vcnNQZXJTcGFjZVwiIFtuZ1ZhbHVlXT1cImZsb29yXCI+e3sgZmxvb3IubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIHNlbGVjdC1tZW51IHpvbmVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkWm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25ab25lQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPnt7J1pvbmUnIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVzUGVyRmxvb3JcIiBbbmdWYWx1ZV09XCJ6b25lXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiem9uZS5jb2RlX3JlZlwiPnt7em9uZS5jb2RlX3JlZn19Xzwvc3Bhbj57e3pvbmUubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIHNlbGVjdC1tZW51XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENoaWxkWm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZHJlblpvbmVzICYmIGNoaWxkcmVuWm9uZXMubGVuZ3RoPjBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoaWxkWm9uZUNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZCBkaXNhYmxlZD57eydab25lJyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgem9uZSBvZiBjaGlsZHJlblpvbmVzXCIgW25nVmFsdWVdPVwiem9uZVwiPnt7IHpvbmUubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGkxOG4+e3snRmF2b3JpdGVzJyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1sLTAgcC0xXCIgKm5nSWY9XCJzaG93TG9jYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmdy1ib2xkIGxoLWJhc2UgYWxpZ24tbWlkZGxlIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc2hvd0xvY2F0aW9uKCkgfX1cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWwtMCBwLTFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgdy0yNSBteC0yIHctbWQtZml0LWNvbnRlbnQgaC1tZC1maXQtY29udGVudCBhbGlnbi1zZWxmLW1kLWNlbnRlciBidG4tM2RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRMb2NhdGlvbiB8fCAhc2VsZWN0ZWRNb2RlbDNkIHx8ICFjYW5HbygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWdvLXRvLTNkIGQtaW5saW5lLWJsb2NrXCI+PC9pPiB7eyczRCB2aXNpdCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmF2PiJdfQ==
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL25hdmlnYXRpb24tYmFyL25hdmlnYXRpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9uYXZpZ2F0aW9uLWJhci9uYXZpZ2F0aW9uLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFnQnJELE1BQU0sT0FBTyxzQkFBc0I7SUF1Q2pDLFlBRUUsMkJBQWdDLEVBQ3hCLE1BQWMsRUFDZCxZQUEwQixFQUMxQixXQUE0QixFQUM1QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsaUJBQW9DLEVBQ3BDLHFCQUE0QztRQVI1QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNw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LENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUNuRCxPQUFPLGFBQWEsSUFBSSxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUNFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRztZQUN2QixJQUFJLENBQUMsZ0JBQWdCO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGdCQUFnQixFQUNyQjtZQUNBLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztTQUNuQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O29IQXRjVSxzQkFBc0Isa0JBd0N2QixtQ0FBbUM7d0dBeENsQyxzQkFBc0IsZ0xDbkJuQywyOEdBaURNOzRGRDlCTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9COzswQkE0QzNCLE1BQU07MkJBQUMsbUNBQW1DOzhTQXJDZCxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTcGFjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbHMvc3BhY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpc2l0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVscy92aXNpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3BhY2UsIFZpc2l0LCBab25lIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3pvbmVDaGFuZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlVmlzaWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW5hdmlnYXRpb24tYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdmlnYXRpb24tYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ25hdmJhclNlbGVjdE1lbnUnKSBuYXZiYXJTZWxlY3RNZW51ITogYW55O1xyXG5cclxuICBsb2NhdGlvbnM6IFNwYWNlW107XHJcblxyXG4gIGN1cnJlbnRMb2NhdGlvbklEOiBzdHJpbmc7XHJcblxyXG4gIGN1cnJlbnRNb2RlbDNkOiBzdHJpbmc7XHJcblxyXG4gIHNlbGVjdGVkTG9jYXRpb246IFNwYWNlID0gbnVsbDtcclxuXHJcbiAgc2VsZWN0ZWRNb2RlbDNkOiBzdHJpbmc7XHJcblxyXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZFpvbmU6IFpvbmUgPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZENoaWxkWm9uZTogWm9uZSA9IG51bGw7XHJcblxyXG4gIHZpc2l0c1BlclNwYWNlOiBWaXNpdFtdID0gbnVsbDtcclxuXHJcbiAgZmxvb3JzUGVyU3BhY2U6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHpvbmVzUGVyU3BhY2U6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHpvbmVzUGVyRmxvb3I6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIGNoaWxkcmVuWm9uZXM6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHN3ZWVwVG9Hbzogc3RyaW5nO1xyXG5cclxuICBmbG9vclRvR286IFpvbmU7XHJcblxyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgbmF2RXZlbnRzOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXHJcbiAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhc2VWaXNpYmlsaXR5U2VydmljZTogQmFzZVZpc2liaWxpdHlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XHJcbiAgICB0aGlzLnNwYWNlU2VydmljZS5sb2NhdGlvblVwZGF0ZWRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2NzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbnMgPSBsb2NzO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYXRpb24pIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkXHJcbiAgICAgICAgICApOyAvLyBVcGRhdGUgT2JqZWN0IChvYmplY3QgYWRkcmVzcyB3aWxsIGNoYW5nZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMudmlld2VyU2VydmljZS52aWV3ZXJJc09uXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YTogeyBzcGFjZUlEOiBzdHJpbmc7IG1vZGVsM0Q6IHN0cmluZzsgc3dlZXA6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ21lbnUgbmF2aWdhdGlvbiByZWNlaXZlZCB1cGRhdGUnLCBkYXRhKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uSUQgPSBkYXRhLnNwYWNlSUQ7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNkID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgICAgaWYgKCFkYXRhLnNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvY2F0aW9uSWQnKTtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICghdGhpcy5zZWxlY3RlZExvY2F0aW9uIHx8XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkICE9PSBkYXRhLnNwYWNlSUQpICYmXHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25zXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gdGhpcy5maW5kTG9jYXRpb25CeUlEKGRhdGEuc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZFVwZGF0ZUxvY2F0aW9uRXZlbnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXZSBsaXN0ZW4gZm9yIExvY2F0aW9uIGNoYW5nZSBldmVudFxyXG4gICAgICovXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubG9jYXRpb25JRENoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uSUQgPSBpZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPSB0aGlzLmZpbmRMb2NhdGlvbkJ5SUQoaWQpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyTG9jYXRpb25JRCA9IGlkO1xyXG4gICAgICAgIHRoaXMub25TZWxlY3RlZExvY2F0aW9uQ2hhbmdlZCgpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lc0ZvclVzZXJDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICh6b25lcykgPT4ge1xyXG4gICAgICAgIGlmICh6b25lcykge1xyXG4gICAgICAgICAgYXdhaXQgd2FpdFVudGlsKCgpID0+IHRoaXMuZmxvb3JzUGVyU3BhY2UgIT09IG51bGwpO1xyXG4gICAgICAgICAgY29uc3QgZmxvb3Jab25lID0gem9uZXMuZmluZChcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lID09PSAnRkxPT1InXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGZsb29yWm9uZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSB0aGlzLmZsb29yc1BlclNwYWNlLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGYpID0+IGYuaWQgPT09IGZsb29yWm9uZS5pZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBFbWl0IGV2ZW50IHRvIGRpc3BhdGNoIHZhbHVlIG9mICB0aGlzLnNlbGVjdGVkRmxvb3IgaW4gYWxsIHBvaS90aWNrZXQvZXF1aXBtZW50L21lYXN1cmUgc2VydmljZXNcclxuICAgICAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5mbG9vckhhc0NoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkRmxvb3IpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRmxvb3JDbGljayhmYWxzZSkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIGF3YWl0IHRoaXMuaW5pdExvY2F0aW9ucygpO1xyXG4gICAgdGhpcy5oYW5kbGVTdGFydFVybCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBDYXB0dXJlIHRoZSBcImlkXCIgaW4gbG9jYWxpc2F0aW9uLzppZCByb3V0ZXNcclxuICBoYW5kbGVTdGFydFVybCgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ2xvY2FsaXNhdGlvbi8nKSkge1xyXG4gICAgICBjb25zdCBwYXRocyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpOyAvLyAvZGFzaGJvYXJkL2xvY2FsaXNhdGlvbi9mYzBhYWRiNy0zYzg5LTQzNDktYWQxZi1iZmU5YjQ0OTE2YzBcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXHJcbiAgICAgIGNvbnN0IGxvY0lEID0gcGF0aHNbM107XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRMb2NhdGlvbklEICE9PSBsb2NJRCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJEYXRhKCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9IGxvY0lEO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRChsb2NJRCk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJMb2NhdGlvbklEID0gbG9jSUQ7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdGVkTG9jYXRpb25DaGFuZ2VkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0TG9jYXRpb25zKCkge1xyXG4gICAgdGhpcy5sb2NhdGlvbnMgPSB0aGlzLnNwYWNlU2VydmljZS5sb2NhdGlvbnNGb3JVc2VyO1xyXG4gICAgaWYgKHRoaXMubG9jYXRpb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmxvY2F0aW9ucyA9IGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLmdldExvY2F0aW9uc0ZvckN1cnJlbnRVc2VyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TG9jYXRpb25JRCAmJiB0aGlzLmxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRCh0aGlzLmN1cnJlbnRMb2NhdGlvbklEKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xyXG4gICAgICAgIHRoaXMuc2VuZFVwZGF0ZUxvY2F0aW9uRXZlbnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZCBhIGxvY2F0aW9uIHdpdGggYSBnaXZlbiBJRFxyXG4gICAqIEBwYXJhbSBpZCBJRCBmb3IgdGhlIGxvY2F0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGxvY2F0aW9uIG9yIG51bGwgaWYgbm8gbG9jYXRpb24gd2VyZSBmb3VuZFxyXG4gICAqL1xyXG4gIGZpbmRMb2NhdGlvbkJ5SUQoaWQ6IHN0cmluZyk6IFNwYWNlIHtcclxuICAgIGNvbnN0IHNwYWNlID0gdGhpcy5sb2NhdGlvbnMuZmluZCgobG9jKSA9PiBsb2MuaWQgPT09IGlkKTtcclxuICAgIHJldHVybiBzcGFjZSB8fCBudWxsOyAvKiogQ29udmVydCB0byBudWxsIGlmIHVuZGVmaW5lZCAqL1xyXG4gIH1cclxuXHJcbiAgY2xlYXJEYXRhKGNsZWFyVmlzaXRzOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5mbG9vcnNQZXJTcGFjZSA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBudWxsO1xyXG4gICAgdGhpcy56b25lc1BlckZsb29yID0gbnVsbDtcclxuICAgIHRoaXMuY2hpbGRyZW5ab25lcyA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkTW9kZWwzZCA9IG51bGw7XHJcbiAgICB0aGlzLnN3ZWVwVG9HbyA9IG51bGw7XHJcbiAgICB0aGlzLmZsb29yVG9HbyA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkWm9uZSA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hpbGRab25lID0gbnVsbDtcclxuICAgIGlmIChjbGVhclZpc2l0cykge1xyXG4gICAgICB0aGlzLnZpc2l0c1BlclNwYWNlID0gbnVsbDtcclxuICAgICAgdGhpcy56b25lc1BlclNwYWNlID0gbnVsbDtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsb2NhdGlvbklkJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmxvb3JJZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3pvbmVJZCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NoaWxkWm9uZUlkJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVuIHRoZSBzZWxlY3RlZExvY2F0aW9uIGNoYW5nZXNcclxuICAgKiBTZW5kIGEgZXZlbnQgdG8gbG9jYXRpb25JRENoYW5nZSBmcm9tIE5hdmlnYXRvclNlcnZpY2VcclxuICAgKiBUaGUgZXZlbnQgd2lsbCBiZSBjYXRjaCBieSB0aGlzIGNvbXBvbmVudCBhbmQgdGhlIGZpbHRlciBiYXIgd2lsbCBiZSB1cGRhdGVcclxuICAgKi9cclxuICBzZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpIHtcclxuICAgIGNvbnN0IGxvY2F0aW9uSUQgPSB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPyB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQgOiBudWxsO1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmxvY2F0aW9uSURDaGFuZ2UubmV4dChsb2NhdGlvbklEKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYXRpb24pIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xvY2F0aW9uSWQnLCB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvY2F0aW9uSWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU2VsZWN0ZWRMb2NhdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnZpc2l0c1BlclNwYWNlID0gYXdhaXQgdGhpcy52aXNpdFNlcnZpY2UuZ2V0VmlzaXRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5pZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnpvbmVzUGVyU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLnZpc2l0c1BlclNwYWNlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID0gdGhpcy52aXNpdHNQZXJTcGFjZVswXS5tb2RlbDNkO1xyXG4gICAgICAgIHRoaXMuZmxvb3JzUGVyU3BhY2UgPSB0aGlzLnpvbmVzUGVyU3BhY2UuZmlsdGVyKFxyXG4gICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKCdGTE9PUicpXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBzb3J0IGZyb20gaGlnaGVzdCBmbG9vciB0byBsb3dlc3RcclxuICAgICAgICB0aGlzLmZsb29yc1BlclNwYWNlLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmIChhLm1ldGFkYXRhICYmIGIubWV0YWRhdGEpIHtcclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGFBID0gSlNPTi5wYXJzZShhLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGFCID0gSlNPTi5wYXJzZShiLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICBtZXRhZGF0YUIubWF0dGVycG9ydEZsb29yU2VxdWVuY2UgLVxyXG4gICAgICAgICAgICAgIG1ldGFkYXRhQS5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgbXVsdGlGbG9vclpvbmVzID0gdGhpcy56b25lc1BlclNwYWNlLmZpbHRlcihcclxuICAgICAgICAgICh6b25lKSA9PiB6b25lLmlzTXVsdGlwbGVGbG9vclpvbmVcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHNvcnQgYWxwaGFiZXRpY2FsbHlcclxuICAgICAgICBtdWx0aUZsb29yWm9uZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XHJcbiAgICAgICAgLy8gbWVyZ2UgbXVsdGlGbG9vciBhbmQgRmxvb3JzXHJcbiAgICAgICAgdGhpcy5mbG9vcnNQZXJTcGFjZSA9IFsuLi50aGlzLmZsb29yc1BlclNwYWNlLCAuLi5tdWx0aUZsb29yWm9uZXNdO1xyXG4gICAgICAgIGlmICh0aGlzLmZsb29yc1BlclNwYWNlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgW3RoaXMuc2VsZWN0ZWRGbG9vcl0gPSB0aGlzLmZsb29yc1BlclNwYWNlO1xyXG4gICAgICAgICAgdGhpcy5vbkZsb29yQ2xpY2soZmFsc2UpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBvbkNob3NlbkxvY2F0aW9uJywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Mb2NhdGlvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5jbGVhckRhdGEoKTtcclxuICAgIHRoaXMuc2VuZFVwZGF0ZUxvY2F0aW9uRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uRmxvb3JDbGljayhlbWl0RXZlbnQgPSB0cnVlKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsb29yKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmbG9vcklkJywgdGhpcy5zZWxlY3RlZEZsb29yLmlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmbG9vcklkJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsb29yICYmIHRoaXMuc2VsZWN0ZWRGbG9vci5pc011bHRpcGxlRmxvb3Jab25lKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRab25lID0gdGhpcy5zZWxlY3RlZEZsb29yO1xyXG4gICAgICB0aGlzLm9uWm9uZUNsaWNrKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uWm9uZUNsaWNrKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zd2VlcFRvR28gPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZFpvbmUgPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoaWxkWm9uZSA9IG51bGw7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnem9uZUlkJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2hpbGRab25lSWQnKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KG51bGwpO1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChlbWl0RXZlbnQpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KHRoaXMuc2VsZWN0ZWRGbG9vci5pZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJab25lSUQgPSB0aGlzLnNlbGVjdGVkRmxvb3IuaWQ7XHJcbiAgICBhd2FpdCB3YWl0VW50aWwoXHJcbiAgICAgICgpID0+IHRoaXMuem9uZXNQZXJTcGFjZSAhPT0gbnVsbCAmJiB0aGlzLnpvbmVzUGVyU3BhY2UgIT09IHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICAgIHRoaXMuem9uZXNQZXJGbG9vciA9IHRoaXMuem9uZXNQZXJTcGFjZS5maWx0ZXIoXHJcbiAgICAgICh6b25lKSA9PlxyXG4gICAgICAgIC8vIHpvbmUuaWQgPT09IHRoaXMuc2VsZWN0ZWRGbG9vci5pZCB8fFxyXG4gICAgICAgIHpvbmUucGFyZW50SUQgPT09IHRoaXMuc2VsZWN0ZWRGbG9vci5pZFxyXG4gICAgKTtcclxuICAgIHRoaXMuem9uZXNQZXJGbG9vci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGNvbnN0IENvbGxhdG9yID0gbmV3IEludGwuQ29sbGF0b3IodW5kZWZpbmVkLCB7XHJcbiAgICAgICAgbnVtZXJpYzogdHJ1ZSxcclxuICAgICAgICBzZW5zaXRpdml0eTogJ2FjY2VudCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIENvbGxhdG9yLmNvbXBhcmUoYS5jb2RlX3JlZiwgYi5jb2RlX3JlZikgfHxcclxuICAgICAgICBDb2xsYXRvci5jb21wYXJlKGEubmFtZSwgYi5uYW1lKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblpvbmVDbGljaygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmUgPSBudWxsO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NoaWxkWm9uZUlkJyk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFpvbmUpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3pvbmVJZCcsIHRoaXMuc2VsZWN0ZWRab25lLmlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd6b25lSWQnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZSA9PT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZsb29yID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KG51bGwpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyWm9uZUlEID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZEZsb29yLmlkKTtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IHRoaXMuc2VsZWN0ZWRGbG9vci5pZDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbmRLaW5lc2lzQW5hbHl0aWNzRXZlbnRGb3Jab25lKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRab25lPy5pZCxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWm9uZT8ubmFtZVxyXG4gICAgICApLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGlsZHJlblpvbmVzID0gdGhpcy56b25lc1BlclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUucGFyZW50SUQgPT09IHRoaXMuc2VsZWN0ZWRab25lLmlkXHJcbiAgICApO1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KHRoaXMuc2VsZWN0ZWRab25lLmlkKTtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyWm9uZUlEID0gdGhpcy5zZWxlY3RlZFpvbmUuaWQ7XHJcbiAgICB0aGlzLnNlbmRLaW5lc2lzQW5hbHl0aWNzRXZlbnRGb3Jab25lKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9uZT8uaWQsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRab25lPy5uYW1lXHJcbiAgICApLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICB9XHJcblxyXG4gIG9uQ2hpbGRab25lQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENoaWxkWm9uZSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2hpbGRab25lSWQnLCB0aGlzLnNlbGVjdGVkQ2hpbGRab25lPy5pZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2hpbGRab25lSWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHNlbmRLaW5lc2lzQW5hbHl0aWNzRXZlbnRGb3Jab25lKFxyXG4gICAgem9uZUlkOiBzdHJpbmcsXHJcbiAgICB6b25lTmFtZTogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgJiYgISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xyXG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiAnWm9uZSBDaGFuZ2UnLFxyXG4gICAgICAgICAgICB6b25lSWQ6IHpvbmVJZCxcclxuICAgICAgICAgICAgem9uZU5hbWU6IHpvbmVOYW1lLFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLnNlbGVjdGVkTG9jYXRpb24/LmlkLFxyXG4gICAgICAgICAgICBsb2NhdGlvbk5hbWU6IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbj8ubmFtZSxcclxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZT8uY3UsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcclxuICAgICAgICAgICAgY2hpbGRab25lSWQ6IHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmU/LmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcclxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgICdBV1NLaW5lc2lzJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25WaXNpdENsaWNrKGV2ZW50KSB7XHJcbiAgICB0aGlzLmNsZWFyRGF0YShmYWxzZSk7XHJcbiAgICBjb25zdCBpbmRleCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHZpc2l0ID0gdGhpcy52aXNpdHNQZXJTcGFjZVtpbmRleF07XHJcbiAgICB0aGlzLnNlbGVjdGVkTW9kZWwzZCA9IHZpc2l0Lm1vZGVsM2Q7XHJcbiAgICBjb25zdCBwYXJlbnRab25lRm9yVmlzaXQgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXREZWZhdWx0Wm9uZUZvclZpc2l0KFxyXG4gICAgICB2aXNpdFxyXG4gICAgKTtcclxuICAgIHRoaXMuZmxvb3JzUGVyU3BhY2UgPSB0aGlzLnpvbmVzUGVyU3BhY2UuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT5cclxuICAgICAgICB6b25lLmxheWVyICYmXHJcbiAgICAgICAgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKCdGTE9PUicpICYmXHJcbiAgICAgICAgem9uZS5wYXJlbnRJRCA9PT0gcGFyZW50Wm9uZUZvclZpc2l0LmlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ29UbygpIHtcclxuICAgIHRoaXMudmlld2VyU2VydmljZS5nb1RvVHJpZ2dlcmVkLm5leHQoKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZSAmJiAhdGhpcy5zZWxlY3RlZFpvbmUudmlydHVhbCkge1xyXG4gICAgICB0aGlzLnN3ZWVwVG9HbyA9IHRoaXMuc2VsZWN0ZWRab25lLnN0YXJ0U3dlZXBJRFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFpvbmUuc3RhcnRTd2VlcElEXHJcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkWm9uZS5zd2VlcElEc1swXTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgJiYgIXRoaXMuc2VsZWN0ZWRab25lKSB7XHJcbiAgICAgIHRoaXMuZmxvb3JUb0dvID0gdGhpcy5zZWxlY3RlZEZsb29yO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNXaXRoaW5TYW1lVmlzaXQoKSkge1xyXG4gICAgICB0aGlzLmdvVG9Td2VlcE9yRmxvb3IoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnN3ZWVwVG9Hbykge1xyXG4gICAgICAgIHRoaXMudmlld2VyU2VydmljZS5zZXRTd2VlcFRvTW92ZSh0aGlzLnN3ZWVwVG9Hbyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmxvb3JUb0dvICYmIHRoaXMuZmxvb3JzUGVyU3BhY2UubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmZsb29yVG9HbyA9IHRoaXMuZmxvb3JUb0dvO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyXHJcbiAgICAgICAgLm5hdmlnYXRlKFsndmlzaXQnLCB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWRdLCB7XHJcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyBtb2RlbDNEOiB0aGlzLnNlbGVjdGVkTW9kZWwzZCB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzV2l0aGluU2FtZVZpc2l0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9PT0gdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID09PSB0aGlzLmN1cnJlbnRNb2RlbDNkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N3ZWVwT3JGbG9vcigpIHtcclxuICAgIGlmICh0aGlzLnN3ZWVwVG9Hbykge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHRoaXMuc3dlZXBUb0dvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuZ29Ub0Zsb29yKHRoaXMuZmxvb3JUb0dvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGhhc0hpc3RvcnkoKTogYm9vbGVhbiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLm5hdmlnYXRvclNlcnZpY2UubW9kZWxIYXNIaXN0b3J5KHRoaXMuc2VsZWN0ZWRNb2RlbDNkKTtcclxuICAvLyB9XHJcblxyXG4gIGNhbkdvKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgdmlld2VySXNSZWFkeSA9XHJcbiAgICAgIHRoaXMudmlld2VyU2VydmljZS5pc0xvYWRlZCAmJiB0aGlzLnZpZXdlclNlcnZpY2Uuc2hvd2luZ1ZpZXdlcjtcclxuICAgIGNvbnN0IG5vVmlld2VyID0gIXRoaXMudmlld2VyU2VydmljZS5zaG93aW5nVmlld2VyO1xyXG4gICAgcmV0dXJuIHZpZXdlcklzUmVhZHkgfHwgbm9WaWV3ZXI7XHJcbiAgfVxyXG5cclxuICBzaG93TG9jYXRpb24oKTogc3RyaW5nIHtcclxuICAgIGlmIChcclxuICAgICAgd2luZG93LmlubmVyV2lkdGggPCA3NTAgJiZcclxuICAgICAgdGhpcy5uYXZiYXJTZWxlY3RNZW51ICYmXHJcbiAgICAgIHRoaXMubmF2YmFyU2VsZWN0TWVudS5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5zZWFyY2goJ3Nob3cnKSA9PT0gLTEgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5uYW1lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgb25IaWRlQ2xpY2soKSB7XHJcbiAgICB0aGlzLmJhc2VWaXNpYmlsaXR5U2VydmljZS5pc0NoYW5nZVBvc2l0aW9uVmlzaWJsZS5uZXh0KGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPG5hdiBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLW1kIG5hdmJhci1kYXJrIG5hdmJhci1pbnZlcnNlIHNlY29uZC1uYXZcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggdy0xMDBcIj5cclxuICAgICAgICA8ZGl2ICNuYXZiYXJTZWxlY3RNZW51IGNsYXNzPVwidy0xMDBcIiBpZD1cIm5hdi1pdGVtLWNvbnRhaW5lci1ibHVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgcC0xIG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIGxvY2F0aW9uIHNlbGVjdC1tZW51XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZExvY2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkxvY2F0aW9uQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPnt7ICdMb2NhdGlvbicgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb2Mgb2YgbG9jYXRpb25zOyBpbmRleCBhcyBpbmRleFwiIFtuZ1ZhbHVlXT1cImxvY1wiPiB7eyBsb2MubmFtZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZsZXgtZmlsbCBzZWxlY3QtbWVudVwiIChjaGFuZ2UpPVwib25WaXNpdENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlzaXRzUGVyU3BhY2UgJiYgdmlzaXRzUGVyU3BhY2UubGVuZ3RoID4gMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCIgc2VsZWN0ZWQgZGlzYWJsZWQgaGlkZGVuPnt7J1Zpc2l0JyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmlzaXQgb2YgdmlzaXRzUGVyU3BhY2U7IGluZGV4IGFzIGluZGV4XCIgdmFsdWU9XCJ7e2luZGV4fX1cIj57eyB2aXNpdC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGwgZmxvb3Igc2VsZWN0LW1lbnVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRmxvb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmxvb3JDbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgc2VsZWN0ZWQ+e3snRmxvb3InIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmbG9vciBvZiBmbG9vcnNQZXJTcGFjZVwiIFtuZ1ZhbHVlXT1cImZsb29yXCI+e3sgZmxvb3IubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIHNlbGVjdC1tZW51IHpvbmVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkWm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25ab25lQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPnt7J1pvbmUnIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVzUGVyRmxvb3JcIiBbbmdWYWx1ZV09XCJ6b25lXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiem9uZS5jb2RlX3JlZlwiPnt7em9uZS5jb2RlX3JlZn19Xzwvc3Bhbj57e3pvbmUubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIHNlbGVjdC1tZW51XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENoaWxkWm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZHJlblpvbmVzICYmIGNoaWxkcmVuWm9uZXMubGVuZ3RoPjBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoaWxkWm9uZUNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZCBkaXNhYmxlZD57eydab25lJyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgem9uZSBvZiBjaGlsZHJlblpvbmVzXCIgW25nVmFsdWVdPVwiem9uZVwiPnt7IHpvbmUubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGkxOG4+e3snRmF2b3JpdGVzJyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1sLTAgcC0xXCIgKm5nSWY9XCJzaG93TG9jYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmdy1ib2xkIGxoLWJhc2UgYWxpZ24tbWlkZGxlIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc2hvd0xvY2F0aW9uKCkgfX1cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWwtMCBwLTFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgdy0yNSBteC0yIHctbWQtZml0LWNvbnRlbnQgaC1tZC1maXQtY29udGVudCBhbGlnbi1zZWxmLW1kLWNlbnRlciBidG4tM2RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRMb2NhdGlvbiB8fCAhc2VsZWN0ZWRNb2RlbDNkIHx8ICFjYW5HbygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLWdvLXRvLTNkIGQtaW5saW5lLWJsb2NrXCI+PC9pPiB7eyczRCB2aXNpdCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmF2PiJdfQ==