vcomply-workflow-engine 6.1.56 → 6.1.59

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.
@@ -70,8 +70,6 @@ export class ProgramResponsibilityListingComponent {
70
70
  this.animation = false;
71
71
  }, 300);
72
72
  this.getResponsibilitiesList();
73
- // this.getProgramsList();
74
- // this.getProgramsCount();
75
73
  }
76
74
  close() {
77
75
  this.closeList.emit(this.preSelectedProgramAndResp);
@@ -279,6 +277,7 @@ export class ProgramResponsibilityListingComponent {
279
277
  params = params.append('paginationType', 'small');
280
278
  params = params.append('pageType', 'risk');
281
279
  params = params.append('callFrom', 'grc');
280
+ const rcIds = this.getSelectedRCIds(this.selectedRC).join(',');
282
281
  let businessCycle = {
283
282
  start_date: this.currentBusinessCycle?.start_date,
284
283
  end_date: this.currentBusinessCycle?.end_date,
@@ -298,7 +297,7 @@ export class ProgramResponsibilityListingComponent {
298
297
  },
299
298
  };
300
299
  this.responsibilityCall = this.grcService
301
- .getAllResponsibilities(this.responsibilityCurrentPage)
300
+ .getAllResponsibilities(this.responsibilityCurrentPage, rcIds)
302
301
  .subscribe({
303
302
  next: (res) => {
304
303
  this.categoryLoader = false;
@@ -399,7 +398,7 @@ export class ProgramResponsibilityListingComponent {
399
398
  }
400
399
  getSelectedRCIds(selectedRC) {
401
400
  let selectedRCIds = [];
402
- selectedRCIds = selectedRC?.map((rc) => rc?.rc_id);
401
+ selectedRCIds = selectedRC?.map((rc) => rc?.rcid);
403
402
  return selectedRCIds;
404
403
  }
405
404
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramResponsibilityListingComponent, deps: [{ token: i1.GrcService }, { token: i2.ResponsibilityService }, { token: i3.GetUserDetailsPipe }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -434,4 +433,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
434
433
  type: ViewChild,
435
434
  args: ['dataListing']
436
435
  }] } });
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9jb21wb25lbnRzL3Byb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZy9wcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nL3Byb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFB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LENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFpQjtRQUNoQyxJQUFJLGFBQWEsR0FBVSxFQUFFLENBQUM7UUFDOUIsYUFBYSxHQUFHLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOytHQW5hVSxxQ0FBcUM7bUdBQXJDLHFDQUFxQyw4UEFGckMsQ0FBQyxrQkFBa0IsQ0FBQyx5SkNuRGpDLHdqS0E2R0EscXlERDVFSSxZQUFZLGtJQUNaLGFBQWEsOEJBQ2IsZUFBZSw4QkFDZixhQUFhLDhCQUNiLGlCQUFpQiw2a0JBQ2pCLGdCQUFnQiwrQkFHaEIsaUNBQWlDLGtZQUVqQyxnQkFBZ0IsZ0hBQ2hCLFlBQVksa1RBRVosbUJBQW1COzs0RkFPVixxQ0FBcUM7a0JBeEJqRCxTQUFTOytCQUNFLG9DQUFvQyxjQUNsQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQiwyQkFBMkI7d0JBQzNCLGlDQUFpQzt3QkFDakMsOEJBQThCO3dCQUM5QixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osd0JBQXdCO3dCQUN4QixtQkFBbUI7cUJBQ3BCLFdBR1EsQ0FBQyxXQUFXLENBQUMsYUFDWCxDQUFDLGtCQUFrQixDQUFDO3NLQW9DTSx5QkFBeUI7c0JBQTdELEtBQUs7dUJBQUMsd0JBQXdCO2dCQU90QixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFLTiw4QkFBOEI7c0JBRDdCLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZsb2F0aW5nQmFyTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkQ29tcG9uZW50cy9mbG9hdGluZy1iYXIvZmxvYXRpbmctYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBGb3JtZ3JvdXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi91aS1raXQvZm9ybWdyb3VwL2Zvcm1ncm91cC5tb2R1bGUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi91aS1raXQvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuaW1wb3J0IHsgVGFibGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtY2FyZC90YWJsZS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmNDYXRlZ29yeUxpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuLi9ncmMtY2F0ZWdvcnktbGlzdGluZy9ncmMtY2F0ZWdvcnktbGlzdGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JjUmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcvZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IE5vRGF0YU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9uby1kYXRhL25vLWRhdGEubW9kdWxlJztcbmltcG9ydCB7IExpc3RMb2FkZXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2xpc3QtbG9hZGVyL2xpc3QtbG9hZGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBHcmNTdWJDYXRlZ29yeUxpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuLi9ncmMtc3ViLWNhdGVnb3J5LWxpc3RpbmcvZ3JjLXN1Yi1jYXRlZ29yeS1saXN0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJFU1BPTlNJQklMSVRZX1RBQkxFX0NBUkQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbGluay1yZXNwb25zaWJpbGl0eS5jb25zdGFudCc7XG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVDYXJkTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkQ29tcG9uZW50cy90YWJsZS1jYXJkLWxvYWRlci90YWJsZS1jYXJkLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Nkbi1saW5rLmNvbnN0YW50JztcbmltcG9ydCB7IFdvcmtmbG93UGlwZXNNb2R1bGUgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1waXBlcy93b3JrZmxvdy1waXBlcy5tb2R1bGUnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBHZXRVc2VyRGV0YWlsc1BpcGUgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1waXBlcy9nZXQtdXNlci1kZXRhaWxzLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIEZvcm1ncm91cE1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEZsb2F0aW5nQmFyTW9kdWxlLFxuICAgIFBhZ2luYXRpb25Nb2R1bGUsXG4gICAgVGFibGVDYXJkQ29tcG9uZW50LFxuICAgIEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCxcbiAgICBHcmNSZXNwb25zaWJpbGl0eUxpc3RpbmdDb21wb25lbnQsXG4gICAgR3JjU3ViQ2F0ZWdvcnlMaXN0aW5nQ29tcG9uZW50LFxuICAgIExpc3RMb2FkZXJNb2R1bGUsXG4gICAgTm9EYXRhTW9kdWxlLFxuICAgIFRhYmxlQ2FyZExvYWRlckNvbXBvbmVudCxcbiAgICBXb3JrZmxvd1BpcGVzTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudC5sZXNzJ10sXG4gIG91dHB1dHM6IFsnY2xvc2VMaXN0J10sXG4gIHByb3ZpZGVyczogW0dldFVzZXJEZXRhaWxzUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3JhbVJlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb2dyYW1UeXBlcyA9IFJFU1BPTlNJQklMSVRZX1RBQkxFX0NBUkQ7XG4gIENETl9MSU5LID0gTElOS1M7XG4gIHNlbGVjdGVkVGFiOiAwIHwgMSB8IDIgfCAzID0gMTtcblxuICBhbmltYXRpb24gPSBmYWxzZTtcblxuICBwcm9ncmFtTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByb2dyYW1Db3VudExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZXNwb25zaWJpbGl0eUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBjYXRlZ29yeUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZFByb2dyYW1BbmRSZXNwOiBhbnlbXSA9IFtdO1xuICBwcmVTZWxlY3RlZFByb2dyYW1BbmRSZXNwOiBhbnlbXSA9IFtdO1xuICBzZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xuICBjdXJyZW50QnVzaW5lc3NDeWNsZSE6IGFueTtcbiAgc2VsZWN0ZWRQcm9ncmFtOiBhbnk7XG4gIHNlbGVjdGVkQ2F0ZWdvcnk6IGFueTtcbiAgcHJvZ3JhbUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBjYXRlZ29yeUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICByZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBwcm9ncmFtRGF0YTogYW55O1xuICBjYXRlZ29yeURhdGE6IGFueTtcbiAgcmVzcG9uc2liaWxpdHlEYXRhOiBhbnkgPSB7XG4gICAgZGF0YTogW10sXG4gIH07XG4gIHNlbGVjdGVkUHJvZ3JhbUlkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRDYXRlZ29yeUlkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZFJDSWRzOiBudW1iZXJbXSA9IFtdO1xuXG4gIHByb2dyYW1DYWxsITogU3Vic2NyaXB0aW9uO1xuICBjYXRlZ29yeUNhbGwhOiBTdWJzY3JpcHRpb247XG4gIHJlc3BvbnNpYmlsaXR5Q2FsbCE6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoJ3NlbGVjdGVkUHJvZ3JhbUFuZFJlc3AnKSBzZXQgZ2V0U2VsZWN0ZWRQcm9ncmFtQW5kUmVzcChkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyA9IGRhdGEubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0ucmlkKTtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3AgPSBkYXRhIHx8IFtdO1xuICAgIHRoaXMucHJlU2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwKSk7XG4gICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1JZHModGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcbiAgICB0aGlzLmdldEFsbFNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICB9XG4gIEBJbnB1dCgpIHNlbGVjdGVkUkM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIE1PREU6ICdDUkVBVEUnIHwgJ0VESVQnID0gJ0NSRUFURSc7XG5cbiAgY2xvc2VMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdkYXRhTGlzdGluZycpXG4gIHJlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCE6IEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsIHByaXZhdGUgZ2V0VXNlckRldGFpbHM6IEdldFVzZXJEZXRhaWxzUGlwZSkge1xuICAgIHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGUgPSB0aGlzLmdyY1NlcnZpY2U/LmdldEJ1c2luZXNzQ3ljbGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgMzAwKTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXRpZXNMaXN0KCk7XG4gICAgLy8gdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgICAvLyB0aGlzLmdldFByb2dyYW1zQ291bnQoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VMaXN0LmVtaXQodGhpcy5wcmVTZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5jbG9zZUxpc3QuZW1pdCh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbXNMaXN0KGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMucHJvZ3JhbUNhbGwpIHtcbiAgICAgIHRoaXMucHJvZ3JhbUNhbGwudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5wcm9ncmFtTG9hZGVyID0gdHJ1ZTtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgcGFnaW5hdGlvblR5cGU6ICdzbWFsbCcsXG4gICAgICAgIGE6ICcnLFxuICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFN0cmluZyxcbiAgICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgICAgIHJpc2tJZHM6IFtdLFxuICAgICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiB0aGlzLmdldFNlbGVjdGVkUkNJZHModGhpcy5zZWxlY3RlZFJDKSA/PyBbXSxcbiAgICAgICAgICBlbnRydXN0ZWRCeTogW10sXG4gICAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBwYWdlTm86IHRoaXMucHJvZ3JhbUN1cnJlbnRQYWdlIHx8IDEsXG4gICAgICAgIHNvcnRPYmo6IHsgc29ydEJ5OiAnJywgdHlwZTogLTEgfSxcbiAgICAgICAgcGFnZU5hbWU6ICdjYXRlZ29yeScsXG4gICAgICAgIHR5cGVBcnI6IFt0aGlzLnNlbGVjdGVkVGFiXSxcbiAgICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcbiAgICAgICAgZW5kX2RhdGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LmVuZF9kYXRlLFxuICAgICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FycixcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxuICAgICAgICB0aW1lX2ZpbHRlcl90eXBlOiAnJyxcbiAgICAgICAgc3RhdGU6IFsyLCAzXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLnByb2dyYW1DYWxsID0gdGhpcy5ncmNTZXJ2aWNlLmdldFByb2dyYW1zTGlzdChyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3JhbUxvYWRlciA9IGZhbHNlO1xuICAgICAgICAvLyB0aGlzLnByb2dyYW1EYXRhLmRhdGEgPSByZXMuZGF0YSA/PyBbXTtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YSA9IHsgLi4ucmVzIH07XG4gICAgICAgIHRoaXMub25TZWxlY3RlZFByb2dyYW1DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yeUJ5UHJvZ3JhbUlkKHJlcz8uZGF0YVswXSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2dyYW1Mb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblByb2dyYW1QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnByb2dyYW1DdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm8gfHwgMTtcbiAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xuICB9XG5cbiAgb25TdWJDYXRlZ29yeVBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm8gfHwgMTtcbiAgICB0aGlzLmdldENhdGVnb3J5QnlQcm9ncmFtSWQodGhpcy5zZWxlY3RlZFByb2dyYW0pO1xuICB9XG5cbiAgZGVsZXRlRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50LmRlbGV0ZVNlbGVjdGVkUmVzcG9uc2liaWxpdHkoZXZlbnQpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRUYWIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucHJvZ3JhbUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnNlbGVjdGVkVGFiID0gZXZlbnQ/LnR5cGU7XG4gICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgfVxuXG4gIGhhbmRsZVNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XG4gICAgICB0aGlzLnByb2dyYW1DdXJyZW50UGFnZSA9IDE7XG4gICAgICB0aGlzLnNlYXJjaFN0cmluZyA9IGV2ZW50O1xuICAgICAgdGhpcy5vblNlbGVjdGVkUHJvZ3JhbUNoYW5nZSgpO1xuICAgICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNDb3VudCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb2dyYW1zQ291bnQocGFyYW1zT2JqZWN0PzogYW55KSB7XG4gICAgdGhpcy5wcm9ncmFtQ291bnRMb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIHR5cGU6ICcnLFxuICAgICAgICBwYWdpbmF0aW9uVHlwZTogJ3NtYWxsJyxcbiAgICAgICAgYTogJycsXG4gICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoU3RyaW5nLFxuICAgICAgICBmaWx0ZXJEYXRhOiB7XG4gICAgICAgICAgYXBwTGlzdDogW10sXG4gICAgICAgICAgcmlza0lkczogW10sXG4gICAgICAgICAgcmV2aWV3ZXJJZDogW10sXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHRoaXMuZ2V0U2VsZWN0ZWRSQ0lkcyh0aGlzLnNlbGVjdGVkUkMpID8/IFtdLFxuICAgICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgICAgICBlbnRydXN0ZWRUbzogW10sXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2VObzogMSxcbiAgICAgICAgc29ydE9iajogeyBzb3J0Qnk6ICcnLCB0eXBlOiAnJyB9LFxuICAgICAgICBwYWdlTmFtZTogJ2NhdGVnb3J5JyxcbiAgICAgICAgdHlwZUFycjogWzEsIDIsIDMsIDBdLFxuICAgICAgICBzdGFydF9kYXRlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5zdGFydF9kYXRlLFxuICAgICAgICBlbmRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uZW5kX2RhdGUsXG4gICAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyLFxuICAgICAgICBzZWxlY3RlZF9jeWNsZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGUsXG4gICAgICAgIHRpbWVfZmlsdGVyX3R5cGU6ICcnLFxuICAgICAgICBzdGF0ZTogWzIsIDNdLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRQcm9ncmFtc0xpc3RDb3VudChyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJvZ3JhbVR5cGVzWzBdLmNvdW50ID1cbiAgICAgICAgICByZXM/LnJlZ3VsYXRpb25Db3VudD8uYWN0aXZlICsgcmVzPy5yZWd1bGF0aW9uQ291bnQ/LmNvbXBsZXRlZDtcbiAgICAgICAgdGhpcy5wcm9ncmFtVHlwZXNbMV0uY291bnQgPVxuICAgICAgICAgIHJlcz8uc3RhbmRhcmRDb3VudD8uYWN0aXZlICsgcmVzPy5zdGFuZGFyZENvdW50Py5jb21wbGV0ZWQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbVR5cGVzWzJdLmNvdW50ID1cbiAgICAgICAgICByZXM/LmludGVybmFsQ291bnQ/LmFjdGl2ZSArIHJlcz8uaW50ZXJuYWxDb3VudD8uY29tcGxldGVkO1xuICAgICAgICB0aGlzLnByb2dyYW1UeXBlc1szXS5jb3VudCA9XG4gICAgICAgICAgcmVzPy5vdGhlckNvdW50Py5hY3RpdmUgKyByZXM/Lm90aGVyQ291bnQ/LmNvbXBsZXRlZDtcbiAgICAgICAgLy8gfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhdGVnb3J5QnlQcm9ncmFtSWQocHJvZ3JhbTogYW55KSB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlDYWxsKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5Q2FsbC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSA9IHByb2dyYW07XG4gICAgdGhpcy5jYXRlZ29yeUxvYWRlciA9IHRydWU7XG4gICAgLy8gdGhpcy5yZXNldENvbnRyb2xWYXJpYWJsZSgpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICBpZDogcHJvZ3JhbT8uX2lkLFxuICAgICAgc2NvcGVUeXBlOiAncmlzaycsXG4gICAgICBwYWdpbmF0aW9uVHlwZTogJ3NtYWxsJyxcbiAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoU3RyaW5nLFxuICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICBhcHBMaXN0OiBbXSxcbiAgICAgICAgcmlza0lkczogW10sXG4gICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5nZXRTZWxlY3RlZFJDSWRzKHRoaXMuc2VsZWN0ZWRSQykgPz8gW10sXG4gICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcbiAgICAgIH0sXG4gICAgICBwYWdlOiB0aGlzLmNhdGVnb3J5Q3VycmVudFBhZ2UgfHwgMSxcbiAgICAgIC8vIHNvcnRpbmdDb3VudDogdGhpcy5jYXRlZ29yeVNvcnRWYWx1ZSxcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGJ1c2luZXNzQ3ljbGU6IHtcbiAgICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcbiAgICAgICAgZW5kX2RhdGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LmVuZF9kYXRlLFxuICAgICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FycixcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxuICAgICAgICB0aW1lX2ZpbHRlcl90eXBlOiAnJyxcbiAgICAgICAgLy8gXCJzY29wZVR5cGVcIjogJ3Jpc2snLFxuICAgICAgICB0eXBlOiAncmlzaycsXG4gICAgICAgIGNhbGxGcm9tOiAnZ3JjJyxcbiAgICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgICAgIHJpc2tJZHM6IFtdLFxuICAgICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiB0aGlzLmdldFNlbGVjdGVkUkNJZHModGhpcy5zZWxlY3RlZFJDKSA/PyBbXSxcbiAgICAgICAgICBlbnRydXN0ZWRCeTogW10sXG4gICAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuY2F0ZWdvcnlDYWxsID0gdGhpcy5ncmNTZXJ2aWNlLmdldFN1YkNhdGVnb3J5TGlzdChoZWFkZXJzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEgPSB7IC4uLnJlcyB9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSByZXM/LmRhdGFbMF07XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdGllc0xpc3QoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhY3RpdmVTZWxlY3RlZFByb2dyYW0oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtID0gZXZlbnQ/LmNhdGVnb3J5O1xuICAgIHRoaXMub25TZWxlY3RlZFByb2dyYW1DaGFuZ2UoKTtcbiAgICB0aGlzLmdldENhdGVnb3J5QnlQcm9ncmFtSWQodGhpcy5zZWxlY3RlZFByb2dyYW0pO1xuICAgIC8vIHRoaXMuZ2V0U2VsZWN0ZWRDYXRlZ29yeUlkcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICB9XG5cbiAgYWN0aXZlU2VsZWN0ZWRTdWJDYXRlZ29yeShldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5ID0gZXZlbnQ/LmNhdGVnb3J5O1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdGllc0xpc3QoKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXRpZXNMaXN0KGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlDYWxsKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2FsbC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIHRoaXMucmVzcENvdW50ID0gZXZlbnQuc29ydFZhbHVlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2lzQnVzaW5lc3NDeWNsZScsICd0cnVlJyk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFyZW50SWQnLCB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY2F0ZWdvcnlfaWQpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2NhdElkJywgdGhpcy5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZU5vJywgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID8/IDEpO1xuICAgIC8vIGlmIChbMSwgLTFdLmluY2x1ZGVzKHRoaXMuY29udHJvbFNvcnRWYWx1ZSkpIHtcbiAgICAvLyAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3NvcnRWYWx1ZScsIHRoaXMuY29udHJvbFNvcnRWYWx1ZSk7XG4gICAgLy8gICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzb3J0QnknLCAnRGF0YS5SZXBvcnROYW1lJyk7XG4gICAgLy8gfVxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2luYXRpb25UeXBlJywgJ3NtYWxsJyk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZVR5cGUnLCAncmlzaycpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2NhbGxGcm9tJywgJ2dyYycpO1xuICAgIGxldCBidXNpbmVzc0N5Y2xlID0ge1xuICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcbiAgICAgIGVuZF9kYXRlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5lbmRfZGF0ZSxcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyLFxuICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxuICAgICAgdGltZV9maWx0ZXJfdHlwZTogJycsXG4gICAgICBwYWdlVHlwZTogJ3Jpc2snLFxuICAgICAgY2FsbEZyb206ICdncmMnLFxuICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICBhcHBMaXN0OiBbXSxcbiAgICAgICAgcmlza0lkczogW10sXG4gICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5nZXRTZWxlY3RlZFJDSWRzKHRoaXMuc2VsZWN0ZWRSQykgPz8gW10sXG4gICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYWxsID0gdGhpcy5ncmNTZXJ2aWNlXG4gICAgICAuZ2V0QWxsUmVzcG9uc2liaWxpdGllcyh0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IHBhZ2VTaXplID0gMzA7XG4gICAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXM/LmRhdGE/LnBhZ2UgfHwgMTtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZSArIDE7XG4gICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBNYXRoLm1pbihzdGFydEluZGV4ICsgcGFnZVNpemUgLSAxLCByZXM/LmRhdGE/LnRvdGFsIHx8IDApO1xuICAgICAgICAgIFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0ge1xuICAgICAgICAgICAgZGF0YTogdGhpcy5zZXREYXRhTGlzdFN0cnVjdHVyZShyZXM/LmRhdGE/LnJlc3BvbnNpYmlsaXRpZXMgfHwgW10sIHJlcz8uZGF0YT8udXNlcnMgfHwgW10sIHJlcz8uZGF0YT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzIHx8IFtdKSxcbiAgICAgICAgICAgIHRvdGFsX2l0ZW1zOiByZXM/LmRhdGE/LnRvdGFsIHx8IDAsXG4gICAgICAgICAgICB0b3RhbF9wYWdlczogTWF0aC5jZWlsKChyZXM/LmRhdGE/LnRvdGFsIHx8IDApIC8gcGFnZVNpemUpLFxuICAgICAgICAgICAgY3VycmVudF9wYWdlOiBjdXJyZW50UGFnZSxcbiAgICAgICAgICAgIHBlcl9wYWdlOiBwYWdlU2l6ZSxcbiAgICAgICAgICAgIGl0ZW1zX2Zyb206IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBpdGVtc190bzogZW5kSW5kZXhcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0VXBkYXRlZERhdGFMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSBldmVudD8ucGFnZU5vO1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdGllc0xpc3QoKTtcbiAgfVxuXG4gIHNldERhdGFMaXN0U3RydWN0dXJlKHJlc3BvbnNpYmlsaXRpZXM6IGFueVtdLCB1c2VyczogYW55W10sIHJlc3BvbnNpYmlsaXR5Q2VudGVyczogYW55W10pIHtcbiAgICBjb25zdCBkYXRhID0gcmVzcG9uc2liaWxpdGllcz8ubWFwKChyZXNwb25zaWJpbGl0eTogYW55KSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zaWJpbGl0eUNlbnRlcklkcyA9IHJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eV9jZW50ZXJzIHx8IFtdO1xuXG4gICAgICBjb25zdCBtYXBwZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSByZXNwb25zaWJpbGl0eUNlbnRlcklkcy5tYXAoKHJjSWQ6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCByYyA9IHJlc3BvbnNpYmlsaXR5Q2VudGVycy5maW5kKChjZW50ZXI6IGFueSkgPT4gY2VudGVyPy5pZCA9PT0gcmNJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogcmM/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgaWQ6IHJjSWRcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhc3NpZ25vckRldGFpbHMgPSB0aGlzLmdldFVzZXJEZXRhaWxzLnRyYW5zZm9ybShbcmVzcG9uc2liaWxpdHk/LmFzc2lnbm9yXSwgdXNlcnMpPy5bMF0gfHwge307XG4gICAgICBjb25zdCBhc3NpZ25lZURldGFpbHMgPSB0aGlzLmdldFVzZXJEZXRhaWxzLnRyYW5zZm9ybShyZXNwb25zaWJpbGl0eT8uYXNzaWduZWVzPy51c2VySWQgfHwgW10sIHVzZXJzKSB8fCBbXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzcG9uc2liaWxpdHksXG4gICAgICAgIG5hbWU6IHJlc3BvbnNpYmlsaXR5Py50aXRsZSB8fCAnJyxcbiAgICAgICAgY29udHJvbElkOiByZXNwb25zaWJpbGl0eT8ua2V5fHwgJycsXG4gICAgICAgIF9pZDogcmVzcG9uc2liaWxpdHk/LnJpZCxcbiAgICAgICAgZW50cnVzdGVkQnk6IHtcbiAgICAgICAgICBuYW1lOiBhc3NpZ25vckRldGFpbHM/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgZW1haWw6IGFzc2lnbm9yRGV0YWlscz8uZW1haWwgfHwgJycsXG4gICAgICAgICAgcHJvZmlsZVBpYzogYXNzaWdub3JEZXRhaWxzPy5hdmF0YXIgfHwgJycsXG4gICAgICAgICAgc2hvcnROYW1lOiBhc3NpZ25vckRldGFpbHM/LnNob3J0X25hbWUgfHwgJycsXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ1c3RlZFRvOiB7XG4gICAgICAgICAgbmFtZTogYXNzaWduZWVEZXRhaWxzWzBdPy5uYW1lIHx8ICcnLFxuICAgICAgICAgIGVtYWlsOiBhc3NpZ25lZURldGFpbHNbMF0/LmVtYWlsIHx8ICcnLFxuICAgICAgICAgIHByb2ZpbGVQaWM6IGFzc2lnbmVlRGV0YWlsc1swXT8uYXZhdGFyIHx8ICcnLFxuICAgICAgICAgIHNob3J0TmFtZTogYXNzaWduZWVEZXRhaWxzWzBdPy5zaG9ydF9uYW1lIHx8ICcnLFxuICAgICAgICAgIEVudHJ1c3RlZFRvTWVtYmVyczogYXNzaWduZWVEZXRhaWxzPy5tYXAoKHVzZXI6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIG1lbWJlcl9uYW1lOiB1c2VyPy5uYW1lLFxuICAgICAgICAgICAgcHJvZmlsZV9waWM6IHVzZXI/LmF2YXRhcixcbiAgICAgICAgICAgIG1lbWJlcl9zaG9ydF9uYW1lOiB1c2VyPy5zaG9ydF9uYW1lXG4gICAgICAgICAgfSkpIHx8IFtdLFxuICAgICAgICB9LFxuICAgICAgICB3aXRoaW5EYXRhOiBtYXBwZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMsXG4gICAgICAgIHN1YkNhdGVnb3J5SWQ6IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfaWQsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgb25TZWxlY3RlZFByb2dyYW1DaGFuZ2UoKSB7XG4gICAgdGhpcy5jYXRlZ29yeUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSAxO1xuICB9XG5cbiAgY2hhbmdlU2VsZWN0ZWRQcm9ncmFtQW5kUmVzcChldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwID0gZXZlbnQ7XG4gICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1JZHModGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcbiAgICB0aGlzLmdldEFsbFNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRDYXRlZ29yeUlkcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRQcm9ncmFtSWRzKHNlbGVjdGVkRGF0YTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW1JZHMgPSBbXTtcbiAgICBzZWxlY3RlZERhdGE/LmZvckVhY2goKHNlbGVjdGVkOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtSWRzLnB1c2goc2VsZWN0ZWQ/LnByb2dyYW0/LnByb2dyYW1JZCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZENhdGVnb3J5SWRzKHNlbGVjdGVkRGF0YTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWRzID0gW107XG4gICAgbGV0IHByb2dyYW1JbmRleCA9IC0xO1xuICAgIHByb2dyYW1JbmRleCA9IHNlbGVjdGVkRGF0YS5maW5kSW5kZXgoXG4gICAgICAoY2F0OiBhbnkpID0+IGNhdD8ucHJvZ3JhbT8ucHJvZ3JhbUlkID09PSB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ucHJvZ3JhbUlkXG4gICAgKTtcbiAgICBpZiAocHJvZ3JhbUluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWRzID0gc2VsZWN0ZWREYXRhW3Byb2dyYW1JbmRleF0/LmNhdGVnb3J5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlJZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXRBbGxTZWxlY3RlZFJlc3BvbnNpYmlsaXRpZXMoc2VsZWN0ZWREYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzID0gc2VsZWN0ZWREYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5yaWQpO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRSQ0lkcyhzZWxlY3RlZFJDOiBhbnlbXSkge1xuICAgIGxldCBzZWxlY3RlZFJDSWRzOiBhbnlbXSA9IFtdO1xuICAgIHNlbGVjdGVkUkNJZHMgPSBzZWxlY3RlZFJDPy5tYXAoKHJjOiBhbnkpID0+IHJjPy5yY19pZCk7XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRSQ0lkcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZ1wiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmctaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxuICA+XG4gICAgPGgzIGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBSZXNwb25zaWJpbGl0aWVzPC9oMz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmctYm9keVwiPlxuICAgIDwhLS0gPGFwcC10YWJsZS1jYXJkLWxvYWRlciAqbmdJZj1cInByb2dyYW1Db3VudExvYWRlclwiPjwvYXBwLXRhYmxlLWNhcmQtbG9hZGVyPiAtLT5cbiAgICA8IS0tIDxhcHAtdGFibGUtY2FyZFxuICAgICAgICAgICAgKm5nSWY9XCIhcHJvZ3JhbUNvdW50TG9hZGVyXCJcbiAgICAgICAgICAgIGNsYXNzPVwidngtdy0xMDBcIlxuICAgICAgICAgICAgW3RhYmxlQ2FyZF09XCJwcm9ncmFtVHlwZXNcIlxuICAgICAgICAgICAgW3NpbmdsZVNlbGVjdGVkVGV4dF09XCInUmVzcG9uc2liaWxpdHkgU2VsZWN0ZWQnXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiXG4gICAgICAgICAgICBbbXVsdGlwbGVTZWxlY3RlZFRleHRdPVwiJ1Jlc3BvbnNpYmlsaXRpZXMgU2VsZWN0ZWQnXCJcbiAgICAgICAgICAgIChzZXRTZWxlY3RlZFRhYik9XCJzZXRTZWxlY3RlZFRhYigkZXZlbnQpXCI+XG4gICAgICAgIDwvYXBwLXRhYmxlLWNhcmQ+IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMlwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgI3NlYXJjaFJpc2tDYXRlZ29yeVxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlU2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUmVzcG9uc2liaWxpdGllc1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLWJvZHktaW5uZXIgdngtbWItMiB2eC1kLWZsZXhcIlxuICAgICAgW2NsYXNzLnZ4LWp1c3RpZnktY2VudGVyXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgIXJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ubGVuZ3RoXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUxvYWRlciB8fCByZXNwb25zaWJpbGl0eURhdGE/LmRhdGE/Lmxlbmd0aFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlubmVyLWl0ZW0tbGVmdCB2eC1wci0yXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1ncmMtY2F0ZWdvcnktbGlzdGluZyAqbmdJZj1cIiFwcm9ncmFtTG9hZGVyXCIgW2hlYWRlclRleHRdPVwiJ1Byb2dyYW1zJ1wiIFtwcm9ncmFtRGF0YV09XCJwcm9ncmFtRGF0YVwiICBbc2VsZWN0ZWRDYXRBbmRSaXNrXT1cInNlbGVjdGVkQ2F0QW5kUmlza1wiIFtuYW1lRGlzcGxheUtleV09XCInaXRlbV9uYW1lJ1wiIFtjdXJyZW50UGFnZV09XCJwcm9ncmFtQ3VycmVudFBhZ2VcIiBbc2VsZWN0ZWRUYWJJbmRleF09XCJzZWxlY3RlZFRhYlwiIFtzZWxlY3RlZENhdGVnb3J5SWRzXT1cInNlbGVjdGVkUHJvZ3JhbUlkc1wiIChhY3RpdmVTZWxlY3RlZENhdGVnb3J5KT1cImFjdGl2ZVNlbGVjdGVkUHJvZ3JhbSgkZXZlbnQpXCIgKG9uQ2F0ZWdvcnlQYWdlQ2hhbmdlKT1cIm9uUHJvZ3JhbVBhZ2VDaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLWdyYy1jYXRlZ29yeS1saXN0aW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJwcm9ncmFtTG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW5uZXItaXRlbS1taWQgdngtcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWdyYy1zdWItY2F0ZWdvcnktbGlzdGluZyAqbmdJZj1cIiFjYXRlZ29yeUxvYWRlciAmJiAhcHJvZ3JhbUxvYWRlclwiICBbaGVhZGVyVGV4dF09XCInUHJvZ3JhbXMnXCIgW2NhdGVnb3JpZXNdPVwiY2F0ZWdvcnlEYXRhXCIgIFtuYW1lRGlzcGxheUtleV09XCInaXRlbV9uYW1lJ1wiICBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcnlDdXJyZW50UGFnZVwiIFtzZWxlY3RlZENhdGVnb3J5SWRzXT1cInNlbGVjdGVkQ2F0ZWdvcnlJZHNcIiBbYWN0aXZlUHJvZ3JhbV09XCJzZWxlY3RlZFByb2dyYW1cIiBbc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcF09XCJzZWxlY3RlZFByb2dyYW1BbmRSZXNwXCIgKGFjdGl2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwiYWN0aXZlU2VsZWN0ZWRTdWJDYXRlZ29yeSgkZXZlbnQpXCIgKG9uQ2F0ZWdvcnlQYWdlQ2hhbmdlKT1cIm9uU3ViQ2F0ZWdvcnlQYWdlQ2hhbmdlKCRldmVudClcIj48L2FwcC1ncmMtc3ViLWNhdGVnb3J5LWxpc3Rpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJjYXRlZ29yeUxvYWRlciB8fCBwcm9ncmFtTG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1pdGVtLXJpZ2h0XCI+XG4gICAgICAgICAgPCEtLSA8YXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPjwvYXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPiAtLT5cblxuICAgICAgICAgIDxhcHAtZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmdcbiAgICAgICAgICAgICNkYXRhTGlzdGluZ1xuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmXG4gICAgICAgICAgICAgICFjYXRlZ29yeUxvYWRlciAmJlxuICAgICAgICAgICAgICAhcHJvZ3JhbUxvYWRlciAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eURhdGE/LmRhdGE/Lmxlbmd0aCAhPT0gMFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtoZWFkZXJUZXh0XT1cIidSZXNwb25zaWJpbGl0aWVzJ1wiXG4gICAgICAgICAgICBbTU9ERV09XCJNT0RFXCJcbiAgICAgICAgICAgIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVzcG9uc2liaWxpdHlEYXRhXCJcbiAgICAgICAgICAgIFthY3RpdmVQcm9ncmFtXT1cInNlbGVjdGVkUHJvZ3JhbVwiXG4gICAgICAgICAgICBbYWN0aXZlQ2F0ZWdvcnldPVwic2VsZWN0ZWRDYXRlZ29yeVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcF09XCJzZWxlY3RlZFByb2dyYW1BbmRSZXNwXCJcbiAgICAgICAgICAgIFthbGxTZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWRzXT1cInNlbGVjdGVkUmVzcG9uc2liaWxpdGllc1wiXG4gICAgICAgICAgICAoY2hhbmdlU2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCk9XCJcbiAgICAgICAgICAgICAgY2hhbmdlU2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCgkZXZlbnQpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cInJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgW3BlclBhZ2VMaW1pdF09XCIzMFwiXG4gICAgICAgICAgICBbdG90YWxMaXN0RGF0YV09XCJyZXNwb25zaWJpbGl0eURhdGE/LnRvdGFsX2l0ZW1zXCJcbiAgICAgICAgICAgIFt0b3RhbFBhZ2VzXT1cInJlc3BvbnNpYmlsaXR5RGF0YT8udG90YWxfcGFnZXNcIlxuICAgICAgICAgICAgKGdldFVwZGF0ZWREYXRhTGlzdCk9XCJnZXRVcGRhdGVkRGF0YUxpc3QoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvYXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPlxuXG4gICAgICAgICAgPGFwcC1saXN0LWxvYWRlclxuICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUxvYWRlciB8fCBjYXRlZ29yeUxvYWRlciB8fCBwcm9ncmFtTG9hZGVyXCJcbiAgICAgICAgICA+PC9hcHAtbGlzdC1sb2FkZXI+XG5cbiAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICEocmVzcG9uc2liaWxpdHlMb2FkZXIgfHwgY2F0ZWdvcnlMb2FkZXIgfHwgcHJvZ3JhbUxvYWRlcilcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQ0ROX0xJTks/Lm5vRGF0YVwiXG4gICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiXG4gICAgICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgIXJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ubGVuZ3RoXCJcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIkNETl9MSU5LPy5ub0RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiXG4gICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWZsb2F0aW5nLWJhclxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJcbiAgICAgICAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzIHwgZmlsdGVyUmVzcG9uc2liaWxpdHkgOiByZXNwb25zaWJpbGl0eURhdGE/LmRhdGFcbiAgICAgIFwiXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCJcbiAgICAgIFtkaXNwbGF5RWxlbWVudEtleV09XCIndGl0bGUnXCJcbiAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1Jlc3BvbnNpYmlsaXR5IHNlbGVjdGVkJ1wiXG4gICAgICBbcGx1cmFsVGV4dF09XCInUmVzcG9uc2liaWxpdGllcyBzZWxlY3RlZCdcIlxuICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50KCRldmVudClcIlxuICAgID48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
436
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9jb21wb25lbnRzL3Byb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZy9wcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nL3Byb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvYXRpbmdCYXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIubW9kdWxlJztcbmltcG9ydCB7IEZvcm1ncm91cE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9mb3JtZ3JvdXAvZm9ybWdyb3VwLm1vZHVsZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi91aS1raXQvdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBUYWJsZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1jYXJkL3RhYmxlLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1jYXRlZ29yeS1saXN0aW5nL2dyYy1jYXRlZ29yeS1saXN0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmNSZXNwb25zaWJpbGl0eUxpc3RpbmdDb21wb25lbnQgfSBmcm9tICcuLi9ncmMtcmVzcG9uc2liaWxpdHktbGlzdGluZy9ncmMtcmVzcG9uc2liaWxpdHktbGlzdGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9EYXRhTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L25vLWRhdGEvbm8tZGF0YS5tb2R1bGUnO1xuaW1wb3J0IHsgTGlzdExvYWRlck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZENvbXBvbmVudHMvbGlzdC1sb2FkZXIvbGlzdC1sb2FkZXIubW9kdWxlJztcbmltcG9ydCB7IEdyY1N1YkNhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1zdWItY2F0ZWdvcnktbGlzdGluZy9ncmMtc3ViLWNhdGVnb3J5LWxpc3RpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUkVTUE9OU0lCSUxJVFlfVEFCTEVfQ0FSRCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbnN0YW50JztcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncmMuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNhcmRMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL3RhYmxlLWNhcmQtbG9hZGVyL3RhYmxlLWNhcmQtbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTElOS1MgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dQaXBlc01vZHVsZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXBpcGVzL3dvcmtmbG93LXBpcGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEdldFVzZXJEZXRhaWxzUGlwZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXBpcGVzL2dldC11c2VyLWRldGFpbHMucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgRm9ybWdyb3VwTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgRmxvYXRpbmdCYXJNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZUNhcmRDb21wb25lbnQsXG4gICAgR3JjQ2F0ZWdvcnlMaXN0aW5nQ29tcG9uZW50LFxuICAgIEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCxcbiAgICBHcmNTdWJDYXRlZ29yeUxpc3RpbmdDb21wb25lbnQsXG4gICAgTGlzdExvYWRlck1vZHVsZSxcbiAgICBOb0RhdGFNb2R1bGUsXG4gICAgVGFibGVDYXJkTG9hZGVyQ29tcG9uZW50LFxuICAgIFdvcmtmbG93UGlwZXNNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcuY29tcG9uZW50Lmxlc3MnXSxcbiAgb3V0cHV0czogWydjbG9zZUxpc3QnXSxcbiAgcHJvdmlkZXJzOiBbR2V0VXNlckRldGFpbHNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmFtUmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvZ3JhbVR5cGVzID0gUkVTUE9OU0lCSUxJVFlfVEFCTEVfQ0FSRDtcbiAgQ0ROX0xJTksgPSBMSU5LUztcbiAgc2VsZWN0ZWRUYWI6IDAgfCAxIHwgMiB8IDMgPSAxO1xuXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gIHByb2dyYW1Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvZ3JhbUNvdW50TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHJlc3BvbnNpYmlsaXR5TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGNhdGVnb3J5TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkUHJvZ3JhbUFuZFJlc3A6IGFueVtdID0gW107XG4gIHByZVNlbGVjdGVkUHJvZ3JhbUFuZFJlc3A6IGFueVtdID0gW107XG4gIHNlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XG4gIGN1cnJlbnRCdXNpbmVzc0N5Y2xlITogYW55O1xuICBzZWxlY3RlZFByb2dyYW06IGFueTtcbiAgc2VsZWN0ZWRDYXRlZ29yeTogYW55O1xuICBwcm9ncmFtQ3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIGNhdGVnb3J5Q3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHByb2dyYW1EYXRhOiBhbnk7XG4gIGNhdGVnb3J5RGF0YTogYW55O1xuICByZXNwb25zaWJpbGl0eURhdGE6IGFueSA9IHtcbiAgICBkYXRhOiBbXSxcbiAgfTtcbiAgc2VsZWN0ZWRQcm9ncmFtSWRzOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZENhdGVnb3J5SWRzOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXRpZXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUkNJZHM6IG51bWJlcltdID0gW107XG5cbiAgcHJvZ3JhbUNhbGwhOiBTdWJzY3JpcHRpb247XG4gIGNhdGVnb3J5Q2FsbCE6IFN1YnNjcmlwdGlvbjtcbiAgcmVzcG9uc2liaWxpdHlDYWxsITogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgnc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCcpIHNldCBnZXRTZWxlY3RlZFByb2dyYW1BbmRSZXNwKGRhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzID0gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5yaWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCA9IGRhdGEgfHwgW107XG4gICAgdGhpcy5wcmVTZWxlY3RlZFByb2dyYW1BbmRSZXNwID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApKTtcbiAgICB0aGlzLmdldFNlbGVjdGVkUHJvZ3JhbUlkcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICAgIHRoaXMuZ2V0QWxsU2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCk7XG4gIH1cbiAgQElucHV0KCkgc2VsZWN0ZWRSQzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgTU9ERTogJ0NSRUFURScgfCAnRURJVCcgPSAnQ1JFQVRFJztcblxuICBjbG9zZUxpc3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGFMaXN0aW5nJylcbiAgcmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50ITogR3JjUmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSwgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSwgcHJpdmF0ZSBnZXRVc2VyRGV0YWlsczogR2V0VXNlckRldGFpbHNQaXBlKSB7XG4gICAgdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZSA9IHRoaXMuZ3JjU2VydmljZT8uZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdGllc0xpc3QoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VMaXN0LmVtaXQodGhpcy5wcmVTZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5jbG9zZUxpc3QuZW1pdCh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbXNMaXN0KGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMucHJvZ3JhbUNhbGwpIHtcbiAgICAgIHRoaXMucHJvZ3JhbUNhbGwudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5wcm9ncmFtTG9hZGVyID0gdHJ1ZTtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgcGFnaW5hdGlvblR5cGU6ICdzbWFsbCcsXG4gICAgICAgIGE6ICcnLFxuICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFN0cmluZyxcbiAgICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgICAgIHJpc2tJZHM6IFtdLFxuICAgICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiB0aGlzLmdldFNlbGVjdGVkUkNJZHModGhpcy5zZWxlY3RlZFJDKSA/PyBbXSxcbiAgICAgICAgICBlbnRydXN0ZWRCeTogW10sXG4gICAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBwYWdlTm86IHRoaXMucHJvZ3JhbUN1cnJlbnRQYWdlIHx8IDEsXG4gICAgICAgIHNvcnRPYmo6IHsgc29ydEJ5OiAnJywgdHlwZTogLTEgfSxcbiAgICAgICAgcGFnZU5hbWU6ICdjYXRlZ29yeScsXG4gICAgICAgIHR5cGVBcnI6IFt0aGlzLnNlbGVjdGVkVGFiXSxcbiAgICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcbiAgICAgICAgZW5kX2RhdGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LmVuZF9kYXRlLFxuICAgICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FycixcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxuICAgICAgICB0aW1lX2ZpbHRlcl90eXBlOiAnJyxcbiAgICAgICAgc3RhdGU6IFsyLCAzXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLnByb2dyYW1DYWxsID0gdGhpcy5ncmNTZXJ2aWNlLmdldFByb2dyYW1zTGlzdChyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3JhbUxvYWRlciA9IGZhbHNlO1xuICAgICAgICAvLyB0aGlzLnByb2dyYW1EYXRhLmRhdGEgPSByZXMuZGF0YSA/PyBbXTtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YSA9IHsgLi4ucmVzIH07XG4gICAgICAgIHRoaXMub25TZWxlY3RlZFByb2dyYW1DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yeUJ5UHJvZ3JhbUlkKHJlcz8uZGF0YVswXSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2dyYW1Mb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblByb2dyYW1QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnByb2dyYW1DdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm8gfHwgMTtcbiAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xuICB9XG5cbiAgb25TdWJDYXRlZ29yeVBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm8gfHwgMTtcbiAgICB0aGlzLmdldENhdGVnb3J5QnlQcm9ncmFtSWQodGhpcy5zZWxlY3RlZFByb2dyYW0pO1xuICB9XG5cbiAgZGVsZXRlRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50LmRlbGV0ZVNlbGVjdGVkUmVzcG9uc2liaWxpdHkoZXZlbnQpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRUYWIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucHJvZ3JhbUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnNlbGVjdGVkVGFiID0gZXZlbnQ/LnR5cGU7XG4gICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgfVxuXG4gIGhhbmRsZVNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XG4gICAgICB0aGlzLnByb2dyYW1DdXJyZW50UGFnZSA9IDE7XG4gICAgICB0aGlzLnNlYXJjaFN0cmluZyA9IGV2ZW50O1xuICAgICAgdGhpcy5vblNlbGVjdGVkUHJvZ3JhbUNoYW5nZSgpO1xuICAgICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNDb3VudCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb2dyYW1zQ291bnQocGFyYW1zT2JqZWN0PzogYW55KSB7XG4gICAgdGhpcy5wcm9ncmFtQ291bnRMb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIHR5cGU6ICcnLFxuICAgICAgICBwYWdpbmF0aW9uVHlwZTogJ3NtYWxsJyxcbiAgICAgICAgYTogJycsXG4gICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoU3RyaW5nLFxuICAgICAgICBmaWx0ZXJEYXRhOiB7XG4gICAgICAgICAgYXBwTGlzdDogW10sXG4gICAgICAgICAgcmlza0lkczogW10sXG4gICAgICAgICAgcmV2aWV3ZXJJZDogW10sXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHRoaXMuZ2V0U2VsZWN0ZWRSQ0lkcyh0aGlzLnNlbGVjdGVkUkMpID8/IFtdLFxuICAgICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgICAgICBlbnRydXN0ZWRUbzogW10sXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2VObzogMSxcbiAgICAgICAgc29ydE9iajogeyBzb3J0Qnk6ICcnLCB0eXBlOiAnJyB9LFxuICAgICAgICBwYWdlTmFtZTogJ2NhdGVnb3J5JyxcbiAgICAgICAgdHlwZUFycjogWzEsIDIsIDMsIDBdLFxuICAgICAgICBzdGFydF9kYXRlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5zdGFydF9kYXRlLFxuICAgICAgICBlbmRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uZW5kX2RhdGUsXG4gICAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyLFxuICAgICAgICBzZWxlY3RlZF9jeWNsZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGUsXG4gICAgICAgIHRpbWVfZmlsdGVyX3R5cGU6ICcnLFxuICAgICAgICBzdGF0ZTogWzIsIDNdLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRQcm9ncmFtc0xpc3RDb3VudChyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJvZ3JhbVR5cGVzWzBdLmNvdW50ID1cbiAgICAgICAgICByZXM/LnJlZ3VsYXRpb25Db3VudD8uYWN0aXZlICsgcmVzPy5yZWd1bGF0aW9uQ291bnQ/LmNvbXBsZXRlZDtcbiAgICAgICAgdGhpcy5wcm9ncmFtVHlwZXNbMV0uY291bnQgPVxuICAgICAgICAgIHJlcz8uc3RhbmRhcmRDb3VudD8uYWN0aXZlICsgcmVzPy5zdGFuZGFyZENvdW50Py5jb21wbGV0ZWQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbVR5cGVzWzJdLmNvdW50ID1cbiAgICAgICAgICByZXM/LmludGVybmFsQ291bnQ/LmFjdGl2ZSArIHJlcz8uaW50ZXJuYWxDb3VudD8uY29tcGxldGVkO1xuICAgICAgICB0aGlzLnByb2dyYW1UeXBlc1szXS5jb3VudCA9XG4gICAgICAgICAgcmVzPy5vdGhlckNvdW50Py5hY3RpdmUgKyByZXM/Lm90aGVyQ291bnQ/LmNvbXBsZXRlZDtcbiAgICAgICAgLy8gfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhdGVnb3J5QnlQcm9ncmFtSWQocHJvZ3JhbTogYW55KSB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlDYWxsKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5Q2FsbC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSA9IHByb2dyYW07XG4gICAgdGhpcy5jYXRlZ29yeUxvYWRlciA9IHRydWU7XG4gICAgLy8gdGhpcy5yZXNldENvbnRyb2xWYXJpYWJsZSgpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICBpZDogcHJvZ3JhbT8uX2lkLFxuICAgICAgc2NvcGVUeXBlOiAncmlzaycsXG4gICAgICBwYWdpbmF0aW9uVHlwZTogJ3NtYWxsJyxcbiAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoU3RyaW5nLFxuICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICBhcHBMaXN0OiBbXSxcbiAgICAgICAgcmlza0lkczogW10sXG4gICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5nZXRTZWxlY3RlZFJDSWRzKHRoaXMuc2VsZWN0ZWRSQykgPz8gW10sXG4gICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcbiAgICAgIH0sXG4gICAgICBwYWdlOiB0aGlzLmNhdGVnb3J5Q3VycmVudFBhZ2UgfHwgMSxcbiAgICAgIC8vIHNvcnRpbmdDb3VudDogdGhpcy5jYXRlZ29yeVNvcnRWYWx1ZSxcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGJ1c2luZXNzQ3ljbGU6IHtcbiAgICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcbiAgICAgICAgZW5kX2RhdGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LmVuZF9kYXRlLFxuICAgICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FycixcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxuICAgICAgICB0aW1lX2ZpbHRlcl90eXBlOiAnJyxcbiAgICAgICAgLy8gXCJzY29wZVR5cGVcIjogJ3Jpc2snLFxuICAgICAgICB0eXBlOiAncmlzaycsXG4gICAgICAgIGNhbGxGcm9tOiAnZ3JjJyxcbiAgICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgICAgIHJpc2tJZHM6IFtdLFxuICAgICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiB0aGlzLmdldFNlbGVjdGVkUkNJZHModGhpcy5zZWxlY3RlZFJDKSA/PyBbXSxcbiAgICAgICAgICBlbnRydXN0ZWRCeTogW10sXG4gICAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuY2F0ZWdvcnlDYWxsID0gdGhpcy5ncmNTZXJ2aWNlLmdldFN1YkNhdGVnb3J5TGlzdChoZWFkZXJzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEgPSB7IC4uLnJlcyB9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSByZXM/LmRhdGFbMF07XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdGllc0xpc3QoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhY3RpdmVTZWxlY3RlZFByb2dyYW0oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtID0gZXZlbnQ/LmNhdGVnb3J5O1xuICAgIHRoaXMub25TZWxlY3RlZFByb2dyYW1DaGFuZ2UoKTtcbiAgICB0aGlzLmdldENhdGVnb3J5QnlQcm9ncmFtSWQodGhpcy5zZWxlY3RlZFByb2dyYW0pO1xuICAgIC8vIHRoaXMuZ2V0U2VsZWN0ZWRDYXRlZ29yeUlkcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbUFuZFJlc3ApO1xuICB9XG5cbiAgYWN0aXZlU2VsZWN0ZWRTdWJDYXRlZ29yeShldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5ID0gZXZlbnQ/LmNhdGVnb3J5O1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdGllc0xpc3QoKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXRpZXNMaXN0KGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlDYWxsKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2FsbC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIHRoaXMucmVzcENvdW50ID0gZXZlbnQuc29ydFZhbHVlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2lzQnVzaW5lc3NDeWNsZScsICd0cnVlJyk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFyZW50SWQnLCB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY2F0ZWdvcnlfaWQpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2NhdElkJywgdGhpcy5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZU5vJywgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID8/IDEpO1xuICAgIC8vIGlmIChbMSwgLTFdLmluY2x1ZGVzKHRoaXMuY29udHJvbFNvcnRWYWx1ZSkpIHtcbiAgICAvLyAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3NvcnRWYWx1ZScsIHRoaXMuY29udHJvbFNvcnRWYWx1ZSk7XG4gICAgLy8gICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzb3J0QnknLCAnRGF0YS5SZXBvcnROYW1lJyk7XG4gICAgLy8gfVxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2luYXRpb25UeXBlJywgJ3NtYWxsJyk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZVR5cGUnLCAncmlzaycpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2NhbGxGcm9tJywgJ2dyYycpO1xuICAgIGNvbnN0IHJjSWRzID0gdGhpcy5nZXRTZWxlY3RlZFJDSWRzKHRoaXMuc2VsZWN0ZWRSQykuam9pbignLCcpO1xuICAgIGxldCBidXNpbmVzc0N5Y2xlID0ge1xuICAgICAgc3RhcnRfZGF0ZTogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc3RhcnRfZGF0ZSxcbiAgICAgIGVuZF9kYXRlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlPy5lbmRfZGF0ZSxcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyLFxuICAgICAgc2VsZWN0ZWRfY3ljbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlLFxuICAgICAgdGltZV9maWx0ZXJfdHlwZTogJycsXG4gICAgICBwYWdlVHlwZTogJ3Jpc2snLFxuICAgICAgY2FsbEZyb206ICdncmMnLFxuICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICBhcHBMaXN0OiBbXSxcbiAgICAgICAgcmlza0lkczogW10sXG4gICAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5nZXRTZWxlY3RlZFJDSWRzKHRoaXMuc2VsZWN0ZWRSQykgPz8gW10sXG4gICAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYWxsID0gdGhpcy5ncmNTZXJ2aWNlXG4gICAgICAuZ2V0QWxsUmVzcG9uc2liaWxpdGllcyh0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UsIHJjSWRzKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBwYWdlU2l6ZSA9IDMwO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gcmVzPy5kYXRhPy5wYWdlIHx8IDE7XG4gICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxO1xuICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplIC0gMSwgcmVzPy5kYXRhPy50b3RhbCB8fCAwKTtcbiAgICAgICAgICBcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSA9IHtcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuc2V0RGF0YUxpc3RTdHJ1Y3R1cmUocmVzPy5kYXRhPy5yZXNwb25zaWJpbGl0aWVzIHx8IFtdLCByZXM/LmRhdGE/LnVzZXJzIHx8IFtdLCByZXM/LmRhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVycyB8fCBbXSksXG4gICAgICAgICAgICB0b3RhbF9pdGVtczogcmVzPy5kYXRhPy50b3RhbCB8fCAwLFxuICAgICAgICAgICAgdG90YWxfcGFnZXM6IE1hdGguY2VpbCgocmVzPy5kYXRhPy50b3RhbCB8fCAwKSAvIHBhZ2VTaXplKSxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogY3VycmVudFBhZ2UsXG4gICAgICAgICAgICBwZXJfcGFnZTogcGFnZVNpemUsXG4gICAgICAgICAgICBpdGVtc19mcm9tOiBzdGFydEluZGV4LFxuICAgICAgICAgICAgaXRlbXNfdG86IGVuZEluZGV4XG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIGdldFVwZGF0ZWREYXRhTGlzdChldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gZXZlbnQ/LnBhZ2VObztcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXRpZXNMaXN0KCk7XG4gIH1cblxuICBzZXREYXRhTGlzdFN0cnVjdHVyZShyZXNwb25zaWJpbGl0aWVzOiBhbnlbXSwgdXNlcnM6IGFueVtdLCByZXNwb25zaWJpbGl0eUNlbnRlcnM6IGFueVtdKSB7XG4gICAgY29uc3QgZGF0YSA9IHJlc3BvbnNpYmlsaXRpZXM/Lm1hcCgocmVzcG9uc2liaWxpdHk6IGFueSkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2liaWxpdHlDZW50ZXJJZHMgPSByZXNwb25zaWJpbGl0eT8ucmVzcG9uc2liaWxpdHlfY2VudGVycyB8fCBbXTtcblxuICAgICAgY29uc3QgbWFwcGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gcmVzcG9uc2liaWxpdHlDZW50ZXJJZHMubWFwKChyY0lkOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgcmMgPSByZXNwb25zaWJpbGl0eUNlbnRlcnMuZmluZCgoY2VudGVyOiBhbnkpID0+IGNlbnRlcj8uaWQgPT09IHJjSWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHJjPy5uYW1lIHx8ICcnLFxuICAgICAgICAgIGlkOiByY0lkXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXNzaWdub3JEZXRhaWxzID0gdGhpcy5nZXRVc2VyRGV0YWlscy50cmFuc2Zvcm0oW3Jlc3BvbnNpYmlsaXR5Py5hc3NpZ25vcl0sIHVzZXJzKT8uWzBdIHx8IHt9O1xuICAgICAgY29uc3QgYXNzaWduZWVEZXRhaWxzID0gdGhpcy5nZXRVc2VyRGV0YWlscy50cmFuc2Zvcm0ocmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlcz8udXNlcklkIHx8IFtdLCB1c2VycykgfHwgW107XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3BvbnNpYmlsaXR5LFxuICAgICAgICBuYW1lOiByZXNwb25zaWJpbGl0eT8udGl0bGUgfHwgJycsXG4gICAgICAgIGNvbnRyb2xJZDogcmVzcG9uc2liaWxpdHk/LmtleXx8ICcnLFxuICAgICAgICBfaWQ6IHJlc3BvbnNpYmlsaXR5Py5yaWQsXG4gICAgICAgIGVudHJ1c3RlZEJ5OiB7XG4gICAgICAgICAgbmFtZTogYXNzaWdub3JEZXRhaWxzPy5uYW1lIHx8ICcnLFxuICAgICAgICAgIGVtYWlsOiBhc3NpZ25vckRldGFpbHM/LmVtYWlsIHx8ICcnLFxuICAgICAgICAgIHByb2ZpbGVQaWM6IGFzc2lnbm9yRGV0YWlscz8uYXZhdGFyIHx8ICcnLFxuICAgICAgICAgIHNob3J0TmFtZTogYXNzaWdub3JEZXRhaWxzPy5zaG9ydF9uYW1lIHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgICBlbnRydXN0ZWRUbzoge1xuICAgICAgICAgIG5hbWU6IGFzc2lnbmVlRGV0YWlsc1swXT8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBlbWFpbDogYXNzaWduZWVEZXRhaWxzWzBdPy5lbWFpbCB8fCAnJyxcbiAgICAgICAgICBwcm9maWxlUGljOiBhc3NpZ25lZURldGFpbHNbMF0/LmF2YXRhciB8fCAnJyxcbiAgICAgICAgICBzaG9ydE5hbWU6IGFzc2lnbmVlRGV0YWlsc1swXT8uc2hvcnRfbmFtZSB8fCAnJyxcbiAgICAgICAgICBFbnRydXN0ZWRUb01lbWJlcnM6IGFzc2lnbmVlRGV0YWlscz8ubWFwKCh1c2VyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBtZW1iZXJfbmFtZTogdXNlcj8ubmFtZSxcbiAgICAgICAgICAgIHByb2ZpbGVfcGljOiB1c2VyPy5hdmF0YXIsXG4gICAgICAgICAgICBtZW1iZXJfc2hvcnRfbmFtZTogdXNlcj8uc2hvcnRfbmFtZVxuICAgICAgICAgIH0pKSB8fCBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgd2l0aGluRGF0YTogbWFwcGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLFxuICAgICAgICBzdWJDYXRlZ29yeUlkOiB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWRQcm9ncmFtQ2hhbmdlKCkge1xuICAgIHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGVkUHJvZ3JhbUFuZFJlc3AoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCA9IGV2ZW50O1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtSWRzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCk7XG4gICAgdGhpcy5nZXRBbGxTZWxlY3RlZFJlc3BvbnNpYmlsaXRpZXModGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcbiAgICB0aGlzLmdldFNlbGVjdGVkQ2F0ZWdvcnlJZHModGhpcy5zZWxlY3RlZFByb2dyYW1BbmRSZXNwKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUHJvZ3JhbUlkcyhzZWxlY3RlZERhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtSWRzID0gW107XG4gICAgc2VsZWN0ZWREYXRhPy5mb3JFYWNoKChzZWxlY3RlZDogYW55KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbUlkcy5wdXNoKHNlbGVjdGVkPy5wcm9ncmFtPy5wcm9ncmFtSWQpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDYXRlZ29yeUlkcyhzZWxlY3RlZERhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkcyA9IFtdO1xuICAgIGxldCBwcm9ncmFtSW5kZXggPSAtMTtcbiAgICBwcm9ncmFtSW5kZXggPSBzZWxlY3RlZERhdGEuZmluZEluZGV4KFxuICAgICAgKGNhdDogYW55KSA9PiBjYXQ/LnByb2dyYW0/LnByb2dyYW1JZCA9PT0gdGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1JZFxuICAgICk7XG4gICAgaWYgKHByb2dyYW1JbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkcyA9IHNlbGVjdGVkRGF0YVtwcm9ncmFtSW5kZXhdPy5jYXRlZ29yeTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWRzID0gW107XG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsU2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzKHNlbGVjdGVkRGF0YTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXRpZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdGllcyA9IHNlbGVjdGVkRGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8ucmlkKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUkNJZHMoc2VsZWN0ZWRSQzogYW55W10pIHtcbiAgICBsZXQgc2VsZWN0ZWRSQ0lkczogYW55W10gPSBbXTtcbiAgICBzZWxlY3RlZFJDSWRzID0gc2VsZWN0ZWRSQz8ubWFwKChyYzogYW55KSA9PiByYz8ucmNpZCk7XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRSQ0lkcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2dyYW0tcmVzcG9uc2liaWxpdHktbGlzdGluZ1wiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmctaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxuICA+XG4gICAgPGgzIGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBSZXNwb25zaWJpbGl0aWVzPC9oMz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmctYm9keVwiPlxuICAgIDwhLS0gPGFwcC10YWJsZS1jYXJkLWxvYWRlciAqbmdJZj1cInByb2dyYW1Db3VudExvYWRlclwiPjwvYXBwLXRhYmxlLWNhcmQtbG9hZGVyPiAtLT5cbiAgICA8IS0tIDxhcHAtdGFibGUtY2FyZFxuICAgICAgICAgICAgKm5nSWY9XCIhcHJvZ3JhbUNvdW50TG9hZGVyXCJcbiAgICAgICAgICAgIGNsYXNzPVwidngtdy0xMDBcIlxuICAgICAgICAgICAgW3RhYmxlQ2FyZF09XCJwcm9ncmFtVHlwZXNcIlxuICAgICAgICAgICAgW3NpbmdsZVNlbGVjdGVkVGV4dF09XCInUmVzcG9uc2liaWxpdHkgU2VsZWN0ZWQnXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiXG4gICAgICAgICAgICBbbXVsdGlwbGVTZWxlY3RlZFRleHRdPVwiJ1Jlc3BvbnNpYmlsaXRpZXMgU2VsZWN0ZWQnXCJcbiAgICAgICAgICAgIChzZXRTZWxlY3RlZFRhYik9XCJzZXRTZWxlY3RlZFRhYigkZXZlbnQpXCI+XG4gICAgICAgIDwvYXBwLXRhYmxlLWNhcmQ+IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMlwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgI3NlYXJjaFJpc2tDYXRlZ29yeVxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlU2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUmVzcG9uc2liaWxpdGllc1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1yZXNwb25zaWJpbGl0eS1saXN0aW5nLWJvZHktaW5uZXIgdngtbWItMiB2eC1kLWZsZXhcIlxuICAgICAgW2NsYXNzLnZ4LWp1c3RpZnktY2VudGVyXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgIXJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ubGVuZ3RoXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUxvYWRlciB8fCByZXNwb25zaWJpbGl0eURhdGE/LmRhdGE/Lmxlbmd0aFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlubmVyLWl0ZW0tbGVmdCB2eC1wci0yXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1ncmMtY2F0ZWdvcnktbGlzdGluZyAqbmdJZj1cIiFwcm9ncmFtTG9hZGVyXCIgW2hlYWRlclRleHRdPVwiJ1Byb2dyYW1zJ1wiIFtwcm9ncmFtRGF0YV09XCJwcm9ncmFtRGF0YVwiICBbc2VsZWN0ZWRDYXRBbmRSaXNrXT1cInNlbGVjdGVkQ2F0QW5kUmlza1wiIFtuYW1lRGlzcGxheUtleV09XCInaXRlbV9uYW1lJ1wiIFtjdXJyZW50UGFnZV09XCJwcm9ncmFtQ3VycmVudFBhZ2VcIiBbc2VsZWN0ZWRUYWJJbmRleF09XCJzZWxlY3RlZFRhYlwiIFtzZWxlY3RlZENhdGVnb3J5SWRzXT1cInNlbGVjdGVkUHJvZ3JhbUlkc1wiIChhY3RpdmVTZWxlY3RlZENhdGVnb3J5KT1cImFjdGl2ZVNlbGVjdGVkUHJvZ3JhbSgkZXZlbnQpXCIgKG9uQ2F0ZWdvcnlQYWdlQ2hhbmdlKT1cIm9uUHJvZ3JhbVBhZ2VDaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLWdyYy1jYXRlZ29yeS1saXN0aW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJwcm9ncmFtTG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW5uZXItaXRlbS1taWQgdngtcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWdyYy1zdWItY2F0ZWdvcnktbGlzdGluZyAqbmdJZj1cIiFjYXRlZ29yeUxvYWRlciAmJiAhcHJvZ3JhbUxvYWRlclwiICBbaGVhZGVyVGV4dF09XCInUHJvZ3JhbXMnXCIgW2NhdGVnb3JpZXNdPVwiY2F0ZWdvcnlEYXRhXCIgIFtuYW1lRGlzcGxheUtleV09XCInaXRlbV9uYW1lJ1wiICBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcnlDdXJyZW50UGFnZVwiIFtzZWxlY3RlZENhdGVnb3J5SWRzXT1cInNlbGVjdGVkQ2F0ZWdvcnlJZHNcIiBbYWN0aXZlUHJvZ3JhbV09XCJzZWxlY3RlZFByb2dyYW1cIiBbc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcF09XCJzZWxlY3RlZFByb2dyYW1BbmRSZXNwXCIgKGFjdGl2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwiYWN0aXZlU2VsZWN0ZWRTdWJDYXRlZ29yeSgkZXZlbnQpXCIgKG9uQ2F0ZWdvcnlQYWdlQ2hhbmdlKT1cIm9uU3ViQ2F0ZWdvcnlQYWdlQ2hhbmdlKCRldmVudClcIj48L2FwcC1ncmMtc3ViLWNhdGVnb3J5LWxpc3Rpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJjYXRlZ29yeUxvYWRlciB8fCBwcm9ncmFtTG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1pdGVtLXJpZ2h0XCI+XG4gICAgICAgICAgPCEtLSA8YXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPjwvYXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPiAtLT5cblxuICAgICAgICAgIDxhcHAtZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmdcbiAgICAgICAgICAgICNkYXRhTGlzdGluZ1xuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmXG4gICAgICAgICAgICAgICFjYXRlZ29yeUxvYWRlciAmJlxuICAgICAgICAgICAgICAhcHJvZ3JhbUxvYWRlciAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eURhdGE/LmRhdGE/Lmxlbmd0aCAhPT0gMFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtoZWFkZXJUZXh0XT1cIidSZXNwb25zaWJpbGl0aWVzJ1wiXG4gICAgICAgICAgICBbTU9ERV09XCJNT0RFXCJcbiAgICAgICAgICAgIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVzcG9uc2liaWxpdHlEYXRhXCJcbiAgICAgICAgICAgIFthY3RpdmVQcm9ncmFtXT1cInNlbGVjdGVkUHJvZ3JhbVwiXG4gICAgICAgICAgICBbYWN0aXZlQ2F0ZWdvcnldPVwic2VsZWN0ZWRDYXRlZ29yeVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRQcm9ncmFtQW5kUmVzcF09XCJzZWxlY3RlZFByb2dyYW1BbmRSZXNwXCJcbiAgICAgICAgICAgIFthbGxTZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWRzXT1cInNlbGVjdGVkUmVzcG9uc2liaWxpdGllc1wiXG4gICAgICAgICAgICAoY2hhbmdlU2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCk9XCJcbiAgICAgICAgICAgICAgY2hhbmdlU2VsZWN0ZWRQcm9ncmFtQW5kUmVzcCgkZXZlbnQpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cInJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgW3BlclBhZ2VMaW1pdF09XCIzMFwiXG4gICAgICAgICAgICBbdG90YWxMaXN0RGF0YV09XCJyZXNwb25zaWJpbGl0eURhdGE/LnRvdGFsX2l0ZW1zXCJcbiAgICAgICAgICAgIFt0b3RhbFBhZ2VzXT1cInJlc3BvbnNpYmlsaXR5RGF0YT8udG90YWxfcGFnZXNcIlxuICAgICAgICAgICAgKGdldFVwZGF0ZWREYXRhTGlzdCk9XCJnZXRVcGRhdGVkRGF0YUxpc3QoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvYXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPlxuXG4gICAgICAgICAgPGFwcC1saXN0LWxvYWRlclxuICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUxvYWRlciB8fCBjYXRlZ29yeUxvYWRlciB8fCBwcm9ncmFtTG9hZGVyXCJcbiAgICAgICAgICA+PC9hcHAtbGlzdC1sb2FkZXI+XG5cbiAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICEocmVzcG9uc2liaWxpdHlMb2FkZXIgfHwgY2F0ZWdvcnlMb2FkZXIgfHwgcHJvZ3JhbUxvYWRlcilcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQ0ROX0xJTks/Lm5vRGF0YVwiXG4gICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiXG4gICAgICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgIXJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ubGVuZ3RoXCJcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIkNETl9MSU5LPy5ub0RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiXG4gICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWZsb2F0aW5nLWJhclxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJcbiAgICAgICAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0aWVzIHwgZmlsdGVyUmVzcG9uc2liaWxpdHkgOiByZXNwb25zaWJpbGl0eURhdGE/LmRhdGFcbiAgICAgIFwiXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCJcbiAgICAgIFtkaXNwbGF5RWxlbWVudEtleV09XCIndGl0bGUnXCJcbiAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1Jlc3BvbnNpYmlsaXR5IHNlbGVjdGVkJ1wiXG4gICAgICBbcGx1cmFsVGV4dF09XCInUmVzcG9uc2liaWxpdGllcyBzZWxlY3RlZCdcIlxuICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50KCRldmVudClcIlxuICAgID48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -64,7 +64,7 @@ export class GrcService {
64
64
  this.env = config.envConfig;
65
65
  }
66
66
  }
67
- getAllResponsibilities(pageNo) {
67
+ getAllResponsibilities(pageNo, rcIds) {
68
68
  const businessCycle = this.getBusinessCycle();
69
69
  const formattedCycle = businessCycle.selected_cycle
70
70
  ? dayjs(businessCycle.selected_cycle.split('-')[0]).format('YYYY-MM-DD') +
@@ -74,7 +74,7 @@ export class GrcService {
74
74
  const headers = new HttpHeaders()
75
75
  .set('token', this.authService.getAuthorizationToken())
76
76
  .set('biz_cycle', formattedCycle);
77
- return this.http.get(this.env.complianceGet + `sailsResponsibilitiesList&page=1&limit=-1`, { headers });
77
+ return this.http.get(this.env.complianceGet + `sailsResponsibilitiesList&page=1&limit=-1&rc=${rcIds}`, { headers });
78
78
  }
79
79
  getGRCList(event) {
80
80
  const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
@@ -320,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
320
320
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
321
321
  type: Optional
322
322
  }] }]; } });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFLMUIsTUFBTSxPQUFPLFVBQVU7YUFFRSxrQkFBYSxHQUFHO1FBQ3JDLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLFdBQVcsRUFBRSx1Q0FBdUM7S0FDckQsQ0FBQztJQTZDRixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE5Q2xCLGdCQUFXLEdBQVc7WUFDcEMsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsY0FBYyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxFQUFFLEVBQUU7WUFDViw2QkFBNkIsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRSxFQUFFO1lBQ1Ysb0JBQW9CLEVBQUUsRUFBRTtZQUN4QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGNBQWMsRUFBRSxF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YSxHQUFHLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxDQUFDLFFBQVEsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQzVCLEVBQUUsT0FBTyxFQUFFLENBQ1o7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELDZCQUE2QixDQUMzQixHQUFRLEVBQ1IsT0FBYSxFQUNiLGdCQUFzQjtRQUV0QixvREFBb0Q7UUFDcEQsSUFBSSxXQUFXLEdBQVEsRUFBRSxDQUFDO1FBQzFCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEMsd0VBQXdFO1FBQ3hFLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDNUUsV0FBVyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWUsR0FBRyxxQkFBcUIsRUFBRSxXQUFXLENBQUM7YUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7K0dBeFhVLFVBQVU7bUhBQVYsVUFBVSxjQUZULE1BQU07OzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF5REksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFkZEdyYywgQXR0cmlidXRlc0RldGFpbHMsIExpc3RPYmplY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2FkZC1ncmMnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyY1NlcnZpY2Uge1xuICBlbnYhOiBhbnk7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRURJVE9SX0NPTkZJRyA9IHtcbiAgICBtb2RlOiAncHJpbWUnLFxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICBsaW5rOiB0cnVlLFxuICAgIGlkOiAnZ3JjX2Rlc2NyaXB0aW9uJyxcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIEdSQyBPYmplY3QnLFxuICB9O1xuICBwdWJsaWMgcmVhZG9ubHkgR1JDX1BBWUxPQUQ6IEFkZEdyYyA9IHtcbiAgICBuYW1lOiAnJyxcbiAgICB0eXBlOiAzLCAvL0Fzc2V0cy0gMCwgSW52ZW50b3J5LSAxLCBQcm9jZXNzZXMgLSAyLCBWZW5kb3JzLSAzXG4gICAgc3RhdGU6IDAsXG4gICAgcGFyZW50X2dyY19pZHM6IFtdLFxuICAgIG93bmVyczogW10sXG4gICAgZW1haWxfbm90aWZpY2F0aW9uX21lbWJlcl9pZHM6IFtdLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICBmcmVxdWVuY3k6ICcnLFxuICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgIHJjX2lkczogW10sXG4gICAgcHJvZ3JhbV9jYXRlZ29yeV9pZHM6IFtdLFxuICAgIHJpc2tfY2F0ZWdvcnlfaWRzOiBbXSxcbiAgICBsaW5rZWRfR1JDX2lkczogW10sXG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IExJU1RfT0JKRUNUOiBMaXN0T2JqZWN0ID0ge1xuICAgIFJDOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YTogW10sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgIH0sXG4gICAgT1dORVI6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgICBkaXNhYmxlZElkczogW10sXG4gICAgfSxcbiAgICBPVEhFUl9HUkNfT0JKRUNUUzoge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9LFxuICAgIFJJU0tfQ0FURUdPUlk6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgICBQUk9HUkFNX1JFU1BPTlNJQklMSVRZOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgIH0sXG4gIH07XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xuICApIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsUmVzcG9uc2liaWxpdGllcyhwYWdlTm86IG51bWJlcikge1xuICAgIGNvbnN0IGJ1c2luZXNzQ3ljbGUgPSB0aGlzLmdldEJ1c2luZXNzQ3ljbGUoKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRDeWNsZSA9IGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGVcbiAgICAgID8gZGF5anMoYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZS5zcGxpdCgnLScpWzBdKS5mb3JtYXQoJ1lZWVktTU0tREQnKSArIFxuICAgICAgICAnOicgKyBcbiAgICAgICAgZGF5anMoYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZS5zcGxpdCgnLScpWzFdKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgICAgOiAnJztcbiAgICBcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcbiAgICAgIC5zZXQoJ2Jpel9jeWNsZScsIGZvcm1hdHRlZEN5Y2xlKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oXG4gICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgYHNhaWxzUmVzcG9uc2liaWxpdGllc0xpc3QmcGFnZT0xJmxpbWl0PS0xYCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEdSQ0xpc3QoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3N0YXRlJywgZXZlbnQ/LnN0YXRlID8/IDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2dyY1R5cGUnLCBldmVudD8udHlwZSA/PyAwKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYWdlJywgZXZlbnQ/LnBhZ2VObyA/PyAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyY0lkcycsIGV2ZW50Py5yY19pZHMgPz8gJycpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgnbmFtZScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8uZ3JjX2dldCArICdncmMvZ2V0R1JDTGlzdCcsIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldEdSQ1RhYnNDb3VudChldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCduYW1lJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIGlmIChldmVudD8ucmNfaWRzKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyY0lkcycsIGV2ZW50Py5yY19pZHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8uZ3JjX2dldCArICdncmMvZ2V0R1JDQ291bnQnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWYWxpZGF0aW9uKGdyY1BheWxvYWQ6IEFkZEdyYywgaXNBdHRyaWJ1dGVzU2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpc1ZhbGlkRGF0YSA9XG4gICAgICBncmNQYXlsb2FkLm5hbWUudHJpbSgpICE9PSAnJyAmJlxuICAgICAgZ3JjUGF5bG9hZC50eXBlID4gLTEgJiZcbiAgICAgIGdyY1BheWxvYWQub3duZXJzLmxlbmd0aCAmJlxuICAgICAgZ3JjUGF5bG9hZC5yY19pZHMubGVuZ3RoO1xuICAgIHJldHVybiAoXG4gICAgICBpc1ZhbGlkRGF0YSAmJlxuICAgICAgKCFpc0F0dHJpYnV0ZXNTZWxlY3RlZCB8fFxuICAgICAgICB0aGlzLmNoZWNrQXR0cmlidXRlVmFsaWRhdGlvbihncmNQYXlsb2FkLmF0dHJpYnV0ZXMpKVxuICAgICk7XG4gIH1cblxuICBjaGVja0F0dHJpYnV0ZVZhbGlkYXRpb24oYXR0cmlidXRlczogQXR0cmlidXRlc0RldGFpbHNbXSk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChvYmouaXNSZXF1aXJlZCkge1xuICAgICAgICBpZiAob2JqLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHwgb2JqLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XG4gICAgICAgICAgY29uc3QgY2hvaWNlID0gb2JqLmNob2ljZXNbMF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnY2hlY2tib3gnIHx8IG9iai50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAob2JqLmhhc090aGVyICYmIG9iaj8uaXNfb3RoZXJfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIG9iai5jaG9pY2VzKSB7XG4gICAgICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNrQXR0cmlidXRlc1NlbGVjdGVkKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAob2JqLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHwgb2JqLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XG4gICAgICAgIGNvbnN0IGNob2ljZSA9IG9iai5jaG9pY2VzWzBdO1xuICAgICAgICBpZiAodHlwZW9mIGNob2ljZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY2hvaWNlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdjaGVja2JveCcgfHwgb2JqLnR5cGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2Ygb2JqLmNob2ljZXMpIHtcbiAgICAgICAgICBpZiAoY2hvaWNlLmlzX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja0VhY2hBdHRyaWJ1dGVWYWxpZGF0aW9uKGF0dHJpYnV0ZTogQXR0cmlidXRlc0RldGFpbHMpOiBib29sZWFuIHtcbiAgICBpZiAoYXR0cmlidXRlLmlzUmVxdWlyZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHxcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdkYXRlLXRpbWUnXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY2hvaWNlID0gYXR0cmlidXRlLmNob2ljZXNbMF07XG4gICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdjaGVja2JveCcgfHxcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdkcm9wZG93bidcbiAgICAgICkge1xuICAgICAgICBsZXQgaXNDaG9pY2VTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBhdHRyaWJ1dGUuY2hvaWNlcykge1xuICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBnZXRSaXNrQ2F0ZWdvcmllcyhldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmV0dXJuVHlwZScsIDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2NhdGVnb3J5VHlwZScsIGV2ZW50Py50eXBlID8/IDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBldmVudD8ucGFnZU5vID8/IDEpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py50eXBlID09PSAwID8gcGFyYW1zLmFwcGVuZCgncmlza0ZsYWcnLCAxKSA6IHBhcmFtcztcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ3EnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L2xpc3QnLCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Umlza0NhdGVnb3JpZXNDb3VudChldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCdxJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIGlmIChldmVudD8ucmNfaWRzPy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3JjX2lkcycsIGV2ZW50LnJjX2lkcy5qb2luKCcsJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvY291bnQnLCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Umlza3MocGF5bG9hZD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPihcbiAgICAgIHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L3Jpc2tsaXN0JyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEJ1c2luZXNzQ3ljbGUoKSB7XG4gICAgbGV0IGJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKFxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzQ3ljbGUnKSA/PyAne30nXG4gICAgKTtcbiAgICBsZXQgY3VycmVudEJ1c2luZXNzQ3ljbGUgPSB7XG4gICAgICBzZWxlY3RlZF9jeWNsZTogYnVzaW5lc3NDeWNsZVxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnN0YXJ0X2RhdGUgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGVcbiAgICAgICAgOiAnJyxcbiAgICAgIHN0YXJ0X2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlIDogJycsXG4gICAgICBlbmRfZGF0ZTogYnVzaW5lc3NDeWNsZSA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlIDogJycsXG4gICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IGJ1c2luZXNzQ3ljbGVcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnJcbiAgICAgICAgOiBbXSxcbiAgICB9O1xuICAgIHJldHVybiBjdXJyZW50QnVzaW5lc3NDeWNsZTtcbiAgfVxuXG4gIGdldFByb2dyYW1zTGlzdChyZXE6IGFueSkge1xuICAgIC8vIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGlmIChyZXE/LnBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcmVxLnBhcmFtcztcbiAgICB9XG4gICAgaWYgKHJlcT8uaGVhZGVycykge1xuICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3BheWxvYWQtb2JqZWN0JyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVxLmhlYWRlcnMpXG4gICAgICApO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGh0dHBPcHRpb25zLmhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAndG9rZW4nLFxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICsgJy9jYXRlZ29yaWVzTGlzdD9vd25lcl9saXN0PTEnLFxuICAgICAgICBodHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbXNMaXN0Q291bnQocmVxOiBhbnkpIHtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGlmIChyZXE/LnBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcmVxLnBhcmFtcztcbiAgICB9XG4gICAgaWYgKHJlcT8uaGVhZGVycykge1xuICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3BheWxvYWQtb2JqZWN0JyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVxPy5oZWFkZXJzKVxuICAgICAgKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBodHRwT3B0aW9ucy5oZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3Rva2VuJyxcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvb3ZlcnZpZXctY291bnQnLCBodHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldFN1YkNhdGVnb3J5TGlzdChwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAocGF5bG9hZD8uc2NvcGVUeXBlID09PSAnbm90X2NvbXBsZXRlZCcpIHtcbiAgICAgIHBheWxvYWQuc2NvcGVUeXBlID0gJ25vdENvbXBsZXRlZCc7XG4gICAgfVxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKFxuICAgICAgJ3BheWxvYWQtb2JqZWN0JyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHBheWxvYWQ/LmJ1c2luZXNzQ3ljbGUpXG4gICAgKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KFxuICAgICAgICB0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICtcbiAgICAgICAgICAnL3N1YkNhdGVnb3JpZXM/aXNCdXNpbmVzc0N5Y2xlPXRydWUmcGFyZW50SWQ9JyArXG4gICAgICAgICAgcGF5bG9hZD8uaWQgK1xuICAgICAgICAgICcmdHlwZT0nICtcbiAgICAgICAgICBwYXlsb2FkPy5zY29wZVR5cGUgK1xuICAgICAgICAgICcmY2FsbEZyb209Z3JjJyArXG4gICAgICAgICAgKHBheWxvYWQ/LnNlYXJjaFRleHQgPyAnJnE9JyArIGVuY29kZVVSSShwYXlsb2FkPy5zZWFyY2hUZXh0KSA6ICcnKSArXG4gICAgICAgICAgKHBheWxvYWQ/Lm5hbWUgPyAnJnNvcnRCeT0nICsgcGF5bG9hZD8ubmFtZSA6ICcnKSArXG4gICAgICAgICAgKHBheWxvYWQ/LnNvcnRpbmdDb3VudCA/ICcmc29ydFZhbHVlPScgKyBwYXlsb2FkPy5zb3J0aW5nQ291bnQgOiAnJykgK1xuICAgICAgICAgICgnJnBhZ2U9JyArIHBheWxvYWQ/LnBhZ2UpLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlCeUNhdGVnb3J5SWQoXG4gICAgcmVxOiBhbnksXG4gICAgcGF5bG9hZD86IGFueSxcbiAgICBmaWx0ZXJQb2xpY3lEYXRhPzogYW55XG4gICkge1xuICAgIC8vIGh0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9jYXRlZ29yeS9lZGl0Q2F0ZWdvcnlcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcTtcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIC8vIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgneC1idXNpbmVzcy1jeWNsZScsSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgncGF5bG9hZC1vYmplY3QnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xuICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvcmVzcG9uc2liaWxpdHlMaXN0JywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cbn1cbiJdfQ==
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFLMUIsTUFBTSxPQUFPLFVBQVU7YUFFRSxrQkFBYSxHQUFHO1FBQ3JDLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLFdBQVcsRUFBRSx1Q0FBdUM7S0FDckQsQ0FBQztJQTZDRixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE5Q2xCLGdCQUFXLEdBQVc7WUFDcEMsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsY0FBYyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxFQUFFLEVBQUU7WUFDViw2QkFBNkIsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRSxFQUFFO1lBQ1Ysb0JBQW9CLEVBQUUsRUFBRTtZQUN4QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGNBQWMsRUFBRSxF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fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRkR3JjLCBBdHRyaWJ1dGVzRGV0YWlscywgTGlzdE9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYWRkLWdyYyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR3JjU2VydmljZSB7XG4gIGVudiE6IGFueTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUT1JfQ09ORklHID0ge1xuICAgIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgaWQ6ICdncmNfZGVzY3JpcHRpb24nLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgR1JDIE9iamVjdCcsXG4gIH07XG4gIHB1YmxpYyByZWFkb25seSBHUkNfUEFZTE9BRDogQWRkR3JjID0ge1xuICAgIG5hbWU6ICcnLFxuICAgIHR5cGU6IDMsIC8vQXNzZXRzLSAwLCBJbnZlbnRvcnktIDEsIFByb2Nlc3NlcyAtIDIsIFZlbmRvcnMtIDNcbiAgICBzdGF0ZTogMCxcbiAgICBwYXJlbnRfZ3JjX2lkczogW10sXG4gICAgb3duZXJzOiBbXSxcbiAgICBlbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkczogW10sXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGZyZXF1ZW5jeTogJycsXG4gICAgYXR0cmlidXRlczogW10sXG4gICAgcmNfaWRzOiBbXSxcbiAgICBwcm9ncmFtX2NhdGVnb3J5X2lkczogW10sXG4gICAgcmlza19jYXRlZ29yeV9pZHM6IFtdLFxuICAgIGxpbmtlZF9HUkNfaWRzOiBbXSxcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgTElTVF9PQkpFQ1Q6IExpc3RPYmplY3QgPSB7XG4gICAgUkM6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgICBPV05FUjoge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IFtdLFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICAgIGRpc2FibGVkSWRzOiBbXSxcbiAgICB9LFxuICAgIE9USEVSX0dSQ19PQkpFQ1RTOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgIH0sXG4gICAgUklTS19DQVRFR09SWToge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9LFxuICAgIFBST0dSQU1fUkVTUE9OU0lCSUxJVFk6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgfTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObzogbnVtYmVyLCByY0lkczogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVzaW5lc3NDeWNsZSA9IHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEN5Y2xlID0gYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZVxuICAgICAgPyBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMF0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgXG4gICAgICAgICc6JyArIFxuICAgICAgICBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMV0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICA6ICcnO1xuICAgIFxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgnYml6X2N5Y2xlJywgZm9ybWF0dGVkQ3ljbGUpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyBgc2FpbHNSZXNwb25zaWJpbGl0aWVzTGlzdCZwYWdlPTEmbGltaXQ9LTEmcmM9JHtyY0lkc31gLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0R1JDTGlzdChldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc3RhdGUnLCBldmVudD8uc3RhdGUgPz8gMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZ3JjVHlwZScsIGV2ZW50Py50eXBlID8/IDApO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBldmVudD8ucGFnZU5vID8/IDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JjSWRzJywgZXZlbnQ/LnJjX2lkcyA/PyAnJyk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCduYW1lJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5ncmNfZ2V0ICsgJ2dyYy9nZXRHUkNMaXN0Jywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgZ2V0R1JDVGFic0NvdW50KGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgaWYgKGV2ZW50Py5yY19pZHMpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JjSWRzJywgZXZlbnQ/LnJjX2lkcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5ncmNfZ2V0ICsgJ2dyYy9nZXRHUkNDb3VudCcsIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1ZhbGlkYXRpb24oZ3JjUGF5bG9hZDogQWRkR3JjLCBpc0F0dHJpYnV0ZXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IGlzVmFsaWREYXRhID1cbiAgICAgIGdyY1BheWxvYWQubmFtZS50cmltKCkgIT09ICcnICYmXG4gICAgICBncmNQYXlsb2FkLnR5cGUgPiAtMSAmJlxuICAgICAgZ3JjUGF5bG9hZC5vd25lcnMubGVuZ3RoICYmXG4gICAgICBncmNQYXlsb2FkLnJjX2lkcy5sZW5ndGg7XG4gICAgcmV0dXJuIChcbiAgICAgIGlzVmFsaWREYXRhICYmXG4gICAgICAoIWlzQXR0cmlidXRlc1NlbGVjdGVkIHx8XG4gICAgICAgIHRoaXMuY2hlY2tBdHRyaWJ1dGVWYWxpZGF0aW9uKGdyY1BheWxvYWQuYXR0cmlidXRlcykpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrQXR0cmlidXRlVmFsaWRhdGlvbihhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzRGV0YWlsc1tdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBvYmogb2YgYXR0cmlidXRlcykge1xuICAgICAgaWYgKG9iai5pc1JlcXVpcmVkKSB7XG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ3NpbmdsZS10ZXh0Ym94JyB8fCBvYmoudHlwZSA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgICBjb25zdCBjaG9pY2UgPSBvYmouY2hvaWNlc1swXTtcbiAgICAgICAgICBpZiAodHlwZW9mIGNob2ljZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY2hvaWNlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdjaGVja2JveCcgfHwgb2JqLnR5cGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgICAgICBsZXQgaXNDaG9pY2VTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChvYmouaGFzT3RoZXIgJiYgb2JqPy5pc19vdGhlcl9zZWxlY3RlZCkge1xuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2Ygb2JqLmNob2ljZXMpIHtcbiAgICAgICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tBdHRyaWJ1dGVzU2VsZWN0ZWQoYXR0cmlidXRlczogQXR0cmlidXRlc0RldGFpbHNbXSk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChvYmoudHlwZSA9PT0gJ3NpbmdsZS10ZXh0Ym94JyB8fCBvYmoudHlwZSA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgY29uc3QgY2hvaWNlID0gb2JqLmNob2ljZXNbMF07XG4gICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBvYmoudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICBsZXQgaXNDaG9pY2VTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBvYmouY2hvaWNlcykge1xuICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNrRWFjaEF0dHJpYnV0ZVZhbGlkYXRpb24oYXR0cmlidXRlOiBBdHRyaWJ1dGVzRGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIGlmIChhdHRyaWJ1dGUuaXNSZXF1aXJlZCkge1xuICAgICAgaWYgKFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ3NpbmdsZS10ZXh0Ym94JyB8fFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2RhdGUtdGltZSdcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjaG9pY2UgPSBhdHRyaWJ1dGUuY2hvaWNlc1swXTtcbiAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2NoZWNrYm94JyB8fFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2Ryb3Bkb3duJ1xuICAgICAgKSB7XG4gICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIGF0dHJpYnV0ZS5jaG9pY2VzKSB7XG4gICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGdldFJpc2tDYXRlZ29yaWVzKGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXR1cm5UeXBlJywgMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnY2F0ZWdvcnlUeXBlJywgZXZlbnQ/LnR5cGUgPz8gMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZScsIGV2ZW50Py5wYWdlTm8gPz8gMSk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnR5cGUgPT09IDAgPyBwYXJhbXMuYXBwZW5kKCdyaXNrRmxhZycsIDEpIDogcGFyYW1zO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgncScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvbGlzdCcsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRSaXNrQ2F0ZWdvcmllc0NvdW50KGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ3EnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgaWYgKGV2ZW50Py5yY19pZHM/Lmxlbmd0aCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmNfaWRzJywgZXZlbnQucmNfaWRzLmpvaW4oJywnKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9jb3VudCcsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRSaXNrcyhwYXlsb2FkPzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KFxuICAgICAgdGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvcmlza2xpc3QnLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0QnVzaW5lc3NDeWNsZSgpIHtcbiAgICBsZXQgYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fSdcbiAgICApO1xuICAgIGxldCBjdXJyZW50QnVzaW5lc3NDeWNsZSA9IHtcbiAgICAgIHNlbGVjdGVkX2N5Y2xlOiBidXNpbmVzc0N5Y2xlXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZVxuICAgICAgICA6ICcnLFxuICAgICAgc3RhcnRfZGF0ZTogYnVzaW5lc3NDeWNsZSA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnN0YXJ0X2RhdGUgOiAnJyxcbiAgICAgIGVuZF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGUgOiAnJyxcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogYnVzaW5lc3NDeWNsZVxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FyclxuICAgICAgICA6IFtdLFxuICAgIH07XG4gICAgcmV0dXJuIGN1cnJlbnRCdXNpbmVzc0N5Y2xlO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbXNMaXN0KHJlcTogYW55KSB7XG4gICAgLy8gdGhpcy5nZXRVc2VyRGV0YWlscygpO1xuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaWYgKHJlcT8ucGFyYW1zKSB7XG4gICAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSByZXEucGFyYW1zO1xuICAgIH1cbiAgICBpZiAocmVxPy5oZWFkZXJzKSB7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAncGF5bG9hZC1vYmplY3QnLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXEuaGVhZGVycylcbiAgICAgICk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaHR0cE9wdGlvbnMuaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICd0b2tlbicsXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgKyAnL2NhdGVnb3JpZXNMaXN0P293bmVyX2xpc3Q9MScsXG4gICAgICAgIGh0dHBPcHRpb25zXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRQcm9ncmFtc0xpc3RDb3VudChyZXE6IGFueSkge1xuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaWYgKHJlcT8ucGFyYW1zKSB7XG4gICAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSByZXEucGFyYW1zO1xuICAgIH1cbiAgICBpZiAocmVxPy5oZWFkZXJzKSB7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAncGF5bG9hZC1vYmplY3QnLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXE/LmhlYWRlcnMpXG4gICAgICApO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGh0dHBPcHRpb25zLmhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAndG9rZW4nLFxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICsgJy9vdmVydmlldy1jb3VudCcsIGh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0U3ViQ2F0ZWdvcnlMaXN0KHBheWxvYWQ6IGFueSkge1xuICAgIGlmIChwYXlsb2FkPy5zY29wZVR5cGUgPT09ICdub3RfY29tcGxldGVkJykge1xuICAgICAgcGF5bG9hZC5zY29wZVR5cGUgPSAnbm90Q29tcGxldGVkJztcbiAgICB9XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXG4gICAgICAncGF5bG9hZC1vYmplY3QnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkocGF5bG9hZD8uYnVzaW5lc3NDeWNsZSlcbiAgICApO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oXG4gICAgICAgIHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgK1xuICAgICAgICAgICcvc3ViQ2F0ZWdvcmllcz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZwYXJlbnRJZD0nICtcbiAgICAgICAgICBwYXlsb2FkPy5pZCArXG4gICAgICAgICAgJyZ0eXBlPScgK1xuICAgICAgICAgIHBheWxvYWQ/LnNjb3BlVHlwZSArXG4gICAgICAgICAgJyZjYWxsRnJvbT1ncmMnICtcbiAgICAgICAgICAocGF5bG9hZD8uc2VhcmNoVGV4dCA/ICcmcT0nICsgZW5jb2RlVVJJKHBheWxvYWQ/LnNlYXJjaFRleHQpIDogJycpICtcbiAgICAgICAgICAocGF5bG9hZD8ubmFtZSA/ICcmc29ydEJ5PScgKyBwYXlsb2FkPy5uYW1lIDogJycpICtcbiAgICAgICAgICAocGF5bG9hZD8uc29ydGluZ0NvdW50ID8gJyZzb3J0VmFsdWU9JyArIHBheWxvYWQ/LnNvcnRpbmdDb3VudCA6ICcnKSArXG4gICAgICAgICAgKCcmcGFnZT0nICsgcGF5bG9hZD8ucGFnZSksXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUJ5Q2F0ZWdvcnlJZChcbiAgICByZXE6IGFueSxcbiAgICBwYXlsb2FkPzogYW55LFxuICAgIGZpbHRlclBvbGljeURhdGE/OiBhbnlcbiAgKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL2NhdGVnb3J5L2VkaXRDYXRlZ29yeVxuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcmVxO1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgLy8gaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd4LWJ1c2luZXNzLWN5Y2xlJyxKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCdwYXlsb2FkLW9iamVjdCcsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XG4gICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICsgJy9yZXNwb25zaWJpbGl0eUxpc3QnLCBodHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxufVxuIl19