principal-dashboard-lib-v2 0.0.12 → 0.0.13

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.
@@ -11,7 +11,7 @@ export class ChartheaderComponent {
11
11
  this.isChartView = true;
12
12
  }
13
13
  ngOnInit() {
14
- this.libVersion = "0.0.20";
14
+ this.libVersion = "0.0.13";
15
15
  // this.myIcon = document.getElementById('myIconImg');
16
16
  // this.changeChatType()
17
17
  }
@@ -46,4 +46,4 @@ ChartheaderComponent.decorators = [
46
46
  ChartheaderComponent.ctorParameters = () => [
47
47
  { type: PrincipalDashboardLibV2Service }
48
48
  ];
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IscXdCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUeXBlIH0gZnJvbSAnYW5ndWxhci1nb29nbGUtY2hhcnRzJztcclxuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XHJcbmRlY2xhcmUgbGV0IHJlcXVpcmU6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoYXJ0aGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRoZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFydGhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIFxyXG4gIC8vdmFyaWFibGVzXHJcbiAgbXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XHJcbiAgaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgbXlJY29uOiBhbnk7XHJcbiAgbGliVmVyc2lvbjphbnk7XHJcbiAgaXNDaGFydFZpZXc9dHJ1ZTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpYlZlcnNpb24gPSBcIjAuMC4yMFwiO1xyXG4gICAgLy8gdGhpcy5teUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlJY29uSW1nJyk7XHJcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXHJcbiAgfVxyXG4gIGNoYW5nZUNoYXRUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xyXG4gICAgICB0aGlzLmlzQ2hhcnRWaWV3ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRhYmxlO1xyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgIFxyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xyXG4gICAgdGhpcy5pc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlVXNlcigpIHtcclxuICAgIHRoaXMuaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcclxuICB9XHJcbn1cclxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IscXdCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUeXBlIH0gZnJvbSAnYW5ndWxhci1nb29nbGUtY2hhcnRzJztcclxuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XHJcbmRlY2xhcmUgbGV0IHJlcXVpcmU6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoYXJ0aGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRoZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFydGhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIFxyXG4gIC8vdmFyaWFibGVzXHJcbiAgbXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XHJcbiAgaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgbXlJY29uOiBhbnk7XHJcbiAgbGliVmVyc2lvbjphbnk7XHJcbiAgaXNDaGFydFZpZXc9dHJ1ZTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpYlZlcnNpb24gPSBcIjAuMC4xM1wiO1xyXG4gICAgLy8gdGhpcy5teUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlJY29uSW1nJyk7XHJcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXHJcbiAgfVxyXG4gIGNoYW5nZUNoYXRUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xyXG4gICAgICB0aGlzLmlzQ2hhcnRWaWV3ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRhYmxlO1xyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgIFxyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xyXG4gICAgdGhpcy5pc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlVXNlcigpIHtcclxuICAgIHRoaXMuaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -305,9 +305,11 @@ export class PrincipalDashboardLibV2Service {
305
305
  }
306
306
  //----------// terminalIP and terminalLocation
307
307
  for (let i = 0; i < schoolTerminalMatrix.length; i++) {
308
+ console.log("schoolTerminalMatrix[i]", schoolTerminalMatrix[i]);
308
309
  console.log("schoolTerminalMatrix[i].terminalKey", terminalIP, schoolTerminalMatrix[i].terminalKey);
309
310
  if (terminalIP === schoolTerminalMatrix[i].terminalKey) {
310
311
  terminalLocation = schoolTerminalMatrix[i].location;
312
+ break;
311
313
  }
312
314
  else {
313
315
  terminalLocation = "location";
@@ -356,7 +358,7 @@ export class PrincipalDashboardLibV2Service {
356
358
  if (this.userConsoleData) {
357
359
  console.log("this.userConsoleData", this.userConsoleData);
358
360
  for (let i = 0; i < this.userConsoleData.length; i++) {
359
- let userData = [this.userConsoleData[i].terminalLocation, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
361
+ let userData = [this.userConsoleData[i].terminalIP, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
360
362
  dataTableforChart.push(userData);
361
363
  }
362
364
  }
@@ -666,4 +668,4 @@ PrincipalDashboardLibV2Service.decorators = [
666
668
  },] }
667
669
  ];
668
670
  PrincipalDashboardLibV2Service.ctorParameters = () => [];
669
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIHtcclxucHVibGljIHJlc291cmVNZXRhRGF0YTphbnk7XHJcbnB1YmxpYyB1c2Vyc01ldGFEYXRhOmFueTtcclxucHVibGljIHNjaG9vbFRlcm1pbmFsRGF0YTphbnk7XHJcbnB1YmxpYyB1c2VyQ29uc29sZURhdGE6YW55O1xyXG5cclxucHVibGljIGlzUmVzb3VyZU1ldGFEYXRhUmVhZHkgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xyXG5wdWJsaWMgaXNSZXNvdXJlTWV0YURhdGFSZWFkeSQgPSB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5wdWJsaWMgaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xyXG5wdWJsaWMgaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkkID0gdGhpcy5pc1VzZXJSZXFpdXJlZERhdGFSZWFkeS5hc09ic2VydmFibGUoKTtcclxuXHJcbiBwdWJsaWMgbXljaGFydFR5cGU6IGFueSA9ICcnO1xyXG4gIHB1YmxpYyBkYXRhVHlwZTogYW55ID0gJyc7XHJcbiAgcHVibGljIHVzZXJBbGxEYXRhOiBhbnkgPSAnJztcclxuICBwdWJsaWMgdXNlck1ldGFkYXRhOiBhbnkgPSB7dXNlckRldGFpbHM6W10scmVzb3VyY2VEZXRhaWxzOltdfTtcclxuICBwdWJsaWMgcmVzb3VyZU1ldGFkYXRhID0gbmV3IEFycmF5KCk7XHJcbiAgcHVibGljIHVzZXJEZXRhaWxPYmplY3Q6IGFueSA9IHt9O1xyXG4gIHB1YmxpYyB1c2VybGlzdDphbnkgPSBmYWxzZTtcclxuICBwdWJsaWMgbXlFbmRUaW1lIDphbnk7XHJcbiBcclxuICAvL2ZvciBjaGFuZ2UgY2hhcnQgVHlwZVxyXG4gIHB1YmxpYyBjaGFydFR5cGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMubXljaGFydFR5cGUpO1xyXG4gIHB1YmxpYyBjaGFydFR5cGUkID0gdGhpcy5jaGFydFR5cGUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy9mb3IgY2hhbmdlIHVzZXJXaXNlIFRvIGNsYXNzUm9vbSB3aXNlIG9yIHZpY2UgdmVyc2FcclxuICBwdWJsaWMgaXNVc2VyV2lzZV9kYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcclxuICBwdWJsaWMgaXNVc2VyV2lzZV9kYXRhJCA9IHRoaXMuaXNVc2VyV2lzZV9kYXRhLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vIGZvciBhbGwgdXNlciBhbmQgY3VycmVudCB1c2VyIGluZm9ybWF0aW9uXHJcbiAgcHVibGljIGlzQWxsVXNlcnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudXNlcmxpc3QpO1xyXG4gIHB1YmxpYyBpc0FsbFVzZXJzJCA9IHRoaXMuaXNBbGxVc2Vycy5hc09ic2VydmFibGUoKTtcclxuICAvL2ZvciBnZXQgZGV0YWlscyBvZiBzZWxlY3RlZCB1c2VyXHJcbiAgcHVibGljIGRldGFpbGVkdmlld0RhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudXNlck1ldGFkYXRhKTtcclxuICBwdWJsaWMgZGV0YWlsZWR2aWV3RGF0YSQgPSB0aGlzLmRldGFpbGVkdmlld0RhdGEuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gXHJcbiAgZ2VuYXJhdGVSZXNvdXJzZVJlcWl1cmVkRGF0YShkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5Lm5leHQoZmFsc2UpO1xyXG4gICAgbGV0IHJlc291cmNlTWV0YWRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIFxyXG4gICAgICBpZihkYXRhICYmIGRhdGEgIT09IG51bGwpe1xyXG4gICAgICAgIGxldCByZXNvdXNlSUQ6IGFueTtcclxuICAgICAgICBsZXQgdGl0bGU6IGFueTtcclxuICAgICAgICBsZXQgc3ViamVjdDogYW55O1xyXG4gICAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICAgIGxldCBjaGFwdGVyOiBhbnk7XHJcbiAgICAgICAgbGV0IHRlYWNoaW5ncG9pbnQ6IGFueTtcclxuICAgICAgICBsZXQgdHlwZTogYW55O1xyXG4gICAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhID0gZGF0YS5yZXNvdXJjZXNNZXRhZGF0YS5yZXNvdXJjZU1ldGFkYXRhO1xyXG4gICAgICAgXHJcbiAgICAgICAgaWYocmVzb3VyY2VNZXRhZGF0YSE9IHVuZGVmaW5lZCAmJiByZXNvdXJjZU1ldGFkYXRhLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAvLy0tLS0tLS0tLS0vL3Jlc291c2VJRFxyXG4gICAgICAgICAgICByZXNvdXNlSUQgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnJlc291cmNlSWQ7XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vc3ViamVjdFxyXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5zdWJqZWN0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QudGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJqZWN0ID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5zdWJqZWN0LnRpdGxlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzdWJqZWN0ID0gJyc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLy0tLS0tLS0tLS0vL2dyYWRlXHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLmdyYWRlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLmdyYWRlLnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhW2ldLmdyYWRlLnRpdGxlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmFkZSA9ICcnO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBncmFkZSA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL2NoYXB0ZXJcclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLmNoYXB0ZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLmNoYXB0ZXIudGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgY2hhcHRlciA9IHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlci50aXRsZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjaGFwdGVyID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNoYXB0ZXIgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3RlYWNoaW5ncG9pbnRcclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRlYWNoaW5ncG9pbnQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRlYWNoaW5ncG9pbnQudGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludC50aXRsZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdHlwZVxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udHlwZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB0eXBlID0gdGhpcy5nZXREaXNwbGF5dHlwZVZhbHVlKHJlc291cmNlTWV0YWRhdGFbaV0udHlwZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdHlwZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3RpdGxlXHJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGl0bGUgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnRpdGxlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGl0bGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHtcclxuICAgICAgICAgICAgICByZXNvdXNlSUQ6cmVzb3VzZUlELFxyXG4gICAgICAgICAgICAgIHN1YmplY3Q6c3ViamVjdCxcclxuICAgICAgICAgICAgICBncmFkZTpncmFkZSxcclxuICAgICAgICAgICAgICBjaGFwdGVyOmNoYXB0ZXIsXHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludDp0ZWFjaGluZ3BvaW50LFxyXG4gICAgICAgICAgICAgIHR5cGU6dHlwZSxcclxuICAgICAgICAgICAgICB0aXRsZTp0aXRsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc291cmNlTWV0YWRhdGFNYXRyaXgucHVzaChyZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc291cmVNZXRhRGF0YSA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXg7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgLy8gdGhpcy5yZXNvdXJlTWV0YURhdGEgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4O1xyXG4gICAgcmV0dXJuIHJlc291cmNlTWV0YWRhdGFNYXRyaXg7XHJcbiAgfVxyXG4gIGdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YShkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgdGhpcy5pc1VzZXJSZXFpdXJlZERhdGFSZWFkeS5uZXh0KGZhbHNlKTtcclxuICAgIGxldCB1c2Vyc01ldGFkYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHNjaG9vbFRlcm1pbmFsTWF0cml4ID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgdXNlckNvbnNvbGVNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGlmKGRhdGEgJiYgZGF0YSAhPT0gbnVsbCl7XHJcbiAgICAgIGxldCB1c2VyQ29uc29sZSA9IGRhdGEudXNlcnNDb25zb2xlLnVzZXJDb25zb2xlO1xyXG4gICAgICBsZXQgdXNlcnNNZXRhZGF0YSA9IGRhdGEudXNlcnNNZXRhZGF0YS51c2VyTWV0YWRhdGE7XHJcbiAgICAgIGxldCBzY2hvb2xUZXJtaW5hbCA9IGRhdGEuc2Nob29sVGVybWluYWxzLnNjaG9vbFRlcm1pbmFsO1xyXG4gICAgICBcclxuICAgICAgaWYodXNlcnNNZXRhZGF0YSE9IG51bGwgJiYgdXNlcnNNZXRhZGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVzZXJzTWV0YWRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCB1c2VySWQ6IGFueTtcclxuICAgICAgICAgIGxldCB1c2VyTmFtZTogYW55O1xyXG4gICAgICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xyXG4gICAgICAgICAgbGV0IGxpc3RPZlVzZXI6YW55ID0ge31cclxuICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhW2ldLnVzZXJJZCE9XCJcIikge1xyXG4gICAgICAgICAgICB1c2VySWQgPSB1c2Vyc01ldGFkYXRhW2ldLnVzZXJJZDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhW2ldLmZ1bGxOYW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB1c2VyTmFtZSA9IHVzZXJzTWV0YWRhdGFbaV0uZnVsbE5hbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB1c2VyTmFtZSA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhW2ldLnVzZXJTdWJqZWN0cyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdXNlclN1YmplY3RzID0gdXNlcnNNZXRhZGF0YVtpXS51c2VyU3ViamVjdHMgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgbGlzdE9mVXNlciA9IHtcclxuICAgICAgICAgICAgICB1c2VySWQ6dXNlcklkLCBcclxuICAgICAgICAgICAgICB1c2VyTmFtZTp1c2VyTmFtZSwgXHJcbiAgICAgICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LnB1c2gobGlzdE9mVXNlcik7ICAgICAgICAgICAgICAgICAgICAgIC8vIGFycmF5IG9mIGFsbCB1c2Vyc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJzTWV0YWRhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICBpZiAodXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyTmFtZSA9PT0gZWxlbWVudC51c2VyTmFtZSkge1xyXG4gICAgICAgICAgICB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkLnB1c2godXNlcnNNZXRhZGF0YU1hdHJpeFtpXSk7ICAvL2FycmF5IG9mIHNhbWUgbmFtZSB1c2Vyc1xyXG4gICAgICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LnNwbGljZShpLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGUgc2FtZSBuYW1lIHVzZXJzIGZyb20gdXNlcm1ldGFkYXRhTWF0cml4XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgLy8gY29uc3QgcmFuZG9tTnVtYmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgIC8vIHJhbmRvbU51bWJlci5pbm5lckhUTUwgPSBpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZSA9IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWRbaV0udXNlck5hbWUgKyBcIiBcIiArIGk7XHJcbiAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5wdXNoKHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWRbaV0pOyAgICAgICAgICAgIC8vYWRkaW5nIHNhbWUgbmFtZSB1c2VycyBpbiB1c2VybWV0YWRhdGFNYXRyaXggd2l0aCBzb21lIHJhbmRvbSBjaGFyYXRvcnNcclxuICAgICAgICB0aGlzLnVzZXJzTWV0YURhdGEgPSB1c2Vyc01ldGFkYXRhTWF0cml4O1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHNjaG9vbFRlcm1pbmFsICE9IG51bGwgJiYgc2Nob29sVGVybWluYWwubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY2hvb2xUZXJtaW5hbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHNjaG9vbElkOmFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbEtleTphbnk7XHJcbiAgICAgICAgICBsZXQgdGVybWluYWxUeXBlOmFueTtcclxuICAgICAgICAgIGxldCBsb2NhdGlvbjphbnk7XHJcbiAgICAgICAgICBsZXQgc2Nob29sVGVybWluYWxEYXRhOmFueSA9IHt9O1xyXG4gICAgXHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3NjaG9vbElkXHJcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0uc2Nob29sSWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzY2hvb2xJZCA9IHNjaG9vbFRlcm1pbmFsW2ldLnNjaG9vbElkIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzY2hvb2xJZCA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZXJtaW5hbEtleVxyXG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsS2V5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGVybWluYWxLZXkgPSBzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbEtleSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGVybWluYWxLZXkgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVybWluYWxUeXBlXHJcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0udGVybWluYWxUeXBlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGVybWluYWxUeXBlID0gc2Nob29sVGVybWluYWxbaV0udGVybWluYWxUeXBlIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbFR5cGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL2xvY2F0aW9uXHJcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0ubWV0YWRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsZXQgbWV0YWRhdGFKU09OID0gSlNPTi5wYXJzZShzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsb2NhdGlvbiA9IG1ldGFkYXRhSlNPTi5sb2NhdGlvbiAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIm1ldGFkYXRhSlNPTlwiLGxvY2F0aW9uKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsRGF0YSA9IHtcclxuICAgICAgICAgIHNjaG9vbElkOnNjaG9vbElkLFxyXG4gICAgICAgICAgdGVybWluYWxLZXk6dGVybWluYWxLZXksXHJcbiAgICAgICAgICB0ZXJtaW5hbFR5cGU6dGVybWluYWxUeXBlLFxyXG4gICAgICAgICAgbG9jYXRpb246bG9jYXRpb25cclxuICAgICAgICB9O1xyXG4gIFxyXG4gICAgICAgICBzY2hvb2xUZXJtaW5hbE1hdHJpeC5wdXNoKHNjaG9vbFRlcm1pbmFsRGF0YSk7XHJcbiAgICAgICAgIHRoaXMuc2Nob29sVGVybWluYWxEYXRhID0gc2Nob29sVGVybWluYWxNYXRyaXg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHVzZXJDb25zb2xlICE9bnVsbCAmJiB1c2VyQ29uc29sZS5sZW5ndGggPiAwKXtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdXNlckNvbnNvbGUubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBsZXQgdXNlcklkOiBhbnk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRUaW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZTogYW55O1xyXG4gICAgICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWREYXRlOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdGVybWluYWxJUDogYW55O1xyXG4gICAgICAgICAgbGV0IHVzZXJDb25zb2xlUmVzb3VyY2VzOiBhbnk7XHJcbiAgICAgICAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURTOiBhbnk7XHJcbiAgICAgICAgICAgIGxldCByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgIGxldCB1c2VyTmFtZTphbnk7XHJcbiAgICAgICAgICBsZXQgdXNlclN1YmplY3RzOmFueTtcclxuICAgICAgICBsZXQgdGVybWluYWxMb2NhdGlvbjogYW55O1xyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy91c2VyIGlEXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHVzZXJJZCA9IHVzZXJDb25zb2xlW2luZGV4XS51c2VySWQgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHVzZXJJZCA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gc3RhcnRUaW1lIFxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS5zdGFydFRpbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzdGFydFRpbWUgPSB1c2VyQ29uc29sZVtpbmRleF0uc3RhcnRUaW1lIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdGFydFRpbWUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIGVuZFRpbWUgXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmVuZFRpbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBlbmRUaW1lID0gdXNlckNvbnNvbGVbaW5kZXhdLmVuZFRpbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgICAgdGhpcy5teUVuZFRpbWUgPSBlbmRUaW1lO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZW5kVGltZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gRGF0ZSBcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWREYXRlID0gdXNlckNvbnNvbGVbaW5kZXhdLnNlbGVjdGVkRGF0ZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWREYXRlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEdXJhdGlvblxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS5kdXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGR1cmF0aW9uID0gdXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkdXJhdGlvbiA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdGVybWluYWxJUFxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS50ZXJtaW5hbElQICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGVybWluYWxJUCA9IHVzZXJDb25zb2xlW2luZGV4XS50ZXJtaW5hbElQIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbElQID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHVzZXJDb25zb2xlUmVzb3VyY2VzXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnVzZXJDb25zb2xlUmVzb3VyY2VzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSB1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHVzZXJDb25zb2xlUmVzb3VyY2VzID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYodXNlckNvbnNvbGVSZXNvdXJjZXMgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIGlmICh1c2VyQ29uc29sZVJlc291cmNlcy51c2VyQ29uc29sZVJlc291cmNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZVJlc291cmNlcy51c2VyQ29uc29sZVJlc291cmNlOyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB1c2VyTmFtZSBhbmQgdXNlclN1YmplY3RzXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVzZXJzTWV0YWRhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHVzZXJJZCA9PT0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VySWQpIHtcclxuICAgICAgICAgICAgICB1c2VyTmFtZSA9IHVzZXJzTWV0YWRhdGFNYXRyaXhbaV0udXNlck5hbWU7XHJcbiAgICAgICAgICAgICAgdXNlclN1YmplY3RzID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHRlcm1pbmFsSVAgYW5kIHRlcm1pbmFsTG9jYXRpb25cclxuICAgICAgICAgXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaG9vbFRlcm1pbmFsTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXlcIix0ZXJtaW5hbElQLHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldLnRlcm1pbmFsS2V5KTtcclxuICAgICAgICAgICAgaWYgKHRlcm1pbmFsSVAgPT09IHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldLnRlcm1pbmFsS2V5KSB7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uID0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0ubG9jYXRpb247XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSBcImxvY2F0aW9uXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IHtcclxuICAgICAgICAgICAgdXNlcklkOnVzZXJJZCxcclxuICAgICAgICAgICAgdXNlck5hbWU6dXNlck5hbWUsXHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZShzdGFydFRpbWUpLFxyXG4gICAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKGVuZFRpbWUpLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbElQOnRlcm1pbmFsSVAsXHJcbiAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpyZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOnRlcm1pbmFsTG9jYXRpb24sXHJcbiAgICAgICAgICAgIHVzZXJTdWJqZWN0czp1c2VyU3ViamVjdHNcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVzZXJDb25zb2xlTWF0cml4LnB1c2godXNlckRhdGEpO1xyXG4gICAgICAgICAgdGhpcy51c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZU1hdHJpeDtcclxuICAgICAgICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfVxyXG4gIC8vIGNvbnNvbGUubG9nKHVzZXJzTWV0YWRhdGFNYXRyaXgsc2Nob29sVGVybWluYWxNYXRyaXgsdXNlckNvbnNvbGVNYXRyaXgpO1xyXG4gICAgIHJldHVybiB7XHJcbiAgICAgIHVzZXJzTWV0YWRhdGE6dXNlcnNNZXRhZGF0YU1hdHJpeCxcclxuICAgICAgc2Nob29sVGVybWluYWxEYXRhOnNjaG9vbFRlcm1pbmFsTWF0cml4LFxyXG4gICAgICB1c2VyQ29uc29sZURhdGE6IHVzZXJDb25zb2xlTWF0cml4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVzZXJXaXNlQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSl7XHJcbiAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XHJcbiAgfVxyXG4gIGNsYXNzUm9vbVdpc2VDaGFydERhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLnVzZXJDb25zb2xlRGF0YVwiLHRoaXMudXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgXHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgbGV0IHVzZXJEYXRhID0gW3RoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsTG9jYXRpb24sdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgIGRhdGFUYWJsZWZvckNoYXJ0LnB1c2godXNlckRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XHJcbiAgICBcclxuICB9XHJcbiAgYWxsVXNlckNoYXJ0RGF0YSgpe1xyXG4gICAgbGV0IGRhdGFUYWJsZWZvckNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICBkYXRhVGFibGVmb3JDaGFydCA9IFtdO1xyXG4gICAgbGV0IEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9bmV3IEFycmF5KCk7XHJcbiAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhICYmIHRoaXMudXNlcnNNZXRhRGF0YSl7XHJcbiAgICAgIGxldCBpbkFjdGl2ZXVzZXJOYW1lOiBhbnk7XHJcbiAgICAgIGxldCB1c2VyU3ViamVjdHM6IGFueTtcclxuICAgICAgbGV0IG15SUQ6IGFueTtcclxuICAgICAgbGV0IEFsbHVzZXJEZXRhaWxzID1uZXcgQXJyYXkoKTtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaW5kZXhdKTtcclxuICAgICAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJzTWV0YURhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBteUlEID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJJZDtcclxuICAgICAgICBpbkFjdGl2ZXVzZXJOYW1lID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJOYW1lO1xyXG4gICAgICAgIHVzZXJTdWJqZWN0cyA9IHRoaXMudXNlcnNNZXRhRGF0YVtpXS51c2VyU3ViamVjdHM7XHJcbiAgICAgICAgbGV0IG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEgPSBcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1c2VySWQ6bXlJRCxcclxuICAgICAgICAgIHVzZXJOYW1lOmluQWN0aXZldXNlck5hbWUsXHJcbiAgICAgICAgICBzdGFydFRpbWU6bmV3IERhdGUodGhpcy5teUVuZFRpbWUpLFxyXG4gICAgICAgICAgZW5kVGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICB0ZXJtaW5hbElQOlwiXCIsXHJcbiAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGE6W10sXHJcbiAgICAgICAgICBkdXJhdGlvbjpcIjBcIixcclxuICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb246XCJcIixcclxuICAgICAgICAgIHVzZXJTdWJqZWN0czp1c2VyU3ViamVjdHNcclxuICAgICAgfTtcclxuICAgICAgICBBbGx1c2VyRGV0YWlscy5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xyXG4gIFxyXG4gICAgICAgIGxldCBteVRhYmxlUm93dXNlckNvbnNvbGVEYXRhID0ge1xyXG4gICAgICAgICAgdXNlcklkOm15SUQsXHJcbiAgICAgICAgICB1c2VyTmFtZTppbkFjdGl2ZXVzZXJOYW1lLFxyXG4gICAgICAgICAgc3RhcnRUaW1lOlwiXCIsXHJcbiAgICAgICAgICBlbmRUaW1lOlwiXCIsXHJcbiAgICAgICAgICB0ZXJtaW5hbElQOlwiXCIsXHJcbiAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGE6W10sXHJcbiAgICAgICAgICBkdXJhdGlvbjowLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0LnB1c2gobXlUYWJsZVJvd3VzZXJDb25zb2xlRGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IEFsbHVzZXJEZXRhaWxzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUsQWxsdXNlckRldGFpbHNbaV0uc3RhcnRUaW1lLEFsbHVzZXJEZXRhaWxzW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgIGRhdGFUYWJsZWZvckNoYXJ0LnB1c2godXNlckRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOkFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydH1cclxuICB9XHJcbiAgYWxsUm9vbXNEYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBsZXQgYWxsUm9vbXNEZXRhaWxzID0gbmV3IEFycmF5KCk7XHJcbiAgICBhbGxSb29tc0RldGFpbHMgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhICYmIHRoaXMuc2Nob29sVGVybWluYWxEYXRhKXtcclxuICAgICAgbGV0IG15Q2hhcnRSb3dEYXRhOiBhbnk9e307XHJcbiAgICAgIGxldCBpbkFjdGl2ZUNsYXNzUm9vbTogYW55O1xyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKHRoaXMudXNlckNvbnNvbGVEYXRhW2ldKTtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxMb2NhdGlvbix0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5zdGFydFRpbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgICBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGluQWN0aXZlQ2xhc3NSb29tID0gdGhpcy5zY2hvb2xUZXJtaW5hbERhdGFbaV0ubG9jYXRpb247XHJcbiAgICAgICAgXHJcbiAgICAgICAgbXlDaGFydFJvd0RhdGEgPSB7XHJcbiAgICAgICAgICB1c2VySWQ6XCJcIixcclxuICAgICAgICAgIHVzZXJOYW1lOlwiXCIsXHJcbiAgICAgICAgICBzdGFydFRpbWU6bmV3IERhdGUodGhpcy5teUVuZFRpbWUpLFxyXG4gICAgICAgICAgZW5kVGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICB0ZXJtaW5hbElQOlwiXCIsXHJcbiAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGE6W10sXHJcbiAgICAgICAgICBkdXJhdGlvbjowLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjppbkFjdGl2ZUNsYXNzUm9vbSxcclxuICAgICAgICAgIHVzZXJTdWJqZWN0czpcIlwiXHJcbiAgICAgICAgfTtcclxuICAgICAgICBhbGxSb29tc0RldGFpbHMucHVzaChteUNoYXJ0Um93RGF0YSk7XHJcbiAgICAgICAgbGV0IG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEgPSBbaW5BY3RpdmVDbGFzc1Jvb20sbmV3IERhdGUodGhpcy5teUVuZFRpbWUpLG5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaChteUNoYXJ0Um93dXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtmb3JDaGFydERhdGE6ZGF0YVRhYmxlZm9yQ2hhcnQsZm9yZHVyYXRpb25UYWJsZTphbGxSb29tc0RldGFpbHN9O1xyXG4gIH1cclxuICBkYXRhRm9yVGFibGVWaWV3KHVzZXJDb25zb2xlTWF0cml4OiBhbnkscmVzb3VyY2VNZXRhZGF0YU1hdHJpeDogYW55KSB7XHJcbiAgICBsZXQgY3VycmVudERhdGU6IGFueTtcclxuICAgIGxldCByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCByZXNvdXJjZU1hdHJpeEZvckV4Y2VsID0gbmV3IEFycmF5KCk7XHJcbiAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgIHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDx1c2VyQ29uc29sZU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgc3RhcnRUaW1lOiBhbnk7XHJcbiAgICAgIGxldCBlbmRUaW1lOiBhbnk7XHJcbiAgICAgIGxldCBkdXJhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVybWluYWxJUDogYW55O1xyXG4gICAgICBsZXQgc3ViamVjdDogYW55O1xyXG4gICAgICBsZXQgZ3JhZGU6IGFueTtcclxuICAgICAgbGV0IGNoYXB0ZXI6IGFueTtcclxuICAgICAgbGV0IEFzc2VzdERldGFpbDogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VUeXBlOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZVRpdGxlOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XHJcbiAgICAgIGxldCBsb2NhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XHJcbiAgICAgIFxyXG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEczogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvckV4Y2VsID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGxldCByZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICBsZXQgdXNlckNvbnNvbGVEYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW107XHJcbiAgICAgIHVzZXJDb25zb2xlRGF0YU1hdHJpeCA9IFtdO1xyXG4gICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN1YmplY3QgYW5kIE5hbWVcclxuICBcclxuXHJcbiAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udXNlclN1YmplY3RzO1xyXG4gICAgICB0ZWFjaGVyTmFtZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnVzZXJOYW1lO1xyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdGFydCBUaW1lICBhbmQgRW5kVGltZSBcclxuICAgICAgaWYgKCh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUgIT0gdW5kZWZpbmVkICYmIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSBcIlwiKSAmJiAodXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSB1bmRlZmluZWQmJnVzZXJDb25zb2xlTWF0cml4W2ldLmVuZFRpbWUgIT0gXCJcIikpIHtcclxuICAgICAgICBzdGFydFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lLnRvTG9jYWxlVGltZVN0cmluZygnZW4tVVMnLCB7IGhvdXIxMjogdHJ1ZSB9KTtcclxuICAgICAgICBjdXJyZW50RGF0ZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXREYXRlKCkgKyAnLycgKyAodXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldE1vbnRoKCkrMSkgKyAnLycgKyB1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgfVxyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBkdXJhdGlvblxyXG4gICAgICBkdXJhdGlvbiA9IE1hdGguZmxvb3IodXNlckNvbnNvbGVNYXRyaXhbaV0uZHVyYXRpb24pO1xyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBUZXJtaW5hbCBsb2FjdGlvbiBhbmQgdGVybWluYWwgSVBcclxuICAgICAgbG9jYXRpb24gPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbExvY2F0aW9uO1xyXG4gICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udGVybWluYWxJUDtcclxuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XHJcbiAgICAgXHJcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHMgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS5yZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGE7XHJcbiAgICAgIFxyXG4gICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHN1YmplY3QgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgZ3JhZGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgY2hhcHRlciA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0ZWFjaGluZ3BvaW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIEFzc2VzdERldGFpbCA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXNvdXJjZVRpdGxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlVHlwZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCA9IFt0ZWFjaGVyTmFtZSx0ZWFjaGVyU3ViamVjdCxjdXJyZW50RGF0ZSxzdGFydFRpbWUsZW5kVGltZSxkdXJhdGlvbixyb29tRGV0YWlsLHN1YmplY3QsZ3JhZGUsY2hhcHRlcix0ZWFjaGluZ3BvaW50LEFzc2VzdERldGFpbF07XHJcbiAgICAgICAgcmVzb3VyY2VNYXRyaXhGb3JUYWJsZUNoYXJ0LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICAgXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIC8vcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IFtyZXNvdXNlSUQsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsdHlwZSx0aXRsZV1cclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YUlEc1trXSA9PT0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5yZXNvdXNlSUQpIHtcclxuICAgICAgICAgICAgICBzdWJqZWN0ID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5zdWJqZWN0O1xyXG4gICAgICAgICAgICAgIGdyYWRlID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5ncmFkZTtcclxuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5jaGFwdGVyO1xyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRlYWNoaW5ncG9pbnQ7XHJcbiAgICAgICAgICAgICAgQXNzZXN0RGV0YWlsID0gdGhpcy5nZXREaXNwbGF5dHlwZVZhbHVlKHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSkgKyBcIjogXCIgKyByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRpdGxlO1xyXG5cclxuICAgICAgICAgICAgICByZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCA9IFt0ZWFjaGVyTmFtZSx0ZWFjaGVyU3ViamVjdCxjdXJyZW50RGF0ZSxzdGFydFRpbWUsZW5kVGltZSxkdXJhdGlvbixyb29tRGV0YWlsLHN1YmplY3QsZ3JhZGUsY2hhcHRlcix0ZWFjaGluZ3BvaW50LEFzc2VzdERldGFpbF07XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VNYXRyaXhGb3JUYWJsZUNoYXJ0LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICAgICAgICAgICAgdGVhY2hlck5hbWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICB0ZWFjaGVyU3ViamVjdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRUaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZW5kVGltZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgcm9vbURldGFpbCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzb3VyY2VNYXRyaXhGb3JUYWJsZUNoYXJ0O1xyXG4gIH1cclxuICBkYXRhRm9yRGV0YWlsZWRWaWV3KHVzZXJDb25zb2xlTWF0cml4OiBhbnkscmVzb3VyY2VNZXRhZGF0YU1hdHJpeDogYW55LCByb3dMYWJlbDogYW55KSB7XHJcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgIGRldGFpbGVkVmlld19Vc2VyRGF0YU1hdHJpeCA9IFtdO1xyXG4gICAgbGV0IGRldGFpbGVkVmlld19SZXNvdXJjZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IFtdO1xyXG4gIFxyXG4gICAgICBsZXQgc3RhcnRUaW1lOiBhbnk7XHJcbiAgICAgIGxldCBlbmRUaW1lOiBhbnk7XHJcbiAgICAgIGxldCBkdXJhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVybWluYWxJUDogYW55O1xyXG4gICAgICBsZXQgc3ViamVjdDogYW55O1xyXG4gICAgICBsZXQgZ3JhZGU6IGFueTtcclxuICAgICAgbGV0IGNoYXB0ZXI6IGFueTtcclxuICAgICAgbGV0IEFzc2VzdERldGFpbDogYW55O1xyXG4gICAgICBsZXQgdGVhY2hpbmdwb2ludDogYW55O1xyXG4gICAgICBsZXQgbG9jYXRpb246IGFueTtcclxuICAgICAgbGV0IHRlYWNoZXJOYW1lOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGVyU3ViamVjdDogYW55O1xyXG4gICAgICBsZXQgY3VycmVudERhdGU6IGFueTtcclxuICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRHM6IGFueTtcclxuICAgICAgbGV0IHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW107XHJcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxyXG4gICAgICB0ZWFjaGVyU3ViamVjdCA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS51c2VyU3ViamVjdHM7XHJcbiAgICAgIHRlYWNoZXJOYW1lID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnVzZXJOYW1lO1xyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdGFydCBUaW1lICBhbmQgRW5kVGltZVxyXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUgIT0gdW5kZWZpbmVkICYmIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUgIT0gXCJcIikgJiYgKHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUgIT0gXCJcIikpIHtcclxuICAgICAgICBzdGFydFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLnRvTG9jYWxlVGltZVN0cmluZygnZW4tVVMnLCB7IGhvdXIxMjogdHJ1ZSB9KTtcclxuICAgICAgICBlbmRUaW1lID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZS5nZXREYXRlKCkgKyAnLycgKyB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldE1vbnRoKCkgKyAnLycgKyB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgZHVyYXRpb25cclxuICAgICAgZHVyYXRpb24gPSBNYXRoLmZsb29yKHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5kdXJhdGlvbik7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIFRlcm1pbmFsIGxvYWN0aW9uIGFuZCB0ZXJtaW5hbCBJUFxyXG4gICAgICBsb2NhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS50ZXJtaW5hbExvY2F0aW9uO1xyXG4gICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsSVA7XHJcbiAgICAgIGxldCByb29tRGV0YWlsID0gbG9jYXRpb24gKyAnICcgKyB0ZXJtaW5hbElQO1xyXG4gICAgICByZXNvdXJjZU1ldGFkYXRhSURzID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcclxuXHJcbiAgICAgIGRldGFpbGVkVmlld19Vc2VyRGF0YU1hdHJpeCA9ICBbdGVhY2hlck5hbWUsc3RhcnRUaW1lLHRlYWNoZXJTdWJqZWN0LGVuZFRpbWUscm9vbURldGFpbF1cclxuICAgICAgXHJcbiAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgc3ViamVjdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBncmFkZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRlYWNoaW5ncG9pbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgQXNzZXN0RGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIC8vIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3N1YmplY3QsZ3JhZGUsY2hhcHRlcix0ZWFjaGluZ3BvaW50LEFzc2VzdERldGFpbF07XHJcbiAgICAgICAgLy8gZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeC5wdXNoKHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0KTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgIC8vcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IFtyZXNvdXNlSUQsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsdHlwZSx0aXRsZV1cclxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YUlEc1trXSA9PT0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5yZXNvdXNlSUQpIHtcclxuICAgICAgICAgICAgICBzdWJqZWN0ID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5zdWJqZWN0O1xyXG4gICAgICAgICAgICAgIGdyYWRlID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5ncmFkZTtcclxuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5jaGFwdGVyO1xyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRlYWNoaW5ncG9pbnQ7XHJcbiAgICAgICAgICAgICAgQXNzZXN0RGV0YWlsID1yZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnR5cGUgKyBcIjogXCIgKyByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRpdGxlO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3N1YmplY3QsZ3JhZGUsY2hhcHRlcix0ZWFjaGluZ3BvaW50LEFzc2VzdERldGFpbF07XHJcbiAgICAgICAgICAgICAgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeC5wdXNoKHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSAgIFxyXG4gICAgICBcclxuICAgIHJldHVybiB7dXNlckRldGFpbHM6ZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4LHJlc291cmNlRGV0YWlsczpkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4fTtcclxuICB9XHJcbiAgIC8vIFRvIEdFVCBESVNQTEFZIFRZUEVcclxuICAgZ2V0RGlzcGxheXR5cGVWYWx1ZShrZXk6IGFueSkge1xyXG4gICAgbGV0IGFzc2V0VHlwZUNvbmZpZyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiYXNzZXRfbWVkaWFcIixcclxuICAgICAgICBkaXNwbGF5OiBcIk1lZGlhXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiYXNzZXRfcHJpbnRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIlByaW50XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwicXVpelwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiUXVpelwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInF1ZXN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJRdWVzdGlvblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImNoYXB0ZXJcIixcclxuICAgICAgICBkaXNwbGF5OiBcIkNoYXB0ZXJcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ0cFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVG9waWNcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ3aGl0ZWJvYXJkXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJXaGl0ZWJvYXJkXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwid2lkZ2V0XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJXaWRnZXRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXNzZXRfbWVkaWFcIixcclxuICAgICAgICBkaXNwbGF5OiBcImNNZWRpYVwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhc3NldF9wcmludFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY1ByaW50XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY3F1aXpcIixcclxuICAgICAgICBkaXNwbGF5OiBcImNRdWl6XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY3F1ZXN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJjUXVlc3Rpb25cIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJpbWFnZVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiSW1hZ2VcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ2aWRlb1wiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVmlkZW9cIlxyXG4gICAgICB9LFxyXG5cclxuICAgIF07XHJcbiAgICBsZXQgZGlzcGxheVZhbHVlID0ga2V5O1xyXG4gICAgYXNzZXRUeXBlQ29uZmlnLmZvckVhY2goKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZS50eXBlID09PSBrZXkpIHtcclxuICAgICAgICBkaXNwbGF5VmFsdWUgPSB2YWx1ZS5kaXNwbGF5O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkaXNwbGF5VmFsdWU7XHJcblxyXG4gIH1cclxufVxyXG4iXX0=
671
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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Q0FBQzs7OztZQTNxQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWxEYXNoYm9hcmRMaWJWMlNlcnZpY2Uge1xyXG5wdWJsaWMgcmVzb3VyZU1ldGFEYXRhOmFueTtcclxucHVibGljIHVzZXJzTWV0YURhdGE6YW55O1xyXG5wdWJsaWMgc2Nob29sVGVybWluYWxEYXRhOmFueTtcclxucHVibGljIHVzZXJDb25zb2xlRGF0YTphbnk7XHJcblxyXG5wdWJsaWMgaXNSZXNvdXJlTWV0YURhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1Jlc291cmVNZXRhRGF0YVJlYWR5JCA9IHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5hc09ic2VydmFibGUoKTtcclxuXHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSQgPSB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuIHB1YmxpYyBteWNoYXJ0VHlwZTogYW55ID0gJyc7XHJcbiAgcHVibGljIGRhdGFUeXBlOiBhbnkgPSAnJztcclxuICBwdWJsaWMgdXNlckFsbERhdGE6IGFueSA9ICcnO1xyXG4gIHB1YmxpYyB1c2VyTWV0YWRhdGE6IGFueSA9IHt1c2VyRGV0YWlsczpbXSxyZXNvdXJjZURldGFpbHM6W119O1xyXG4gIHB1YmxpYyByZXNvdXJlTWV0YWRhdGEgPSBuZXcgQXJyYXkoKTtcclxuICBwdWJsaWMgdXNlckRldGFpbE9iamVjdDogYW55ID0ge307XHJcbiAgcHVibGljIHVzZXJsaXN0OmFueSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBteUVuZFRpbWUgOmFueTtcclxuIFxyXG4gIC8vZm9yIGNoYW5nZSBjaGFydCBUeXBlXHJcbiAgcHVibGljIGNoYXJ0VHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5teWNoYXJ0VHlwZSk7XHJcbiAgcHVibGljIGNoYXJ0VHlwZSQgPSB0aGlzLmNoYXJ0VHlwZS5hc09ic2VydmFibGUoKTtcclxuICAvL2ZvciBjaGFuZ2UgdXNlcldpc2UgVG8gY2xhc3NSb29tIHdpc2Ugb3IgdmljZSB2ZXJzYVxyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEkID0gdGhpcy5pc1VzZXJXaXNlX2RhdGEuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy8gZm9yIGFsbCB1c2VyIGFuZCBjdXJyZW50IHVzZXIgaW5mb3JtYXRpb25cclxuICBwdWJsaWMgaXNBbGxVc2VycyA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VybGlzdCk7XHJcbiAgcHVibGljIGlzQWxsVXNlcnMkID0gdGhpcy5pc0FsbFVzZXJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vZm9yIGdldCBkZXRhaWxzIG9mIHNlbGVjdGVkIHVzZXJcclxuICBwdWJsaWMgZGV0YWlsZWR2aWV3RGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VyTWV0YWRhdGEpO1xyXG4gIHB1YmxpYyBkZXRhaWxlZHZpZXdEYXRhJCA9IHRoaXMuZGV0YWlsZWR2aWV3RGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiBcclxuICBnZW5hcmF0ZVJlc291cnNlUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkubmV4dChmYWxzZSk7XHJcbiAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgXHJcbiAgICAgIGlmKGRhdGEgJiYgZGF0YSAhPT0gbnVsbCl7XHJcbiAgICAgICAgbGV0IHJlc291c2VJRDogYW55O1xyXG4gICAgICAgIGxldCB0aXRsZTogYW55O1xyXG4gICAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgICAgbGV0IGdyYWRlOiBhbnk7XHJcbiAgICAgICAgbGV0IGNoYXB0ZXI6IGFueTtcclxuICAgICAgICBsZXQgdGVhY2hpbmdwb2ludDogYW55O1xyXG4gICAgICAgIGxldCB0eXBlOiBhbnk7XHJcbiAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGEgPSBkYXRhLnJlc291cmNlc01ldGFkYXRhLnJlc291cmNlTWV0YWRhdGE7XHJcbiAgICAgICBcclxuICAgICAgICBpZihyZXNvdXJjZU1ldGFkYXRhIT0gdW5kZWZpbmVkICYmIHJlc291cmNlTWV0YWRhdGEubGVuZ3RoPjApIHtcclxuICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlTWV0YWRhdGEubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vcmVzb3VzZUlEXHJcbiAgICAgICAgICAgIHJlc291c2VJRCA9IHJlc291cmNlTWV0YWRhdGFbaV0ucmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9zdWJqZWN0XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSAnJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3ViamVjdCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vZ3JhZGVcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBncmFkZSA9IHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vY2hhcHRlclxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlci50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyLnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2hhcHRlciA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVhY2hpbmdwb2ludFxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gcmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50LnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90eXBlXHJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHR5cGUgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0eXBlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGl0bGVcclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHJlc291cmNlTWV0YWRhdGFbaV0udGl0bGU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aXRsZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0ge1xyXG4gICAgICAgICAgICAgIHJlc291c2VJRDpyZXNvdXNlSUQsXHJcbiAgICAgICAgICAgICAgc3ViamVjdDpzdWJqZWN0LFxyXG4gICAgICAgICAgICAgIGdyYWRlOmdyYWRlLFxyXG4gICAgICAgICAgICAgIGNoYXB0ZXI6Y2hhcHRlcixcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50OnRlYWNoaW5ncG9pbnQsXHJcbiAgICAgICAgICAgICAgdHlwZTp0eXBlLFxyXG4gICAgICAgICAgICAgIHRpdGxlOnRpdGxlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeC5wdXNoKHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb3VyZU1ldGFEYXRhID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICAgICAgICAgICAgdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5Lm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAvLyB0aGlzLnJlc291cmVNZXRhRGF0YSA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXg7XHJcbiAgICByZXR1cm4gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICB9XHJcbiAgZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5Lm5leHQoZmFsc2UpO1xyXG4gICAgbGV0IHVzZXJzTWV0YWRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgc2Nob29sVGVybWluYWxNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VyQ29uc29sZU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgaWYoZGF0YSAmJiBkYXRhICE9PSBudWxsKXtcclxuICAgICAgbGV0IHVzZXJDb25zb2xlID0gZGF0YS51c2Vyc0NvbnNvbGUudXNlckNvbnNvbGU7XHJcbiAgICAgIGxldCB1c2Vyc01ldGFkYXRhID0gZGF0YS51c2Vyc01ldGFkYXRhLnVzZXJNZXRhZGF0YTtcclxuICAgICAgbGV0IHNjaG9vbFRlcm1pbmFsID0gZGF0YS5zY2hvb2xUZXJtaW5hbHMuc2Nob29sVGVybWluYWw7XHJcbiAgICAgIFxyXG4gICAgICBpZih1c2Vyc01ldGFkYXRhIT0gbnVsbCAmJiB1c2Vyc01ldGFkYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHVzZXJJZDogYW55O1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlclN1YmplY3RzOiBhbnk7XHJcbiAgICAgICAgICBsZXQgbGlzdE9mVXNlcjphbnkgPSB7fVxyXG4gICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlcklkIT1cIlwiKSB7XHJcbiAgICAgICAgICAgIHVzZXJJZCA9IHVzZXJzTWV0YWRhdGFbaV0udXNlcklkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0uZnVsbE5hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YVtpXS5mdWxsTmFtZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlclN1YmplY3RzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhW2ldLnVzZXJTdWJqZWN0cyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICBsaXN0T2ZVc2VyID0ge1xyXG4gICAgICAgICAgICAgIHVzZXJJZDp1c2VySWQsIFxyXG4gICAgICAgICAgICAgIHVzZXJOYW1lOnVzZXJOYW1lLCBcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXgucHVzaChsaXN0T2ZVc2VyKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgb2YgYWxsIHVzZXJzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJOYW1lID09PSBlbGVtZW50LnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQucHVzaCh1c2Vyc01ldGFkYXRhTWF0cml4W2ldKTsgIC8vYXJyYXkgb2Ygc2FtZSBuYW1lIHVzZXJzXHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguc3BsaWNlKGksIDEpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoZSBzYW1lIG5hbWUgdXNlcnMgZnJvbSB1c2VybWV0YWRhdGFNYXRyaXhcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyBjb25zdCByYW5kb21OdW1iZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgLy8gcmFuZG9tTnVtYmVyLmlubmVySFRNTCA9IGkudG9TdHJpbmcoKTtcclxuICAgICAgICB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldLnVzZXJOYW1lID0gdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZSArIFwiIFwiICsgaTtcclxuICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LnB1c2godXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXSk7ICAgICAgICAgICAgLy9hZGRpbmcgc2FtZSBuYW1lIHVzZXJzIGluIHVzZXJtZXRhZGF0YU1hdHJpeCB3aXRoIHNvbWUgcmFuZG9tIGNoYXJhdG9yc1xyXG4gICAgICAgIHRoaXMudXNlcnNNZXRhRGF0YSA9IHVzZXJzTWV0YWRhdGFNYXRyaXg7XHJcbiAgICAgIH1cclxuICAgICAgaWYoc2Nob29sVGVybWluYWwgIT0gbnVsbCAmJiBzY2hvb2xUZXJtaW5hbC5sZW5ndGggPiAwKXtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaG9vbFRlcm1pbmFsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgc2Nob29sSWQ6YW55O1xyXG4gICAgICAgICAgbGV0IHRlcm1pbmFsS2V5OmFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbFR5cGU6YW55O1xyXG4gICAgICAgICAgbGV0IGxvY2F0aW9uOmFueTtcclxuICAgICAgICAgIGxldCBzY2hvb2xUZXJtaW5hbERhdGE6YW55ID0ge307XHJcbiAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vc2Nob29sSWRcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5zY2hvb2xJZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gc2Nob29sVGVybWluYWxbaV0uc2Nob29sSWQgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3Rlcm1pbmFsS2V5XHJcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0udGVybWluYWxLZXkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9IHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsS2V5IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZXJtaW5hbFR5cGVcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbFR5cGUgPSBzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsVHlwZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vbG9jYXRpb25cclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXRhZGF0YUpTT04gPSBKU09OLnBhcnNlKHNjaG9vbFRlcm1pbmFsW2ldLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxvY2F0aW9uID0gbWV0YWRhdGFKU09OLmxvY2F0aW9uIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibWV0YWRhdGFKU09OXCIsbG9jYXRpb24pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYXRpb24gPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgc2Nob29sVGVybWluYWxEYXRhID0ge1xyXG4gICAgICAgICAgc2Nob29sSWQ6c2Nob29sSWQsXHJcbiAgICAgICAgICB0ZXJtaW5hbEtleTp0ZXJtaW5hbEtleSxcclxuICAgICAgICAgIHRlcm1pbmFsVHlwZTp0ZXJtaW5hbFR5cGUsXHJcbiAgICAgICAgICBsb2NhdGlvbjpsb2NhdGlvblxyXG4gICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsTWF0cml4LnB1c2goc2Nob29sVGVybWluYWxEYXRhKTtcclxuICAgICAgICAgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEgPSBzY2hvb2xUZXJtaW5hbE1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYodXNlckNvbnNvbGUgIT1udWxsICYmIHVzZXJDb25zb2xlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGxldCB1c2VySWQ6IGFueTtcclxuICAgICAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgICAgIGxldCBlbmRUaW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgZHVyYXRpb246IGFueTtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZERhdGU6IGFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlckNvbnNvbGVSZXNvdXJjZXM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRFM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOmFueTtcclxuICAgICAgICAgIGxldCB1c2VyU3ViamVjdHM6YW55O1xyXG4gICAgICAgIGxldCB0ZXJtaW5hbExvY2F0aW9uOiBhbnk7XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3VzZXIgaURcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlcklkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdXNlcklkID0gdXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZCAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlcklkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBzdGFydFRpbWUgXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlW2luZGV4XS5zdGFydFRpbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gZW5kVGltZSBcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB0aGlzLm15RW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRUaW1lID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEYXRlIFxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS5zZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSB1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIER1cmF0aW9uXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSB1c2VyQ29uc29sZVtpbmRleF0uZHVyYXRpb24gLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB0ZXJtaW5hbElQXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsSVAgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdXNlckNvbnNvbGVSZXNvdXJjZXNcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB1c2VyQ29uc29sZVJlc291cmNlcyA9IHVzZXJDb25zb2xlW2luZGV4XS51c2VyQ29uc29sZVJlc291cmNlcyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZih1c2VyQ29uc29sZVJlc291cmNlcyAhPSBudWxsKXtcclxuICAgICAgICAgICAgaWYgKHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2U7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHVzZXJOYW1lIGFuZCB1c2VyU3ViamVjdHNcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodXNlcklkID09PSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJJZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyTmFtZTtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdGVybWluYWxJUCBhbmQgdGVybWluYWxMb2NhdGlvblxyXG4gICAgICAgICBcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWxNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXVwiLHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS50ZXJtaW5hbEtleVwiLHRlcm1pbmFsSVAsc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpO1xyXG4gICAgICAgICAgICBpZiAodGVybWluYWxJUCA9PT0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpIHtcclxuICAgICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uID0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0ubG9jYXRpb247XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSBcImxvY2F0aW9uXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IHtcclxuICAgICAgICAgICAgdXNlcklkOnVzZXJJZCxcclxuICAgICAgICAgICAgdXNlck5hbWU6dXNlck5hbWUsXHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZShzdGFydFRpbWUpLFxyXG4gICAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKGVuZFRpbWUpLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbElQOnRlcm1pbmFsSVAsXHJcbiAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpyZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOnRlcm1pbmFsTG9jYXRpb24sXHJcbiAgICAgICAgICAgIHVzZXJTdWJqZWN0czp1c2VyU3ViamVjdHNcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVzZXJDb25zb2xlTWF0cml4LnB1c2godXNlckRhdGEpO1xyXG4gICAgICAgICAgdGhpcy51c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZU1hdHJpeDtcclxuICAgICAgICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfVxyXG4gIC8vIGNvbnNvbGUubG9nKHVzZXJzTWV0YWRhdGFNYXRyaXgsc2Nob29sVGVybWluYWxNYXRyaXgsdXNlckNvbnNvbGVNYXRyaXgpO1xyXG4gICAgIHJldHVybiB7XHJcbiAgICAgIHVzZXJzTWV0YWRhdGE6dXNlcnNNZXRhZGF0YU1hdHJpeCxcclxuICAgICAgc2Nob29sVGVybWluYWxEYXRhOnNjaG9vbFRlcm1pbmFsTWF0cml4LFxyXG4gICAgICB1c2VyQ29uc29sZURhdGE6IHVzZXJDb25zb2xlTWF0cml4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVzZXJXaXNlQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSl7XHJcbiAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XHJcbiAgfVxyXG4gIGNsYXNzUm9vbVdpc2VDaGFydERhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLnVzZXJDb25zb2xlRGF0YVwiLHRoaXMudXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxJUCx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5zdGFydFRpbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcclxuICAgIFxyXG4gIH1cclxuICBhbGxVc2VyQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBsZXQgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0ID1uZXcgQXJyYXkoKTtcclxuICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy51c2Vyc01ldGFEYXRhKXtcclxuICAgICAgbGV0IGluQWN0aXZldXNlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xyXG4gICAgICBsZXQgbXlJRDogYW55O1xyXG4gICAgICBsZXQgQWxsdXNlckRldGFpbHMgPW5ldyBBcnJheSgpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgQWxsdXNlckRldGFpbHMucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pO1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydC5wdXNoKHRoaXMudXNlckNvbnNvbGVEYXRhW2luZGV4XSlcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudXNlcnNNZXRhRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG15SUQgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlcklkO1xyXG4gICAgICAgIGluQWN0aXZldXNlck5hbWUgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlck5hbWU7XHJcbiAgICAgICAgdXNlclN1YmplY3RzID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXJJZDpteUlELFxyXG4gICAgICAgICAgdXNlck5hbWU6aW5BY3RpdmV1c2VyTmFtZSxcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOlwiMFwiLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICB9O1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XHJcbiAgXHJcbiAgICAgICAgbGV0IG15VGFibGVSb3d1c2VyQ29uc29sZURhdGEgPSB7XHJcbiAgICAgICAgICB1c2VySWQ6bXlJRCxcclxuICAgICAgICAgIHVzZXJOYW1lOmluQWN0aXZldXNlck5hbWUsXHJcbiAgICAgICAgICBzdGFydFRpbWU6XCJcIixcclxuICAgICAgICAgIGVuZFRpbWU6XCJcIixcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOlwiXCIsXHJcbiAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQucHVzaChteVRhYmxlUm93dXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgQWxsdXNlckRldGFpbHMubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFtBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSxBbGx1c2VyRGV0YWlsc1tpXS5zdGFydFRpbWUsQWxsdXNlckRldGFpbHNbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7Zm9yQ2hhcnREYXRhOmRhdGFUYWJsZWZvckNoYXJ0LGZvcmR1cmF0aW9uVGFibGU6QWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0fVxyXG4gIH1cclxuICBhbGxSb29tc0RhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGxldCBhbGxSb29tc0RldGFpbHMgPSBuZXcgQXJyYXkoKTtcclxuICAgIGFsbFJvb21zRGV0YWlscyA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEpe1xyXG4gICAgICBsZXQgbXlDaGFydFJvd0RhdGE6IGFueT17fTtcclxuICAgICAgbGV0IGluQWN0aXZlQ2xhc3NSb29tOiBhbnk7XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgYWxsUm9vbXNEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaV0pO1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbExvY2F0aW9uLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nob29sVGVybWluYWxEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaW5BY3RpdmVDbGFzc1Jvb20gPSB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YVtpXS5sb2NhdGlvbjtcclxuICAgICAgICBcclxuICAgICAgICBteUNoYXJ0Um93RGF0YSA9IHtcclxuICAgICAgICAgIHVzZXJJZDpcIlwiLFxyXG4gICAgICAgICAgdXNlck5hbWU6XCJcIixcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOmluQWN0aXZlQ2xhc3NSb29tLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOlwiXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKG15Q2hhcnRSb3dEYXRhKTtcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFtpbkFjdGl2ZUNsYXNzUm9vbSxuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksbmV3IERhdGUodGhpcy5teUVuZFRpbWUpXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOmFsbFJvb21zRGV0YWlsc307XHJcbiAgfVxyXG4gIGRhdGFGb3JUYWJsZVZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnkpIHtcclxuICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgcmVzb3VyY2VNYXRyaXhGb3JFeGNlbCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPHVzZXJDb25zb2xlTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZVR5cGU6IGFueTtcclxuICAgICAgbGV0IHJlc291cmNlVGl0bGU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoaW5ncG9pbnQ6IGFueTtcclxuICAgICAgbGV0IGxvY2F0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGVyTmFtZTogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlclN1YmplY3Q6IGFueTtcclxuICAgICAgXHJcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZUFycmF5Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgbGV0IHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGxldCB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAgdXNlckNvbnNvbGVEYXRhTWF0cml4ID0gW107XHJcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxyXG4gIFxyXG5cclxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XHJcbiAgICAgIHRlYWNoZXJOYW1lID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lIFxyXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgZW5kVGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLmVuZFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArICh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0TW9udGgoKSsxKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIGR1cmF0aW9uXHJcbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtpXS5kdXJhdGlvbik7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIFRlcm1pbmFsIGxvYWN0aW9uIGFuZCB0ZXJtaW5hbCBJUFxyXG4gICAgICBsb2NhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbElQO1xyXG4gICAgICBsZXQgcm9vbURldGFpbCA9IGxvY2F0aW9uICsgJyAnICsgdGVybWluYWxJUDtcclxuICAgICBcclxuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEcyA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcclxuICAgICAgXHJcbiAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgc3ViamVjdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBncmFkZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRlYWNoaW5ncG9pbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgQXNzZXN0RGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlVGl0bGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzb3VyY2VUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlKSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcblxyXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICAgICAgICAgICB0ZWFjaGVyTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBlbmRUaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICByb29tRGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQ7XHJcbiAgfVxyXG4gIGRhdGFGb3JEZXRhaWxlZFZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnksIHJvd0xhYmVsOiBhbnkpIHtcclxuICAgIGxldCBkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gW107XHJcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4ID0gW107XHJcbiAgXHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XHJcbiAgICAgIGxldCBsb2NhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEczogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdWJqZWN0IGFuZCBOYW1lXHJcbiAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnVzZXJTdWJqZWN0cztcclxuICAgICAgdGVhY2hlck5hbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lXHJcbiAgICAgIGlmICgodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSBcIlwiKSAmJiAodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUgIT0gdW5kZWZpbmVkJiZ1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgY3VycmVudERhdGUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0TW9udGgoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgfVxyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBkdXJhdGlvblxyXG4gICAgICBkdXJhdGlvbiA9IE1hdGguZmxvb3IodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmR1cmF0aW9uKTtcclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgVGVybWluYWwgbG9hY3Rpb24gYW5kIHRlcm1pbmFsIElQXHJcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udGVybWluYWxJUDtcclxuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XHJcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHMgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0ucmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhO1xyXG5cclxuICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gIFt0ZWFjaGVyTmFtZSxzdGFydFRpbWUsdGVhY2hlclN1YmplY3QsZW5kVGltZSxyb29tRGV0YWlsXVxyXG4gICAgICBcclxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBzdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGdyYWRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNoYXB0ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGVhY2hpbmdwb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBBc3Nlc3REZXRhaWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgLy8gcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAvLyBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPXJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ICAgXHJcbiAgICAgIFxyXG4gICAgcmV0dXJuIHt1c2VyRGV0YWlsczpkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXgscmVzb3VyY2VEZXRhaWxzOmRldGFpbGVkVmlld19SZXNvdXJjZURhdGFNYXRyaXh9O1xyXG4gIH1cclxuICAgLy8gVG8gR0VUIERJU1BMQVkgVFlQRVxyXG4gICBnZXREaXNwbGF5dHlwZVZhbHVlKGtleTogYW55KSB7XHJcbiAgICBsZXQgYXNzZXRUeXBlQ29uZmlnID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiTWVkaWFcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9wcmludFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJxdWl6XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJRdWl6XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIlF1ZXN0aW9uXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2hhcHRlclwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiQ2hhcHRlclwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInRwXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJUb3BpY1wiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIndoaXRlYm9hcmRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldoaXRlYm9hcmRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ3aWRnZXRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldpZGdldFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY01lZGlhXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2Fzc2V0X3ByaW50XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJjUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVpelwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY1F1aXpcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcImNRdWVzdGlvblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImltYWdlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJbWFnZVwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInZpZGVvXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaWRlb1wiXHJcbiAgICAgIH0sXHJcblxyXG4gICAgXTtcclxuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBrZXk7XHJcbiAgICBhc3NldFR5cGVDb25maWcuZm9yRWFjaCgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IGtleSkge1xyXG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IHZhbHVlLmRpc3BsYXk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZTtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -310,9 +310,11 @@ class PrincipalDashboardLibV2Service {
310
310
  }
311
311
  //----------// terminalIP and terminalLocation
312
312
  for (let i = 0; i < schoolTerminalMatrix.length; i++) {
313
+ console.log("schoolTerminalMatrix[i]", schoolTerminalMatrix[i]);
313
314
  console.log("schoolTerminalMatrix[i].terminalKey", terminalIP, schoolTerminalMatrix[i].terminalKey);
314
315
  if (terminalIP === schoolTerminalMatrix[i].terminalKey) {
315
316
  terminalLocation = schoolTerminalMatrix[i].location;
317
+ break;
316
318
  }
317
319
  else {
318
320
  terminalLocation = "location";
@@ -361,7 +363,7 @@ class PrincipalDashboardLibV2Service {
361
363
  if (this.userConsoleData) {
362
364
  console.log("this.userConsoleData", this.userConsoleData);
363
365
  for (let i = 0; i < this.userConsoleData.length; i++) {
364
- let userData = [this.userConsoleData[i].terminalLocation, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
366
+ let userData = [this.userConsoleData[i].terminalIP, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
365
367
  dataTableforChart.push(userData);
366
368
  }
367
369
  }
@@ -717,7 +719,7 @@ class ChartheaderComponent {
717
719
  this.isChartView = true;
718
720
  }
719
721
  ngOnInit() {
720
- this.libVersion = "0.0.20";
722
+ this.libVersion = "0.0.13";
721
723
  // this.myIcon = document.getElementById('myIconImg');
722
724
  // this.changeChatType()
723
725
  }