@uiapplib/ngx-ui-web-lib 0.0.26 → 0.0.28

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.
@@ -573,21 +573,20 @@ export class WeeklyCertificationComponent extends BasePage {
573
573
  this.wcService.weeklyCertData.pensionDeniedPotentialIssues = res.pensionDeniedPotentialIssues;
574
574
  this.wcService.weeklyCertData.bonusPayPotentialIssues = res.bonusPayPotentialIssues;
575
575
  this.wcService.weeklyCertData.otherPayPotentialIssues = res.otherPayPotentialIssues;
576
+ const list = this.wcService.getWorkSearchRecords() ?? [];
577
+ const localReem = list.filter(r => r && (r.activityType === 'JBFR' || r.activityType === 'CSVW')).length;
578
+ const serverReem = Number(this.wcService.weeklyCertServerData?.hidReemWorkSearchRecordCount ?? 0);
576
579
  if (this.statusModel.showQe) {
577
- const list = this.wcService.getWorkSearchRecords() ?? [];
578
- const localReem = list.filter(r => r && (r.activityType === 'JBFR' || r.activityType === 'CSVW')).length;
579
- const serverReem = Number(this.wcService.weeklyCertServerData?.hidReemWorkSearchRecordCount ?? 0);
580
- if ((localReem + serverReem) > 3) {
581
- this.showAcknowledgement();
582
- }
583
- }
584
- else if (this.statusModel.showQe) {
585
580
  this.isOpenQe = true;
586
581
  if (this.wcService.weeklyCertData.employerDetailsList != null
587
582
  && this.wcService.weeklyCertData.employerDetailsList.length > 0
588
583
  && res.tempEmployerSepPotentialIssueMap != null) {
589
584
  this.wcService.weeklyCertData.tempEmployerSepPotentialIssueMap = res.tempEmployerSepPotentialIssueMap;
590
585
  }
586
+ else if ((localReem + serverReem) > 3) {
587
+ this.isOpenQe = false;
588
+ this.showAcknowledgement();
589
+ }
591
590
  }
592
591
  else {
593
592
  this.showAcknowledgement();
@@ -840,4 +839,4 @@ export class WeeklyCertificationComponent extends BasePage {
840
839
  args: ['weeklyQuestions']
841
840
  }] }); })();
842
841
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WeeklyCertificationComponent, { className: "WeeklyCertificationComponent", filePath: "lib\\components\\weekly-certification\\weekly-certification.component.ts", lineNumber: 32 }); })();
843
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LWNlcnRpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS1jZXJ0aWZpY2F0aW9uL3dlZWtseS1jZXJ0aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktY2VydGlmaWNhdGlvbi93ZWVrbHktY2VydGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBSXBILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDcEJySCx3Q0FBa0Y7O0lBQXZDLCtCQUFpQjs7O0lBQ3hELDhCQUErQztJQUMzQyxpQ0FBdUM7SUFDM0MsaUJBQU07OztJQUVOLDhCQUF1RztJQUNyRyw4QkFBMEcsYUFBQTtJQUU1RyxpQkFBTTs7O0lBREMsZUFBeUQ7SUFBekQsd0dBQXlEOzs7SUFNMUQsbUNBQXVILGFBQUE7SUFDN0YsWUFBd0Q7O0lBQUEsaUJBQUssRUFBQTs7O0lBQTdELGVBQXdEO0lBQXhELDJGQUF3RDs7O0lBR2xGLG1DQUEyRyxhQUFBO0lBQ2pGLFlBQXVFOztJQUFBLGlC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LDZCQUE2QjsyQkFJM0IsMEJBQTBCOzJCQUcxQixrQkFBa0I7Ozs7Ozs7OztZQ3hDL0IsMkdBQWtGLGdFQUFBLGdFQUFBLGtFQUFBOztZQUE3RCx5Q0FBb0I7WUFDL0IsZUFBZTtZQUFmLG9DQUFlO1lBSWYsZUFBNEI7WUFBNUIscURBQTRCO1lBSzVCLGVBQTZCO1lBQTdCLHNEQUE2Qjs7O2lGRHFCMUIsNEJBQTRCO2NBTHhDLFNBQVM7MkJBQ0UsMEJBQTBCO3NTQU9wQyxtQkFBbUI7a0JBRHBCLFNBQVM7bUJBQUMsNkJBQTZCO1lBS3RDLDBCQUEwQjtrQkFEekIsU0FBUzttQkFBQywwQkFBMEI7WUFJckMsZ0JBQWdCO2tCQURmLFNBQVM7bUJBQUMsa0JBQWtCO1lBR0MsZUFBZTtrQkFBNUMsU0FBUzttQkFBQyxpQkFBaUI7O2tGQVpqQiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcclxuaW1wb3J0IHsgQ2xhaW1hbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LWNvbnRleHQvY2xhaW1hbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGVscC9oZWxwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlUXVlcnlNb2RlbCB9IGZyb20gJy4uLy4uLy9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlUXVlcnlNb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBIZWxwQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0hlbHBDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBXZWVrbHlDZXJ0U2VydmljZVYyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtdjIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1bW1hcnlDb21wb25lbnRWMiB9IGZyb20gJy4uL3dlZWtseS1zdW1tYXJ5LXYyL3N1bW1hcnkuY29tcG9uZW50LXYyJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXJQYWdlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2Zvcm0tYnVpbGRlci9mb3JtLWJ1aWxkZXIucGFnZSc7XHJcbmltcG9ydCB7IFdvcmtTZWFyY2hRdWVzdGlvbkNvbXBvbmVudFYyIH0gZnJvbSAnLi4vd2Vla2x5LXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyL3dvcmstc2VhcmNoLXF1ZXN0aW9uLmNvbXBvbmVudC12Mic7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93ZWVrbHktY2VydGlmaWNhdGlvbi12Mi1tb2RlbCc7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRFbGlnaWJpbGl0eU1vZGVsVjIgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtZWxpZ2liaWxpdHktdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBTdGF0dXNNb2RlbCB9IGZyb20gJy4uLy4uLy9tb2RlbHMvcXVlc3Rpb25uYWlyZS9TdGF0dXNNb2RlbCc7XHJcbmltcG9ydCB7IEFja25vd2xlZGdlbWVudE1zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy93ZWVrbHktYWNrbm93bGVkZ2VtZW50LW1zL2Fja25vd2xlZGdlbWVudC1tcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3JrU2VhcmNoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2Vla2x5LWNlcnQvd29yay1zZWFyY2gtdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFdvcmtTZWFyY2hSZWNvcmRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93b3JrLXNlYXJjaC1yZWNvcmQtdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd2Vla2x5LWNlcnRpZmljYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWVrbHktY2VydGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3dlZWtseS1jZXJ0aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2Vla2x5Q2VydGlmaWNhdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuQFZpZXdDaGlsZChXb3JrU2VhcmNoUXVlc3Rpb25Db21wb25lbnRWMilcclxuICB3b3JrU2VhcmNoQ29tcG9uZW50OiBXb3JrU2VhcmNoUXVlc3Rpb25Db21wb25lbnRWMjtcclxuXHJcbiAgLy9UcmlnZ2VyaW5nIFN1Ym1pdCBpbiB0aGUgY29tcG9uZW50XHJcbiAgQFZpZXdDaGlsZChBY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudClcclxuICBhY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudDogQWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoU3VtbWFyeUNvbXBvbmVudFYyKVxyXG4gIHN1bW1hcnlDb21wb25lbnQ6IFN1bW1hcnlDb21wb25lbnRWMjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnd2Vla2x5UXVlc3Rpb25zJykgd2Vla2x5UXVlc3Rpb25zOiBGb3JtQnVpbGRlclBhZ2VcclxuXHJcbiAgcHVibGljIHNob3dBY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0NvbmZpcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjb25maXJtYXRpb25EYXRhOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBpdGVtczogTWVudUl0ZW1bXTtcclxuICBwdWJsaWMgY29udGVudHM6IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBhY3RpdmVJbmRleCA9IDA7XHJcbiAgcHVibGljIGVycm9yTXNnOiBzdHJpbmc7XHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93V29ya1NlYXJjaDogYm9vbGVhbjtcclxuICBwdWJsaWMgZHluYW1pY1BhcmFtOiBhbnk7XHJcbiAgaXNPcGVuUWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxZVF1ZXJ5TW9kZWxzOiBRdWVzdGlvbm5haXJlUXVlcnlNb2RlbFtdO1xyXG4gIHBvdGVudGlhbElzc3VlczogbnVtYmVyW107XHJcbiAgc3RhdHVzTW9kZWw6IFN0YXR1c01vZGVsO1xyXG4gIHJlYWRPbmx5RmllbGRzOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgcmVhZE9ubHlEYXRhOiBhbnk7XHJcbiAgZGF0YVRvTG9hZDogYW55O1xyXG4gIHB1YmxpYyB3b3JrU2VhcmNoV2FpdmVkOiBhbnk7XHJcbiAgcHVibGljIHdhaXZlclJlYXNvbjogU3RyaW5nID0gbnVsbDtcclxuICBwdWJsaWMgd29ya1NlYXJjaERhdGFNczogV29ya1NlYXJjaE1vZGVsO1xyXG5cclxuICBwdWJsaWMgbXVsdGlwbGVXZWVrc0R1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93SW50ZXJpbUNvbmZpcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBudW1iZXJPZk11bHRpcGxlV2Vla3NEdWU6IG51bWJlcjtcclxuICByZWNlaXZlZERhdGE6IGFueTtcclxuICBwdWJsaWMgZGlzcGxheUNvbnRpbnVlZFdlZWtzRmlsZWRIZWFkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFyc2VkTWF4UlRXRGF0ZTogYW55O1xyXG4gIHB1YmxpYyB3ZWVrbHlXb3JrUGVyZm9ybWVkUG9wdXBGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgd29ya1NlYXJjaFJlY29yZHM6IFdvcmtTZWFyY2hSZWNvcmRNb2RlbFtdO1xyXG5cclxuICBjb3VudCA9IDA7XHJcbiAgcmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudCA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd2NTZXJ2aWNlOiBXZWVrbHlDZXJ0U2VydmljZVYyLCBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHV0aWw6IFV0aWxTZXJ2aWNlLCBwcml2YXRlIG5hdjogTmF2Q29udHJvbGxlcixcclxuICAgIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHVibGljIGhzOiBIZWxwU2VydmljZSwgcHVibGljIGxzOiBMb2dpblNlcnZpY2UsIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENsYWltYW50Q29udGV4dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGVwaXBlOkRhdGVQaXBlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLndjU2VydmljZS5yZXNldFdlZWtseUNlcnREYXRhKCk7XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy53Y1NlcnZpY2UuY2hlY2tXZWVrbHlFbGlnaWJpbGl0eSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgIHRoaXMucHJvY2Vzc1dlZWtseUNlcnRFbGlnaWJpbHR5U3VjY2VzcyhyZXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMucHJvY2Vzc1dlZWtseUNlcnRFbGlnaWJpbGl0eUVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIG9uU3RlcENoYW5nZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzV2Vla2x5Q2VydEVsaWdpYmlsdHlTdWNjZXNzKHJlczogV2Vla2x5Q2VydEVsaWdpYmlsaXR5TW9kZWxWMikge1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEgPSByZXM7XHJcbiAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcclxuICAgIHRoaXMuZ2V0TGFiZWxNYXhSVFdEYXRlKCk7XHJcbiAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IHtcclxuICAgICAgJ3NhdHVyZGF5X2RhdGUnOiB0aGlzLndjU2VydmljZS5nZXRTYXR1cmRheURhdGVBc1N0cmluZygpLFxyXG4gICAgICAnc3VuZGF5X2RhdGUnOiB0aGlzLndjU2VydmljZS5nZXRTdW5kYXlEYXRlQXNTdHJpbmcoKSxcclxuICAgICAgJ21pbl9ydHdfZGF0ZSc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLm1pbkFsbG93ZWRSdHdEYXRlLFxyXG4gICAgICAnbWF4X3J0d19kYXRlJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEubWF4QWxsb3dlZFJ0d0RhdGUsXHJcbiAgICAgICdwZW5zaW9uX2VtcGxveWVycyc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLnBlbnNpb25FbXBsb3llcnMsXHJcbiAgICAgICdkdWFEZWNsYXJhdGlvbic6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmR1YURlY2xhcmF0aW9uLFxyXG4gICAgICAnY2xhaW1XZWVrRW5kRGF0ZSc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmNsYWltV2Vla0VuZERhdGUsXHJcbiAgICAgICdjbGFpbWFudElkJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuY2xhaW1hbnRJZCxcclxuICAgICAgJ2xhYmVsX21heFJ0d0RhdGUnOiB0aGlzLnBhcnNlZE1heFJUV0RhdGUsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIGlmIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgdG8gd2Vla2xpZXMgZnJvbSBpbnRlcmltIGNvbmZpcm1hdGlvbiB0byBjb250aW51ZSBmaWxpbmcgZGF0YSB3aWxsIGJlIHN0b3JlZFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3RvcmVkRGF0YSA9IGxvY2FsU3RvcmFnZT8uZ2V0SXRlbSgnaW50ZXJpbUNvbmZpcm1hdGlvbkRhdGEnKTtcclxuICAgICAgaWYgKHN0b3JlZERhdGEpIHtcclxuICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KGF0b2Ioc3RvcmVkRGF0YSkpO1xyXG4gICAgICAgIHRoaXMucmVjZWl2ZWREYXRhID0gSlNPTi5wYXJzZShkZWNvZGVkKTtcclxuICAgICAgICBpZiAodGhpcy5keW5hbWljUGFyYW0uY2xhaW1hbnRJZCAhPT0gdGhpcy5yZWNlaXZlZERhdGEuY2xhaW1hbnRJZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xTIHBhcnNpbmcgZmFpbGVkOicsIGVycik7XHJcbiAgICAgIHRoaXMucmVjZWl2ZWREYXRhID0gbnVsbDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgICAvLyBjaGVja2luZyBkYXRhIGZvciBmbGFnIHRvIGNvbnRpbnVlIHRvIGZpbGUgZm9yIG11bHRpcGxlIHdlZWtzXHJcbiAgICAgIGlmKHRoaXMucmVjZWl2ZWREYXRhICYmICh0aGlzLmR5bmFtaWNQYXJhbS5jbGFpbWFudElkID09IHRoaXMucmVjZWl2ZWREYXRhLmNsYWltYW50SWQpICYmXHJcbiAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEuY29udGludWVUb0ZpbGVGb3JNdWx0aXBsZVdlZWtzID09IHRydWUpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbnRpbnVlZFdlZWtzRmlsZWRIZWFkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5uZXh0Q2VydGlmaWNhdGlvblRvRmlsZUNvdW50ID0gdGhpcy5yZWNlaXZlZERhdGEuY3VycmVudE51bWJlckZpbGluZzsgXHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW0udG90YWxUb0NlcnRpZnkgPSB0aGlzLnJlY2VpdmVkRGF0YS50b3RhbDtcclxuICAgICAgICAvLyB0aGlzLm51bWJlck9mTXVsdGlwbGVXZWVrc0R1ZSA9IHRoaXMucmVjZWl2ZWREYXRhLmNvdW50O1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFIFNcIik7XHJcbiAgICAgICAgLy8gaWYgbW9yZSB3ZWVrcyBhcmUgZHVlIHNldCB0aGUgbmV4dCBzdW5kYXkgYW5kIHNhdHVyZGF5IGRheXNcclxuICAgICAgICBpZih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoPjEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubmV4dF9zYXR1cmRheSA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZFsxXTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRfc3VuZGF5ID0gdGhpcy5nZXRQcmV2aW91c1N1bmRheSh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWRbMV0pXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLnJlY2VpdmVkRGF0YS50b3RhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gXHJcbiAgICAgIC8vIGlmIGNsYWltYW50IGZpbGluZyBhbmQgaGFzIG11bHRpcGxlIGNlcnRpZmljYXRpb25zIGR1ZVxyXG4gICAgICAvLyB3aWxsIGdvIHRocm91Z2ggaW50ZXJpbSBwcm9jZXNzIHVudGlsIGZpbmFsIGxhdGVzdCB3ZWVrIGZpbGVkXHJcbiAgICAgIGVsc2UgaWYodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aD4xKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubnVtYmVyT2ZNdWx0aXBsZVdlZWtzRHVlID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aDtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5uZXh0X3NhdHVyZGF5ID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkWzFdO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRfc3VuZGF5ID0gdGhpcy5nZXRQcmV2aW91c1N1bmRheSh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWRbMV0pXHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgaWYgKExpYkNvbnN0YW50cy5sZWdhY3lNZW51ID09ICdmYWxzZScpIHtcclxuICAgICAgLy90aGlzLmhzLnNob3dEaWFsb2dJZlByZWZlcmVuY2VBbGxvdyhIZWxwQ29uc3RhbnRzLldFRUtMWV9IRUxQKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUhpZGRlbkZpZWxkcyhyZXMpO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGFGb3JXb3JrU2VhcmNoRm9ybSgpO1xyXG4gICAgaWYgKHRoaXMuaXNNUygpKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbXHJcbiAgICAgICAgeyBsYWJlbDogJycsIGNvbW1hbmQ6ICgpID0+IHsgdGhpcy5vblN0ZXBDaGFuZ2UoMCk7IH0gfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgY29tbWFuZDogKCkgPT4geyB0aGlzLm9uU3RlcENoYW5nZSgxKTsgfSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCBjb21tYW5kOiAoKSA9PiB7IHRoaXMub25TdGVwQ2hhbmdlKDIpOyB9IH1cclxuICAgICAgXTtcclxuICAgIH0gXHJcblxyXG4gICAgdGhpcy5jb250ZW50cyA9IFsnICAgV29yayBTZWFyY2ggQWN0aXZpdGllcycsICcgICBXZWVrbHkgUXVlc3Rpb25zJywgJyAgIEFja25vd2xlZGdlICYgQ2VydGlmeSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWxNYXhSVFdEYXRlKCl7XHJcbiAgICBpZih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5tYXhBbGxvd2VkUnR3RGF0ZSAhPSBudWxsKXtcclxuICAgICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlID0gbmV3IERhdGUodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEubWF4QWxsb3dlZFJ0d0RhdGUpO1xyXG4gICAgICBjb25zdCBwYXJ0cyA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLm1heEFsbG93ZWRSdHdEYXRlLnNwbGl0KCctJyk7XHJcbiAgICAgIGxldCBwYXJzZWREYXRlID0gbmV3IERhdGUoK3BhcnRzWzJdLCArcGFydHNbMF0gLSAxLCArcGFydHNbMV0pO1xyXG4gICAgICBwYXJzZWREYXRlLnNldERhdGUocGFyc2VkRGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuICAgICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlID0gdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0ocGFyc2VkRGF0ZSwgJ01NL2RkL3l5eXknKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2Nlc3NXZWVrbHlDZXJ0RWxpZ2liaWxpdHlFcnJvcihlcnI6IGFueSkge1xyXG4gICAgaWYgKGVyci5tc2cgIT0gbnVsbCAmJiBlcnIubXNnWzBdID09ICdObyBXZWVrcyBhcmUgcGVuZGluZyB0byBiZSBmaWxlZC4nKSB7XHJcbiAgICAgIHRoaXMudXRpbC5nZXRTdGF0ZSgpPT09J0NUJyA/IHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIndlZWtseS1ub3QtZWxpZ2libGVcIikgOiB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCJ3b3JrLXNlYXJjaC1qb3VybmFsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcnJvck1zZyA9IGVyci5tc2c7XHJcbiAgICB9XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YSA9IG51bGw7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZURhdGFGb3JXb3JrU2VhcmNoRm9ybSgpIHtcclxuICAgIHRoaXMud29ya1NlYXJjaFdhaXZlZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmlzV29ya1NlYXJjaFdhaXZlZDtcclxuICAgIHRoaXMud2FpdmVyUmVhc29uID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2FpdmVyUmVhc29uO1xyXG4gICAgLy9SRUVNIEFDVElWSVRZIFRZUEUgQ09VTlQgQVNTSUdOTUVOVFxyXG4gICAgdGhpcy5yZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID0gTnVtYmVyKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhPy5oaWRSZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID8/IDApO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuaGlkUmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudCA9IHRoaXMucmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudDtcclxuICAgIC8vXHJcbiAgICB0aGlzLndjU2VydmljZS5nZXRDbGFpbWFudFdvcmtTZWFyY2hKb3VybmFsUmVjb3Jkcyh0aGlzLndjU2VydmljZS5nZXRTYXR1cmRheURhdGVBc1N0cmluZygpKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcblx0XHRcdCAgICAgICAgY29uc29sZS5lcnJvcihcIldTUlwiKTtcclxuICAgICAgICB0aGlzLndjU2VydmljZS53b3JrU2VhcmNoSm91cm5hbCA9IHJlcztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoUmVjb3JkcyA9IHJlcy53b3JrU2VhcmNoUmVjb3JkcztcclxuICAgICAgICBpZiAodGhpcy5pc01FKCkgJiYgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaFJlY29yZHMpIHtcclxuICAgICAgICAgIGNvbnN0IGhhc1N0YXJ0ZWRXb3JraW5nID0gKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hSZWNvcmRzID8/IFtdKS5zb21lKFxyXG4gICAgICAgICAgICByZWMgPT4gcmVjPy5zZWFyY2hSZXN1bHQgPT09ICdTVFdLJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmKGhhc1N0YXJ0ZWRXb3JraW5nKXtcclxuICAgICAgICAgICAgdGhpcy5oYXNXb3JrZWRGdWxsVGltZU9yU3RhcnRlZFdvcmtpbmdTdGF0dXModHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud29ya1NlYXJjaEpvdXJuYWwgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5pc01TKCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuTmV4dFBhZ2UoKSB7XHJcbiAgICBcdGNvbnNvbGUuZXJyb3IoXCJPTlBcIik7XHJcbiAgICBpZiAodGhpcy53b3JrU2VhcmNoQ29tcG9uZW50KSB7XHJcbiAgICAgIGlmICh0aGlzLndjU2VydmljZS5nZXREaXNwbGF5V29ya1NlYXJjaFNjcmVlbigpKSB7XHJcbiAgICAgICAgdGhpcy53b3JrU2VhcmNoQ29tcG9uZW50LnN1Ym1pdEZvcm0oKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdvVG9XZWVrbHlDZXJ0KCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy53b3JrU2VhcmNoV2FpdmVkKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1dlZWtseUNlcnQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ29Ub1dlZWtseUNlcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9XZWVrbHlDZXJ0KCkge1xyXG5cdFx0XHQgICAgY29uc29sZS5lcnJvcihcIkdUV1wiKTtcclxuICAgIGlmICh0aGlzLmlzTVMoKSkge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2Vla2x5UXVlc3Rpb25zKSB7XHJcbiAgICAgICAgICB0aGlzLmNvdW50ID0gdGhpcy5jb3VudCArIDE7XHJcbiAgICAgICAgICBpZih0aGlzLmNvdW50ID4gMSAmJiB0aGlzLmxzLmlzQ3NyKCkpe1xyXG4gICAgICAgICAgICB0aGlzLndlZWtseVF1ZXN0aW9ucy5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm0uZm9ybS5jb250cm9sc1snaGlkQ3NyRmlyc3RQYXNzJ10uc2V0VmFsdWUoJ1knKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMud2Vla2x5UXVlc3Rpb25zLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLndlZWtseVF1ZXN0aW9ucykge1xyXG4gICAgICAgIHRoaXMud2Vla2x5UXVlc3Rpb25zLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIHN1Y2Nlc3Mod2Vla2x5UXVlc3Rpb25zUmVzcG9uc2UpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhOiBXZWVrbHlDZXJ0aWZpY2F0aW9uTW9kZWwgPVxyXG4gICAgICBKU09OLnBhcnNlKHdlZWtseVF1ZXN0aW9uc1Jlc3BvbnNlLnNjcmVlblF1ZXN0aW9ubmFpcmVEYXRhWzBdKTtcclxuICAgIGZvcm1EYXRhLndvcmtTZWFyY2hSZWNvcmRzID0gdGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaFJlY29yZHMoKTtcclxuICAgIGZvcm1EYXRhLndvcmtTZWFyY2hEYXRhID0gdGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaERhdGEoKTtcclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhID0gZm9ybURhdGE7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5jbGFpbVdlZWtFbmREYXRlID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla1RvQ2VydGlmeTtcclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmhpZEluQXBwcm92ZWRUcmFpbmluZyA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmhpZEluQXBwcm92ZWRUcmFpbmluZztcclxuICAgIHRoaXMub3BlbkZvbGxvd3VwUXVlc3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRm9sbG93dXBRdWVzdGlvbnMoKSB7XHJcbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuc2hvd1dvcmtTZWFyY2hTY3JlZW4gPSB0aGlzLndjU2VydmljZS5nZXREaXNwbGF5V29ya1NlYXJjaFNjcmVlbigpO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9ICcwJztcclxuICAgIGlmICh0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3Jkc0NvdW50KCkgPiAwKSB7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3JkcygpID8/IFtdO1xyXG4gICAgICBjb25zdCBsb2NhbFJlZW0gPSBsaXN0LmZpbHRlcihyID0+IHIgJiYgKHIuYWN0aXZpdHlUeXBlID09PSAnVU5PTicgJiYgci5pc0luQ29udGFjdFdpdGhVbmlvbiA9PT0gJ04nKSkubGVuZ3RoO1xyXG4gICAgICBpZih0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3Jkc0NvdW50KCk+MSB8fCB0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3Jkc0NvdW50KCk9PT0xICYmIGxvY2FsUmVlbT09PTApIHtcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID0gJzEnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hEYXRhICE9IG51bGwpIHtcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9ICcwJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy53Y1NlcnZpY2UuZ2V0RW1wbG95ZXJSZWNvcmRzQ291bnQoKSA+IDApIHtcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZCA9ICdZJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtQZXJmb3JtZWQgPSAnTic7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZFNlYXBOb3RQYXJ0dGltZSA9ICh0aGlzLndjU2VydmljZS5nZXRFbXBsb3llclJlY29yZHNDb3VudCgpID4gMCAmJiB0aGlzLndjU2VydmljZS5nZXRIaWRJc1NlYXBQYXJ0aWNpcGFudCgpKSA/ICdZJyA6ICdOJztcclxuXHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5oaWRJc1NlYXBQYXJ0aWNpcGFudD09J1knKXtcclxuICAgICAgLy9Eb25lIHRvIGhhbmRsZSBuZXcgdmVyYmlhZ2UgZm9yIHdvcmtQZXJmb3JtZWQgZm9yIFNlYXAgUGFydGljaXBhbnRzLlxyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtQZXJmb3JtZWRTZWFwTm90UGFydHRpbWU7XHJcblxyXG4gICAgLy9Eb25lIHRvIGhhbmRsZSBuZXcgdmVyYmlhZ2UgZm9yIFNFQVAgUGFydGljaXBhbnRzIGZvciBhdmFpbGFibGUgcXVlc3Rpb24uXHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5hdmFpbGFibGUgPSAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuYXZhaWxhYmxlU2VhcCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53Y1NlcnZpY2UuZGV0ZXJtaW5lUXVlc3Rpb25uaWFyZVRvT3BlbigpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuXHQgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJxZXMgU3VjY2Vzc1wiKTtcclxuICAgICAgICB0aGlzLnN0YXR1c01vZGVsID0gcmVzLnN0YXR1c01vZGVsO1xyXG4gICAgICAgIHRoaXMucWVRdWVyeU1vZGVscyA9IHJlcy5zdGF0dXNNb2RlbC5xZVF1ZXJ5TW9kZWxzO1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLnBvdGVudGlhbElzc3VlcyA9IHJlcy5wb3RlbnRpYWxJc3N1ZUlkcztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5wZW5zaW9uRGVuaWVkUG90ZW50aWFsSXNzdWVzID0gcmVzLnBlbnNpb25EZW5pZWRQb3RlbnRpYWxJc3N1ZXM7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuYm9udXNQYXlQb3RlbnRpYWxJc3N1ZXMgPSByZXMuYm9udXNQYXlQb3RlbnRpYWxJc3N1ZXM7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEub3RoZXJQYXlQb3RlbnRpYWxJc3N1ZXMgPSByZXMub3RoZXJQYXlQb3RlbnRpYWxJc3N1ZXM7XHJcblx0XHRpZiAodGhpcy5zdGF0dXNNb2RlbC5zaG93UWUpIHtcclxuXHRcdCAgY29uc3QgbGlzdCA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKCkgPz8gW107XHJcbiAgICAgICAgICBjb25zdCBsb2NhbFJlZW0gPSBsaXN0LmZpbHRlcihyID0+IHIgJiYgKHIuYWN0aXZpdHlUeXBlID09PSAnSkJGUicgfHwgci5hY3Rpdml0eVR5cGUgPT09ICdDU1ZXJykpLmxlbmd0aDtcclxuICAgICAgICAgIGNvbnN0IHNlcnZlclJlZW0gPSBOdW1iZXIodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGE/LmhpZFJlZW1Xb3JrU2VhcmNoUmVjb3JkQ291bnQgPz8gMCk7XHJcblx0XHQgIFxyXG4gICAgICAgICAgaWYoKGxvY2FsUmVlbSArIHNlcnZlclJlZW0pID4gMykge1xyXG5cdFx0XHR0aGlzLnNob3dBY2tub3dsZWRnZW1lbnQoKTtcclxuXHRcdCAgfVxyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnN0YXR1c01vZGVsLnNob3dRZSkge1xyXG4gICAgICAgICAgdGhpcy5pc09wZW5RZSA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuZW1wbG95ZXJEZXRhaWxzTGlzdCAhPSBudWxsXHJcbiAgICAgICAgICAgICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmVtcGxveWVyRGV0YWlsc0xpc3QubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAmJiByZXMudGVtcEVtcGxveWVyU2VwUG90ZW50aWFsSXNzdWVNYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS50ZW1wRW1wbG95ZXJTZXBQb3RlbnRpYWxJc3N1ZU1hcCA9IHJlcy50ZW1wRW1wbG95ZXJTZXBQb3RlbnRpYWxJc3N1ZU1hcDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93QWNrbm93bGVkZ2VtZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihlcnIubXNnKTtcclxuICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb3BlblN1bW1hcnlQb3N0UXVlc3Rpb25uYWlyZXMoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnNpemUgPiAwKSB7XHJcbiAgICAgIGlmIChldmVudC5oYXMoOTAwMSkpIHtcclxuICAgICAgICBsZXQgd29ya1NlYXJjaFJlYXNvbiA9IGV2ZW50LmdldCg5MDAxKS5yZWFzb25JbmFkZXF1YXRlV29ya1NlYXJjaDtcclxuICAgICAgICBpZih0aGlzLmlzQ1QoKSl7XHJcbiAgICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5yZWFzb25JbmFkZXF1YXRlV29ya1NlYXJjaCA9IHdvcmtTZWFyY2hSZWFzb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID09ICcxJ1xyXG4gICAgICAgICAgJiYgdGhpcy53Y1NlcnZpY2UuY2hlY2tJZkluYWRlcXVhdGVXb3JrU2VhcmNoUXVlc3Rpb25uYWlyZVNob3VsZEJlT3BlbmVkKClcclxuICAgICAgICAgICYmIHRoaXMuaXNNUygpKSB7XHJcbiAgICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5yZWFzb25JbmFkZXF1YXRlV29ya1NlYXJjaCA9IHdvcmtTZWFyY2hSZWFzb247XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID09ICcwJykge1xyXG4gICAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuZXhwbGFpbldoeURpZE5vdExvb2tGb3JXb3JrID0gd29ya1NlYXJjaFJlYXNvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50LmhhcygxNzkpKSB7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuYWRtaW5MZWF2ZURldGFpbHMgPSBldmVudC5nZXQoMTc5KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXZlbnQuaGFzKDkwMDIpKSB7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuYWRtaW5MZWF2ZURldGFpbHMgPSBldmVudC5nZXQoOTAwMik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dBY2tub3dsZWRnZW1lbnQoKTtcclxuICAgIHRoaXMuaXNPcGVuUWUgPSBmYWxzZTtcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgfVxyXG5cclxuICBvblFlQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmlzT3BlblFlID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N1bW1hcnkoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMTtcclxuICB9XHJcblxyXG4gIGNsb3NlQWNrKCkge1xyXG4gICAgdGhpcy5zaG93QWNrID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmaWxlV2Vla2x5Q2VydERvbmUoZXZlbnQpIHtcclxuICAgIHRoaXMuc2hvd0FjayA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25EYXRhID0gZXZlbnQ7XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSAmJiB0aGlzLnJlY2VpdmVkRGF0YSlcclxuICAgIHtcclxuICAgICAgLy8gaWYgdGhpcyBpcyB0aGUgbGFzdCB0aW1lIGZpbGluZyB3ZWVrbGllcyB0aHJvdWdoIGludGVyaW0gY29uZmlybWF0aW9uIGZsb3cgXHJcbiAgICAgIGlmKHRoaXMucmVjZWl2ZWREYXRhLmN1cnJlbnROdW1iZXJGaWxpbmcgPT0gdGhpcy5yZWNlaXZlZERhdGEudG90YWwgJiYgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aD09MSlcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuc2hvd0ludGVyaW1Db25maXJtYXRpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2U/LnJlbW92ZUl0ZW0oJ2ludGVyaW1Db25maXJtYXRpb25EYXRhJyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKXtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciByZW1vdmluZyBmcm9tIExTXCIsIGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIG1vcmUgd2Vla3MgcmVtYWluIGZvciB3ZWVrbGllcyB0aHJvdWdoIGludGVyaW0gY29uZmlybWF0aW9uIGZsb3cgXHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVjZWl2ZWREYXRhLmNvdW50IDw9IHRoaXMucmVjZWl2ZWREYXRhLnRvdGFsICAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoPjEpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSAvLyBpZiBmaXJzdCB0aW1lIGZpbGluZyB3ZWVrbGllcyB0aHJvdWdoIGludGVyaW0gY29uZmlybWF0aW9uIGZsb3dcclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSB0cnVlICYmICF0aGlzLnJlY2VpdmVkRGF0YSlcclxuICAgIHtcclxuICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKCF0aGlzLmlzTVMoKSkgfHwgKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSBmYWxzZSkpIHtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgY2xvc2VDb25maXJtYXRpb25Qb3B1cCgpIHtcclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSB0cnVlKVxyXG4gICAge1xyXG4gICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLndjU2VydmljZS5yZXNldFdlZWtseUNlcnREYXRhKCk7XHJcblxyXG4gICAgLy8gVGhpcyBpcyBhZGRlZCBhcyB0aGUgbmF2aWdhdGlvbiB3YXMgdG9vIHF1aWNrIGZvciB0aGUgY29uZmlybWF0aW9uIHRvIGNsb3NlIGluIHRpbWUsIGxlYXZpbmcgY29uZmlybWF0aW9uIG9wZW4sIGV2ZW4gdGhvdWdoIHRoZSBwYWdlIHdhcyB1cGRhdGVkIGluIGJhY2tlbmRcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nb0hvbWUoKSwgMTAwKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9XZWVrbGllcyhkYXRhOiBhbnkpIHtcclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSB0cnVlKVxyXG4gICAge1xyXG4gICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRyeSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2U/LnNldEl0ZW0oJ2ludGVyaW1Db25maXJtYXRpb25EYXRhJywgZGF0YSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKXtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBhZGRkaW5nIGZyb20gTFNcIiwgZXJyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53Y1NlcnZpY2UucmVzZXRXZWVrbHlDZXJ0RGF0YSgpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93LmxvY2F0aW9uLnJlcGxhY2Uod2luZG93LmxvY2F0aW9uLmhyZWYpLCAxMDApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBnb0hvbWUoKSB7XHJcbiAgICBpZiAodGhpcy5scy5pc0NsYWltYW50KCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnd2VsY29tZT93Y0RvbmU9dHJ1ZScpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmxzLmlzQ3NyKCkpIHtcclxuICAgICAgdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdFdpdGhEYXRhKHRoaXMudXRpbC5nZXRTZWN1cml0eUFwcENvbnRleHRSb290KCksIFwic2VhcmNoLXNzblwiLCB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldFVuRW5jb2RlZFNzbigpLCB0aGlzLm5hdik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvd2VsY29tZScpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICB9XHJcblxyXG4gIHNob3dBY2tub3dsZWRnZW1lbnQoKSB7XHJcbiAgICBpZiAodGhpcy5zdW1tYXJ5Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuc3VtbWFyeUNvbXBvbmVudC5zdWJtaXRGb3JtKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5pc01TKCkpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMjtcclxuICAgICAgICBpZiAodGhpcy5hY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgdGhpcy5hY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudC5zdWJtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93QWNrID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUWVTdWNjZXNzKCkge1xyXG4gICAgdGhpcy5zaG93QWNrID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlvblZpZXdXaWxsTGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhzLnNldEhlbHBBdmFpbGFiaWxpdHkoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgaW9uVmlld0RpZEVudGVyKCkge1xyXG4gICAgdGhpcy53Y1NlcnZpY2UucmVzZXRXZWVrbHlDZXJ0RGF0YSgpO1xyXG4gICAgdGhpcy5ocy5zZXRIZWxwQXZhaWxhYmlsaXR5KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXJyb3IoZXJyKSB7XHJcbiAgICB0aGlzLmVycm9yTXNnID0gZXJyLm1zZztcclxuICB9XHJcblxyXG4gIGhhc0hpcmVkU3RhdHVzKHN0YXR1czogYm9vbGVhbikge1xyXG4gICAgLy9UT0RPOiBVcGRhdGUgdGhpcyBmb3IgcmV0dXJuIHRvIHdvcmsgZm9yIGhpcmVkIGNhc2VzXHJcbiAgICAgaWYgKCF0aGlzLmlzTUUoKSkge1xyXG4gICAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gc3RhdHVzID8gWydyZXR1cm5pbmdUb1dvcmsnXSA6IG51bGw7XHJcbiAgICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RGF0YSA9IHsgcmV0dXJuaW5nVG9Xb3JrOiBcIllcIn07XHJcbiAgICAgIH1cclxuICAgIH0gXHJcbiAgfVxyXG5cclxuICBoYXNXb3JrZWRGdWxsVGltZU9yU3RhcnRlZFdvcmtpbmdTdGF0dXMoc3RhdHVzOiBib29sZWFuKXtcclxuICAgIGNvbnN0IGZvcm0gPSB0aGlzLndlZWtseVF1ZXN0aW9ucz8ucXVlc3Rpb25uYWlyZT8ucXVlc3Rpb25uYWlyZT8ucXVlc3Rpb25uYWlyZUZvcm0/LmZvcm07XHJcbiAgICBpZih0aGlzLmlzTUUoKSl7XHJcbiAgICAgIGlmKHN0YXR1cyAmJiBmb3JtKXtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gc3RhdHVzID8gWyd3b3JrUGVyZm9ybWVkJ106IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seURhdGEgPSB7d29ya1BlcmZvcm1lZDogXCJZXCJ9O1xyXG4gICAgICAgIGZvcm0uZ2V0KCd3b3JrUGVyZm9ybWVkJyk/LnNldFZhbHVlKCdZJyk7XHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gc3RhdHVzID8gWyd3b3JrUGVyZm9ybWVkJ106IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seURhdGEgPSB7d29ya1BlcmZvcm1lZDogbnVsbH07XHJcbiAgICAgICAgaWYoZm9ybSl7XHJcbiAgICAgICAgICBmb3JtLmdldCgnd29ya1BlcmZvcm1lZCcpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSGlkZGVuRmllbGRzKHJlczogV2Vla2x5Q2VydEVsaWdpYmlsaXR5TW9kZWxWMikge1xyXG5cclxuICAgIHRoaXMucmVhZE9ubHlGaWVsZHMgPSBbJ2hpZFNob3dSZXR1cm5Ub1dvcmtRdWVzdGlvbicsICdoaWRTaG93UmV0dXJuZWRUb1dvcmtRdWVzdGlvbicsICdoaWRTaG93TmV3UGVuc2lvblF1ZXN0aW9uJywgJ2hpZFNob3dQZW5zaW9uQ2hhbmdlZFF1ZXN0aW9uJywgJ2hpZFNob3dEaXNtaXNzYWxQYXlDaGFuZ2VkUXVlc3Rpb24nLCAnaGlkUGFydFRpbWVFbXBsb3llckF2YWlsYWJsZScsICdoaWRSZW11bmVyYXRpb25Jc3N1ZUV4aXN0cycsICdoaWRJc0VsaWdpYmxlRm9yRHVhJywgJ2NsYWltYW50SWQnLCAnY2xhaW1XZWVrRW5kRGF0ZScsJ2R1YUFwcElkJywnaGlkUGFydGlhbENsYWltRW1wbG95bWVudEZsYWcnLCdoaWRXb3JrU2VhcmNoQXVkaXRGbGFnJ107XHJcbiAgICB0aGlzLnJlYWRPbmx5RGF0YSA9IHsgaGlkU2hvd1JldHVyblRvV29ya1F1ZXN0aW9uOiByZXMuaGlkU2hvd1JldHVyblRvV29ya1F1ZXN0aW9uLCBoaWRTaG93UmV0dXJuZWRUb1dvcmtRdWVzdGlvbjogcmVzLmhpZFNob3dSZXR1cm5lZFRvV29ya1F1ZXN0aW9uLCBoaWRTaG93TmV3UGVuc2lvblF1ZXN0aW9uOiByZXMuaGlkU2hvd05ld1BlbnNpb25RdWVzdGlvbiwgaGlkU2hvd1BlbnNpb25DaGFuZ2VkUXVlc3Rpb246IHJlcy5oaWRTaG93UGVuc2lvbkNoYW5nZWRRdWVzdGlvbiwgaGlkU2hvd0Rpc21pc3NhbFBheUNoYW5nZWRRdWVzdGlvbjogcmVzLmhpZFNob3dEaXNtaXNzYWxQYXlDaGFuZ2VkUXVlc3Rpb24sIGhpZFBhcnRUaW1lRW1wbG95ZXJBdmFpbGFibGU6IHJlcy5oaWRQYXJ0VGltZUVtcGxveWVyQXZhaWxhYmxlLCBoaWRSZW11bmVyYXRpb25Jc3N1ZUV4aXN0czogcmVzLmhpZFJlbXVuZXJhdGlvbklzc3VlRXhpc3RzLCBoaWRJc0VsaWdpYmxlRm9yRHVhOiByZXMuaGlkSXNFbGlnaWJsZUZvckR1YSwgY2xhaW1hbnRJZDogcmVzLmNsYWltYW50SWQsIGNsYWltV2Vla0VuZERhdGU6IHJlcy5jbGFpbVdlZWtFbmREYXRlLCBkdWFBcHBJZDpyZXMuZHVhQXBwSWQsIGhpZFBhcnRpYWxDbGFpbUVtcGxveW1lbnRGbGFnOiByZXMuaGlkUGFydGlhbENsYWltRW1wbG95bWVudEZsYWcsIGhpZFdvcmtTZWFyY2hBdWRpdEZsYWc6IHJlcy5oaWRXb3JrU2VhcmNoQXVkaXRGbGFnIH07XHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICBsb2FkQ29tcGxldGUoZXZlbnQpIHtcclxuICAgICAvKiBGb3IgTVMsIHRoZSBiYWNrIGJ1dHRvbiBuZWVkcyB0byBsb2FkIGNvbXBsZXRlIGZpbGxlZCBkYXRhIGFsb25nIHdpdGggZWxpZ2liaWxpdHkgZGF0YS5cclxuICAgICBGb3Igb3RoZXIgc3RhdGVzLCBldmVyeXRoaW5nIGlzIGluIHBvcHVwLCBzbyBvbiBjbG9zZSwgZGF0YSBzdGlsbCBpcyB0aGVyZSBpbiBtb2RlbC5cclxuICAgICBOZWVkcyB3b3JrICovXHJcbiAgIC8qICBpZiAodGhpcy5pc01TKCkgJiYgdGhpcy5hY3RpdmVJbmRleCA9PSAxICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhKSB7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53ZWVrbHljZXJ0RWxpZ2liaWxpdHlNb2RlbFYyID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGE7XHJcbiAgICAgIHRoaXMuZGF0YVRvTG9hZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhO1xyXG4gICAgICB0aGlzLmhhbmRsZUhpZGRlbkZpZWxkcyh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YSk7XHJcbiAgICB9IGVsc2V7XHJcbiAgICAgIHRoaXMuZGF0YVRvTG9hZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhO1xyXG4gICAgfSAqL1xyXG4gICAgICB0aGlzLmRhdGFUb0xvYWQgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YTtcclxuICAgIC8qKiBORVc6IEZvciBMb2FkaW5nIHRoZSBQcmUtc2VsZWN0ZWQgcXVlc3Rpb24gaW4gY2FzZSBvZiBTdGFydGVkIFdvcmtpbmcoU1RXSykgZm9yIFdTIFJlY29yZHMgYW5kIHNldHRpbmcgdGhlIHZhbHVlIFkgZm9yIHdvcmtQZXJmb3JtZWQgKi9cclxuICAgICAgdGhpcy53b3JrU2VhcmNoUmVjb3JkcyA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKCk7XHJcbiAgICBpZiAodGhpcy5pc01FKCkgJiYgdGhpcy53b3JrU2VhcmNoUmVjb3Jkcykge1xyXG4gICAgICBjb25zdCBoYXNTdGFydGVkV29ya2luZyA9ICh0aGlzLndvcmtTZWFyY2hSZWNvcmRzID8/IFtdKS5zb21lKFxyXG4gICAgICAgIHJlYyA9PiByZWM/LnNlYXJjaFJlc3VsdCA9PT0gJ1NUV0snXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChoYXNTdGFydGVkV29ya2luZykge1xyXG4gICAgICAgIHRoaXMuZGF0YVRvTG9hZC53b3JrUGVyZm9ybWVkID0gXCJZXCI7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IFsnd29ya1BlcmZvcm1lZCddO1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlEYXRhID0geyB3b3JrUGVyZm9ybWVkOiBcIllcIiB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvKiogRU5EICovXHJcbiAgICAgIGlmICh0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3Jkc0NvdW50V2l0aEhpcmVkU3RhdHVzKCkgPiAwKSB7ICAgICAgICBcclxuICAgICAgICB0aGlzLmhhc0hpcmVkU3RhdHVzKHRydWUpO1xyXG4gICAgICAgIHRoaXMuZGF0YVRvTG9hZC5yZXR1cm5pbmdUb1dvcmsgPSBcIllcIjtcclxuICAgICAgfVxyXG4gICAgICAvL1dlZWtseSBFYXJuaW5ncyByZW1pbmRlciBwb3B1cCAtIHNob3duIGV2ZXJ5IHdlZWsgZXhjZXB0IGZvciB3YWl0aW5nIHBlcmlvZCB3ZWVrXHJcbiAgICAgIGlmKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmlzV2FpdGluZ1dlZWtTZXJ2ZWQgPT09IHRydWUpe1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMud2Vla2x5V29ya1BlcmZvcm1lZFBvcHVwRmxhZyA9IHRydWUpLCAxMDAwKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNTdW5kYXkoaW5wdXREYXRlKVxyXG4gIHtcclxuICAgIGxldCB1dGNEYXRlID0gbmV3IERhdGUoaW5wdXREYXRlICsgXCJUMDA6MDA6MDBaXCIpO1xyXG4gICAgdXRjRGF0ZS5zZXRVVENEYXRlKHV0Y0RhdGUuZ2V0VVRDRGF0ZSgpIC0gNik7XHJcbiAgICBsZXQgeWVhciA9IHV0Y0RhdGUuZ2V0VVRDRnVsbFllYXIoKTtcclxuICAgIGxldCBtb250aCA9IFN0cmluZyh1dGNEYXRlLmdldFVUQ01vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgbGV0IGRheSA9IFN0cmluZyh1dGNEYXRlLmdldFVUQ0RhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGFwcC1kYXNoYm9hcmQtaGVscCAqbmdJZj1cImhzLmlzU2hvd2luZygpXCIgW2FjdGl2ZUluZGV4XT1cIjRcIj48L2FwcC1kYXNoYm9hcmQtaGVscD5cclxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiZG90c1wiPjwvaW9uLXNwaW5uZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBlcnJvck1zZ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7XCI+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwiYWxlcnQtY2lyY2xlLW91dGxpbmVcIiBzdHlsZT1cImZvbnQtc2l6ZTogNjBweDsgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpO1wiPjwvaW9uLWljb24+XHJcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZXJyb3JNc2cpXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7IGZvbnQtc2l6ZTogbGFyZ2VyO1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhZXJyb3JNc2dcIj5cclxuICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgb2Zmc2V0WGw9XCIxXCIgKm5nSWY9XCIhaXNNUygpIHx8IChpc01TKCkgJiYgIW11bHRpcGxlV2Vla3NEdWUgJiYgIWRpc3BsYXlDb250aW51ZWRXZWVrc0ZpbGVkSGVhZGluZylcIj5cclxuICAgICAgICAgICAgPGgxIGNsYXNzPVwiYXBwLWhlYWRpbmdcIj57eyd3ZWVrbGllcy52Mi50YXNrLmhlYWRpbmcnIHwgdHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB9fTwvaDE+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcblxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgb2Zmc2V0WGw9XCIxXCIgKm5nSWY9XCIoaXNNUygpICYmIG11bHRpcGxlV2Vla3NEdWUgJiYgIWRpc3BsYXlDb250aW51ZWRXZWVrc0ZpbGVkSGVhZGluZylcIj5cclxuICAgICAgICAgICAgPGgxIGNsYXNzPVwiYXBwLWhlYWRpbmdcIj57eyd3ZWVrbGllcy52Mi50YXNrLm11bHRpcGxlLndlZWtzLmhlYWRpbmcnIHwgdHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB9fTwvaDE+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcblxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgb2Zmc2V0WGw9XCIxXCIgKm5nSWY9XCIoaXNNUygpICYmIG11bHRpcGxlV2Vla3NEdWUgJiYgZGlzcGxheUNvbnRpbnVlZFdlZWtzRmlsZWRIZWFkaW5nKVwiPlxyXG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJhcHAtaGVhZGluZ1wiPnt7J3dlZWtsaWVzLnYyLnRhc2subXVsdGlwbGUud2Vla3MuaGVhZGluZy5jb250aW51ZWQnIHwgdHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB9fTwvaDE+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICA8L2lvbi1ncmlkPlxyXG5cclxuICAgICAgPHNlY3Rpb24gKm5nSWY9XCIhaXNNUygpXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVYbD1cIjVcIiBvZmZzZXRYbD1cIjFcIiBzaXplTGc9XCI2XCI+XHJcbiAgICAgICAgICAgICAgPGFwcC13b3JrLXNlYXJjaC1xdWVzdGlvbi12MiAgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFlcnJvck1zZ1wiIChzdWNjZXNzKT1cImdvVG9XZWVrbHlDZXJ0KClcIiBbc2hvd0NvdW50ZXJdPVwidHJ1ZVwiIChoYXNIaXJlZFN0YXR1cyk9XCJoYXNIaXJlZFN0YXR1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoaGFzV29ya2VkRnVsbFRpbWVPclN0YXJ0ZWRXb3JraW5nU3RhdHVzKT1cImhhc1dvcmtlZEZ1bGxUaW1lT3JTdGFydGVkV29ya2luZ1N0YXR1cygkZXZlbnQpXCI+PC9hcHAtd29yay1zZWFyY2gtcXVlc3Rpb24tdjI+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVhsPVwiNVwiIHNpemVMZz1cIjZcIj4gICBcclxuICAgICAgICAgICAgICA8YXBwLWZvcm0tYnVpbGRlciAjd2Vla2x5UXVlc3Rpb25zIFtmbG93S2V5XT1cIid3ZWVrbHktY2VydCdcIiBbYXV0b1NhdmVdPVwiZmFsc2VcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCIgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIiBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIFxyXG4gICAgICAgICAgICAgICAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIiBbZGF0YV09XCJkYXRhVG9Mb2FkXCIgXHJcbiAgICAgICAgICAgICAgIFttdWx0aU1vZGVdPVwidHJ1ZVwiIFtyZWFkT25seUZpZWxkc109XCJyZWFkT25seUZpZWxkc1wiIChvbkxvYWRDb21wbGV0ZSk9XCJsb2FkQ29tcGxldGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPiAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpc01TKClcIj5cclxuICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCIgb2Zmc2V0TGc9XCIzXCIgb2Zmc2V0WGw9XCIzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWRcIj5cclxuICAgICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDAgfHwgYWN0aXZlSW5kZXggPT0gMVwiPlxyXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy13ZWVrbGllc1wiPjxiPiB7eyBjb250ZW50c1thY3RpdmVJbmRleF0gfX0gPC9iPjwvaDE+XHJcbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMlwiPlxyXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGluZy13ZWVrbGllcy1hY2tcIj48Yj4ge3sgY29udGVudHNbYWN0aXZlSW5kZXhdIH19IDwvYj48L2gxPlxyXG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjJcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cIndlZWtsaWVzLXN0ZXBzXCIgc2l6ZT1cIjFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZFwiID5cclxuICAgICAgICAgICAgICA8cC1zdGVwcyBbbW9kZWxdPVwiaXRlbXNcIiBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlSW5kZXhcIiBbc3R5bGVDbGFzc109XCInY29tcGxldGVkLScrYWN0aXZlSW5kZXhcIiBbbmdTdHlsZV09XCJ7Jy0tc3RlcC13aWR0aCc6JzUwcHgnLCctLXN0ZXAtaGVpZ2h0JzonNTBweCd9XCI+XHJcbiAgICAgICAgICAgICAgPC9wLXN0ZXBzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwibWFyZ2luLXRvcDogLTM1cHg7XCJzaXplPVwiMTJcIiBzaXplU209XCI4XCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCI4XCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjVcIiBvZmZzZXRMZz1cIjNcIiBvZmZzZXRYbD1cIjNcIiBvZmZzZXRNZD1cIjFcIj5cclxuICAgICAgICAgICAgPHAtZGl2aWRlcj48L3AtZGl2aWRlcj5cclxuICAgICAgICAgIDwvaW9uLWNvbD4gICAgICBcclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMFwiPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVTbT1cIjhcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjhcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNVwiIG9mZnNldExnPVwiM1wiIG9mZnNldFhsPVwiM1wiIG9mZnNldE1kPVwiMVwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtd29yay1zZWFyY2gtcXVlc3Rpb24tdjIgICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhZXJyb3JNc2dcIiAoc3VjY2Vzcyk9XCJnb1RvV2Vla2x5Q2VydCgpXCIgW3Nob3dDb3VudGVyXT1cInRydWVcIiAoaGFzSGlyZWRTdGF0dXMpPVwiaGFzSGlyZWRTdGF0dXMoJGV2ZW50KVwiPjwvYXBwLXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAxXCI+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiNS4yNVwiIHNpemVYbD1cIjUuMjVcIiBvZmZzZXRMZz1cIjNcIiBvZmZzZXRYbD1cIjNcIiBvZmZzZXRNZD1cIjFcIj4gICBcclxuICAgICAgICAgICAgICA8YXBwLWZvcm0tYnVpbGRlciAjd2Vla2x5UXVlc3Rpb25zIFtmbG93S2V5XT1cIid3ZWVrbHktY2VydCdcIiBbYXV0b1NhdmVdPVwidHJ1ZVwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIiBbaGlkZUhlYWRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbaGlkZUZvb3Rlcl09XCJ0cnVlXCIgW3NpemVYc109XCIxMlwiIFtzaXplU21dPVwiMTJcIiBbc2l6ZU1kXT1cIjEyXCIgW3NpemVMZ109XCIxMlwiIFtzaXplWGxdPVwiMTJcIiBbb2Zmc2V0WGxdPVwiMFwiIFtvZmZzZXRMZ109XCIwXCIgXHJcbiAgICAgICAgICAgICAgIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiIFtkYXRhXT1cImRhdGFUb0xvYWRcIiBcclxuICAgICAgICAgICAgICAgW211bHRpTW9kZV09XCJ0cnVlXCIgW3JlYWRPbmx5RmllbGRzXT1cInJlYWRPbmx5RmllbGRzXCIgKG9uTG9hZENvbXBsZXRlKT1cImxvYWRDb21wbGV0ZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+ICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgIDwhLS0gV2Vla2x5IEVhcm5pbmdzIHJlbWluZGVyIHBvcHVwIC0gc2hvd24gZXZlcnkgd2VlayBleGNlcHQgZm9yIHdhaXRpbmcgcGVyaW9kIHdlZWsgLS0+XHJcbiAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cIndlZWtseVdvcmtQZXJmb3JtZWRQb3B1cEZsYWdcIj5cclxuICAgICAgICAgICAgPGFwcC13ZWVrbHktd29yay1wZXJmb3JtZWQtcG9wdXAgW3Nob3dXZWVrbHlXb3JrUGVyZm9ybWVkUG9wdXBdPVwidHJ1ZVwiPjwvYXBwLXdlZWtseS13b3JrLXBlcmZvcm1lZC1wb3B1cD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgIDxpb24tZ3JpZCAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDJcIj5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNlwiIG9mZnNldExnPVwiM1wiIG9mZnNldFhsPVwiM1wiIG9mZnNldE1kPVwiMVwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtYWNrbm93bGVkZ2VtZW50LW1zICpuZ0lmPVwic2hvd0Fja1wiIChzdWNjZXNzKT1cImZpbGVXZWVrbHlDZXJ0RG9uZSgkZXZlbnQpXCIgKG9uQ2xvc2UpPVwiY2xvc2VBY2soKVwiPlxyXG4gICAgICAgICAgICAgIDwvYXBwLWFja25vd2xlZGdlbWVudC1tcz4gICBcclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgIDxhcHAtbXVsdGktcXVlc3Rpb25uYWlyZSBbcWVRdWVyeU1vZGVsc109XCJxZVF1ZXJ5TW9kZWxzXCIgKm5nSWY9XCJpc09wZW5RZVwiIFxyXG4gICAgKG9uQ29tcGxldGUpPVwib3BlblN1bW1hcnlQb3N0UXVlc3Rpb25uYWlyZXMoJGV2ZW50KVwiIChtb2RlbENhbmNlbCk9XCJvblFlQ2xvc2UoKVwiIFxyXG4gICAgW2hlYWRlcl09XCInRm9sbG93LXVwIFF1ZXN0aW9ucycgfCB0cmFuc2xhdGVcIiBbc2hvd1F1ZXN0aW9uTnVtYmVyXT1cInRydWVcIj48L2FwcC1tdWx0aS1xdWVzdGlvbm5haXJlPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFpc01TKClcIj5cclxuICAgICAgICA8YXBwLWFja25vd2xlZGdlbWVudC12MiAqbmdJZj1cInNob3dBY2tcIiAoc3VjY2Vzcyk9XCJmaWxlV2Vla2x5Q2VydERvbmUoJGV2ZW50KVwiIChvbkNsb3NlKT1cImNsb3NlQWNrKClcIj5cclxuICAgICAgICA8L2FwcC1hY2tub3dsZWRnZW1lbnQtdjI+IFxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxhcHAtY29uZmlybWF0aW9uICpuZ0lmPVwic2hvd0NvbmZpcm1hdGlvblwiIChvbkNsb3NlKT1cImNsb3NlQ29uZmlybWF0aW9uUG9wdXAoKVwiIFtkYXRhXT1cImNvbmZpcm1hdGlvbkRhdGFcIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiPjwvYXBwLWNvbmZpcm1hdGlvbj5cclxuICAgICAgXHJcbiAgICAgIDxhcHAtaW50ZXJpbS1jb25maXJtYXRpb24gKm5nSWY9XCJzaG93SW50ZXJpbUNvbmZpcm1hdGlvblwiIChvbkNsb3NlKT1cImNsb3NlQ29uZmlybWF0aW9uUG9wdXAoKVwiIChvbk5leHQpPVwibmF2aWdhdGVUb1dlZWtsaWVzKCRldmVudClcIiBbZGF0YV09XCJjb25maXJtYXRpb25EYXRhXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIj48L2FwcC1pbnRlcmltLWNvbmZpcm1hdGlvbj5cclxuXHJcbiAgICAgIDxpb24tZm9vdGVyICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVhsPVwiNVwiIG9mZnNldFhsPVwiMVwiIHNpemVMZz1cIjZcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImdvSG9tZSgpXCI+Q2xvc2VcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHNpemU9XCIxMlwiIHNpemVYbD1cIjVcIiBzaXplTGc9XCI2XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwic29saWRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cIm9wZW5OZXh0UGFnZSgpXCIgPlN1Ym1pdFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICA8L2lvbi1mb290ZXI+XHJcbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNNUygpXCI+XHJcbiAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tcGFkZGluZyBidXR0b25zLXJvd1wiPlxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cIndlZWtsaWVzLWxlZnQtYnV0dG9uc1wiIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGlkPVwiY2xvc2VcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDBcIiAoY2xpY2spPVwiZ29Ib21lKClcIj5DbG9zZVxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGlkPVwiYmFja1wiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiICpuZ0lmPVwiYWN0aXZlSW5kZXggIT0gMFwiIChjbGljayk9XCJhY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4IC0gMVwiPlxyXG4gICAgICAgICAgICAgIEJhY2s8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cIndlZWtsaWVzLXJpZ2h0LWJ1dHRvbnNcIiBzaXplPVwiM1wiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cIm5leHRcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJvcGVuTmV4dFBhZ2UoKVwiICpuZ0lmPVwiYWN0aXZlSW5kZXggIT0gMlwiPk5leHRcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cInN1Ym1pdFwiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwic29saWRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInNob3dBY2tub3dsZWRnZW1lbnQoKVwiICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMlwiPlxyXG4gICAgICAgICAgICAgIFN1Ym1pdDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+PC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPC9zZWN0aW9uPlxyXG4gICAgPC9kaXY+Il19
842
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LWNlcnRpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS1jZXJ0aWZpY2F0aW9uL3dlZWtseS1jZXJ0aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktY2VydGlmaWNhdGlvbi93ZWVrbHktY2VydGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBSXBILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDcEJySCx3Q0FBa0Y7O0lBQXZDLCtCQUFpQjs7O0lBQ3hELDhCQUErQztJQUMzQyxpQ0FBdUM7SUFDM0MsaUJBQU07OztJQUVOLDhCQUF1RztJQUNyRyw4QkFBMEcsYUFBQTtJQUU1RyxpQkFBTTs7O0lBREMsZUFBeUQ7SUFBekQsd0dBQXlEOzs7SUFNMUQsbUNBQXVILGFBQUE7SUFDN0YsWUFBd0Q7O0lBQUEsaUJBQUssRUFBQTs7O0lBQTdELGVBQXdEO0lBQXhELDJGQUF3RDs7O0lBR2xGLG1DQUEyRyxhQUFBO0lBQ2pGLFlBQXVFOztJQUFBLGlC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QiwwQkFBMEI7MkJBRzFCLGtCQUFrQjs7Ozs7Ozs7O1lDeEMvQiwyR0FBa0YsZ0VBQUEsZ0VBQUEsa0VBQUE7O1lBQTdELHlDQUFvQjtZQUMvQixlQUFlO1lBQWYsb0NBQWU7WUFJZixlQUE0QjtZQUE1QixxREFBNEI7WUFLNUIsZUFBNkI7WUFBN0Isc0RBQTZCOzs7aUZEcUIxQiw0QkFBNEI7Y0FMeEMsU0FBUzsyQkFDRSwwQkFBMEI7c1NBT3BDLG1CQUFtQjtrQkFEcEIsU0FBUzttQkFBQyw2QkFBNkI7WUFLdEMsMEJBQTBCO2tCQUR6QixTQUFTO21CQUFDLDBCQUEwQjtZQUlyQyxnQkFBZ0I7a0JBRGYsU0FBUzttQkFBQyxrQkFBa0I7WUFHQyxlQUFlO2tCQUE1QyxTQUFTO21CQUFDLGlCQUFpQjs7a0ZBWmpCLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGliQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xpYkNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xyXG5pbXBvcnQgeyBDbGFpbWFudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xhaW1hbnQtY29udGV4dC9jbGFpbWFudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwL2hlbHAuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsIH0gZnJvbSAnLi4vLi4vL21vZGVscy9xdWVzdGlvbm5haXJlL1F1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEhlbHBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvSGVscENvbnN0YW50cyc7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRTZXJ2aWNlVjIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWVrbHktY2VydC93ZWVrbHktY2VydC12Mi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3VtbWFyeUNvbXBvbmVudFYyIH0gZnJvbSAnLi4vd2Vla2x5LXN1bW1hcnktdjIvc3VtbWFyeS5jb21wb25lbnQtdjInO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlclBhZ2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3F1ZXN0aW9ubmFpcmUvZm9ybS1idWlsZGVyL2Zvcm0tYnVpbGRlci5wYWdlJztcclxuaW1wb3J0IHsgV29ya1NlYXJjaFF1ZXN0aW9uQ29tcG9uZW50VjIgfSBmcm9tICcuLi93ZWVrbHktd29yay1zZWFyY2gtcXVlc3Rpb24tdjIvd29yay1zZWFyY2gtcXVlc3Rpb24uY29tcG9uZW50LXYyJztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dlZWtseS1jZXJ0L3dlZWtseS1jZXJ0aWZpY2F0aW9uLXYyLW1vZGVsJztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydEVsaWdpYmlsaXR5TW9kZWxWMiB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93ZWVrbHktY2VydC1lbGlnaWJpbGl0eS12Mi1tb2RlbCc7XHJcbmltcG9ydCB7IFN0YXR1c01vZGVsIH0gZnJvbSAnLi4vLi4vL21vZGVscy9xdWVzdGlvbm5haXJlL1N0YXR1c01vZGVsJztcclxuaW1wb3J0IHsgQWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3dlZWtseS1hY2tub3dsZWRnZW1lbnQtbXMvYWNrbm93bGVkZ2VtZW50LW1zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdvcmtTZWFyY2hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93b3JrLXNlYXJjaC12Mi1tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgV29ya1NlYXJjaFJlY29yZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dlZWtseS1jZXJ0L3dvcmstc2VhcmNoLXJlY29yZC12Mi1tb2RlbCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13ZWVrbHktY2VydGlmaWNhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dlZWtseS1jZXJ0aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vd2Vla2x5LWNlcnRpZmljYXRpb24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXZWVrbHlDZXJ0aWZpY2F0aW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG5AVmlld0NoaWxkKFdvcmtTZWFyY2hRdWVzdGlvbkNvbXBvbmVudFYyKVxyXG4gIHdvcmtTZWFyY2hDb21wb25lbnQ6IFdvcmtTZWFyY2hRdWVzdGlvbkNvbXBvbmVudFYyO1xyXG5cclxuICAvL1RyaWdnZXJpbmcgU3VibWl0IGluIHRoZSBjb21wb25lbnRcclxuICBAVmlld0NoaWxkKEFja25vd2xlZGdlbWVudE1zQ29tcG9uZW50KVxyXG4gIGFja25vd2xlZGdlbWVudE1zQ29tcG9uZW50OiBBY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChTdW1tYXJ5Q29tcG9uZW50VjIpXHJcbiAgc3VtbWFyeUNvbXBvbmVudDogU3VtbWFyeUNvbXBvbmVudFYyO1xyXG5cclxuICBAVmlld0NoaWxkKCd3ZWVrbHlRdWVzdGlvbnMnKSB3ZWVrbHlRdWVzdGlvbnM6IEZvcm1CdWlsZGVyUGFnZVxyXG5cclxuICBwdWJsaWMgc2hvd0FjazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Q29uZmlybWF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGNvbmZpcm1hdGlvbkRhdGE6IGFueTtcclxuXHJcbiAgcHVibGljIGl0ZW1zOiBNZW51SXRlbVtdO1xyXG4gIHB1YmxpYyBjb250ZW50czogc3RyaW5nW107XHJcbiAgcHVibGljIGFjdGl2ZUluZGV4ID0gMDtcclxuICBwdWJsaWMgZXJyb3JNc2c6IHN0cmluZztcclxuICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dXb3JrU2VhcmNoOiBib29sZWFuO1xyXG4gIHB1YmxpYyBkeW5hbWljUGFyYW06IGFueTtcclxuICBpc09wZW5RZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHFlUXVlcnlNb2RlbHM6IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsW107XHJcbiAgcG90ZW50aWFsSXNzdWVzOiBudW1iZXJbXTtcclxuICBzdGF0dXNNb2RlbDogU3RhdHVzTW9kZWw7XHJcbiAgcmVhZE9ubHlGaWVsZHM6IHN0cmluZ1tdID0gbnVsbDtcclxuICByZWFkT25seURhdGE6IGFueTtcclxuICBkYXRhVG9Mb2FkOiBhbnk7XHJcbiAgcHVibGljIHdvcmtTZWFyY2hXYWl2ZWQ6IGFueTtcclxuICBwdWJsaWMgd2FpdmVyUmVhc29uOiBTdHJpbmcgPSBudWxsO1xyXG4gIHB1YmxpYyB3b3JrU2VhcmNoRGF0YU1zOiBXb3JrU2VhcmNoTW9kZWw7XHJcblxyXG4gIHB1YmxpYyBtdWx0aXBsZVdlZWtzRHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dJbnRlcmltQ29uZmlybWF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIG51bWJlck9mTXVsdGlwbGVXZWVrc0R1ZTogbnVtYmVyO1xyXG4gIHJlY2VpdmVkRGF0YTogYW55O1xyXG4gIHB1YmxpYyBkaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXJzZWRNYXhSVFdEYXRlOiBhbnk7XHJcbiAgcHVibGljIHdlZWtseVdvcmtQZXJmb3JtZWRQb3B1cEZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB3b3JrU2VhcmNoUmVjb3JkczogV29ya1NlYXJjaFJlY29yZE1vZGVsW107XHJcblxyXG4gIGNvdW50ID0gMDtcclxuICByZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3Y1NlcnZpY2U6IFdlZWtseUNlcnRTZXJ2aWNlVjIsIHB1YmxpYyBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgdXRpbDogVXRpbFNlcnZpY2UsIHByaXZhdGUgbmF2OiBOYXZDb250cm9sbGVyLFxyXG4gICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwdWJsaWMgaHM6IEhlbHBTZXJ2aWNlLCBwdWJsaWMgbHM6IExvZ2luU2VydmljZSwgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ2xhaW1hbnRDb250ZXh0U2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZXBpcGU6RGF0ZVBpcGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMud2NTZXJ2aWNlLnJlc2V0V2Vla2x5Q2VydERhdGEoKTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLndjU2VydmljZS5jaGVja1dlZWtseUVsaWdpYmlsaXR5KClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzV2Vla2x5Q2VydEVsaWdpYmlsdHlTdWNjZXNzKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzV2Vla2x5Q2VydEVsaWdpYmlsaXR5RXJyb3IoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25TdGVwQ2hhbmdlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NXZWVrbHlDZXJ0RWxpZ2liaWx0eVN1Y2Nlc3MocmVzOiBXZWVrbHlDZXJ0RWxpZ2liaWxpdHlNb2RlbFYyKSB7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YSA9IHJlcztcclxuICAgIHRoaXMuZXJyb3JNc2cgPSBudWxsO1xyXG4gICAgdGhpcy5nZXRMYWJlbE1heFJUV0RhdGUoKTtcclxuICAgIHRoaXMuZHluYW1pY1BhcmFtID0ge1xyXG4gICAgICAnc2F0dXJkYXlfZGF0ZSc6IHRoaXMud2NTZXJ2aWNlLmdldFNhdHVyZGF5RGF0ZUFzU3RyaW5nKCksXHJcbiAgICAgICdzdW5kYXlfZGF0ZSc6IHRoaXMud2NTZXJ2aWNlLmdldFN1bmRheURhdGVBc1N0cmluZygpLFxyXG4gICAgICAnbWluX3J0d19kYXRlJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEubWluQWxsb3dlZFJ0d0RhdGUsXHJcbiAgICAgICdtYXhfcnR3X2RhdGUnOiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5tYXhBbGxvd2VkUnR3RGF0ZSxcclxuICAgICAgJ3BlbnNpb25fZW1wbG95ZXJzJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEucGVuc2lvbkVtcGxveWVycyxcclxuICAgICAgJ2R1YURlY2xhcmF0aW9uJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuZHVhRGVjbGFyYXRpb24sXHJcbiAgICAgICdjbGFpbVdlZWtFbmREYXRlJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuY2xhaW1XZWVrRW5kRGF0ZSxcclxuICAgICAgJ2NsYWltYW50SWQnOiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5jbGFpbWFudElkLFxyXG4gICAgICAnbGFiZWxfbWF4UnR3RGF0ZSc6IHRoaXMucGFyc2VkTWF4UlRXRGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gaWYgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0byB3ZWVrbGllcyBmcm9tIGludGVyaW0gY29uZmlybWF0aW9uIHRvIGNvbnRpbnVlIGZpbGluZyBkYXRhIHdpbGwgYmUgc3RvcmVkXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdG9yZWREYXRhID0gbG9jYWxTdG9yYWdlPy5nZXRJdGVtKCdpbnRlcmltQ29uZmlybWF0aW9uRGF0YScpO1xyXG4gICAgICBpZiAoc3RvcmVkRGF0YSkge1xyXG4gICAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVVUklDb21wb25lbnQoYXRvYihzdG9yZWREYXRhKSk7XHJcbiAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSBKU09OLnBhcnNlKGRlY29kZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNQYXJhbS5jbGFpbWFudElkICE9PSB0aGlzLnJlY2VpdmVkRGF0YS5jbGFpbWFudElkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlY2VpdmVkRGF0YSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTFMgcGFyc2luZyBmYWlsZWQ6JywgZXJyKTtcclxuICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAgIC8vIGNoZWNraW5nIGRhdGEgZm9yIGZsYWcgdG8gY29udGludWUgdG8gZmlsZSBmb3IgbXVsdGlwbGUgd2Vla3NcclxuICAgICAgaWYodGhpcy5yZWNlaXZlZERhdGEgJiYgKHRoaXMuZHluYW1pY1BhcmFtLmNsYWltYW50SWQgPT0gdGhpcy5yZWNlaXZlZERhdGEuY2xhaW1hbnRJZCkgJiZcclxuICAgICAgICB0aGlzLnJlY2VpdmVkRGF0YS5jb250aW51ZVRvRmlsZUZvck11bHRpcGxlV2Vla3MgPT0gdHJ1ZSlcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRDZXJ0aWZpY2F0aW9uVG9GaWxlQ291bnQgPSB0aGlzLnJlY2VpdmVkRGF0YS5jdXJyZW50TnVtYmVyRmlsaW5nOyBcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS50b3RhbFRvQ2VydGlmeSA9IHRoaXMucmVjZWl2ZWREYXRhLnRvdGFsO1xyXG4gICAgICAgIC8vIHRoaXMubnVtYmVyT2ZNdWx0aXBsZVdlZWtzRHVlID0gdGhpcy5yZWNlaXZlZERhdGEuY291bnQ7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkUgU1wiKTtcclxuICAgICAgICAvLyBpZiBtb3JlIHdlZWtzIGFyZSBkdWUgc2V0IHRoZSBuZXh0IHN1bmRheSBhbmQgc2F0dXJkYXkgZGF5c1xyXG4gICAgICAgIGlmKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZC5sZW5ndGg+MSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5uZXh0X3NhdHVyZGF5ID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkWzFdO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubmV4dF9zdW5kYXkgPSB0aGlzLmdldFByZXZpb3VzU3VuZGF5KHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZFsxXSlcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm51bWJlck9mTXVsdGlwbGVXZWVrc0R1ZSA9IHRoaXMucmVjZWl2ZWREYXRhLnRvdGFsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgICAgLy8gaWYgY2xhaW1hbnQgZmlsaW5nIGFuZCBoYXMgbXVsdGlwbGUgY2VydGlmaWNhdGlvbnMgZHVlXHJcbiAgICAgIC8vIHdpbGwgZ28gdGhyb3VnaCBpbnRlcmltIHByb2Nlc3MgdW50aWwgZmluYWwgbGF0ZXN0IHdlZWsgZmlsZWRcclxuICAgICAgZWxzZSBpZih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoPjEpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLm51bWJlck9mTXVsdGlwbGVXZWVrc0R1ZSA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZC5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5tdWx0aXBsZVdlZWtzRHVlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRfc2F0dXJkYXkgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWRbMV07XHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubmV4dF9zdW5kYXkgPSB0aGlzLmdldFByZXZpb3VzU3VuZGF5KHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZFsxXSlcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICBpZiAoTGliQ29uc3RhbnRzLmxlZ2FjeU1lbnUgPT0gJ2ZhbHNlJykge1xyXG4gICAgICAvL3RoaXMuaHMuc2hvd0RpYWxvZ0lmUHJlZmVyZW5jZUFsbG93KEhlbHBDb25zdGFudHMuV0VFS0xZX0hFTFApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaGFuZGxlSGlkZGVuRmllbGRzKHJlcyk7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplRGF0YUZvcldvcmtTZWFyY2hGb3JtKCk7XHJcbiAgICBpZiAodGhpcy5pc01TKCkpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IFtcclxuICAgICAgICB7IGxhYmVsOiAnJywgY29tbWFuZDogKCkgPT4geyB0aGlzLm9uU3RlcENoYW5nZSgwKTsgfSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCBjb21tYW5kOiAoKSA9PiB7IHRoaXMub25TdGVwQ2hhbmdlKDEpOyB9IH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIGNvbW1hbmQ6ICgpID0+IHsgdGhpcy5vblN0ZXBDaGFuZ2UoMik7IH0gfVxyXG4gICAgICBdO1xyXG4gICAgfSBcclxuXHJcbiAgICB0aGlzLmNvbnRlbnRzID0gWycgICBXb3JrIFNlYXJjaCBBY3Rpdml0aWVzJywgJyAgIFdlZWtseSBRdWVzdGlvbnMnLCAnICAgQWNrbm93bGVkZ2UgJiBDZXJ0aWZ5J107XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbE1heFJUV0RhdGUoKXtcclxuICAgIGlmKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLm1heEFsbG93ZWRSdHdEYXRlICE9IG51bGwpe1xyXG4gICAgICB0aGlzLnBhcnNlZE1heFJUV0RhdGUgPSBuZXcgRGF0ZSh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5tYXhBbGxvd2VkUnR3RGF0ZSk7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEubWF4QWxsb3dlZFJ0d0RhdGUuc3BsaXQoJy0nKTtcclxuICAgICAgbGV0IHBhcnNlZERhdGUgPSBuZXcgRGF0ZSgrcGFydHNbMl0sICtwYXJ0c1swXSAtIDEsICtwYXJ0c1sxXSk7XHJcbiAgICAgIHBhcnNlZERhdGUuc2V0RGF0ZShwYXJzZWREYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICB0aGlzLnBhcnNlZE1heFJUV0RhdGUgPSB0aGlzLmRhdGVwaXBlLnRyYW5zZm9ybShwYXJzZWREYXRlLCAnTU0vZGQveXl5eScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc1dlZWtseUNlcnRFbGlnaWJpbGl0eUVycm9yKGVycjogYW55KSB7XHJcbiAgICBpZiAoZXJyLm1zZyAhPSBudWxsICYmIGVyci5tc2dbMF0gPT0gJ05vIFdlZWtzIGFyZSBwZW5kaW5nIHRvIGJlIGZpbGVkLicpIHtcclxuICAgICAgdGhpcy51dGlsLmdldFN0YXRlKCk9PT0nQ1QnID8gdGhpcy5uYXYubmF2aWdhdGVSb290KFwid2Vla2x5LW5vdC1lbGlnaWJsZVwiKSA6IHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIndvcmstc2VhcmNoLWpvdXJuYWxcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVycm9yTXNnID0gZXJyLm1zZztcclxuICAgIH1cclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhID0gbnVsbDtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplRGF0YUZvcldvcmtTZWFyY2hGb3JtKCkge1xyXG4gICAgdGhpcy53b3JrU2VhcmNoV2FpdmVkID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuaXNXb3JrU2VhcmNoV2FpdmVkO1xyXG4gICAgdGhpcy53YWl2ZXJSZWFzb24gPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53YWl2ZXJSZWFzb247XHJcbiAgICAvL1JFRU0gQUNUSVZJVFkgVFlQRSBDT1VOVCBBU1NJR05NRU5UXHJcbiAgICB0aGlzLnJlZW1Xb3JrU2VhcmNoUmVjb3JkQ291bnQgPSBOdW1iZXIodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGE/LmhpZFJlZW1Xb3JrU2VhcmNoUmVjb3JkQ291bnQgPz8gMCk7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5oaWRSZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID0gdGhpcy5yZWVtV29ya1NlYXJjaFJlY29yZENvdW50O1xyXG4gICAgLy9cclxuICAgIHRoaXMud2NTZXJ2aWNlLmdldENsYWltYW50V29ya1NlYXJjaEpvdXJuYWxSZWNvcmRzKHRoaXMud2NTZXJ2aWNlLmdldFNhdHVyZGF5RGF0ZUFzU3RyaW5nKCkpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuXHRcdFx0ICAgICAgICBjb25zb2xlLmVycm9yKFwiV1NSXCIpO1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndvcmtTZWFyY2hKb3VybmFsID0gcmVzO1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hSZWNvcmRzID0gcmVzLndvcmtTZWFyY2hSZWNvcmRzO1xyXG4gICAgICAgIGlmICh0aGlzLmlzTUUoKSAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoUmVjb3Jkcykge1xyXG4gICAgICAgICAgY29uc3QgaGFzU3RhcnRlZFdvcmtpbmcgPSAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaFJlY29yZHMgPz8gW10pLnNvbWUoXHJcbiAgICAgICAgICAgIHJlYyA9PiByZWM/LnNlYXJjaFJlc3VsdCA9PT0gJ1NUV0snXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYoaGFzU3RhcnRlZFdvcmtpbmcpe1xyXG4gICAgICAgICAgICB0aGlzLmhhc1dvcmtlZEZ1bGxUaW1lT3JTdGFydGVkV29ya2luZ1N0YXR1cyh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICB0aGlzLndjU2VydmljZS53b3JrU2VhcmNoSm91cm5hbCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBcclxuICAgIGlmICh0aGlzLmlzTVMoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5OZXh0UGFnZSgpIHtcclxuICAgIFx0Y29uc29sZS5lcnJvcihcIk9OUFwiKTtcclxuICAgIGlmICh0aGlzLndvcmtTZWFyY2hDb21wb25lbnQpIHtcclxuICAgICAgaWYgKHRoaXMud2NTZXJ2aWNlLmdldERpc3BsYXlXb3JrU2VhcmNoU2NyZWVuKCkpIHtcclxuICAgICAgICB0aGlzLndvcmtTZWFyY2hDb21wb25lbnQuc3VibWl0Rm9ybSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ29Ub1dlZWtseUNlcnQoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLndvcmtTZWFyY2hXYWl2ZWQpIHtcclxuICAgICAgdGhpcy5nb1RvV2Vla2x5Q2VydCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nb1RvV2Vla2x5Q2VydCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub1dlZWtseUNlcnQoKSB7XHJcblx0XHRcdCAgICBjb25zb2xlLmVycm9yKFwiR1RXXCIpO1xyXG4gICAgaWYgKHRoaXMuaXNNUygpKSB7XHJcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID09IDApIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy53ZWVrbHlRdWVzdGlvbnMpIHtcclxuICAgICAgICAgIHRoaXMuY291bnQgPSB0aGlzLmNvdW50ICsgMTtcclxuICAgICAgICAgIGlmKHRoaXMuY291bnQgPiAxICYmIHRoaXMubHMuaXNDc3IoKSl7XHJcbiAgICAgICAgICAgIHRoaXMud2Vla2x5UXVlc3Rpb25zLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlRm9ybS5mb3JtLmNvbnRyb2xzWydoaWRDc3JGaXJzdFBhc3MnXS5zZXRWYWx1ZSgnWScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy53ZWVrbHlRdWVzdGlvbnMuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMud2Vla2x5UXVlc3Rpb25zKSB7XHJcbiAgICAgICAgdGhpcy53ZWVrbHlRdWVzdGlvbnMuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gXHJcbiAgc3VjY2Vzcyh3ZWVrbHlRdWVzdGlvbnNSZXNwb25zZSkge1xyXG4gICAgY29uc3QgZm9ybURhdGE6IFdlZWtseUNlcnRpZmljYXRpb25Nb2RlbCA9XHJcbiAgICAgIEpTT04ucGFyc2Uod2Vla2x5UXVlc3Rpb25zUmVzcG9uc2Uuc2NyZWVuUXVlc3Rpb25uYWlyZURhdGFbMF0pO1xyXG4gICAgZm9ybURhdGEud29ya1NlYXJjaFJlY29yZHMgPSB0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3JkcygpO1xyXG4gICAgZm9ybURhdGEud29ya1NlYXJjaERhdGEgPSB0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoRGF0YSgpO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEgPSBmb3JtRGF0YTtcclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmNsYWltV2Vla0VuZERhdGUgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrVG9DZXJ0aWZ5O1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuaGlkSW5BcHByb3ZlZFRyYWluaW5nID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuaGlkSW5BcHByb3ZlZFRyYWluaW5nO1xyXG4gICAgdGhpcy5vcGVuRm9sbG93dXBRdWVzdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIG9wZW5Gb2xsb3d1cFF1ZXN0aW9ucygpIHtcclxuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5zaG93V29ya1NlYXJjaFNjcmVlbiA9IHRoaXMud2NTZXJ2aWNlLmdldERpc3BsYXlXb3JrU2VhcmNoU2NyZWVuKCk7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID0gJzAnO1xyXG4gICAgaWYgKHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzQ291bnQoKSA+IDApIHtcclxuICAgICAgY29uc3QgbGlzdCA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKCkgPz8gW107XHJcbiAgICAgIGNvbnN0IGxvY2FsUmVlbSA9IGxpc3QuZmlsdGVyKHIgPT4gciAmJiAoci5hY3Rpdml0eVR5cGUgPT09ICdVTk9OJyAmJiByLmlzSW5Db250YWN0V2l0aFVuaW9uID09PSAnTicpKS5sZW5ndGg7XHJcbiAgICAgIGlmKHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzQ291bnQoKT4xIHx8IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzQ291bnQoKT09PTEgJiYgbG9jYWxSZWVtPT09MCkge1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hEYXRhLmlzV29ya1NlYXJjaFBlcmZvcm1lZEZsYWcgPSAnMSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID0gJzAnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLndjU2VydmljZS5nZXRFbXBsb3llclJlY29yZHNDb3VudCgpID4gMCkge1xyXG4gICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrUGVyZm9ybWVkID0gJ1knO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZCA9ICdOJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrUGVyZm9ybWVkU2VhcE5vdFBhcnR0aW1lID0gKHRoaXMud2NTZXJ2aWNlLmdldEVtcGxveWVyUmVjb3Jkc0NvdW50KCkgPiAwICYmIHRoaXMud2NTZXJ2aWNlLmdldEhpZElzU2VhcFBhcnRpY2lwYW50KCkpID8gJ1knIDogJ04nO1xyXG5cclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmhpZElzU2VhcFBhcnRpY2lwYW50PT0nWScpe1xyXG4gICAgICAvL0RvbmUgdG8gaGFuZGxlIG5ldyB2ZXJiaWFnZSBmb3Igd29ya1BlcmZvcm1lZCBmb3IgU2VhcCBQYXJ0aWNpcGFudHMuXHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrUGVyZm9ybWVkID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZFNlYXBOb3RQYXJ0dGltZTtcclxuXHJcbiAgICAvL0RvbmUgdG8gaGFuZGxlIG5ldyB2ZXJiaWFnZSBmb3IgU0VBUCBQYXJ0aWNpcGFudHMgZm9yIGF2YWlsYWJsZSBxdWVzdGlvbi5cclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmF2YWlsYWJsZSA9ICh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5hdmFpbGFibGVTZWFwKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLndjU2VydmljZS5kZXRlcm1pbmVRdWVzdGlvbm5pYXJlVG9PcGVuKCkuc3Vic2NyaWJlKFxyXG4gICAgICByZXMgPT4ge1xyXG5cdCAgICAgICAgY29uc29sZS5lcnJvcihcInFlcyBTdWNjZXNzXCIpO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzTW9kZWwgPSByZXMuc3RhdHVzTW9kZWw7XHJcbiAgICAgICAgdGhpcy5xZVF1ZXJ5TW9kZWxzID0gcmVzLnN0YXR1c01vZGVsLnFlUXVlcnlNb2RlbHM7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEucG90ZW50aWFsSXNzdWVzID0gcmVzLnBvdGVudGlhbElzc3VlSWRzO1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLnBlbnNpb25EZW5pZWRQb3RlbnRpYWxJc3N1ZXMgPSByZXMucGVuc2lvbkRlbmllZFBvdGVudGlhbElzc3VlcztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5ib251c1BheVBvdGVudGlhbElzc3VlcyA9IHJlcy5ib251c1BheVBvdGVudGlhbElzc3VlcztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5vdGhlclBheVBvdGVudGlhbElzc3VlcyA9IHJlcy5vdGhlclBheVBvdGVudGlhbElzc3VlcztcclxuXHJcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKCkgPz8gW107XHJcbiAgICAgICAgY29uc3QgbG9jYWxSZWVtID0gbGlzdC5maWx0ZXIociA9PiByICYmIChyLmFjdGl2aXR5VHlwZSA9PT0gJ0pCRlInIHx8IHIuYWN0aXZpdHlUeXBlID09PSAnQ1NWVycpKS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyUmVlbSA9IE51bWJlcih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YT8uaGlkUmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudCA/PyAwKTtcclxuXHRcdGlmICh0aGlzLnN0YXR1c01vZGVsLnNob3dRZSkge1xyXG4gICAgICAgICAgdGhpcy5pc09wZW5RZSA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuZW1wbG95ZXJEZXRhaWxzTGlzdCAhPSBudWxsXHJcbiAgICAgICAgICAgICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmVtcGxveWVyRGV0YWlsc0xpc3QubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAmJiByZXMudGVtcEVtcGxveWVyU2VwUG90ZW50aWFsSXNzdWVNYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS50ZW1wRW1wbG95ZXJTZXBQb3RlbnRpYWxJc3N1ZU1hcCA9IHJlcy50ZW1wRW1wbG95ZXJTZXBQb3RlbnRpYWxJc3N1ZU1hcDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoKGxvY2FsUmVlbSArIHNlcnZlclJlZW0pID4gMykge1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlblFlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Fja25vd2xlZGdlbWVudCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93QWNrbm93bGVkZ2VtZW50KCk7XHJcbiAgICAgIH1cclxuICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoZXJyLm1zZyk7XHJcbiAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9wZW5TdW1tYXJ5UG9zdFF1ZXN0aW9ubmFpcmVzKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCAmJiBldmVudC5zaXplID4gMCkge1xyXG4gICAgICBpZiAoZXZlbnQuaGFzKDkwMDEpKSB7XHJcbiAgICAgICAgbGV0IHdvcmtTZWFyY2hSZWFzb24gPSBldmVudC5nZXQoOTAwMSkucmVhc29uSW5hZGVxdWF0ZVdvcmtTZWFyY2g7XHJcbiAgICAgICAgaWYodGhpcy5pc0NUKCkpe1xyXG4gICAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEucmVhc29uSW5hZGVxdWF0ZVdvcmtTZWFyY2ggPSB3b3JrU2VhcmNoUmVhc29uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9PSAnMSdcclxuICAgICAgICAgICYmIHRoaXMud2NTZXJ2aWNlLmNoZWNrSWZJbmFkZXF1YXRlV29ya1NlYXJjaFF1ZXN0aW9ubmFpcmVTaG91bGRCZU9wZW5lZCgpXHJcbiAgICAgICAgICAmJiB0aGlzLmlzTVMoKSkge1xyXG4gICAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEucmVhc29uSW5hZGVxdWF0ZVdvcmtTZWFyY2ggPSB3b3JrU2VhcmNoUmVhc29uO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9PSAnMCcpIHtcclxuICAgICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hEYXRhLmV4cGxhaW5XaHlEaWROb3RMb29rRm9yV29yayA9IHdvcmtTZWFyY2hSZWFzb247XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChldmVudC5oYXMoMTc5KSkge1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmFkbWluTGVhdmVEZXRhaWxzID0gZXZlbnQuZ2V0KDE3OSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50Lmhhcyg5MDAyKSkge1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmFkbWluTGVhdmVEZXRhaWxzID0gZXZlbnQuZ2V0KDkwMDIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93QWNrbm93bGVkZ2VtZW50KCk7XHJcbiAgICB0aGlzLmlzT3BlblFlID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgb25RZUNsb3NlKCkge1xyXG4gICAgdGhpcy5pc09wZW5RZSA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICB9XHJcblxyXG4gIGdvVG9TdW1tYXJ5KCkge1xyXG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IDE7XHJcbiAgfVxyXG5cclxuICBjbG9zZUFjaygpIHtcclxuICAgIHRoaXMuc2hvd0FjayA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZmlsZVdlZWtseUNlcnREb25lKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNob3dBY2sgPSBmYWxzZTtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uRGF0YSA9IGV2ZW50O1xyXG4gICAgaWYodGhpcy5pc01TKCkgJiYgdGhpcy5tdWx0aXBsZVdlZWtzRHVlID09IHRydWUgJiYgdGhpcy5yZWNlaXZlZERhdGEpXHJcbiAgICB7XHJcbiAgICAgIC8vIGlmIHRoaXMgaXMgdGhlIGxhc3QgdGltZSBmaWxpbmcgd2Vla2xpZXMgdGhyb3VnaCBpbnRlcmltIGNvbmZpcm1hdGlvbiBmbG93IFxyXG4gICAgICBpZih0aGlzLnJlY2VpdmVkRGF0YS5jdXJyZW50TnVtYmVyRmlsaW5nID09IHRoaXMucmVjZWl2ZWREYXRhLnRvdGFsICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZC5sZW5ndGg9PTEpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPSBmYWxzZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlPy5yZW1vdmVJdGVtKCdpbnRlcmltQ29uZmlybWF0aW9uRGF0YScpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycil7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgcmVtb3ZpbmcgZnJvbSBMU1wiLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBpZiBtb3JlIHdlZWtzIHJlbWFpbiBmb3Igd2Vla2xpZXMgdGhyb3VnaCBpbnRlcmltIGNvbmZpcm1hdGlvbiBmbG93IFxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlY2VpdmVkRGF0YS5jb3VudCA8PSB0aGlzLnJlY2VpdmVkRGF0YS50b3RhbCAgJiYgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aD4xKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gLy8gaWYgZmlyc3QgdGltZSBmaWxpbmcgd2Vla2xpZXMgdGhyb3VnaCBpbnRlcmltIGNvbmZpcm1hdGlvbiBmbG93XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSAmJiAhdGhpcy5yZWNlaXZlZERhdGEpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuc2hvd0ludGVyaW1Db25maXJtYXRpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCghdGhpcy5pc01TKCkpIHx8ICh0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gZmFsc2UpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGNsb3NlQ29uZmlybWF0aW9uUG9wdXAoKSB7XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSlcclxuICAgIHtcclxuICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy53Y1NlcnZpY2UucmVzZXRXZWVrbHlDZXJ0RGF0YSgpO1xyXG5cclxuICAgIC8vIFRoaXMgaXMgYWRkZWQgYXMgdGhlIG5hdmlnYXRpb24gd2FzIHRvbyBxdWljayBmb3IgdGhlIGNvbmZpcm1hdGlvbiB0byBjbG9zZSBpbiB0aW1lLCBsZWF2aW5nIGNvbmZpcm1hdGlvbiBvcGVuLCBldmVuIHRob3VnaCB0aGUgcGFnZSB3YXMgdXBkYXRlZCBpbiBiYWNrZW5kXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZ29Ib21lKCksIDEwMCk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvV2Vla2xpZXMoZGF0YTogYW55KSB7XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSlcclxuICAgIHtcclxuICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICB0cnkge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlPy5zZXRJdGVtKCdpbnRlcmltQ29uZmlybWF0aW9uRGF0YScsIGRhdGEpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycil7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgYWRkZGluZyBmcm9tIExTXCIsIGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMud2NTZXJ2aWNlLnJlc2V0V2Vla2x5Q2VydERhdGEoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ29Ib21lKCkge1xyXG4gICAgaWYgKHRoaXMubHMuaXNDbGFpbWFudCgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ3dlbGNvbWU/d2NEb25lPXRydWUnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5scy5pc0NzcigpKSB7XHJcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3RXaXRoRGF0YSh0aGlzLnV0aWwuZ2V0U2VjdXJpdHlBcHBDb250ZXh0Um9vdCgpLCBcInNlYXJjaC1zc25cIiwgdGhpcy5jb250ZXh0U2VydmljZS5nZXRVbkVuY29kZWRTc24oKSwgdGhpcy5uYXYpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL3dlbGNvbWUnKTtcclxuICAgIH1cclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgfVxyXG5cclxuICBzaG93QWNrbm93bGVkZ2VtZW50KCkge1xyXG4gICAgaWYgKHRoaXMuc3VtbWFyeUNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLnN1bW1hcnlDb21wb25lbnQuc3VibWl0Rm9ybSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaXNNUygpKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IDI7XHJcbiAgICAgICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQpIHtcclxuICAgICAgICAgIHRoaXMuYWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQuc3VibWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd0FjayA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblFlU3VjY2VzcygpIHtcclxuICAgIHRoaXMuc2hvd0FjayA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpb25WaWV3V2lsbExlYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ocy5zZXRIZWxwQXZhaWxhYmlsaXR5KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGlvblZpZXdEaWRFbnRlcigpIHtcclxuICAgIHRoaXMud2NTZXJ2aWNlLnJlc2V0V2Vla2x5Q2VydERhdGEoKTtcclxuICAgIHRoaXMuaHMuc2V0SGVscEF2YWlsYWJpbGl0eSh0cnVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycikge1xyXG4gICAgdGhpcy5lcnJvck1zZyA9IGVyci5tc2c7XHJcbiAgfVxyXG5cclxuICBoYXNIaXJlZFN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgIC8vVE9ETzogVXBkYXRlIHRoaXMgZm9yIHJldHVybiB0byB3b3JrIGZvciBoaXJlZCBjYXNlc1xyXG4gICAgIGlmICghdGhpcy5pc01FKCkpIHtcclxuICAgICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IHN0YXR1cyA/IFsncmV0dXJuaW5nVG9Xb3JrJ10gOiBudWxsO1xyXG4gICAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seURhdGEgPSB7IHJldHVybmluZ1RvV29yazogXCJZXCJ9O1xyXG4gICAgICB9XHJcbiAgICB9IFxyXG4gIH1cclxuXHJcbiAgaGFzV29ya2VkRnVsbFRpbWVPclN0YXJ0ZWRXb3JraW5nU3RhdHVzKHN0YXR1czogYm9vbGVhbil7XHJcbiAgICBjb25zdCBmb3JtID0gdGhpcy53ZWVrbHlRdWVzdGlvbnM/LnF1ZXN0aW9ubmFpcmU/LnF1ZXN0aW9ubmFpcmU/LnF1ZXN0aW9ubmFpcmVGb3JtPy5mb3JtO1xyXG4gICAgaWYodGhpcy5pc01FKCkpe1xyXG4gICAgICBpZihzdGF0dXMgJiYgZm9ybSl7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IHN0YXR1cyA/IFsnd29ya1BlcmZvcm1lZCddOiBudWxsO1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlEYXRhID0ge3dvcmtQZXJmb3JtZWQ6IFwiWVwifTtcclxuICAgICAgICBmb3JtLmdldCgnd29ya1BlcmZvcm1lZCcpPy5zZXRWYWx1ZSgnWScpO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IHN0YXR1cyA/IFsnd29ya1BlcmZvcm1lZCddOiBudWxsO1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlEYXRhID0ge3dvcmtQZXJmb3JtZWQ6IG51bGx9O1xyXG4gICAgICAgIGlmKGZvcm0pe1xyXG4gICAgICAgICAgZm9ybS5nZXQoJ3dvcmtQZXJmb3JtZWQnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUhpZGRlbkZpZWxkcyhyZXM6IFdlZWtseUNlcnRFbGlnaWJpbGl0eU1vZGVsVjIpIHtcclxuXHJcbiAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gWydoaWRTaG93UmV0dXJuVG9Xb3JrUXVlc3Rpb24nLCAnaGlkU2hvd1JldHVybmVkVG9Xb3JrUXVlc3Rpb24nLCAnaGlkU2hvd05ld1BlbnNpb25RdWVzdGlvbicsICdoaWRTaG93UGVuc2lvbkNoYW5nZWRRdWVzdGlvbicsICdoaWRTaG93RGlzbWlzc2FsUGF5Q2hhbmdlZFF1ZXN0aW9uJywgJ2hpZFBhcnRUaW1lRW1wbG95ZXJBdmFpbGFibGUnLCAnaGlkUmVtdW5lcmF0aW9uSXNzdWVFeGlzdHMnLCAnaGlkSXNFbGlnaWJsZUZvckR1YScsICdjbGFpbWFudElkJywgJ2NsYWltV2Vla0VuZERhdGUnLCdkdWFBcHBJZCcsJ2hpZFBhcnRpYWxDbGFpbUVtcGxveW1lbnRGbGFnJywnaGlkV29ya1NlYXJjaEF1ZGl0RmxhZyddO1xyXG4gICAgdGhpcy5yZWFkT25seURhdGEgPSB7IGhpZFNob3dSZXR1cm5Ub1dvcmtRdWVzdGlvbjogcmVzLmhpZFNob3dSZXR1cm5Ub1dvcmtRdWVzdGlvbiwgaGlkU2hvd1JldHVybmVkVG9Xb3JrUXVlc3Rpb246IHJlcy5oaWRTaG93UmV0dXJuZWRUb1dvcmtRdWVzdGlvbiwgaGlkU2hvd05ld1BlbnNpb25RdWVzdGlvbjogcmVzLmhpZFNob3dOZXdQZW5zaW9uUXVlc3Rpb24sIGhpZFNob3dQZW5zaW9uQ2hhbmdlZFF1ZXN0aW9uOiByZXMuaGlkU2hvd1BlbnNpb25DaGFuZ2VkUXVlc3Rpb24sIGhpZFNob3dEaXNtaXNzYWxQYXlDaGFuZ2VkUXVlc3Rpb246IHJlcy5oaWRTaG93RGlzbWlzc2FsUGF5Q2hhbmdlZFF1ZXN0aW9uLCBoaWRQYXJ0VGltZUVtcGxveWVyQXZhaWxhYmxlOiByZXMuaGlkUGFydFRpbWVFbXBsb3llckF2YWlsYWJsZSwgaGlkUmVtdW5lcmF0aW9uSXNzdWVFeGlzdHM6IHJlcy5oaWRSZW11bmVyYXRpb25Jc3N1ZUV4aXN0cywgaGlkSXNFbGlnaWJsZUZvckR1YTogcmVzLmhpZElzRWxpZ2libGVGb3JEdWEsIGNsYWltYW50SWQ6IHJlcy5jbGFpbWFudElkLCBjbGFpbVdlZWtFbmREYXRlOiByZXMuY2xhaW1XZWVrRW5kRGF0ZSwgZHVhQXBwSWQ6cmVzLmR1YUFwcElkLCBoaWRQYXJ0aWFsQ2xhaW1FbXBsb3ltZW50RmxhZzogcmVzLmhpZFBhcnRpYWxDbGFpbUVtcGxveW1lbnRGbGFnLCBoaWRXb3JrU2VhcmNoQXVkaXRGbGFnOiByZXMuaGlkV29ya1NlYXJjaEF1ZGl0RmxhZyB9O1xyXG5cclxuICB9XHJcblxyXG5cclxuXHJcbiAgbG9hZENvbXBsZXRlKGV2ZW50KSB7XHJcbiAgICAgLyogRm9yIE1TLCB0aGUgYmFjayBidXR0b24gbmVlZHMgdG8gbG9hZCBjb21wbGV0ZSBmaWxsZWQgZGF0YSBhbG9uZyB3aXRoIGVsaWdpYmlsaXR5IGRhdGEuXHJcbiAgICAgRm9yIG90aGVyIHN0YXRlcywgZXZlcnl0aGluZyBpcyBpbiBwb3B1cCwgc28gb24gY2xvc2UsIGRhdGEgc3RpbGwgaXMgdGhlcmUgaW4gbW9kZWwuXHJcbiAgICAgTmVlZHMgd29yayAqL1xyXG4gICAvKiAgaWYgKHRoaXMuaXNNUygpICYmIHRoaXMuYWN0aXZlSW5kZXggPT0gMSAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YSkge1xyXG4gICAgICBcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud2Vla2x5Y2VydEVsaWdpYmlsaXR5TW9kZWxWMiA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhO1xyXG4gICAgICB0aGlzLmRhdGFUb0xvYWQgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YTtcclxuICAgICAgdGhpcy5oYW5kbGVIaWRkZW5GaWVsZHModGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEpO1xyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLmRhdGFUb0xvYWQgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YTtcclxuICAgIH0gKi9cclxuICAgICAgdGhpcy5kYXRhVG9Mb2FkID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGE7XHJcbiAgICAvKiogTkVXOiBGb3IgTG9hZGluZyB0aGUgUHJlLXNlbGVjdGVkIHF1ZXN0aW9uIGluIGNhc2Ugb2YgU3RhcnRlZCBXb3JraW5nKFNUV0spIGZvciBXUyBSZWNvcmRzIGFuZCBzZXR0aW5nIHRoZSB2YWx1ZSBZIGZvciB3b3JrUGVyZm9ybWVkICovXHJcbiAgICAgIHRoaXMud29ya1NlYXJjaFJlY29yZHMgPSB0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3JkcygpO1xyXG4gICAgaWYgKHRoaXMuaXNNRSgpICYmIHRoaXMud29ya1NlYXJjaFJlY29yZHMpIHtcclxuICAgICAgY29uc3QgaGFzU3RhcnRlZFdvcmtpbmcgPSAodGhpcy53b3JrU2VhcmNoUmVjb3JkcyA/PyBbXSkuc29tZShcclxuICAgICAgICByZWMgPT4gcmVjPy5zZWFyY2hSZXN1bHQgPT09ICdTVFdLJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoaGFzU3RhcnRlZFdvcmtpbmcpIHtcclxuICAgICAgICB0aGlzLmRhdGFUb0xvYWQud29ya1BlcmZvcm1lZCA9IFwiWVwiO1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlGaWVsZHMgPSBbJ3dvcmtQZXJmb3JtZWQnXTtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RGF0YSA9IHsgd29ya1BlcmZvcm1lZDogXCJZXCIgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqIEVORCAqL1xyXG4gICAgICBpZiAodGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaFJlY29yZHNDb3VudFdpdGhIaXJlZFN0YXR1cygpID4gMCkgeyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5oYXNIaXJlZFN0YXR1cyh0cnVlKTtcclxuICAgICAgICB0aGlzLmRhdGFUb0xvYWQucmV0dXJuaW5nVG9Xb3JrID0gXCJZXCI7XHJcbiAgICAgIH1cclxuICAgICAgLy9XZWVrbHkgRWFybmluZ3MgcmVtaW5kZXIgcG9wdXAgLSBzaG93biBldmVyeSB3ZWVrIGV4Y2VwdCBmb3Igd2FpdGluZyBwZXJpb2Qgd2Vla1xyXG4gICAgICBpZih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5pc1dhaXRpbmdXZWVrU2VydmVkID09PSB0cnVlKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLndlZWtseVdvcmtQZXJmb3JtZWRQb3B1cEZsYWcgPSB0cnVlKSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzU3VuZGF5KGlucHV0RGF0ZSlcclxuICB7XHJcbiAgICBsZXQgdXRjRGF0ZSA9IG5ldyBEYXRlKGlucHV0RGF0ZSArIFwiVDAwOjAwOjAwWlwiKTtcclxuICAgIHV0Y0RhdGUuc2V0VVRDRGF0ZSh1dGNEYXRlLmdldFVUQ0RhdGUoKSAtIDYpO1xyXG4gICAgbGV0IHllYXIgPSB1dGNEYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XHJcbiAgICBsZXQgbW9udGggPSBTdHJpbmcodXRjRGF0ZS5nZXRVVENNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGxldCBkYXkgPSBTdHJpbmcodXRjRGF0ZS5nZXRVVENEYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YDtcclxuICB9XHJcblxyXG59XHJcbiIsIjxhcHAtZGFzaGJvYXJkLWhlbHAgKm5nSWY9XCJocy5pc1Nob3dpbmcoKVwiIFthY3RpdmVJbmRleF09XCI0XCI+PC9hcHAtZGFzaGJvYXJkLWhlbHA+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgZXJyb3JNc2dcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZy10b3BcIiBzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O1wiPlxyXG4gICAgICA8aW9uLWljb24gbmFtZT1cImFsZXJ0LWNpcmNsZS1vdXRsaW5lXCIgc3R5bGU9XCJmb250LXNpemU6IDYwcHg7IGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj48L2lvbi1pY29uPlxyXG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yTXNnKVwiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpOyBmb250LXNpemU6IGxhcmdlcjtcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZ1wiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWVycm9yTXNnXCI+XHJcbiAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIG9mZnNldFhsPVwiMVwiICpuZ0lmPVwiIWlzTVMoKSB8fCAoaXNNUygpICYmICFtdWx0aXBsZVdlZWtzRHVlICYmICFkaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmcpXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImFwcC1oZWFkaW5nXCI+e3snd2Vla2xpZXMudjIudGFzay5oZWFkaW5nJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2gxPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIG9mZnNldFhsPVwiMVwiICpuZ0lmPVwiKGlzTVMoKSAmJiBtdWx0aXBsZVdlZWtzRHVlICYmICFkaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmcpXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImFwcC1oZWFkaW5nXCI+e3snd2Vla2xpZXMudjIudGFzay5tdWx0aXBsZS53ZWVrcy5oZWFkaW5nJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2gxPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIG9mZnNldFhsPVwiMVwiICpuZ0lmPVwiKGlzTVMoKSAmJiBtdWx0aXBsZVdlZWtzRHVlICYmIGRpc3BsYXlDb250aW51ZWRXZWVrc0ZpbGVkSGVhZGluZylcIj5cclxuICAgICAgICAgICAgPGgxIGNsYXNzPVwiYXBwLWhlYWRpbmdcIj57eyd3ZWVrbGllcy52Mi50YXNrLm11bHRpcGxlLndlZWtzLmhlYWRpbmcuY29udGludWVkJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2gxPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPC9pb24tZ3JpZD5cclxuXHJcbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplWGw9XCI1XCIgb2Zmc2V0WGw9XCIxXCIgc2l6ZUxnPVwiNlwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtd29yay1zZWFyY2gtcXVlc3Rpb24tdjIgICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhZXJyb3JNc2dcIiAoc3VjY2Vzcyk9XCJnb1RvV2Vla2x5Q2VydCgpXCIgW3Nob3dDb3VudGVyXT1cInRydWVcIiAoaGFzSGlyZWRTdGF0dXMpPVwiaGFzSGlyZWRTdGF0dXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGhhc1dvcmtlZEZ1bGxUaW1lT3JTdGFydGVkV29ya2luZ1N0YXR1cyk9XCJoYXNXb3JrZWRGdWxsVGltZU9yU3RhcnRlZFdvcmtpbmdTdGF0dXMoJGV2ZW50KVwiPjwvYXBwLXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVYbD1cIjVcIiBzaXplTGc9XCI2XCI+ICAgXHJcbiAgICAgICAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI3dlZWtseVF1ZXN0aW9ucyBbZmxvd0tleV09XCInd2Vla2x5LWNlcnQnXCIgW2F1dG9TYXZlXT1cImZhbHNlXCIgW3Nob3dPbmx5UXVlc3Rpb25dPVwidHJ1ZVwiIFtoaWRlSGVhZGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCIgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiBcclxuICAgICAgICAgICAgICAgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW2RhdGFdPVwiZGF0YVRvTG9hZFwiIFxyXG4gICAgICAgICAgICAgICBbbXVsdGlNb2RlXT1cInRydWVcIiBbcmVhZE9ubHlGaWVsZHNdPVwicmVhZE9ubHlGaWVsZHNcIiAob25Mb2FkQ29tcGxldGUpPVwibG9hZENvbXBsZXRlKCRldmVudClcIj5cclxuICAgICAgICAgICAgIDwvYXBwLWZvcm0tYnVpbGRlcj4gICAgICAgICBcclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNNUygpXCI+XHJcbiAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiIG9mZnNldExnPVwiM1wiIG9mZnNldFhsPVwiM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAwIHx8IGFjdGl2ZUluZGV4ID09IDFcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctd2Vla2xpZXNcIj48Yj4ge3sgY29udGVudHNbYWN0aXZlSW5kZXhdIH19IDwvYj48L2gxPlxyXG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctd2Vla2xpZXMtYWNrXCI+PGI+IHt7IGNvbnRlbnRzW2FjdGl2ZUluZGV4XSB9fSA8L2I+PC9oMT5cclxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIyXCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ3ZWVrbGllcy1zdGVwc1wiIHNpemU9XCIxXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWRcIiA+XHJcbiAgICAgICAgICAgICAgPHAtc3RlcHMgW21vZGVsXT1cIml0ZW1zXCIgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCIgW3N0eWxlQ2xhc3NdPVwiJ2NvbXBsZXRlZC0nK2FjdGl2ZUluZGV4XCIgW25nU3R5bGVdPVwieyctLXN0ZXAtd2lkdGgnOic1MHB4JywnLS1zdGVwLWhlaWdodCc6JzUwcHgnfVwiPlxyXG4gICAgICAgICAgICAgIDwvcC1zdGVwcz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cIm1hcmdpbi10b3A6IC0zNXB4O1wic2l6ZT1cIjEyXCIgc2l6ZVNtPVwiOFwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiOFwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI1XCIgb2Zmc2V0TGc9XCIzXCIgb2Zmc2V0WGw9XCIzXCIgb2Zmc2V0TWQ9XCIxXCI+XHJcbiAgICAgICAgICAgIDxwLWRpdmlkZXI+PC9wLWRpdmlkZXI+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+ICAgICAgXHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxpb24tZ3JpZCAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDBcIj5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplU209XCI4XCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCI4XCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjVcIiBvZmZzZXRMZz1cIjNcIiBvZmZzZXRYbD1cIjNcIiBvZmZzZXRNZD1cIjFcIj5cclxuICAgICAgICAgICAgICA8YXBwLXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyICAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWVycm9yTXNnXCIgKHN1Y2Nlc3MpPVwiZ29Ub1dlZWtseUNlcnQoKVwiIFtzaG93Q291bnRlcl09XCJ0cnVlXCIgKGhhc0hpcmVkU3RhdHVzKT1cImhhc0hpcmVkU3RhdHVzKCRldmVudClcIj48L2FwcC13b3JrLXNlYXJjaC1xdWVzdGlvbi12Mj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMVwiPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjUuMjVcIiBzaXplWGw9XCI1LjI1XCIgb2Zmc2V0TGc9XCIzXCIgb2Zmc2V0WGw9XCIzXCIgb2Zmc2V0TWQ9XCIxXCI+ICAgXHJcbiAgICAgICAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI3dlZWtseVF1ZXN0aW9ucyBbZmxvd0tleV09XCInd2Vla2x5LWNlcnQnXCIgW2F1dG9TYXZlXT1cInRydWVcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCIgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIiBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIFxyXG4gICAgICAgICAgICAgICAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIiBbZGF0YV09XCJkYXRhVG9Mb2FkXCIgXHJcbiAgICAgICAgICAgICAgIFttdWx0aU1vZGVdPVwidHJ1ZVwiIFtyZWFkT25seUZpZWxkc109XCJyZWFkT25seUZpZWxkc1wiIChvbkxvYWRDb21wbGV0ZSk9XCJsb2FkQ29tcGxldGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPiAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICA8IS0tIFdlZWtseSBFYXJuaW5ncyByZW1pbmRlciBwb3B1cCAtIHNob3duIGV2ZXJ5IHdlZWsgZXhjZXB0IGZvciB3YWl0aW5nIHBlcmlvZCB3ZWVrIC0tPlxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJ3ZWVrbHlXb3JrUGVyZm9ybWVkUG9wdXBGbGFnXCI+XHJcbiAgICAgICAgICAgIDxhcHAtd2Vla2x5LXdvcmstcGVyZm9ybWVkLXBvcHVwIFtzaG93V2Vla2x5V29ya1BlcmZvcm1lZFBvcHVwXT1cInRydWVcIj48L2FwcC13ZWVrbHktd29yay1wZXJmb3JtZWQtcG9wdXA+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAyXCI+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjZcIiBvZmZzZXRMZz1cIjNcIiBvZmZzZXRYbD1cIjNcIiBvZmZzZXRNZD1cIjFcIj5cclxuICAgICAgICAgICAgICA8YXBwLWFja25vd2xlZGdlbWVudC1tcyAqbmdJZj1cInNob3dBY2tcIiAoc3VjY2Vzcyk9XCJmaWxlV2Vla2x5Q2VydERvbmUoJGV2ZW50KVwiIChvbkNsb3NlKT1cImNsb3NlQWNrKClcIj5cclxuICAgICAgICAgICAgICA8L2FwcC1hY2tub3dsZWRnZW1lbnQtbXM+ICAgXHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICA8YXBwLW11bHRpLXF1ZXN0aW9ubmFpcmUgW3FlUXVlcnlNb2RlbHNdPVwicWVRdWVyeU1vZGVsc1wiICpuZ0lmPVwiaXNPcGVuUWVcIiBcclxuICAgIChvbkNvbXBsZXRlKT1cIm9wZW5TdW1tYXJ5UG9zdFF1ZXN0aW9ubmFpcmVzKCRldmVudClcIiAobW9kZWxDYW5jZWwpPVwib25RZUNsb3NlKClcIiBcclxuICAgIFtoZWFkZXJdPVwiJ0ZvbGxvdy11cCBRdWVzdGlvbnMnIHwgdHJhbnNsYXRlXCIgW3Nob3dRdWVzdGlvbk51bWJlcl09XCJ0cnVlXCI+PC9hcHAtbXVsdGktcXVlc3Rpb25uYWlyZT5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNNUygpXCI+XHJcbiAgICAgICAgPGFwcC1hY2tub3dsZWRnZW1lbnQtdjIgKm5nSWY9XCJzaG93QWNrXCIgKHN1Y2Nlc3MpPVwiZmlsZVdlZWtseUNlcnREb25lKCRldmVudClcIiAob25DbG9zZSk9XCJjbG9zZUFjaygpXCI+XHJcbiAgICAgICAgPC9hcHAtYWNrbm93bGVkZ2VtZW50LXYyPiBcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8YXBwLWNvbmZpcm1hdGlvbiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIiAob25DbG9zZSk9XCJjbG9zZUNvbmZpcm1hdGlvblBvcHVwKClcIiBbZGF0YV09XCJjb25maXJtYXRpb25EYXRhXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIj48L2FwcC1jb25maXJtYXRpb24+XHJcbiAgICAgIFxyXG4gICAgICA8YXBwLWludGVyaW0tY29uZmlybWF0aW9uICpuZ0lmPVwic2hvd0ludGVyaW1Db25maXJtYXRpb25cIiAob25DbG9zZSk9XCJjbG9zZUNvbmZpcm1hdGlvblBvcHVwKClcIiAob25OZXh0KT1cIm5hdmlnYXRlVG9XZWVrbGllcygkZXZlbnQpXCIgW2RhdGFdPVwiY29uZmlybWF0aW9uRGF0YVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCI+PC9hcHAtaW50ZXJpbS1jb25maXJtYXRpb24+XHJcblxyXG4gICAgICA8aW9uLWZvb3RlciAqbmdJZj1cIiFpc01TKClcIj5cclxuICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBpb24tY29sIHNpemU9XCIxMlwiIHNpemVYbD1cIjVcIiBvZmZzZXRYbD1cIjFcIiBzaXplTGc9XCI2XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJnb0hvbWUoKVwiPkNsb3NlXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzaXplPVwiMTJcIiBzaXplWGw9XCI1XCIgc2l6ZUxnPVwiNlwiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJvcGVuTmV4dFBhZ2UoKVwiID5TdWJtaXRcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPC9pb24tZm9vdGVyPlxyXG4gICAgICA8c2VjdGlvbiAqbmdJZj1cImlzTVMoKVwiPlxyXG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLXBhZGRpbmcgYnV0dG9ucy1yb3dcIj5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ3ZWVrbGllcy1sZWZ0LWJ1dHRvbnNcIiBzaXplPVwiM1wiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImNsb3NlXCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAwXCIgKGNsaWNrKT1cImdvSG9tZSgpXCI+Q2xvc2VcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJhY2tcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiAqbmdJZj1cImFjdGl2ZUluZGV4ICE9IDBcIiAoY2xpY2spPVwiYWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleCAtIDFcIj5cclxuICAgICAgICAgICAgICBCYWNrPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ3ZWVrbGllcy1yaWdodC1idXR0b25zXCIgc2l6ZT1cIjNcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJuZXh0XCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJzb2xpZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwib3Blbk5leHRQYWdlKClcIiAqbmdJZj1cImFjdGl2ZUluZGV4ICE9IDJcIj5OZXh0XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJzdWJtaXRcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzaG93QWNrbm93bGVkZ2VtZW50KClcIiAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDJcIj5cclxuICAgICAgICAgICAgICBTdWJtaXQ8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiPjwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvZGl2PiJdfQ==
@@ -44840,14 +44840,11 @@ class HistoryPageComponent {
44840
44840
  }
44841
44841
  else if (historyModel.button && historyModel.button.dialog == 'ovpWaiverPopup') {
44842
44842
  let userModel = this.ls.getUser();
44843
- const waiverData = {
44844
- transactionId: historyModel.transactionId,
44845
- docket_number: historyModel.data?.docket_number || '',
44846
- bucDecisionId: historyModel.data?.bucDecisionId || ''
44847
- };
44848
- const waiverDataParam = encodeURIComponent(JSON.stringify(waiverData));
44843
+ const transactionId = historyModel.transactionId;
44844
+ const docketNumber = historyModel.data?.docket_number || '';
44845
+ const bucDecisionId = historyModel.data?.bucDecisionId || '';
44849
44846
  this.util.showLoader().then(() => {
44850
- window.open(`${LibConstants.benefitsUrlExternal}/faces/virtual/contextswitch.xhtml?a=${userModel.access_token}&r=${userModel.refresh_token}&v=2299&CLAIMANT_PORTAL=true&view=.mefileoverpaymentwaiverrequestdecisionlist&waiverDataParam=${waiverDataParam}`, '_self');
44847
+ window.open(`${LibConstants.benefitsUrlExternal}/faces/virtual/contextswitch.xhtml?a=${userModel.access_token}&r=${userModel.refresh_token}&v=2299&CLAIMANT_PORTAL=true&view=.mefileoverpaymentwaiverrequestdecisionlist&transactionId=${transactionId}&docketNumber=${docketNumber}&bucDecisionId=${bucDecisionId}`, '_self');
44851
44848
  });
44852
44849
  }
44853
44850
  else {
@@ -49721,21 +49718,20 @@ class WeeklyCertificationComponent extends BasePage {
49721
49718
  this.wcService.weeklyCertData.pensionDeniedPotentialIssues = res.pensionDeniedPotentialIssues;
49722
49719
  this.wcService.weeklyCertData.bonusPayPotentialIssues = res.bonusPayPotentialIssues;
49723
49720
  this.wcService.weeklyCertData.otherPayPotentialIssues = res.otherPayPotentialIssues;
49721
+ const list = this.wcService.getWorkSearchRecords() ?? [];
49722
+ const localReem = list.filter(r => r && (r.activityType === 'JBFR' || r.activityType === 'CSVW')).length;
49723
+ const serverReem = Number(this.wcService.weeklyCertServerData?.hidReemWorkSearchRecordCount ?? 0);
49724
49724
  if (this.statusModel.showQe) {
49725
- const list = this.wcService.getWorkSearchRecords() ?? [];
49726
- const localReem = list.filter(r => r && (r.activityType === 'JBFR' || r.activityType === 'CSVW')).length;
49727
- const serverReem = Number(this.wcService.weeklyCertServerData?.hidReemWorkSearchRecordCount ?? 0);
49728
- if ((localReem + serverReem) > 3) {
49729
- this.showAcknowledgement();
49730
- }
49731
- }
49732
- else if (this.statusModel.showQe) {
49733
49725
  this.isOpenQe = true;
49734
49726
  if (this.wcService.weeklyCertData.employerDetailsList != null
49735
49727
  && this.wcService.weeklyCertData.employerDetailsList.length > 0
49736
49728
  && res.tempEmployerSepPotentialIssueMap != null) {
49737
49729
  this.wcService.weeklyCertData.tempEmployerSepPotentialIssueMap = res.tempEmployerSepPotentialIssueMap;
49738
49730
  }
49731
+ else if ((localReem + serverReem) > 3) {
49732
+ this.isOpenQe = false;
49733
+ this.showAcknowledgement();
49734
+ }
49739
49735
  }
49740
49736
  else {
49741
49737
  this.showAcknowledgement();