vcomply-workflow-engine 7.1.6 → 7.1.8

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.
@@ -224,10 +224,17 @@ export class FormatAndEvidenceComponent {
224
224
  };
225
225
  this.responsibilityService.getSignedUrl(payload).subscribe((data) => {
226
226
  this.saveToS3(file, data, fileMetaData, uid);
227
+ }, (error) => {
228
+ delete this.formate.uploadInProgress[uid];
227
229
  });
228
230
  }
229
231
  saveToS3(file, data, fileMetaData, uid) {
230
- this.responsibilityService.saveToS3(file, data?.signedUrl).subscribe((res) => {
232
+ const signedUrl = data?.signedUrl || data?.signedurl;
233
+ if (!signedUrl) {
234
+ delete this.formate.uploadInProgress[uid];
235
+ return;
236
+ }
237
+ this.responsibilityService.saveToS3(file, signedUrl).subscribe((res) => {
231
238
  this.formate.files.push({
232
239
  filepath: data?.filePath,
233
240
  file_name: file.name,
@@ -238,6 +245,8 @@ export class FormatAndEvidenceComponent {
238
245
  });
239
246
  delete this.formate.uploadInProgress[uid];
240
247
  this.emitValue();
248
+ }, (error) => {
249
+ delete this.formate.uploadInProgress[uid];
241
250
  });
242
251
  }
243
252
  deleteAttachment(index) {
@@ -360,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
360
369
  }], formatEvidanceData: [{
361
370
  type: Input
362
371
  }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFDTixZQUFZLEVBQ1osS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPNUQsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxJQUFhLGtCQUFrQixDQUFDLEtBQVU7UUFDeEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUdELFlBQ1UscUJBQTRDLEVBQzVDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGVBQWdDO1FBSGhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBakIxQyxXQUFNLEdBQUcsTUFBTSxD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UUNyQnZDLHk5VUE0TU07OzRGRHZMTywwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCO2dNQU16QixXQUFXO3NCQUFwQixNQUFNO2dCQUNFLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDTyxrQkFBa0I7c0JBQTlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9saWN5U2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL3BvbGljeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGSUxFX1VSTCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9maWxlLXVwbG9hZC5jb25zdGFudCc7XG5pbXBvcnQgeyBGSUxFX1NJWkUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvcG9saWN5LmNvbnN0YW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm1hdC1hbmQtZXZpZGVuY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50Lmxlc3MnLCAnLi4vLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgQE91dHB1dCgpIHVwZGF0ZUZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtb2RlID0gJyc7XG4gIEBJbnB1dCgpIGNhdGVnb3JpZXM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIG9yZ2FuaXphdGlvbl9pZDogYW55ID0gJyc7XG4gIEBJbnB1dCgpIG9yZ0RldGFpbHM6IGFueSA9IHt9O1xuICBASW5wdXQoKSBzZXQgZm9ybWF0RXZpZGFuY2VEYXRhKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEodmFsdWUsICdub3Qgbmcgb24gaW5pdCcpO1xuICAgIH1cbiAgfVxuICBpc05ld0xpbmtEaXNhYmxlZCA9IGZhbHNlO1xuICBpc0VkaXREaXNhYmxlZCA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9saWN5U2VydmljZTogUG9saWN5U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrYmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgZm9ybWF0ZTogYW55ID0ge1xuICAgIGhhc1VwbG9hZEZvcm1hdGU6IGZhbHNlLFxuICAgIGZvcm1hdGVUeXBlOiAnRklMRScsIC8vIExJTktcbiAgICBpc0V2aWRlbmNlUmVxdWlyZWQ6IGZhbHNlLFxuICAgIGxpbmtzOiBbXSxcbiAgICBmaWxlczogW10sXG4gICAgdXBsb2FkSW5Qcm9ncmVzczoge30sXG4gIH07XG5cbiAgbmV3TGluayA9IHtcbiAgICBsaW5rOiAnJyxcbiAgICBjb250YWluc0Vycm9yOiBmYWxzZSxcbiAgfTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybWF0RXZpZGFuY2VEYXRhKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVEYXRhKHRoaXMuZm9ybWF0RXZpZGFuY2VEYXRhLCAnbmcgb24gaW5pdCcpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVEYXRhKHNldHRpbmdzOiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID0gc2V0dGluZ3M/LmZvcm1hdFJlcXVpcmVkID8/IGZhbHNlO1xuICAgIHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSA9XG4gICAgICBzZXR0aW5ncz8uZm9ybWF0TGlua3M/Lmxlbmd0aCA+IDAgPyAnTElOSycgOiAnRklMRSc7XG4gICAgdGhpcy5mb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCA9IHNldHRpbmdzPy5ldmlkZW5jZVJlcXVpcmVkID8/IGZhbHNlO1xuICAgIHRoaXMuZm9ybWF0ZS5saW5rcyA9IHRoaXMuYXJyYXl0b0xpbmtPYmplY3Qoc2V0dGluZ3M/LmZvcm1hdExpbmtzKSA/PyBbXTtcbiAgICBpZiAodGhpcy5tb2RlID09ICdyZXBvcnRBQ2FzZScpIHtcbiAgICAgIHRoaXMuZm9ybWF0ZS5maWxlcyA9IHNldHRpbmdzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1hdGUuZmlsZXMgPSBzZXR0aW5ncz8uZm9ybWF0RmlsZXMgPz8gW107XG4gICAgfVxuICB9XG4gIHRvZ2dsZUlzRm9ybWF0ZVVwbG9hZChzdGF0dXM6IGJvb2xlYW4pIHtcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmZvcm1hdGUuaGFzVXBsb2FkRm9ybWF0ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICB0b2dnbGVJc0Zvcm1hdFJlcXVpcmVkKHN0YXR1czogYm9vbGVhbikge1xuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICB0b2dnbGVBdHRhY2htZW50VHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPSB0eXBlO1xuICAgIGlmICh0eXBlID09PSAnTElOSycgJiYgdGhpcy5mb3JtYXRlLmxpbmtzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gVE9ET1xuICAgIH1cbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgaW5zZXJ0TGluayhtb2RlOiBhbnksIGluZGV4OiBudW1iZXIgPSAtMSkge1xuICAgIC8vIGNvbnN0IHVybFJlZ2V4ID0gbmV3IFJlZ0V4cCgnKGh0dHBzPzovLyk/KFtcXFxcZGEtei4tXSspXFxcXC4oW2Etei5dezIsNn0pWy9cXFxcdyAuLV0qLz8nKTtcbiAgICBjb25zdCB1cmxSZWdleCA9XG4gICAgICAvKGh0dHBzPzpcXC9cXC8oPzp3d3dcXC58KD8hd3d3KSlbYS16QS1aMC05XVthLXpBLVowLTktXStbYS16QS1aMC05XVxcLlteXFxzXXsyLH18d3d3XFwuW2EtekEtWjAtOV1bYS16QS1aMC05LV0rW2EtekEtWjAtOV1cXC5bXlxcc117Mix9fGh0dHBzPzpcXC9cXC8oPzp3d3dcXC58KD8hd3d3KSlbYS16QS1aMC05XStcXC5bXlxcc117Mix9fHd3d1xcLlthLXpBLVowLTldK1xcLlteXFxzXXsyLH0pL2dpO1xuICAgIGlmIChtb2RlID09PSAnQ1JFQVRFJykge1xuICAgICAgaWYgKHRoaXMubmV3TGluay5saW5rLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnJlc2V0TmV3TGluaygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXJsUmVnZXgudGVzdCh0aGlzLm5ld0xpbmsubGluayk7XG4gICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICB0aGlzLm5ld0xpbmsuY29udGFpbnNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3MucHVzaCh0aGlzLm5ld0xpbmspO1xuICAgICAgICB0aGlzLnJlc2V0TmV3TGluaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXdMaW5rLmNvbnRhaW5zRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICBpZiAodGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5saW5rLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5pc0VkaXRFbmFibGVkKCk7XG4gICAgICAgIHRoaXMuaXNOZXdMaW5rRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNWYWxpZCA9IHVybFJlZ2V4LnRlc3QodGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5saW5rKTtcbiAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uY29udGFpbnNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzTmV3TGlua0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0RW5hYmxlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5jb250YWluc0Vycm9yID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIGVkaXRMaW5rKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmlzRWRpdGluZyA9IHRydWU7XG4gICAgdGhpcy5pc05ld0xpbmtEaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5pc0VkaXRFbmFibGVkKCk7XG4gIH1cblxuICBkZWxldGVMaW5rKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvcm1hdGUubGlua3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmlzRWRpdEVuYWJsZWQoKTtcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVzZXROZXdMaW5rKCkge1xuICAgIHRoaXMubmV3TGluayA9IHtcbiAgICAgIGxpbms6ICcnLFxuICAgICAgY29udGFpbnNFcnJvcjogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxlUHJvY2Vzc2luZyhmaWxlOiBGaWxlLCB1aWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnBvbGljeVNlcnZpY2UuZmlsZVNpemVMaW1pdChmaWxlKSkge1xuICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGUsIHVpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc25hY2tiYXJTZXJ2aWNlLnNob3coRklMRV9TSVpFLk1FU1NBR0UsIEZJTEVfU0laRS5FUlJPUik7XG4gICAgfVxuICB9XG5cbiAgb25GaWxlRHJvcHBlZChmaWxlczogYW55KSB7XG4gICAgQXJyYXkuZnJvbShmaWxlcykuZm9yRWFjaCgoZmlsZTogYW55KSA9PiB7XG4gICAgICBjb25zdCB1aWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCAxNCk7XG4gICAgICB0aGlzLmZpbGVQcm9jZXNzaW5nKGZpbGUsIHVpZCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGxvYWRGaWxlKGZpbGU6IGFueSwgdWlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm1hdGUudXBsb2FkSW5Qcm9ncmVzc1t1aWRdID0gZmlsZS5uYW1lO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG4gICAgaWYgKHRoaXMubW9kZSA9PSAncG9saWN5JyB8fCB0aGlzLm1vZGUgPT0gJ3BvbGljeVJldmlld2VyJykge1xuICAgICAgY29uc3QgcGF0aCA9ICdvLycgKyB0aGlzLm9yZ2FuaXphdGlvbl9pZCArICcvcG9saWN5Lyc7XG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2VcbiAgICAgICAgLmZpbGVVcGxvYWRXb3Jrcm9vbShmb3JtRGF0YSwgcGF0aClcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtYXRlLmZpbGVzLnB1c2goe1xuICAgICAgICAgICAgZmlsZXBhdGg6IHBhdGgsXG4gICAgICAgICAgICBmaWxlX25hbWU6IGRhdGEub3JnX2ZpbGUsXG4gICAgICAgICAgICBmaWxlbmFtZTogZGF0YS5uYW1lLFxuICAgICAgICAgICAgb3JpZ2luYWxfZmlsZW5hbWU6IGRhdGEub3JnX2ZpbGUsXG4gICAgICAgICAgICBsaW5rU2V0OiAnJyxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgIGZpZDogZGF0YT8uZmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmZvcm1hdGUudXBsb2FkSW5Qcm9ncmVzc1t1aWRdO1xuICAgICAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1cmwgPSBgb3JnLSR7dGhpcy5vcmdhbml6YXRpb25faWR9JHtGSUxFX1VSTC5mb3JtYXR9YDtcbiAgICAgIHRoaXMuZ2V0U2lnbmVkVXJsKHtmaWxlTmFtZTogZmlsZS5uYW1lLCBjb250ZW50VHlwZTogZmlsZS50eXBlfSwgZmlsZSwgdWlkICk7XG4gICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxuICAgICAgLy8gICAudXBsb2FkVG9Ob2RlKGZvcm1EYXRhLCB1cmwpXG4gICAgICAvLyAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgLy8gICAgIHRoaXMuZm9ybWF0ZS5maWxlcy5wdXNoKHtcbiAgICAgIC8vICAgICAgIGZpbGVwYXRoOmRhdGE/LmZpbGVfdXJsX3BhdGgsXG4gICAgICAvLyAgICAgICBmaWxlX25hbWU6IGRhdGEub3JnX2ZpbGUsXG4gICAgICAvLyAgICAgICBmaWxlbmFtZTogZGF0YS5uYW1lLFxuICAgICAgLy8gICAgICAgb3JpZ2luYWxfZmlsZW5hbWU6IGRhdGEub3JnX2ZpbGUsXG4gICAgICAvLyAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAvLyAgICAgfSk7XG4gICAgICAvLyAgICAgZGVsZXRlIHRoaXMuZm9ybWF0ZS51cGxvYWRJblByb2dyZXNzW3VpZF07XG4gICAgICAvLyAgICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICAgIC8vICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2lnbmVkVXJsKGZpbGVNZXRhRGF0YTphbnksIGZpbGU6IEZpbGUsIHVpZDogYW55KSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIC4uLmZpbGVNZXRhRGF0YSxcbiAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICBvaWQ6IHRoaXMub3JnRGV0YWlscz8ub2lkLFxuICAgICAgICBkYXRhUmVzaWRlbmN5UmVnaW9uOiB0aGlzLm9yZ0RldGFpbHM/LnJlZ2lvbixcbiAgICAgIH0sXG4gICAgICBcbiAgICB9O1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldFNpZ25lZFVybChwYXlsb2FkKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zYXZlVG9TMyhmaWxlLCBkYXRhLCBmaWxlTWV0YURhdGEsIHVpZCk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlVG9TMyhmaWxlOiBhbnksIGRhdGE6IGFueSwgZmlsZU1ldGFEYXRhOiBhbnksIHVpZDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2Uuc2F2ZVRvUzMoZmlsZSwgZGF0YT8uc2lnbmVkVXJsKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdGUuZmlsZXMucHVzaCh7XG4gICAgICAgICAgICBmaWxlcGF0aDpkYXRhPy5maWxlUGF0aCxcbiAgICAgICAgICAgIGZpbGVfbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgZmlsZW5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgIG9yaWdpbmFsX2ZpbGVuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICBmaWQ6IGRhdGE/LmZpZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5mb3JtYXRlLnVwbG9hZEluUHJvZ3Jlc3NbdWlkXTtcbiAgICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlQXR0YWNobWVudChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtYXRlLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIGVtaXRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5tb2RlID09ICdyZXBvcnRBQ2FzZScpIHtcbiAgICAgIHRoaXMudXBkYXRlRmlsZXMuZW1pdCh0aGlzLmZvcm1hdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09ICdwb2xpY3knIHx8IHRoaXMubW9kZSA9PSAncG9saWN5UmV2aWV3ZXInKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBpc0Zvcm1hdGVVcGxvYWRlZDogdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUsXG4gICAgICAgIGxpbmtzOlxuICAgICAgICAgIHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0xJTksnXG4gICAgICAgICAgICA/IHRoaXMuZ2V0TGlua3NBcnJheShcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdGUubGlua3M/Lmxlbmd0aCA/IFsuLi50aGlzLmZvcm1hdGUubGlua3NdIDogW11cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgZmlsZXM6IHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0ZJTEUnID8gdGhpcy5mb3JtYXRlLmZpbGVzIDogW10sXG4gICAgICAgIGZvcm1hdGVUeXBlOiB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUsXG4gICAgICAgIGlzRXZpZGVuY2VSZXF1aXJlZDogdGhpcy5mb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCxcbiAgICAgIH07XG4gICAgICBwYXlsb2FkLmxpbmtzID0gcGF5bG9hZC5saW5rcy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgICAgIHRoaXMudXBkYXRlRmlsZXMuZW1pdChwYXlsb2FkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaXNGb3JtYXRlVXBsb2FkZWQ6IHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlLFxuICAgICAgICBsaW5rczpcbiAgICAgICAgICB0aGlzLmZvcm1hdGUuaGFzVXBsb2FkRm9ybWF0ZSAmJiB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdMSU5LJ1xuICAgICAgICAgICAgPyB0aGlzLmdldExpbmtzQXJyYXkoWy4uLnRoaXMuZm9ybWF0ZS5saW5rc10pXG4gICAgICAgICAgICA6IFtdLFxuICAgICAgICBmaWxlczpcbiAgICAgICAgICB0aGlzLmZvcm1hdGUuaGFzVXBsb2FkRm9ybWF0ZSAmJiB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJ1xuICAgICAgICAgICAgPyB0aGlzLmZvcm1hdGUuZmlsZXNcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGZvcm1hdGVUeXBlOiB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUsXG4gICAgICAgIGlzRXZpZGVuY2VSZXF1aXJlZDogdGhpcy5mb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCxcbiAgICAgIH07XG4gICAgICBwYXlsb2FkLmxpbmtzID0gcGF5bG9hZC5saW5rcy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUgIT09IHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbGVzLmVtaXQocGF5bG9hZCk7XG4gICAgfVxuICB9XG4gIGdldExpbmtzQXJyYXkobGlua3M6IGFueSkge1xuICAgIGNvbnN0IGxpbmsgPSBsaW5rcy5tYXAoKGU6IGFueSkgPT4ge1xuICAgICAgaWYgKGUubGluayAmJiAhZT8uY29udGFpbnNFcnJvciAmJiAhZT8uaXNFZGl0aW5nKSB7XG4gICAgICAgIHJldHVybiBlLmxpbms7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGxpbms/Lmxlbmd0aCA8PSAxICYmIGxpbmtbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gIH1cblxuICBhcnJheXRvTGlua09iamVjdChsaW5rc0FycmF5OiBhbnkpIHtcbiAgICBpZiAobGlua3NBcnJheSkge1xuICAgICAgY29uc3QgbGlua3MgPSBsaW5rc0FycmF5Lm1hcCgoZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7IGxpbms6IGUsIGNvbnRhaW5zRXJyb3I6IGZhbHNlLCBpc0VkaXRpbmc6IGZhbHNlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGxpbmtzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgaXNFZGl0RW5hYmxlZCgpIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5mb3JtYXRlLmxpbmtzKSB7XG4gICAgICBpZiAoaXRlbS5pc0VkaXRpbmcgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5pc0VkaXREaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNFZGl0RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcG9saWN5TGlua1NldExpc3QgPSBbXG4gICAgLy8gJ1BvbGljeSBDaGFydGVyJyxcbiAgICAvLyAnUmVsYXRlZCBQb2xpY3kgRG9jdW1lbnRzL090aGVyIFJlZmVyZW5jZXMnLFxuICAgIC8vICdQcm9jZWR1cmVzIExpbmtlZCB0byB0aGlzIFBvbGljeScsXG4gICAgLy8gJ0ltcGxlbWVudGF0aW9uIEd1aWRlbGluZXMgZm9yIHRoaXMgUG9saWN5JyxcbiAgICAvLyAnVHJhaW5pbmcgTWF0ZXJpYWxzIGZvciB0aGlzIFBvbGljeSdcbiAgICAnQ2hhcnRlcicsXG4gICAgJ1JlbGF0ZWQgRG9jdW1lbnRzJyxcbiAgICAnUmVmZXJlbmNlIE1hdGVyaWFscycsXG4gICAgJ1JlbGF0ZWQgcHJvY2VkdXJlcycsXG4gICAgJ0ltcGxlbWVudGF0aW9uIGd1aWRlbGluZXMnLFxuICAgICdUcmFpbmluZyBNYXRlcmlhbHMnLFxuICAgICdSZWd1bGF0b3J5IERvY3VtZW50cycsXG4gICAgJ090aGVyJyxcbiAgXTtcbiAgc2VsZWN0ZWRMaW5rU2V0Q2hhbmdlKGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvcm1hdGUuZmlsZXNbaW5kZXhdLmxpbmtTZXQgPSBldmVudDtcbiAgICBpZiAoZXZlbnQgPT09ICdPdGhlcicgJiYgIXRoaXMuZm9ybWF0ZT8uZmlsZXNbaW5kZXhdPy5vdGhlcnMpIHtcbiAgICAgIHRoaXMuZm9ybWF0ZS5maWxlc1tpbmRleF0ub3RoZXJzID0gWycnXTtcbiAgICB9XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIGFkZE1vcmVEb2N1bWVudHNEZXRhaWxzKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvcm1hdGUuZmlsZXNbaW5kZXhdLm90aGVycy5wdXNoKCcnKTtcbiAgfVxuXG4gIHVwbG9hZFBvbGljeUF0dGFjaG1lbnRzKGZvcm1EYXRhOiBhbnkpIHtcbiAgICBjb25zdCBwYXRoID0gJ28vJyArIHRoaXMub3JnYW5pemF0aW9uX2lkICsgJy9wb2xpY3kvJztcbiAgICB0aGlzLnBvbGljeVNlcnZpY2VcbiAgICAgIC5maWxlVXBsb2FkV29ya3Jvb20oZm9ybURhdGEsIHBhdGgpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICBmaWxlX25hbWU6IGRhdGEubmFtZSxcbiAgICAgICAgICBvcmlnaW5hbF9maWxlX25hbWU6IGRhdGEub3JnX2ZpbGUsXG4gICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKSxcbiAgICAgICAgICBtZW1iZXJfaWQ6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKSxcbiAgICAgICAgICBjYXRlZ29yeV9pZDogdGhpcy5jYXRlZ29yaWVzLFxuICAgICAgICAgIGNsYXBfaWQ6IDAsXG4gICAgICAgICAgY29udHJhY3RfdHlwZTogNCxcbiAgICAgICAgICBmb2xkZXJfaWQ6IDAsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIiBbY2xhc3MucG9saWN5LXVwbG9hZC1maWxlXT1cIlsncG9saWN5JywgJ3JlcG9ydEFDYXNlJ10/LmluY2x1ZGVzKG1vZGUpXCI+XG4gIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiAqbmdJZj1cIm1vZGUgPT0gJ3Jlc3BvbnNpYmlsaXR5J1wiPlxuICAgIEZvcm1hdCAmIEV2aWRlbmNlXG4gIDwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCIgKm5nSWY9XCJcbiAgICAgIG1vZGUgIT0gJ3BvbGljeScgJiYgbW9kZSAhPSAncG9saWN5UmV2aWV3ZXInICYmIG1vZGUgIT0gJ3JlcG9ydEFDYXNlJ1xuICAgIFwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPkRvIHlvdSB3YW50IHRvIHVwbG9hZCBhIGZvcm1hdCBmb3IgdGhpcyByZXNwb25zaWJpbGl0eT88L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwXCI+XG4gICAgICA8YXBwLWNzLXJhZGlvIFtuYW1lXT1cIidmb3JtYXRfcmVxdWlyZWQnXCIgW2NoZWNrZWRdPVwiZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID09PSB0cnVlXCJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdGVVcGxvYWQodHJ1ZSlcIj5ZZXM8L2FwcC1jcy1yYWRpbz5cbiAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2Zvcm1hdF9yZXF1aXJlZCdcIiBbY2hlY2tlZF09XCJmb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgPT09IGZhbHNlXCJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdGVVcGxvYWQoZmFsc2UpXCI+Tm9cbiAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tdGFiXCIgKm5nSWY9XCJmb3JtYXRlPy5oYXNVcGxvYWRGb3JtYXRlIHx8IG1vZGUgPT0gJ3BvbGljeVJldmlld2VyJ1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiZm9ybWF0ZT8uZm9ybWF0ZVR5cGUgPT09ICdGSUxFJ1wiIChjbGljayk9XCJ0b2dnbGVBdHRhY2htZW50VHlwZSgnRklMRScpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtYXRlLmxpbmtzPy5sZW5ndGggPiAwXCI+XG4gICAgICBJbnNlcnQgRmlsZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiZm9ybWF0ZT8uZm9ybWF0ZVR5cGUgPT09ICdMSU5LJ1wiIChjbGljayk9XCJ0b2dnbGVBdHRhY2htZW50VHlwZSgnTElOSycpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtYXRlLmZpbGVzPy5sZW5ndGggPiAwXCI+XG4gICAgICBJbnNlcnQgTGlua1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAoZm9ybWF0ZT8uaGFzVXBsb2FkRm9ybWF0ZSAmJiBmb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRScpIHx8XG4gICAgICAobW9kZSA9PSAncG9saWN5JyAmJiBmb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRScpIHx8XG4gICAgICAobW9kZSA9PSAncG9saWN5UmV2aWV3ZXInICYmIGZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJykgfHxcbiAgICAgIChtb2RlID09ICdyZXBvcnRBQ2FzZScgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0ZJTEUnKVxuICAgIFwiPlxuICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1maWxlIHVwbG9hZCBpbiBwcm9ncmVzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZvcm1hdGU/LnVwbG9hZEluUHJvZ3Jlc3MgfCBrZXl2YWx1ZSkubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdFwiICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBlYWNoRmlsZSBvZiBmb3JtYXRlPy51cGxvYWRJblByb2dyZXNzIHwga2V5dmFsdWU7XG4gICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBlYWNoRmlsZS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCIyXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZmlsZSB1cGxvYWQgZW5kcyBoZXJlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybWF0ZS5maWxlcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgIT0gJ3BvbGljeSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdFwiICpuZ0Zvcj1cImxldCBlYWNoRmlsZSBvZiBmb3JtYXRlLmZpbGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGVhY2hGaWxlPy5maWxlX25hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVBdHRhY2htZW50KGkpXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PSAncG9saWN5J1wiIGNsYXNzPVwicG9saWN5LXJlbGF0ZWQtZG9jdW1lbnQtZmllbGQgdngtcC0zIHZ4LXB0LTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yXCI+XG4gICAgICAgICAgTElOSyBUSEUgRE9DVU1FTlQgQU5EIFNQRUNJRlkgVEhFIFJFTEFUSU9OU0hJUCBXSVRIIFRISVMgUE9MSUNZXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1saXN0IHBvbGljeVwiICpuZ0Zvcj1cImxldCBlYWNoRmlsZSBvZiBmb3JtYXRlLmZpbGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUgdGFibGUge3tcbiAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KCcuJylbXG4gICAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KCcuJyk/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH19XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJlOzwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtYXQge3tcbiAgICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoJy4nKVtcbiAgICAgICAgICAgICAgICAgICAgZWFjaEZpbGU/LmZpbGVfbmFtZS5zcGxpdCgnLicpPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfX1cIj57e1xuICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoXCIuXCIpW1xuICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoXCIuXCIpPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZWFjaEZpbGU/LmZpbGVfbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQXR0YWNobWVudChpKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Y3Mtc2VsZWN0IFsobmdNb2RlbCldPVwiZWFjaEZpbGUubGlua1NldFwiIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkTGlua1NldENoYW5nZSgkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRGVmaW5lIHRoZSBkb2N1bWVudFxcJ3MgcmVsYXRpb25zaGlwIHRvIHRoaXMgcG9saWN5J1wiIG5hbWU9XCJzZWxlY3RlZFwiPlxuICAgICAgICAgICAgPGNzLW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBwb2xpY3lMaW5rU2V0TGlzdFwiIFt2YWx1ZV09XCJkYXRhXCI+XG4gICAgICAgICAgICAgIHt7IGRhdGEgfX1cbiAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxuICAgICAgICAgIDwvY3Mtc2VsZWN0PlxuICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3RoZXIgb2YgZWFjaEZpbGU/Lm90aGVyczsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiZWFjaEZpbGU/LmxpbmtTZXQgPT09ICdPdGhlciAoc3BlY2lmeSBvd24pJ1wiIFtuZ01vZGVsXT1cImVhY2hGaWxlLm90aGVyc1tqXVwiIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkTGlua1NldENoYW5nZSgnT3RoZXIgKHNwZWNpZnkgb3duKScsaSwgJGV2ZW50LCBqKVwiIGNsYXNzPVwibGlua2FnZS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJUeXBlIHRoZSBsaW5rYWdlIGRldGFpbHNcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVhY2hGaWxlPy5saW5rU2V0ID09PSAnT3RoZXIgKHNwZWNpZnkgb3duKSdcIiBjbGFzcz1cImxpbmthZ2UtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW10LTJcIiAoY2xpY2spPVwiYWRkTW9yZURvY3VtZW50c0RldGFpbHMoaSlcIj4rIEFERCBNT1JFPC9idXR0b24+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiAqbmdJZj1cIm1vZGU9PSdwb2xpY3knXCI+XG4gICAgICAgICAgICAgICAgTElOSyBUSEUgRE9DVU1FTlQgQU5EIFNQRUNJRlkgVEhFIFJFTEFUSU9OU0hJUCBXSVRIIFRISVMgUE9MSUNZXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgZm9ybWF0ZS5maWxlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3RcIiAqbmdJZj1cIm1vZGUhPSdwb2xpY3knXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBlYWNoRmlsZT8uZmlsZV9uYW1lIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUF0dGFjaG1lbnQoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdCBwb2xpY3lcIiAqbmdJZj1cIm1vZGU9PSdwb2xpY3knXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57e2VhY2hGaWxlPy5maWxlX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0gLSA8YnV0dG9uIGNsYXNzPVwiZWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVBdHRhY2htZW50KGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cImVhY2hGaWxlLmxpbmtTZXRcIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZExpbmtTZXRDaGFuZ2UoJGV2ZW50LGkpXCIgW3BsYWNlaG9sZGVyXT1cIidEZWZpbmUgdGhlIGRvY3VtZW50XFwncyByZWxhdGlvbnNoaXAgdG8gdGhpcyBwb2xpY3knXCIgbmFtZT1cInNlbGVjdGVkXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBwb2xpY3lMaW5rU2V0TGlzdFwiIFt2YWx1ZV09XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L2NzLXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZHJhZyBhbmQgZHJvcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWItZ3JvdXBcIiBbY2xhc3MudXBsb2FkZWRdPVwiZm9ybWF0ZS5maWxlcz8ubGVuZ3RoID4gMFwiIGFwcERyYWdEcm9wXG4gICAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ1cGxvYWQtZmlsZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnVwbG9hZFwiIGFsdD1cIlwiIGNsYXNzPVwiaW1hZ2VcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnJvd3NlXCI+XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSAhPSAncG9saWN5JyAmJiBtb2RlICE9ICdyZXBvcnRBQ2FzZSdcIj5Ecm9wIHlvdXIgZmlsZXMgaGVyZSAvXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09ICdwb2xpY3knIHx8IG1vZGUgPT0gJ3JlcG9ydEFDYXNlJ1wiPkRyb3AgeW91ciBmaWxlcyBoZXJlIC9cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkJyb3dzZVxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBtdWx0aXBsZSAoY2hhbmdlKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50LnRhcmdldC5maWxlcylcIiAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwibW9kZSE9J3BvbGljeSdcIj5Ecm9wIHlvdXIgZmlsZXMgaGVyZSAvPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1vZGU9PSdwb2xpY3knXCI+RHJhZyAmIGRyb3AgdG8gdXBsb2FkIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvbGljeSAvPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+QnJvd3NlXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBtdWx0aXBsZSAoY2hhbmdlKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50LnRhcmdldC5maWxlcylcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZHJhZyBkcm9wIGVuZHMgaGVyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlxuICAgICAgKGZvcm1hdGU/Lmhhc1VwbG9hZEZvcm1hdGUgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0xJTksnKSB8fFxuICAgICAgKG1vZGUgPT0gJ3BvbGljeVJldmlld2VyJyAmJiBmb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnTElOSycpXG4gICAgXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1hdGUubGlua3MubGVuZ3RoID4gMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBmb3JtYXRlLmxpbmtzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3RcIiAqbmdJZj1cIiFsaW5rLmlzRWRpdGluZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBsaW5rLmxpbmsgfX0gPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuZGlzYWJsZWRdPVwiaXNFZGl0RGlzYWJsZWRcIiBjbGFzcz1cImVkaXRcIiAoY2xpY2spPVwiZWRpdExpbmsoaSlcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVMaW5rKGkpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaW5rLmlzRWRpdGluZ1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZWRpdC1saW5rXCIgYXBwQXV0b2ZvY3VzIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGhlIGxpbmsgaGVyZVwiIFsobmdNb2RlbCldPVwibGluay5saW5rXCJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJpbnNlcnRMaW5rKCdFRElUJywgaSlcIiAoa2V5ZG93bi5lbnRlcik9XCJpbnNlcnRMaW5rKCdFRElUJywgaSlcIiAvPlxuICAgICAgICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwibGluay5jb250YWluc0Vycm9yXCI+XG4gICAgICAgICAgICBQbGVhc2UgaW5zZXJ0IGEgdmFsaWQgbGlua1xuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aW5wdXQgW2Rpc2FibGVkXT1cImlzTmV3TGlua0Rpc2FibGVkXCIgY2xhc3M9XCJlZGl0LWxpbmtcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwibmV3TGluay5saW5rXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGhlIGxpbmsgaGVyZVwiIChmb2N1c291dCk9XCJpbnNlcnRMaW5rKCdDUkVBVEUnKVwiIChrZXlkb3duLmVudGVyKT1cImluc2VydExpbmsoJ0NSRUFURScpXCIgLz5cbiAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIm5ld0xpbmsuY29udGFpbnNFcnJvclwiPlxuICAgICAgUGxlYXNlIGluc2VydCBhIHZhbGlkIGxpbmtcbiAgICA8L3A+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiICpuZ0lmPVwibW9kZSA9PSAncmVzcG9uc2liaWxpdHknXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+RG8geW91IHdhbnQgZXZpZGVuY2Ugb2YgY29tcGxldGlvbiBvZiB0aGUgcmVzcG9uc2liaWxpdHkgdG8gYmVcbiAgICAgIHVwbG9hZGVkPzwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXBcIj5cbiAgICAgIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ2V2aWRlbmNlX3JlcXVpcmVkJ1wiIFtjaGVja2VkXT1cImZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkID09PSB0cnVlXCJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdFJlcXVpcmVkKHRydWUpXCI+WWVzPC9hcHAtY3MtcmFkaW8+XG4gICAgICA8YXBwLWNzLXJhZGlvIFtuYW1lXT1cIidldmlkZW5jZV9yZXF1aXJlZCdcIiBbY2hlY2tlZF09XCJmb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCA9PT0gZmFsc2VcIlxuICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInRvZ2dsZUlzRm9ybWF0UmVxdWlyZWQoZmFsc2UpXCI+Tm9cbiAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
372
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFDTixZQUFZLEVBQ1osS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPNUQsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxJQUFhLGtCQUFrQixDQUFDLEtBQVU7UUFDeEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUdELFlBQ1UscUJBQTRDLEVBQzVDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGVBQWdDO1FBSGhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBakIxQyxXQUFNLEdBQUcsTUFBTSxD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QUUsSUFBSSxDQUFDLElBQUk7Z0JBQ3BCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNqQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDckQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUN6QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixTQUFTLEVBQUUsQ0FBQzthQUNiLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBeldVLDBCQUEwQjttR0FBMUIsMEJBQTBCLG9RQ3JCdkMseTlVQTRNTTs7NEZEdkxPLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUI7Z01BTXpCLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0UsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNPLGtCQUFrQjtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBQb2xpY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcG9saWN5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcbmltcG9ydCB7IEZJTEVfVVJMIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2ZpbGUtdXBsb2FkLmNvbnN0YW50JztcbmltcG9ydCB7IEZJTEVfU0laRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9wb2xpY3kuY29uc3RhbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybWF0LWFuZC1ldmlkZW5jZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtYXQtYW5kLWV2aWRlbmNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQubGVzcycsICcuLi8uLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBAT3V0cHV0KCkgdXBkYXRlRmlsZXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIG1vZGUgPSAnJztcbiAgQElucHV0KCkgY2F0ZWdvcmllczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgb3JnYW5pemF0aW9uX2lkOiBhbnkgPSAnJztcbiAgQElucHV0KCkgb3JnRGV0YWlsczogYW55ID0ge307XG4gIEBJbnB1dCgpIHNldCBmb3JtYXRFdmlkYW5jZURhdGEodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YSh2YWx1ZSwgJ25vdCBuZyBvbiBpbml0Jyk7XG4gICAgfVxuICB9XG4gIGlzTmV3TGlua0Rpc2FibGVkID0gZmFsc2U7XG4gIGlzRWRpdERpc2FibGVkID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb2xpY3lTZXJ2aWNlOiBQb2xpY3lTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tiYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2VcbiAgKSB7IH1cblxuICBmb3JtYXRlOiBhbnkgPSB7XG4gICAgaGFzVXBsb2FkRm9ybWF0ZTogZmFsc2UsXG4gICAgZm9ybWF0ZVR5cGU6ICdGSUxFJywgLy8gTElOS1xuICAgIGlzRXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXG4gICAgbGlua3M6IFtdLFxuICAgIGZpbGVzOiBbXSxcbiAgICB1cGxvYWRJblByb2dyZXNzOiB7fSxcbiAgfTtcblxuICBuZXdMaW5rID0ge1xuICAgIGxpbms6ICcnLFxuICAgIGNvbnRhaW5zRXJyb3I6IGZhbHNlLFxuICB9O1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtYXRFdmlkYW5jZURhdGEpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEodGhpcy5mb3JtYXRFdmlkYW5jZURhdGEsICduZyBvbiBpbml0Jyk7XG4gICAgfVxuICB9XG5cbiAgaW5pdGlhbGl6ZURhdGEoc2V0dGluZ3M6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgPSBzZXR0aW5ncz8uZm9ybWF0UmVxdWlyZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID1cbiAgICAgIHNldHRpbmdzPy5mb3JtYXRMaW5rcz8ubGVuZ3RoID4gMCA/ICdMSU5LJyA6ICdGSUxFJztcbiAgICB0aGlzLmZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkID0gc2V0dGluZ3M/LmV2aWRlbmNlUmVxdWlyZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5mb3JtYXRlLmxpbmtzID0gdGhpcy5hcnJheXRvTGlua09iamVjdChzZXR0aW5ncz8uZm9ybWF0TGlua3MpID8/IFtdO1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ3JlcG9ydEFDYXNlJykge1xuICAgICAgdGhpcy5mb3JtYXRlLmZpbGVzID0gc2V0dGluZ3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybWF0ZS5maWxlcyA9IHNldHRpbmdzPy5mb3JtYXRGaWxlcyA/PyBbXTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlSXNGb3JtYXRlVXBsb2FkKHN0YXR1czogYm9vbGVhbikge1xuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIHRvZ2dsZUlzRm9ybWF0UmVxdWlyZWQoc3RhdHVzOiBib29sZWFuKSB7XG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIHRvZ2dsZUF0dGFjaG1lbnRUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSA9IHR5cGU7XG4gICAgaWYgKHR5cGUgPT09ICdMSU5LJyAmJiB0aGlzLmZvcm1hdGUubGlua3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBUT0RPXG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICBpbnNlcnRMaW5rKG1vZGU6IGFueSwgaW5kZXg6IG51bWJlciA9IC0xKSB7XG4gICAgLy8gY29uc3QgdXJsUmVnZXggPSBuZXcgUmVnRXhwKCcoaHR0cHM/Oi8vKT8oW1xcXFxkYS16Li1dKylcXFxcLihbYS16Ll17Miw2fSlbL1xcXFx3IC4tXSovPycpO1xuICAgIGNvbnN0IHVybFJlZ2V4ID1cbiAgICAgIC8oaHR0cHM/OlxcL1xcLyg/Ond3d1xcLnwoPyF3d3cpKVthLXpBLVowLTldW2EtekEtWjAtOS1dK1thLXpBLVowLTldXFwuW15cXHNdezIsfXx3d3dcXC5bYS16QS1aMC05XVthLXpBLVowLTktXStbYS16QS1aMC05XVxcLlteXFxzXXsyLH18aHR0cHM/OlxcL1xcLyg/Ond3d1xcLnwoPyF3d3cpKVthLXpBLVowLTldK1xcLlteXFxzXXsyLH18d3d3XFwuW2EtekEtWjAtOV0rXFwuW15cXHNdezIsfSkvZ2k7XG4gICAgaWYgKG1vZGUgPT09ICdDUkVBVEUnKSB7XG4gICAgICBpZiAodGhpcy5uZXdMaW5rLmxpbmsubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMucmVzZXROZXdMaW5rKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB1cmxSZWdleC50ZXN0KHRoaXMubmV3TGluay5saW5rKTtcbiAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgIHRoaXMubmV3TGluay5jb250YWluc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rcy5wdXNoKHRoaXMubmV3TGluayk7XG4gICAgICAgIHRoaXMucmVzZXROZXdMaW5rKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5ld0xpbmsuY29udGFpbnNFcnJvciA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtb2RlID09PSAnRURJVCcpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmxpbmsubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmlzRWRpdEVuYWJsZWQoKTtcbiAgICAgICAgdGhpcy5pc05ld0xpbmtEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdXJsUmVnZXgudGVzdCh0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmxpbmspO1xuICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgdGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5jb250YWluc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNOZXdMaW5rRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0VkaXRFbmFibGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmNvbnRhaW5zRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICB9XG5cbiAgZWRpdExpbmsoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uaXNFZGl0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmlzTmV3TGlua0Rpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmlzRWRpdEVuYWJsZWQoKTtcbiAgfVxuXG4gIGRlbGV0ZUxpbmsoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybWF0ZS5saW5rcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuaXNFZGl0RW5hYmxlZCgpO1xuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICByZXNldE5ld0xpbmsoKSB7XG4gICAgdGhpcy5uZXdMaW5rID0ge1xuICAgICAgbGluazogJycsXG4gICAgICBjb250YWluc0Vycm9yOiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbGVQcm9jZXNzaW5nKGZpbGU6IEZpbGUsIHVpZDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMucG9saWN5U2VydmljZS5maWxlU2l6ZUxpbWl0KGZpbGUpKSB7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZSwgdWlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zbmFja2JhclNlcnZpY2Uuc2hvdyhGSUxFX1NJWkUuTUVTU0FHRSwgRklMRV9TSVpFLkVSUk9SKTtcbiAgICB9XG4gIH1cblxuICBvbkZpbGVEcm9wcGVkKGZpbGVzOiBhbnkpIHtcbiAgICBBcnJheS5mcm9tKGZpbGVzKS5mb3JFYWNoKChmaWxlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHVpZDogc3RyaW5nID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDE0KTtcbiAgICAgIHRoaXMuZmlsZVByb2Nlc3NpbmcoZmlsZSwgdWlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVwbG9hZEZpbGUoZmlsZTogYW55LCB1aWQ6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybWF0ZS51cGxvYWRJblByb2dyZXNzW3VpZF0gPSBmaWxlLm5hbWU7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICBpZiAodGhpcy5tb2RlID09ICdwb2xpY3knIHx8IHRoaXMubW9kZSA9PSAncG9saWN5UmV2aWV3ZXInKSB7XG4gICAgICBjb25zdCBwYXRoID0gJ28vJyArIHRoaXMub3JnYW5pemF0aW9uX2lkICsgJy9wb2xpY3kvJztcbiAgICAgIHRoaXMucG9saWN5U2VydmljZVxuICAgICAgICAuZmlsZVVwbG9hZFdvcmtyb29tKGZvcm1EYXRhLCBwYXRoKVxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1hdGUuZmlsZXMucHVzaCh7XG4gICAgICAgICAgICBmaWxlcGF0aDogcGF0aCxcbiAgICAgICAgICAgIGZpbGVfbmFtZTogZGF0YS5vcmdfZmlsZSxcbiAgICAgICAgICAgIGZpbGVuYW1lOiBkYXRhLm5hbWUsXG4gICAgICAgICAgICBvcmlnaW5hbF9maWxlbmFtZTogZGF0YS5vcmdfZmlsZSxcbiAgICAgICAgICAgIGxpbmtTZXQ6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAgICAgICAgICAgZmlkOiBkYXRhPy5maWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZm9ybWF0ZS51cGxvYWRJblByb2dyZXNzW3VpZF07XG4gICAgICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IGBvcmctJHt0aGlzLm9yZ2FuaXphdGlvbl9pZH0ke0ZJTEVfVVJMLmZvcm1hdH1gO1xuICAgICAgdGhpcy5nZXRTaWduZWRVcmwoe2ZpbGVOYW1lOiBmaWxlLm5hbWUsIGNvbnRlbnRUeXBlOiBmaWxlLnR5cGV9LCBmaWxlLCB1aWQgKTtcbiAgICAgIC8vIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAvLyAgIC51cGxvYWRUb05vZGUoZm9ybURhdGEsIHVybClcbiAgICAgIC8vICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAvLyAgICAgdGhpcy5mb3JtYXRlLmZpbGVzLnB1c2goe1xuICAgICAgLy8gICAgICAgZmlsZXBhdGg6ZGF0YT8uZmlsZV91cmxfcGF0aCxcbiAgICAgIC8vICAgICAgIGZpbGVfbmFtZTogZGF0YS5vcmdfZmlsZSxcbiAgICAgIC8vICAgICAgIGZpbGVuYW1lOiBkYXRhLm5hbWUsXG4gICAgICAvLyAgICAgICBvcmlnaW5hbF9maWxlbmFtZTogZGF0YS5vcmdfZmlsZSxcbiAgICAgIC8vICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgIC8vICAgICB9KTtcbiAgICAgIC8vICAgICBkZWxldGUgdGhpcy5mb3JtYXRlLnVwbG9hZEluUHJvZ3Jlc3NbdWlkXTtcbiAgICAgIC8vICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xuICAgICAgLy8gICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRTaWduZWRVcmwoZmlsZU1ldGFEYXRhOmFueSwgZmlsZTogRmlsZSwgdWlkOiBhbnkpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgLi4uZmlsZU1ldGFEYXRhLFxuICAgICAgb3JnYW5pemF0aW9uOiB7XG4gICAgICAgIG9pZDogdGhpcy5vcmdEZXRhaWxzPy5vaWQsXG4gICAgICAgIGRhdGFSZXNpZGVuY3lSZWdpb246IHRoaXMub3JnRGV0YWlscz8ucmVnaW9uLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldFNpZ25lZFVybChwYXlsb2FkKS5zdWJzY3JpYmUoXG4gICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZVRvUzMoZmlsZSwgZGF0YSwgZmlsZU1ldGFEYXRhLCB1aWQpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5mb3JtYXRlLnVwbG9hZEluUHJvZ3Jlc3NbdWlkXTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2F2ZVRvUzMoZmlsZTogYW55LCBkYXRhOiBhbnksIGZpbGVNZXRhRGF0YTogYW55LCB1aWQ6IGFueSkge1xuICAgIGNvbnN0IHNpZ25lZFVybCA9IGRhdGE/LnNpZ25lZFVybCB8fCBkYXRhPy5zaWduZWR1cmw7XG5cblxuICAgIGlmICghc2lnbmVkVXJsKSB7XG4gICAgICBkZWxldGUgdGhpcy5mb3JtYXRlLnVwbG9hZEluUHJvZ3Jlc3NbdWlkXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5zYXZlVG9TMyhmaWxlLCBzaWduZWRVcmwpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1hdGUuZmlsZXMucHVzaCh7XG4gICAgICAgICAgZmlsZXBhdGg6IGRhdGE/LmZpbGVQYXRoLFxuICAgICAgICAgIGZpbGVfbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgIGZpbGVuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgb3JpZ2luYWxfZmlsZW5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgZmlkOiBkYXRhPy5maWQsXG4gICAgICAgIH0pO1xuICAgICAgICBkZWxldGUgdGhpcy5mb3JtYXRlLnVwbG9hZEluUHJvZ3Jlc3NbdWlkXTtcbiAgICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZm9ybWF0ZS51cGxvYWRJblByb2dyZXNzW3VpZF07XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZUF0dGFjaG1lbnQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybWF0ZS5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICBlbWl0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PSAncmVwb3J0QUNhc2UnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpbGVzLmVtaXQodGhpcy5mb3JtYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PSAncG9saWN5JyB8fCB0aGlzLm1vZGUgPT0gJ3BvbGljeVJldmlld2VyJykge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaXNGb3JtYXRlVXBsb2FkZWQ6IHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlLFxuICAgICAgICBsaW5rczpcbiAgICAgICAgICB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdMSU5LJ1xuICAgICAgICAgICAgPyB0aGlzLmdldExpbmtzQXJyYXkoXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRlLmxpbmtzPy5sZW5ndGggPyBbLi4udGhpcy5mb3JtYXRlLmxpbmtzXSA6IFtdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGZpbGVzOiB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJyA/IHRoaXMuZm9ybWF0ZS5maWxlcyA6IFtdLFxuICAgICAgICBmb3JtYXRlVHlwZTogdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlLFxuICAgICAgICBpc0V2aWRlbmNlUmVxdWlyZWQ6IHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQsXG4gICAgICB9O1xuICAgICAgcGF5bG9hZC5saW5rcyA9IHBheWxvYWQubGlua3MuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlICE9PSB1bmRlZmluZWQpO1xuXG4gICAgICB0aGlzLnVwZGF0ZUZpbGVzLmVtaXQocGF5bG9hZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGlzRm9ybWF0ZVVwbG9hZGVkOiB0aGlzLmZvcm1hdGUuaGFzVXBsb2FkRm9ybWF0ZSxcbiAgICAgICAgbGlua3M6XG4gICAgICAgICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgJiYgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnTElOSydcbiAgICAgICAgICAgID8gdGhpcy5nZXRMaW5rc0FycmF5KFsuLi50aGlzLmZvcm1hdGUubGlua3NdKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgZmlsZXM6XG4gICAgICAgICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgJiYgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRSdcbiAgICAgICAgICAgID8gdGhpcy5mb3JtYXRlLmZpbGVzXG4gICAgICAgICAgICA6IFtdLFxuICAgICAgICBmb3JtYXRlVHlwZTogdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlLFxuICAgICAgICBpc0V2aWRlbmNlUmVxdWlyZWQ6IHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQsXG4gICAgICB9O1xuICAgICAgcGF5bG9hZC5saW5rcyA9IHBheWxvYWQubGlua3MuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlICE9PSB1bmRlZmluZWQpO1xuICAgICAgdGhpcy51cGRhdGVGaWxlcy5lbWl0KHBheWxvYWQpO1xuICAgIH1cbiAgfVxuICBnZXRMaW5rc0FycmF5KGxpbmtzOiBhbnkpIHtcbiAgICBjb25zdCBsaW5rID0gbGlua3MubWFwKChlOiBhbnkpID0+IHtcbiAgICAgIGlmIChlLmxpbmsgJiYgIWU/LmNvbnRhaW5zRXJyb3IgJiYgIWU/LmlzRWRpdGluZykge1xuICAgICAgICByZXR1cm4gZS5saW5rO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChsaW5rPy5sZW5ndGggPD0gMSAmJiBsaW5rWzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICB9XG5cbiAgYXJyYXl0b0xpbmtPYmplY3QobGlua3NBcnJheTogYW55KSB7XG4gICAgaWYgKGxpbmtzQXJyYXkpIHtcbiAgICAgIGNvbnN0IGxpbmtzID0gbGlua3NBcnJheS5tYXAoKGU6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4geyBsaW5rOiBlLCBjb250YWluc0Vycm9yOiBmYWxzZSwgaXNFZGl0aW5nOiBmYWxzZSB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBsaW5rcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGlzRWRpdEVuYWJsZWQoKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZm9ybWF0ZS5saW5rcykge1xuICAgICAgaWYgKGl0ZW0uaXNFZGl0aW5nID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuaXNFZGl0RGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzRWRpdERpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBvbGljeUxpbmtTZXRMaXN0ID0gW1xuICAgIC8vICdQb2xpY3kgQ2hhcnRlcicsXG4gICAgLy8gJ1JlbGF0ZWQgUG9saWN5IERvY3VtZW50cy9PdGhlciBSZWZlcmVuY2VzJyxcbiAgICAvLyAnUHJvY2VkdXJlcyBMaW5rZWQgdG8gdGhpcyBQb2xpY3knLFxuICAgIC8vICdJbXBsZW1lbnRhdGlvbiBHdWlkZWxpbmVzIGZvciB0aGlzIFBvbGljeScsXG4gICAgLy8gJ1RyYWluaW5nIE1hdGVyaWFscyBmb3IgdGhpcyBQb2xpY3knXG4gICAgJ0NoYXJ0ZXInLFxuICAgICdSZWxhdGVkIERvY3VtZW50cycsXG4gICAgJ1JlZmVyZW5jZSBNYXRlcmlhbHMnLFxuICAgICdSZWxhdGVkIHByb2NlZHVyZXMnLFxuICAgICdJbXBsZW1lbnRhdGlvbiBndWlkZWxpbmVzJyxcbiAgICAnVHJhaW5pbmcgTWF0ZXJpYWxzJyxcbiAgICAnUmVndWxhdG9yeSBEb2N1bWVudHMnLFxuICAgICdPdGhlcicsXG4gIF07XG4gIHNlbGVjdGVkTGlua1NldENoYW5nZShldmVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtYXRlLmZpbGVzW2luZGV4XS5saW5rU2V0ID0gZXZlbnQ7XG4gICAgaWYgKGV2ZW50ID09PSAnT3RoZXInICYmICF0aGlzLmZvcm1hdGU/LmZpbGVzW2luZGV4XT8ub3RoZXJzKSB7XG4gICAgICB0aGlzLmZvcm1hdGUuZmlsZXNbaW5kZXhdLm90aGVycyA9IFsnJ107XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cblxuICBhZGRNb3JlRG9jdW1lbnRzRGV0YWlscyhpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtYXRlLmZpbGVzW2luZGV4XS5vdGhlcnMucHVzaCgnJyk7XG4gIH1cblxuICB1cGxvYWRQb2xpY3lBdHRhY2htZW50cyhmb3JtRGF0YTogYW55KSB7XG4gICAgY29uc3QgcGF0aCA9ICdvLycgKyB0aGlzLm9yZ2FuaXphdGlvbl9pZCArICcvcG9saWN5Lyc7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlXG4gICAgICAuZmlsZVVwbG9hZFdvcmtyb29tKGZvcm1EYXRhLCBwYXRoKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgZmlsZV9uYW1lOiBkYXRhLm5hbWUsXG4gICAgICAgICAgb3JpZ2luYWxfZmlsZV9uYW1lOiBkYXRhLm9yZ19maWxlLFxuICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgb3JnYW5pc2F0aW9uX2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCksXG4gICAgICAgICAgbWVtYmVyX2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCksXG4gICAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMuY2F0ZWdvcmllcyxcbiAgICAgICAgICBjbGFwX2lkOiAwLFxuICAgICAgICAgIGNvbnRyYWN0X3R5cGU6IDQsXG4gICAgICAgICAgZm9sZGVyX2lkOiAwLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgW2NsYXNzLnBvbGljeS11cGxvYWQtZmlsZV09XCJbJ3BvbGljeScsICdyZXBvcnRBQ2FzZSddPy5pbmNsdWRlcyhtb2RlKVwiPlxuICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgKm5nSWY9XCJtb2RlID09ICdyZXNwb25zaWJpbGl0eSdcIj5cbiAgICBGb3JtYXQgJiBFdmlkZW5jZVxuICA8L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiICpuZ0lmPVwiXG4gICAgICBtb2RlICE9ICdwb2xpY3knICYmIG1vZGUgIT0gJ3BvbGljeVJldmlld2VyJyAmJiBtb2RlICE9ICdyZXBvcnRBQ2FzZSdcbiAgICBcIj5cbiAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5EbyB5b3Ugd2FudCB0byB1cGxvYWQgYSBmb3JtYXQgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHk/PC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cFwiPlxuICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCInZm9ybWF0X3JlcXVpcmVkJ1wiIFtjaGVja2VkXT1cImZvcm1hdGUuaGFzVXBsb2FkRm9ybWF0ZSA9PT0gdHJ1ZVwiXG4gICAgICAgIChjaGVja2VkRXZlbnQpPVwidG9nZ2xlSXNGb3JtYXRlVXBsb2FkKHRydWUpXCI+WWVzPC9hcHAtY3MtcmFkaW8+XG4gICAgICA8YXBwLWNzLXJhZGlvIFtuYW1lXT1cIidmb3JtYXRfcmVxdWlyZWQnXCIgW2NoZWNrZWRdPVwiZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID09PSBmYWxzZVwiXG4gICAgICAgIChjaGVja2VkRXZlbnQpPVwidG9nZ2xlSXNGb3JtYXRlVXBsb2FkKGZhbHNlKVwiPk5vXG4gICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLXRhYlwiICpuZ0lmPVwiZm9ybWF0ZT8uaGFzVXBsb2FkRm9ybWF0ZSB8fCBtb2RlID09ICdwb2xpY3lSZXZpZXdlcidcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImZvcm1hdGU/LmZvcm1hdGVUeXBlID09PSAnRklMRSdcIiAoY2xpY2spPVwidG9nZ2xlQXR0YWNobWVudFR5cGUoJ0ZJTEUnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybWF0ZS5saW5rcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgSW5zZXJ0IEZpbGVcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImZvcm1hdGU/LmZvcm1hdGVUeXBlID09PSAnTElOSydcIiAoY2xpY2spPVwidG9nZ2xlQXR0YWNobWVudFR5cGUoJ0xJTksnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybWF0ZS5maWxlcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgSW5zZXJ0IExpbmtcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlxuICAgICAgKGZvcm1hdGU/Lmhhc1VwbG9hZEZvcm1hdGUgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0ZJTEUnKSB8fFxuICAgICAgKG1vZGUgPT0gJ3BvbGljeScgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0ZJTEUnKSB8fFxuICAgICAgKG1vZGUgPT0gJ3BvbGljeVJldmlld2VyJyAmJiBmb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRScpIHx8XG4gICAgICAobW9kZSA9PSAncmVwb3J0QUNhc2UnICYmIGZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJylcbiAgICBcIj5cbiAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZmlsZSB1cGxvYWQgaW4gcHJvZ3Jlc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmb3JtYXRlPy51cGxvYWRJblByb2dyZXNzIHwga2V5dmFsdWUpLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3RcIiAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgZWFjaEZpbGUgb2YgZm9ybWF0ZT8udXBsb2FkSW5Qcm9ncmVzcyB8IGtleXZhbHVlO1xuICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZWFjaEZpbGUudmFsdWUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiMlwiPjwvYXBwLWxpbmUtbG9hZGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWZpbGUgdXBsb2FkIGVuZHMgaGVyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1hdGUuZmlsZXM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlICE9ICdwb2xpY3knXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3RcIiAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgZm9ybWF0ZS5maWxlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBlYWNoRmlsZT8uZmlsZV9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQXR0YWNobWVudChpKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT0gJ3BvbGljeSdcIiBjbGFzcz1cInBvbGljeS1yZWxhdGVkLWRvY3VtZW50LWZpZWxkIHZ4LXAtMyB2eC1wdC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMlwiPlxuICAgICAgICAgIExJTksgVEhFIERPQ1VNRU5UIEFORCBTUEVDSUZZIFRIRSBSRUxBVElPTlNISVAgV0lUSCBUSElTIFBPTElDWVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdCBwb2xpY3lcIiAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgZm9ybWF0ZS5maWxlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlIHRhYmxlIHt7XG4gICAgICAgICAgICAgICAgZWFjaEZpbGU/LmZpbGVfbmFtZS5zcGxpdCgnLicpW1xuICAgICAgICAgICAgICAgICAgZWFjaEZpbGU/LmZpbGVfbmFtZS5zcGxpdCgnLicpPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9fVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZTs8L2k+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybWF0IHt7XG4gICAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KCcuJylbXG4gICAgICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoJy4nKT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH19XCI+e3tcbiAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KFwiLlwiKVtcbiAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KFwiLlwiKT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGVhY2hGaWxlPy5maWxlX25hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUF0dGFjaG1lbnQoaSlcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cImVhY2hGaWxlLmxpbmtTZXRcIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZExpbmtTZXRDaGFuZ2UoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0RlZmluZSB0aGUgZG9jdW1lbnRcXCdzIHJlbGF0aW9uc2hpcCB0byB0aGlzIHBvbGljeSdcIiBuYW1lPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxjcy1vcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2YgcG9saWN5TGlua1NldExpc3RcIiBbdmFsdWVdPVwiZGF0YVwiPlxuICAgICAgICAgICAgICB7eyBkYXRhIH19XG4gICAgICAgICAgICA8L2NzLW9wdGlvbj5cbiAgICAgICAgICA8L2NzLXNlbGVjdD5cbiAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG90aGVyIG9mIGVhY2hGaWxlPy5vdGhlcnM7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cImVhY2hGaWxlPy5saW5rU2V0ID09PSAnT3RoZXIgKHNwZWNpZnkgb3duKSdcIiBbbmdNb2RlbF09XCJlYWNoRmlsZS5vdGhlcnNbal1cIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZExpbmtTZXRDaGFuZ2UoJ090aGVyIChzcGVjaWZ5IG93biknLGksICRldmVudCwgailcIiBjbGFzcz1cImxpbmthZ2UtaW5wdXRcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiVHlwZSB0aGUgbGlua2FnZSBkZXRhaWxzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlYWNoRmlsZT8ubGlua1NldCA9PT0gJ090aGVyIChzcGVjaWZ5IG93biknXCIgY2xhc3M9XCJsaW5rYWdlLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tdC0yXCIgKGNsaWNrKT1cImFkZE1vcmVEb2N1bWVudHNEZXRhaWxzKGkpXCI+KyBBREQgTU9SRTwvYnV0dG9uPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgKm5nSWY9XCJtb2RlPT0ncG9saWN5J1wiPlxuICAgICAgICAgICAgICAgIExJTksgVEhFIERPQ1VNRU5UIEFORCBTUEVDSUZZIFRIRSBSRUxBVElPTlNISVAgV0lUSCBUSElTIFBPTElDWVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVhY2hGaWxlIG9mIGZvcm1hdGUuZmlsZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1saXN0XCIgKm5nSWY9XCJtb2RlIT0ncG9saWN5J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZWFjaEZpbGU/LmZpbGVfbmFtZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVBdHRhY2htZW50KGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgcG9saWN5XCIgKm5nSWY9XCJtb2RlPT0ncG9saWN5J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3tlYWNoRmlsZT8uZmlsZV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtIC0gPGJ1dHRvbiBjbGFzcz1cImVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQXR0YWNobWVudChpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJlYWNoRmlsZS5saW5rU2V0XCIgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRMaW5rU2V0Q2hhbmdlKCRldmVudCxpKVwiIFtwbGFjZWhvbGRlcl09XCInRGVmaW5lIHRoZSBkb2N1bWVudFxcJ3MgcmVsYXRpb25zaGlwIHRvIHRoaXMgcG9saWN5J1wiIG5hbWU9XCJzZWxlY3RlZFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1vcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2YgcG9saWN5TGlua1NldExpc3RcIiBbdmFsdWVdPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NzLW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWRyYWcgYW5kIGRyb3AgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidGFiLWdyb3VwXCIgW2NsYXNzLnVwbG9hZGVkXT1cImZvcm1hdGUuZmlsZXM/Lmxlbmd0aCA+IDBcIiBhcHBEcmFnRHJvcFxuICAgICAgKGZpbGVEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidXBsb2FkLWZpbGVcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cIkFTU0VUUy51cGxvYWRcIiBhbHQ9XCJcIiBjbGFzcz1cImltYWdlXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJyb3dzZVwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgIT0gJ3BvbGljeScgJiYgbW9kZSAhPSAncmVwb3J0QUNhc2UnXCI+RHJvcCB5b3VyIGZpbGVzIGhlcmUgL1xuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PSAncG9saWN5JyB8fCBtb2RlID09ICdyZXBvcnRBQ2FzZSdcIj5Ecm9wIHlvdXIgZmlsZXMgaGVyZSAvXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Ccm93c2VcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgKGNoYW5nZSk9XCJvbkZpbGVEcm9wcGVkKCRldmVudC50YXJnZXQuZmlsZXMpXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cIm1vZGUhPSdwb2xpY3knXCI+RHJvcCB5b3VyIGZpbGVzIGhlcmUgLzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtb2RlPT0ncG9saWN5J1wiPkRyYWcgJiBkcm9wIHRvIHVwbG9hZCBmaWxlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgLzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkJyb3dzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgKGNoYW5nZSk9XCJvbkZpbGVEcm9wcGVkKCRldmVudC50YXJnZXQuZmlsZXMpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWRyYWcgZHJvcCBlbmRzIGhlcmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJcbiAgICAgIChmb3JtYXRlPy5oYXNVcGxvYWRGb3JtYXRlICYmIGZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdMSU5LJykgfHxcbiAgICAgIChtb2RlID09ICdwb2xpY3lSZXZpZXdlcicgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0xJTksnKVxuICAgIFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtYXRlLmxpbmtzLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxpbmsgb2YgZm9ybWF0ZS5saW5rczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1saXN0XCIgKm5nSWY9XCIhbGluay5pc0VkaXRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgbGluay5saW5rIH19IDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gW2NsYXNzLmRpc2FibGVkXT1cImlzRWRpdERpc2FibGVkXCIgY2xhc3M9XCJlZGl0XCIgKGNsaWNrKT1cImVkaXRMaW5rKGkpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlTGluayhpKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGluay5pc0VkaXRpbmdcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImVkaXQtbGlua1wiIGFwcEF1dG9mb2N1cyBwbGFjZWhvbGRlcj1cIkVudGVyIHRoZSBsaW5rIGhlcmVcIiBbKG5nTW9kZWwpXT1cImxpbmsubGlua1wiXG4gICAgICAgICAgICAoZm9jdXNvdXQpPVwiaW5zZXJ0TGluaygnRURJVCcsIGkpXCIgKGtleWRvd24uZW50ZXIpPVwiaW5zZXJ0TGluaygnRURJVCcsIGkpXCIgLz5cbiAgICAgICAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImxpbmsuY29udGFpbnNFcnJvclwiPlxuICAgICAgICAgICAgUGxlYXNlIGluc2VydCBhIHZhbGlkIGxpbmtcbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGlucHV0IFtkaXNhYmxlZF09XCJpc05ld0xpbmtEaXNhYmxlZFwiIGNsYXNzPVwiZWRpdC1saW5rXCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIm5ld0xpbmsubGlua1wiXG4gICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRoZSBsaW5rIGhlcmVcIiAoZm9jdXNvdXQpPVwiaW5zZXJ0TGluaygnQ1JFQVRFJylcIiAoa2V5ZG93bi5lbnRlcik9XCJpbnNlcnRMaW5rKCdDUkVBVEUnKVwiIC8+XG4gICAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJuZXdMaW5rLmNvbnRhaW5zRXJyb3JcIj5cbiAgICAgIFBsZWFzZSBpbnNlcnQgYSB2YWxpZCBsaW5rXG4gICAgPC9wPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIiAqbmdJZj1cIm1vZGUgPT0gJ3Jlc3BvbnNpYmlsaXR5J1wiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPkRvIHlvdSB3YW50IGV2aWRlbmNlIG9mIGNvbXBsZXRpb24gb2YgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIGJlXG4gICAgICB1cGxvYWRlZD88L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwXCI+XG4gICAgICA8YXBwLWNzLXJhZGlvIFtuYW1lXT1cIidldmlkZW5jZV9yZXF1aXJlZCdcIiBbY2hlY2tlZF09XCJmb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCA9PT0gdHJ1ZVwiXG4gICAgICAgIChjaGVja2VkRXZlbnQpPVwidG9nZ2xlSXNGb3JtYXRSZXF1aXJlZCh0cnVlKVwiPlllczwvYXBwLWNzLXJhZGlvPlxuICAgICAgPGFwcC1jcy1yYWRpbyBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCIgW2NoZWNrZWRdPVwiZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQgPT09IGZhbHNlXCJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdFJlcXVpcmVkKGZhbHNlKVwiPk5vXG4gICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -200,22 +200,20 @@ export class FrequencyResponsibilityListComponent {
200
200
  }
201
201
  this.selectedResponsibilityValues = {
202
202
  eachAssignee: {
203
- assignee: this.selectedResponsibilityDetails.assignee ?? null,
204
- responsibilityCenter: this.selectedResponsibilityDetails.responsibilityCenter ?? null,
203
+ assignee: this.selectedResponsibilityDetails.assignee,
204
+ responsibilityCenter: this.selectedResponsibilityDetails.responsibilityCenter,
205
205
  },
206
206
  responsibility: {
207
207
  title: this.selectedResponsibilityDetails.title,
208
208
  id: this.selectedResponsibilityDetails.id,
209
209
  allRC: [],
210
210
  allAssignee: [],
211
- assigneeDetails: [
212
- {
213
- assignee: this.selectedResponsibilityDetails.assignee ?? null,
214
- responsibilityCenter: this.selectedResponsibilityDetails.responsibilityCenter ?? null,
215
- },
216
- ],
211
+ assigneeDetails: [{
212
+ assignee: this.selectedResponsibilityDetails.assignee,
213
+ responsibilityCenter: this.selectedResponsibilityDetails.responsibilityCenter,
214
+ }],
217
215
  eachAssignee: {},
218
- },
216
+ }
219
217
  };
220
218
  }
221
219
  onCompletionChange(event) {
@@ -234,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
234
232
  }], selectedResponsibility: [{
235
233
  type: Output
236
234
  }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTN0QsTUFBTSxPQUFPLG9DQUFvQztJQTRDL0MsWUFDVSxnQkFBa0MsRUFDbEMsYUFBNEI7UUFENUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTdDN0Isa0NBQTZCLEdBQVEsRUFBRSxDQUFDO1FBRXZDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLHlCQUFvQixHQUFRLEVBQUUsQ0FBQztRQUMvQix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsNkJBQXdC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UUFBUSxJQUFJLElBQUk7d0JBQzdELG9CQUFvQixFQUFFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxvQkFBb0IsSUFBSSxJQUFJO3FCQUN0RjtpQkFDRjtnQkFDRCxZQUFZLEVBQUUsRUFBRTthQUNqQjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFBO0lBQzNDLENBQUM7K0dBcFBVLG9DQUFvQzttR0FBcEMsb0NBQW9DLDhPQ1hqRCw0M1NBMktNOzs0RkRoS08sb0NBQW9DO2tCQUxoRCxTQUFTOytCQUNFLG1DQUFtQzttSUFLcEMsNkJBQTZCO3NCQUFyQyxLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBzbGljZSB9IGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1yZXNwb25zaWJpbGl0eS1saXN0LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeVJlc3BvbnNpYmlsaXR5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzOiBhbnkgPSB7fTtcblxuICBAT3V0cHV0KCkgYmFja0J1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkUmVzcG9uc2liaWxpdHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIFxuICBhbmltYXRpb24gPSBmYWxzZTtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICByZXNwb25zaWJpbGl0aWVzRGF0YTogYW55ID0ge307XG4gIHJlc3BvbnNpYmlsaXR5TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZDogYW55ID0gW107XG4gIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM6IGFueTtcbiAgXG4gIHJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XG4gIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIGlzVmFsaWRPYmogPSBmYWxzZTtcblxuICByZXNwb25zaWJpbGl0eVBheWxvYWQgPSB7XG4gICAgdHlwZTogJ2FjdGl2ZScsXG4gICAgcGFnaW5hdGlvblR5cGU6ICdsYXJnZScsXG4gICAgYTogJycsXG4gICAgc2VhcmNoVGVybTogJycsXG4gICAgZmlsdGVyRGF0YToge1xuICAgICAgYXBwTGlzdDogW10sXG4gICAgICByaXNrSWRzOiBbXSxcbiAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxuICAgICAgZW50cnVzdGVkQnk6IFtdLFxuICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXG4gICAgICBjb21wbGlhbmNlVHlwZTogWzFdLFxuICAgIH0sXG4gICAgcGFnZU5vOiAxLFxuICAgIHNvcnRPYmo6IHtcbiAgICAgIHNvcnRCeTogJycsXG4gICAgICB0eXBlOiAnJyxcbiAgICB9LFxuICAgIHBhZ2VOYW1lOiAnb3ZlcnZpZXcnLFxuICB9O1xuICByZXNwb25zaWJpbGl0eUxpc3Q6IGFueTtcbiAgY2xvc2U6IGFueTtcbiAgb3BlbmVkUmVzcG9uc2liaWxpdHk6IGFueVtdID0gW107XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KCk7XG4gICAgdGhpcy5wb3B1bGF0ZVJlc3BvbnNpYmlsaXR5KCk7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIHRoaXMuYmFja0J1dHRvbi5lbWl0KCdiYWNrVG9PbkNvbXBsZXRpb24nKTtcbiAgfVxuXG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRSZXNwb25zaWJpbGl0eUxpc3QodGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXRpZXNEYXRhID0gcmVzPy5kYXRhO1xuICAgICAgICBjb25zdCBwYWdpbmF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlLnNldFBhZ2luYXRpb24ocmVzPy5kYXRhKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YVsncGFnaW5hdGlvbiddID0gcGFnaW5hdGlvbjtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YVsncmVzcG9uc2liaWxpdGllcyddID0gdGhpcy5tYXBSZXNwb25zaWJpbGl0eURhdGEoIHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGEpXG5cbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoYXNSZXNwb25zaWJpbGl0eSA9IHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXM/LmZpbmQoKHJlc3BvbnNpYmlsaXR5OiBhbnkpID0+IHJlc3BvbnNpYmlsaXR5LmlkID09PSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM/LnJlc3BvbnNpYmlsaXR5Py5pZCk7XG4gICAgICAgIGlmKGhhc1Jlc3BvbnNpYmlsaXR5KSB7XG4gICAgICAgICAgdGhpcy5vblRvZ2dsZVJlc3BvbnNpYmlsaXR5KGhhc1Jlc3BvbnNpYmlsaXR5KTtcbiAgICAgICAgfVxuICAgICAgfSwgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmxvZyh7IGVycm9yIH0sIFwiRXJyb3IgaW4gZ2V0dGluZyByZXNwb25zaWJpbGl0eSBsaXN0XCIpO1xuICAgICAgfSk7XG4gIH1cblxuICByZXNwb25zaWJpbGl0eVBhZ2VDaGFuZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gcGFnZU51bWJlcjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuc2VhcmNoVGVybSA9IHRoaXMucmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0O1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KCk7XG4gIH1cblxuXG4gIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID0ge307XG4gICAgdGhpcy5pc1ZhbGlkT2JqID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQgPSBbXTtcbiAgfVxuICBzYXZlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmJhY2tCdXR0b24uZW1pdCgnYmFja1RvT25Db21wbGV0aW9uJyk7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5LmVtaXQodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzKTtcbiAgfVxuXG5cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnNlYXJjaFRlcm0gPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnBhZ2VObyA9IHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiBcbiAgXG4gIG9uVG9nZ2xlUmVzcG9uc2liaWxpdHkocmVzcG9uc2liaWxpdHk6IGFueSkge1xuICAgIGlmKHRoaXMub3BlbmVkUmVzcG9uc2liaWxpdHkuaW5jbHVkZXMocmVzcG9uc2liaWxpdHkuaWQpKSB7XG4gICAgICB0aGlzLm9wZW5lZFJlc3BvbnNpYmlsaXR5ID0gdGhpcy5vcGVuZWRSZXNwb25zaWJpbGl0eS5maWx0ZXIoKGlkOiBhbnkpID0+IGlkICE9PSByZXNwb25zaWJpbGl0eS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbmVkUmVzcG9uc2liaWxpdHkucHVzaChyZXNwb25zaWJpbGl0eS5pZCk7XG4gICAgfVxuICB9XG5cblxuICAgIC8vIE1haW4gbWV0aG9kIGV4cG9zZWQgb3V0c2lkZVxuICAgIHB1YmxpYyBtYXBSZXNwb25zaWJpbGl0eURhdGEocmVzcG9uc2liaWxpdHk6IGFueSk6IGFueVtdIHtcbiAgICAgIGlmICghcmVzcG9uc2liaWxpdHkpIHJldHVybiBbXTtcbiAgXG4gICAgICBjb25zdCB1c2VycyA9IHRoaXMubWFwU2hvcnROYW1lcyhyZXNwb25zaWJpbGl0eS51c2VycywgdGhpcy5tYXBTaG9ydE5hbWUpO1xuICAgICAgY29uc3QgdXNlck1hcCA9IHRoaXMuYnVpbGRNYXAodXNlcnMpO1xuICAgICAgY29uc3QgcmNNYXAgPSB0aGlzLmJ1aWxkTWFwKHJlc3BvbnNpYmlsaXR5LnJlc3BvbnNpYmlsaXR5Q2VudGVycyk7XG4gIFxuICAgICAgcmV0dXJuIChyZXNwb25zaWJpbGl0eS5yZXNwb25zaWJpbGl0aWVzIHx8IFtdKS5tYXAoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgdGhpcy5tYXBSZXNwb25zaWJpbGl0eUl0ZW0oaXRlbSwgdXNlck1hcCwgcmNNYXApXG4gICAgICApO1xuICAgIH1cbiAgXG4gICAgLy8gSGVscGVyIG1ldGhvZHMgYmVsb3c6XG4gIFxuICAgIHByaXZhdGUgbWFwU2hvcnROYW1lcyh1c2VyczogYW55W10sIG1hcFNob3J0TmFtZTogKG5hbWU6IHN0cmluZykgPT4gc3RyaW5nKTogYW55W10ge1xuICAgICAgcmV0dXJuICh1c2VycyB8fCBbXSkubWFwKHVzZXIgPT4gKHtcbiAgICAgICAgLi4udXNlcixcbiAgICAgICAgc2hvcnROYW1lOiBtYXBTaG9ydE5hbWUodXNlci5uYW1lKSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIFxuICAgIHByaXZhdGUgYnVpbGRNYXAoYXJyOiBhbnlbXSk6IE1hcDxzdHJpbmcsIGFueT4ge1xuICAgICAgcmV0dXJuIG5ldyBNYXAoKGFyciB8fCBbXSkubWFwKGl0ZW0gPT4gW2l0ZW0uaWQsIGl0ZW1dKSk7XG4gICAgfVxuICBcbiAgICBwcml2YXRlIG1hcEFzc2lnbmVlVXNlcnMoYXNzaWduZWU6IGFueSwgYWN0aXZlVXNlcklkczogc3RyaW5nW10sIHVzZXJNYXA6IE1hcDxzdHJpbmcsIGFueT4pOiBhbnlbXSB7XG4gICAgICBpZiAoIWFzc2lnbmVlLmFzc2lnbmVlKSB7XG4gICAgICAgIHJldHVybiAoYWN0aXZlVXNlcklkcyB8fCBbXSkubWFwKGlkID0+IHVzZXJNYXAuZ2V0KGlkKSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgfVxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuaXNBcnJheShhc3NpZ25lZS5hc3NpZ25lZSkgPyBhc3NpZ25lZS5hc3NpZ25lZSA6IFthc3NpZ25lZS5hc3NpZ25lZV07XG4gICAgICByZXR1cm4gaWRzLm1hcCgoaWQ6IGFueSkgPT4gdXNlck1hcC5nZXQoKGlkKSkpLmZpbHRlcihCb29sZWFuKTtcbiAgICB9XG4gIFxuICAgIHByaXZhdGUgbWFwUmVzcG9uc2liaWxpdHlDZW50ZXJzKGFzc2lnbmVlOiBhbnksIGl0ZW1SQ0lkczogc3RyaW5nW10sIHJjTWFwOiBNYXA8c3RyaW5nLCBhbnk+KTogYW55W10ge1xuICAgICAgaWYgKCFhc3NpZ25lZS5yZXNwb25zaWJpbGl0eUNlbnRlcikge1xuICAgICAgICByZXR1cm4gKGl0ZW1SQ0lkcyB8fCBbXSkubWFwKGlkID0+IHJjTWFwLmdldChpZCkpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmlzQXJyYXkoYXNzaWduZWUucmVzcG9uc2liaWxpdHlDZW50ZXIpID8gYXNzaWduZWUucmVzcG9uc2liaWxpdHlDZW50ZXIgOiBbYXNzaWduZWUucmVzcG9uc2liaWxpdHlDZW50ZXJdO1xuICAgICAgcmV0dXJuIGlkcy5tYXAoKGlkOiBhbnkpID0+IHJjTWFwLmdldChpZCkpLmZpbHRlcihCb29sZWFuKTtcbiAgICB9XG4gIFxuICAgIHByaXZhdGUgbWFwUmVzcG9uc2liaWxpdHlJdGVtKGl0ZW06IGFueSwgdXNlck1hcDogTWFwPHN0cmluZywgYW55PiwgcmNNYXA6IE1hcDxzdHJpbmcsIGFueT4pOiBhbnkge1xuXG4gICAgICBsZXQgIGFzc2lnbmVlRGV0YWlscyA9IChpdGVtLmFzc2lnbmVlRGV0YWlscyB8fCBbXSlcbiAgICAgICAgLmZpbHRlcigoYWQ6IGFueSkgPT4gYWQuc3RhdHVzICYmIGFkLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnYWN0aXZlJylcbiAgICAgICAgaWYoYXNzaWduZWVEZXRhaWxzPy5sZW5ndGggPT09IDAgJiYgaXRlbT8uYXNzaWduZWVUeXBlID09PSAnYW55JyAmJiBbbnVsbCwgJ2FueSddLmluY2x1ZGVzKGl0ZW0/LnJjVHlwZSkpIHtcblxuICAgICAgICAgIGFzc2lnbmVlRGV0YWlscyA9ICBpdGVtLmFzc2lnbmVlcz8uYWN0aXZlVXNlcklkPy5tYXAoKGlkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLml0ZW0uYXNzaWduZWVEZXRhaWxzWzBdLFxuICAgICAgICAgICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgICAgICAgICBhc3NpZ25lZTogaWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXNzaWduZWVEZXRhaWxzID0gIGFzc2lnbmVlRGV0YWlscy5tYXAoKGFkOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4uYWQsXG4gICAgICAgICAgYXNzaWduZWVJbmZvOiB0aGlzLm1hcEFzc2lnbmVlVXNlcnMoYWQsIGl0ZW0uYXNzaWduZWVzPy5hY3RpdmVVc2VySWQgfHwgW10sIHVzZXJNYXApLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVySW5mbzogdGhpcy5tYXBSZXNwb25zaWJpbGl0eUNlbnRlcnMoYWQsIGl0ZW0ucmVzcG9uc2liaWxpdHlDZW50ZXJzIHx8IFtdLCByY01hcCksXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3QgYWxsQXNzaWduZWUgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZUFzc2lnbmVlKGFzc2lnbmVlRGV0YWlscykubWFwKChhZDogYW55KSA9PiBhZC5hc3NpZ25lZUluZm9bMF0pO1xuICAgICAgICBjb25zdCBhbGxSYyA9IHRoaXMubWFwUmNzKGl0ZW0ucmVzcG9uc2liaWxpdHlDZW50ZXJzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgY29udHJvbElkOiBpdGVtPy5jb250cm9sSWQgPyAnW0NJRC0nICsgaXRlbT8uY29udHJvbElkICsgJ10gJyA6ICcnLFxuICAgICAgICBhc3NpZ25lZVR5cGU6IGl0ZW0/LmFzc2lnbmVlVHlwZSxcbiAgICAgICAgcmNUeXBlOiBpdGVtPy5yY1R5cGUsXG4gICAgICAgIGFzc2lnbmVlRGV0YWlscyxcbiAgICAgICAgIGFsbEFzc2lnbmVlLFxuICAgICAgICAgYWxsUmNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmVtb3ZlRHVwbGljYXRlQXNzaWduZWUoYXNzaWduZWVEZXRhaWxzOiBhbnkpIHtcbiAgICAgIGNvbnN0IHVuaXF1ZU1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIGFzc2lnbmVlRGV0YWlscy5mb3JFYWNoKChvYmo6IGFueSkgPT4ge1xuICAgICAgICB1bmlxdWVNYXAuc2V0KG9iai5hc3NpZ25lZSwgb2JqKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdW5pcXVlQXJyYXkgPSBBcnJheS5mcm9tKHVuaXF1ZU1hcC52YWx1ZXMoKSk7XG4gICAgICAgICAgcmV0dXJuIHVuaXF1ZUFycmF5O1xuICAgICAgICB9XG5cbiAgICAgIG1hcFJjcyhyY3M6IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzPy5maWx0ZXIoKHJjOiBhbnkpID0+IHJjcz8uaW5jbHVkZXMocmM/LmlkKSk7XG4gICAgICB9XG4gIFxuICBtYXBTaG9ydE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbmFtZUFycmF5ID0gbmFtZT8uc3BsaXQoJyAnKTtcbiAgICBpZihuYW1lQXJyYXk/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiBuYW1lQXJyYXlbMF0/LmNoYXJBdCgwKSArIG5hbWVBcnJheVtuYW1lQXJyYXk/Lmxlbmd0aCAtIDFdPy5jaGFyQXQoMCk7XG4gICAgfVxuICAgIHJldHVybiBuYW1lQXJyYXlbMF0/LmNoYXJBdCgwKSArIG5hbWVBcnJheVswXT8uY2hhckF0KDEpPy50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgcG9wdWxhdGVSZXNwb25zaWJpbGl0eSgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMgfHwgIXRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMuaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID0gIHtcbiAgICAgIGVhY2hBc3NpZ25lZToge1xuICAgICAgICBhc3NpZ25lZTogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscy5hc3NpZ25lZSA/PyBudWxsLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscy5yZXNwb25zaWJpbGl0eUNlbnRlciA/PyBudWxsLFxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5OiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzLnRpdGxlLFxuICAgICAgICBpZDogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscy5pZCxcbiAgICAgICAgYWxsUkM6IFtdLFxuICAgICAgICBhbGxBc3NpZ25lZTogW10sXG4gICAgICAgIGFzc2lnbmVlRGV0YWlsczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFzc2lnbmVlOiB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzLmFzc2lnbmVlID8/IG51bGwsXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscy5yZXNwb25zaWJpbGl0eUNlbnRlciA/PyBudWxsLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGVhY2hBc3NpZ25lZToge30sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBvbkNvbXBsZXRpb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IGV2ZW50XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdFwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtaGVhZCB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29ucyBhcnJvdyB2eC1mcy0xNiB2eC1sYWJlbC10eHQgdngtbXItMVwiIChjbGljayk9XCJiYWNrKClcIj4mI3hlOTFkOzwvaT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUmVzcG9uc2liaWxpdHk8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1ib2R5XCI+XG4gICAgPCEtLSA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJvdGhlcnNDb3VudCA9PT0gMFwiPjwvYXBwLWxvYWRlci1pbmxpbmU+IC0tPlxuXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1yZXNwb25zaWJpbGl0eS1saXN0LXNlYXJjaCB2eC1tYi0yXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTEyXCI+JiN4ZTkwYjs8L2k+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dFwiIChrZXl1cC5lbnRlcik9XCJzZWFyY2goKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFJlc3BvbnNpYmlsaXRpZXNcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8ucGFnaW5hdGlvbiBhcyBwYWdpbmF0aW9uXCI+XG4gICAgICA8YXBwLXBhZ2luYXRpb24gKm5nSWY9XCJwYWdpbmF0aW9uPy50b3RhbF9wYWdlcyA+IDFcIiBbc3RhcnRdPVwicGFnaW5hdGlvbj8ucmVzcG9uc2liaWxpdGllc19mcm9tXCJcbiAgICAgICAgW2VuZF09XCJwYWdpbmF0aW9uPy5yZXNwb25zaWJpbGl0aWVzX3RvXCIgW3RvdGFsXT1cInBhZ2luYXRpb24/LnRvdGFsX3Jlc3BvbnNpYmlsaXRpZXNcIlxuICAgICAgICBbcGFnZUNvdW50XT1cInBhZ2luYXRpb24/LnRvdGFsX3BhZ2VzXCIgW2N1cnJlbnRQYWdlXT1cInJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2VcIlxuICAgICAgICAoc2VsZWN0ZWRQYWdlKT1cInJlc3BvbnNpYmlsaXR5UGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2FwcC1wYWdpbmF0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwicmVzcG9uc2liaWxpdHlMb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1taWQgdngtbWItNFwiIFtjbGFzcy53aXRoLXBhZ2luYXRpb25dPVwiXG4gICAgICAgICFyZXNwb25zaWJpbGl0eUxvYWRlciAmJiByZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcGFnZXMgPiAxXG4gICAgICBcIj5cbiAgICAgIDxhcHAtbm8tZGF0YSAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzPy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAhcmVzcG9uc2liaWxpdHlMb2FkZXJcbiAgICAgICAgXCIgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiIFtub0RhdGFUZXh0XT1cIidObyBEYXRhIHRvIERpc3BsYXknXCI+PC9hcHAtbm8tZGF0YT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdGllcz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICFyZXNwb25zaWJpbGl0eUxvYWRlclxuICAgICAgICBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiPlxuICAgICAgICAgICAgICAjXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5XCI+XG4gICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRJRVNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHktY2VudGVyXCI+XG4gICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhY3Rpb25cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8IS0tIHdoZW4gY2xpY2sgb24gcmFkaW8gdGhlbiBhY3RpdmUgY2xhc3Mgc2hvdWxkIGJlIHRydWUgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNpYmlsaXR5IG9mIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzO1xuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocmVzcG9uc2liaWxpdGllc0RhdGE/LnBhZ2UgKiByZXNwb25zaWJpbGl0aWVzRGF0YT8ubGltaXQgLVxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdGllc0RhdGE/LmxpbWl0ICtcbiAgICAgICAgICAgIGkgK1xuICAgICAgICAgICAgMSkgYXMgc3JOb1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVzcF09XCJyZXNwb25zaWJpbGl0eT8uYXNzaWduZWVEZXRhaWxzPy5sZW5ndGggPT09IDEgfHwgKHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZVR5cGUgPT09ICdhbnknICYmIFtudWxsLCAnYW55J10uaW5jbHVkZXMocmVzcG9uc2liaWxpdHk/LnJjVHlwZSkpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM/LnJlc3BvbnNpYmlsaXR5Py5pZCA9PT0gcmVzcG9uc2liaWxpdHk/LmlkICYmIHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZURldGFpbHM/Lmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICBcIiBbY2xhc3Mud2l0aC1zdWItcmVzcG9uc2liaWxpdHldPVwib3BlbmVkUmVzcG9uc2liaWxpdHkuaW5jbHVkZXMocmVzcG9uc2liaWxpdHk/LmlkKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eT8uYXNzaWduZWVEZXRhaWxzIGFzIGFzc2lnbmVlRGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNyLW5vXCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3JObyAgXG4gICAgICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e3NyTm99fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXNzaWduZWVEZXRhaWxzPy5sZW5ndGggPT09IDEgfHwgKHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZVR5cGUgPT09ICdhbnknICYmIFtudWxsLCAnYW55J10uaW5jbHVkZXMocmVzcG9uc2liaWxpdHk/LnJjVHlwZSkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInb25Db21wbGV0aW9uJ1wiIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM/LnJlc3BvbnNpYmlsaXR5Py5pZCA9PT0gcmVzcG9uc2liaWxpdHk/LmlkXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJvbkNvbXBsZXRpb25DaGFuZ2Uoe2VhY2hBc3NpZ25lZTogYXNzaWduZWVEZXRhaWxzWzBdLCByZXNwb25zaWJpbGl0eX0pXCI+PC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eSB3aXRoLXJjXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dCB2eC1wci01ICB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1saXN0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItYXZhdGFyLXYyIFthdmF0YXJMaXN0XT1cInJlc3BvbnNpYmlsaXR5Py5hbGxBc3NpZ25lZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidTSU5HTEVfQVZBVEFSJ1wiPjwvbGliLWF2YXRhci12Mj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUtdGV4dCB2eC1tbC0xIHJlc3AtbmFtZVwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Py50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LmNvbnRyb2xJZCB9fSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Py5hbGxSYyBhcyByY1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLWlubmVyIHZ4LWQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXZhbHVlIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dCB2eC1wci01XCIgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByYz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcmNbMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nXG4gICAgICAgICAgICAgICAgICAgICAgXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJjPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyByY1swXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiLS1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByYz8ubGVuZ3RoIFxuICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJjPy5sZW5ndGggPiAxXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmNQb3B1cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyYW0tY291bnQgdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1wLTAgdngtcGwtMSB2eC1wci0xIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAre3sgcmM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JjUG9wdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2YgcmM/LnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWJsb2NrIHZ4LXctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cImRhdGE/Lm5hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+e3sgZGF0YT8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlUmVzcG9uc2liaWxpdHkocmVzcG9uc2liaWxpdHkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID4gMSAmJiAhKHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZVR5cGUgPT09ICdhbnknICYmIFtudWxsLCAnYW55J10uaW5jbHVkZXMocmVzcG9uc2liaWxpdHk/LnJjVHlwZSkpOyBlbHNlIGNsb3NlSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRSZXNwb25zaWJpbGl0eS5pbmNsdWRlcyhyZXNwb25zaWJpbGl0eS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGNsb3NlSWNvblxuICAgICAgICAgICAgICAgICAgICAgIFwiIGNsYXNzPVwiaWNvbnMgdngtZnMtMTBcIj4mI3hlOWU3OzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Nsb3NlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTBcIj4gJiN4ZTllODs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxsaWItc3ViLXJlc3BvbnNpYmlsaXR5ICpuZ0lmPVwib3BlbmVkUmVzcG9uc2liaWxpdHkuaW5jbHVkZXMocmVzcG9uc2liaWxpdHkuaWQpXCJcbiAgICAgICAgICAgICAgICBbcmVzcG9uc2liaWxpdHldPVwicmVzcG9uc2liaWxpdHlcIiBbc3JOb109XCJzck5vXCIgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHldPVwic2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1wiXG4gICAgICAgICAgICAgICAgKG9uQ29tcGxldGlvbkNoYW5nZSk9XCJvbkNvbXBsZXRpb25DaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXN1Yi1yZXNwb25zaWJpbGl0eT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtZmxvYXRpbmctYmFyIFtzZWxlY3RlZERhdGFdPVwiW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM/LnJlc3BvbnNpYmlsaXR5XVwiIFtkaXNwbGF5RWxlbWVudEtleV09XCIndGl0bGUnXCJcbiAgICAgIChjbG9zZUxpc3QpPVwiYmFjaygpXCIgKGNsb3NlRXZlbnQpPVwic2F2ZSgkZXZlbnQpXCIgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICBbaXNEaXNhYmxlZF09XCIhc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ucmVzcG9uc2liaWxpdHk/LmlkXCI+PC9hcHAtZmxvYXRpbmctYmFyPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QvZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTN0QsTUFBTSxPQUFPLG9DQUFvQztJQTRDL0MsWUFDVSxnQkFBa0MsRUFDbEMsYUFBNEI7UUFENUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTdDN0Isa0NBQTZCLEdBQVEsRUFBRSxDQUFDO1FBRXZDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLHlCQUFvQixHQUFRLEVBQUUsQ0FBQztRQUMvQix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsNkJBQXdC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QUFFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxvQkFBb0I7cUJBQzlFLENBQUM7Z0JBQ0YsWUFBWSxFQUFFLEVBQUU7YUFDakI7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLDRCQUE0QixHQUFHLEtBQUssQ0FBQTtJQUMzQyxDQUFDOytHQWxQVSxvQ0FBb0M7bUdBQXBDLG9DQUFvQyw4T0NYakQsNDNTQTJLTTs7NEZEaEtPLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDRSxtQ0FBbUM7bUlBS3BDLDZCQUE2QjtzQkFBckMsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9mcmVxdWVuY3kuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2xpY2UgfSBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lSZXNwb25zaWJpbGl0eUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlsczogYW55ID0ge307XG5cbiAgQE91dHB1dCgpIGJhY2tCdXR0b24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBcbiAgYW5pbWF0aW9uID0gZmFsc2U7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQ6IGFueSA9IFtdO1xuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzOiBhbnk7XG4gIFxuICByZXNwb25zaWJpbGl0eVNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICByZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBpc1ZhbGlkT2JqID0gZmFsc2U7XG5cbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkID0ge1xuICAgIHR5cGU6ICdhY3RpdmUnLFxuICAgIHBhZ2luYXRpb25UeXBlOiAnbGFyZ2UnLFxuICAgIGE6ICcnLFxuICAgIHNlYXJjaFRlcm06ICcnLFxuICAgIGZpbHRlckRhdGE6IHtcbiAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXZpZXdlcklkOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBbXSxcbiAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgY29tcGxpYW5jZVR5cGU6IFsxXSxcbiAgICB9LFxuICAgIHBhZ2VObzogMSxcbiAgICBzb3J0T2JqOiB7XG4gICAgICBzb3J0Qnk6ICcnLFxuICAgICAgdHlwZTogJycsXG4gICAgfSxcbiAgICBwYWdlTmFtZTogJ292ZXJ2aWV3JyxcbiAgfTtcbiAgcmVzcG9uc2liaWxpdHlMaXN0OiBhbnk7XG4gIGNsb3NlOiBhbnk7XG4gIG9wZW5lZFJlc3BvbnNpYmlsaXR5OiBhbnlbXSA9IFtdO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgMzAwKTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICAgIHRoaXMucG9wdWxhdGVSZXNwb25zaWJpbGl0eSgpO1xuICB9XG5cbiAgYmFjaygpIHtcbiAgICB0aGlzLmJhY2tCdXR0b24uZW1pdCgnYmFja1RvT25Db21wbGV0aW9uJyk7XG4gIH1cblxuXG4gIGdldFJlc3BvbnNpYmlsaXR5TGlzdCgpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2VcbiAgICAgID8uZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YSA9IHJlcz8uZGF0YTtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZS5zZXRQYWdpbmF0aW9uKHJlcz8uZGF0YSk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGFbJ3BhZ2luYXRpb24nXSA9IHBhZ2luYXRpb247XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGFbJ3Jlc3BvbnNpYmlsaXRpZXMnXSA9IHRoaXMubWFwUmVzcG9uc2liaWxpdHlEYXRhKCB0aGlzLnJlc3BvbnNpYmlsaXRpZXNEYXRhKVxuXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGFzUmVzcG9uc2liaWxpdHkgPSB0aGlzLnJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzPy5maW5kKChyZXNwb25zaWJpbGl0eTogYW55KSA9PiByZXNwb25zaWJpbGl0eS5pZCA9PT0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5yZXNwb25zaWJpbGl0eT8uaWQpO1xuICAgICAgICBpZihoYXNSZXNwb25zaWJpbGl0eSkge1xuICAgICAgICAgIHRoaXMub25Ub2dnbGVSZXNwb25zaWJpbGl0eShoYXNSZXNwb25zaWJpbGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2coeyBlcnJvciB9LCBcIkVycm9yIGluIGdldHRpbmcgcmVzcG9uc2liaWxpdHkgbGlzdFwiKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmVzcG9uc2liaWxpdHlQYWdlQ2hhbmdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQucGFnZU5vID0gdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnNlYXJjaFRlcm0gPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cblxuICBkZWxldGVJdGVtKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IHt9O1xuICAgIHRoaXMuaXNWYWxpZE9iaiA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkID0gW107XG4gIH1cbiAgc2F2ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5iYWNrQnV0dG9uLmVtaXQoJ2JhY2tUb09uQ29tcGxldGlvbicpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eS5lbWl0KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyk7XG4gIH1cblxuXG4gIHNlYXJjaCgpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5zZWFyY2hUZXJtID0gdGhpcy5yZXNwb25zaWJpbGl0eVNlYXJjaFRleHQ7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U7XG4gICAgdGhpcy5nZXRSZXNwb25zaWJpbGl0eUxpc3QoKTtcbiAgfVxuXG4gXG4gIFxuICBvblRvZ2dsZVJlc3BvbnNpYmlsaXR5KHJlc3BvbnNpYmlsaXR5OiBhbnkpIHtcbiAgICBpZih0aGlzLm9wZW5lZFJlc3BvbnNpYmlsaXR5LmluY2x1ZGVzKHJlc3BvbnNpYmlsaXR5LmlkKSkge1xuICAgICAgdGhpcy5vcGVuZWRSZXNwb25zaWJpbGl0eSA9IHRoaXMub3BlbmVkUmVzcG9uc2liaWxpdHkuZmlsdGVyKChpZDogYW55KSA9PiBpZCAhPT0gcmVzcG9uc2liaWxpdHkuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5lZFJlc3BvbnNpYmlsaXR5LnB1c2gocmVzcG9uc2liaWxpdHkuaWQpO1xuICAgIH1cbiAgfVxuXG5cbiAgICAvLyBNYWluIG1ldGhvZCBleHBvc2VkIG91dHNpZGVcbiAgICBwdWJsaWMgbWFwUmVzcG9uc2liaWxpdHlEYXRhKHJlc3BvbnNpYmlsaXR5OiBhbnkpOiBhbnlbXSB7XG4gICAgICBpZiAoIXJlc3BvbnNpYmlsaXR5KSByZXR1cm4gW107XG4gIFxuICAgICAgY29uc3QgdXNlcnMgPSB0aGlzLm1hcFNob3J0TmFtZXMocmVzcG9uc2liaWxpdHkudXNlcnMsIHRoaXMubWFwU2hvcnROYW1lKTtcbiAgICAgIGNvbnN0IHVzZXJNYXAgPSB0aGlzLmJ1aWxkTWFwKHVzZXJzKTtcbiAgICAgIGNvbnN0IHJjTWFwID0gdGhpcy5idWlsZE1hcChyZXNwb25zaWJpbGl0eS5yZXNwb25zaWJpbGl0eUNlbnRlcnMpO1xuICBcbiAgICAgIHJldHVybiAocmVzcG9uc2liaWxpdHkucmVzcG9uc2liaWxpdGllcyB8fCBbXSkubWFwKChpdGVtOiBhbnkpID0+XG4gICAgICAgIHRoaXMubWFwUmVzcG9uc2liaWxpdHlJdGVtKGl0ZW0sIHVzZXJNYXAsIHJjTWFwKVxuICAgICAgKTtcbiAgICB9XG4gIFxuICAgIC8vIEhlbHBlciBtZXRob2RzIGJlbG93OlxuICBcbiAgICBwcml2YXRlIG1hcFNob3J0TmFtZXModXNlcnM6IGFueVtdLCBtYXBTaG9ydE5hbWU6IChuYW1lOiBzdHJpbmcpID0+IHN0cmluZyk6IGFueVtdIHtcbiAgICAgIHJldHVybiAodXNlcnMgfHwgW10pLm1hcCh1c2VyID0+ICh7XG4gICAgICAgIC4uLnVzZXIsXG4gICAgICAgIHNob3J0TmFtZTogbWFwU2hvcnROYW1lKHVzZXIubmFtZSksXG4gICAgICB9KSk7XG4gICAgfVxuICBcbiAgICBwcml2YXRlIGJ1aWxkTWFwKGFycjogYW55W10pOiBNYXA8c3RyaW5nLCBhbnk+IHtcbiAgICAgIHJldHVybiBuZXcgTWFwKChhcnIgfHwgW10pLm1hcChpdGVtID0+IFtpdGVtLmlkLCBpdGVtXSkpO1xuICAgIH1cbiAgXG4gICAgcHJpdmF0ZSBtYXBBc3NpZ25lZVVzZXJzKGFzc2lnbmVlOiBhbnksIGFjdGl2ZVVzZXJJZHM6IHN0cmluZ1tdLCB1c2VyTWFwOiBNYXA8c3RyaW5nLCBhbnk+KTogYW55W10ge1xuICAgICAgaWYgKCFhc3NpZ25lZS5hc3NpZ25lZSkge1xuICAgICAgICByZXR1cm4gKGFjdGl2ZVVzZXJJZHMgfHwgW10pLm1hcChpZCA9PiB1c2VyTWFwLmdldChpZCkpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmlzQXJyYXkoYXNzaWduZWUuYXNzaWduZWUpID8gYXNzaWduZWUuYXNzaWduZWUgOiBbYXNzaWduZWUuYXNzaWduZWVdO1xuICAgICAgcmV0dXJuIGlkcy5tYXAoKGlkOiBhbnkpID0+IHVzZXJNYXAuZ2V0KChpZCkpKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuICBcbiAgICBwcml2YXRlIG1hcFJlc3BvbnNpYmlsaXR5Q2VudGVycyhhc3NpZ25lZTogYW55LCBpdGVtUkNJZHM6IHN0cmluZ1tdLCByY01hcDogTWFwPHN0cmluZywgYW55Pik6IGFueVtdIHtcbiAgICAgIGlmICghYXNzaWduZWUucmVzcG9uc2liaWxpdHlDZW50ZXIpIHtcbiAgICAgICAgcmV0dXJuIChpdGVtUkNJZHMgfHwgW10pLm1hcChpZCA9PiByY01hcC5nZXQoaWQpKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICB9XG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5pc0FycmF5KGFzc2lnbmVlLnJlc3BvbnNpYmlsaXR5Q2VudGVyKSA/IGFzc2lnbmVlLnJlc3BvbnNpYmlsaXR5Q2VudGVyIDogW2Fzc2lnbmVlLnJlc3BvbnNpYmlsaXR5Q2VudGVyXTtcbiAgICAgIHJldHVybiBpZHMubWFwKChpZDogYW55KSA9PiByY01hcC5nZXQoaWQpKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuICBcbiAgICBwcml2YXRlIG1hcFJlc3BvbnNpYmlsaXR5SXRlbShpdGVtOiBhbnksIHVzZXJNYXA6IE1hcDxzdHJpbmcsIGFueT4sIHJjTWFwOiBNYXA8c3RyaW5nLCBhbnk+KTogYW55IHtcblxuICAgICAgbGV0ICBhc3NpZ25lZURldGFpbHMgPSAoaXRlbS5hc3NpZ25lZURldGFpbHMgfHwgW10pXG4gICAgICAgIC5maWx0ZXIoKGFkOiBhbnkpID0+IGFkLnN0YXR1cyAmJiBhZC5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2FjdGl2ZScpXG4gICAgICAgIGlmKGFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID09PSAwICYmIGl0ZW0/LmFzc2lnbmVlVHlwZSA9PT0gJ2FueScgJiYgW251bGwsICdhbnknXS5pbmNsdWRlcyhpdGVtPy5yY1R5cGUpKSB7XG5cbiAgICAgICAgICBhc3NpZ25lZURldGFpbHMgPSAgaXRlbS5hc3NpZ25lZXM/LmFjdGl2ZVVzZXJJZD8ubWFwKChpZDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5pdGVtLmFzc2lnbmVlRGV0YWlsc1swXSxcbiAgICAgICAgICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgICAgICAgICAgYXNzaWduZWU6IGlkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGFzc2lnbmVlRGV0YWlscyA9ICBhc3NpZ25lZURldGFpbHMubWFwKChhZDogYW55KSA9PiAoe1xuICAgICAgICAgIC4uLmFkLFxuICAgICAgICAgIGFzc2lnbmVlSW5mbzogdGhpcy5tYXBBc3NpZ25lZVVzZXJzKGFkLCBpdGVtLmFzc2lnbmVlcz8uYWN0aXZlVXNlcklkIHx8IFtdLCB1c2VyTWFwKSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlckluZm86IHRoaXMubWFwUmVzcG9uc2liaWxpdHlDZW50ZXJzKGFkLCBpdGVtLnJlc3BvbnNpYmlsaXR5Q2VudGVycyB8fCBbXSwgcmNNYXApLFxuICAgICAgICB9KSk7XG4gICAgICAgIGNvbnN0IGFsbEFzc2lnbmVlID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVBc3NpZ25lZShhc3NpZ25lZURldGFpbHMpLm1hcCgoYWQ6IGFueSkgPT4gYWQuYXNzaWduZWVJbmZvWzBdKTtcbiAgICAgICAgY29uc3QgYWxsUmMgPSB0aGlzLm1hcFJjcyhpdGVtLnJlc3BvbnNpYmlsaXR5Q2VudGVycyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgIGNvbnRyb2xJZDogaXRlbT8uY29udHJvbElkID8gJ1tDSUQtJyArIGl0ZW0/LmNvbnRyb2xJZCArICddICcgOiAnJyxcbiAgICAgICAgYXNzaWduZWVUeXBlOiBpdGVtPy5hc3NpZ25lZVR5cGUsXG4gICAgICAgIHJjVHlwZTogaXRlbT8ucmNUeXBlLFxuICAgICAgICBhc3NpZ25lZURldGFpbHMsXG4gICAgICAgICBhbGxBc3NpZ25lZSxcbiAgICAgICAgIGFsbFJjXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJlbW92ZUR1cGxpY2F0ZUFzc2lnbmVlKGFzc2lnbmVlRGV0YWlsczogYW55KSB7XG4gICAgICBjb25zdCB1bmlxdWVNYXAgPSBuZXcgTWFwKCk7XG4gICAgICBhc3NpZ25lZURldGFpbHMuZm9yRWFjaCgob2JqOiBhbnkpID0+IHtcbiAgICAgICAgdW5pcXVlTWFwLnNldChvYmouYXNzaWduZWUsIG9iaik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVuaXF1ZUFycmF5ID0gQXJyYXkuZnJvbSh1bmlxdWVNYXAudmFsdWVzKCkpO1xuICAgICAgICAgIHJldHVybiB1bmlxdWVBcnJheTtcbiAgICAgICAgfVxuXG4gICAgICBtYXBSY3MocmNzOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVycz8uZmlsdGVyKChyYzogYW55KSA9PiByY3M/LmluY2x1ZGVzKHJjPy5pZCkpO1xuICAgICAgfVxuICBcbiAgbWFwU2hvcnROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWVBcnJheSA9IG5hbWU/LnNwbGl0KCcgJyk7XG4gICAgaWYobmFtZUFycmF5Py5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gbmFtZUFycmF5WzBdPy5jaGFyQXQoMCkgKyBuYW1lQXJyYXlbbmFtZUFycmF5Py5sZW5ndGggLSAxXT8uY2hhckF0KDApO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZUFycmF5WzBdPy5jaGFyQXQoMCkgKyBuYW1lQXJyYXlbMF0/LmNoYXJBdCgxKT8udG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzcG9uc2liaWxpdHkoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzIHx8ICF0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9ICB7XG4gICAgICBlYWNoQXNzaWduZWU6IHtcbiAgICAgICAgYXNzaWduZWU6IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eURldGFpbHMuYXNzaWduZWUsXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzLnJlc3BvbnNpYmlsaXR5Q2VudGVyLFxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5OiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlEZXRhaWxzLnRpdGxlLFxuICAgICAgICBpZDogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscy5pZCxcbiAgICAgICAgYWxsUkM6IFtdLFxuICAgICAgICBhbGxBc3NpZ25lZTogW10sXG4gICAgICAgIGFzc2lnbmVlRGV0YWlsczogW3tcbiAgICAgICAgICBhc3NpZ25lZTogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscy5hc3NpZ25lZSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5RGV0YWlscy5yZXNwb25zaWJpbGl0eUNlbnRlcixcbiAgICAgICAgfV0sXG4gICAgICAgIGVhY2hBc3NpZ25lZToge30sXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Db21wbGV0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgPSBldmVudFxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1yZXNwb25zaWJpbGl0eS1saXN0LWhlYWQgdngtcC0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTYgdngtbGFiZWwtdHh0IHZ4LW1yLTFcIiAoY2xpY2spPVwiYmFjaygpXCI+JiN4ZTkxZDs8L2k+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBhIFJlc3BvbnNpYmlsaXR5PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtYm9keVwiPlxuICAgIDwhLS0gPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwib3RoZXJzQ291bnQgPT09IDBcIj48L2FwcC1sb2FkZXItaW5saW5lPiAtLT5cblxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1zZWFyY2ggdngtbWItMlwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMlwiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eVNlYXJjaFRleHRcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSZXNwb25zaWJpbGl0aWVzXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnBhZ2luYXRpb24gYXMgcGFnaW5hdGlvblwiPlxuICAgICAgPGFwcC1wYWdpbmF0aW9uICpuZ0lmPVwicGFnaW5hdGlvbj8udG90YWxfcGFnZXMgPiAxXCIgW3N0YXJ0XT1cInBhZ2luYXRpb24/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbVwiXG4gICAgICAgIFtlbmRdPVwicGFnaW5hdGlvbj8ucmVzcG9uc2liaWxpdGllc190b1wiIFt0b3RhbF09XCJwYWdpbmF0aW9uPy50b3RhbF9yZXNwb25zaWJpbGl0aWVzXCJcbiAgICAgICAgW3BhZ2VDb3VudF09XCJwYWdpbmF0aW9uPy50b3RhbF9wYWdlc1wiIFtjdXJyZW50UGFnZV09XCJyZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlXCJcbiAgICAgICAgKHNlbGVjdGVkUGFnZSk9XCJyZXNwb25zaWJpbGl0eVBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC9hcHAtcGFnaW5hdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cInJlc3BvbnNpYmlsaXR5TG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtbWlkIHZ4LW1iLTRcIiBbY2xhc3Mud2l0aC1wYWdpbmF0aW9uXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgcmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzID4gMVxuICAgICAgXCI+XG4gICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdGllcz8ubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgIXJlc3BvbnNpYmlsaXR5TG9hZGVyXG4gICAgICAgIFwiIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIiBbbm9EYXRhVGV4dF09XCInTm8gRGF0YSB0byBEaXNwbGF5J1wiPjwvYXBwLW5vLWRhdGE+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAhcmVzcG9uc2liaWxpdHlMb2FkZXJcbiAgICAgICAgXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIj5cbiAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eVwiPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUSUVTXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5LWNlbnRlclwiPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYWN0aW9uXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgPCEtLSB3aGVuIGNsaWNrIG9uIHJhZGlvIHRoZW4gYWN0aXZlIGNsYXNzIHNob3VsZCBiZSB0cnVlIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCByZXNwb25zaWJpbGl0eSBvZiByZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdGllcztcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5wYWdlICogcmVzcG9uc2liaWxpdGllc0RhdGE/LmxpbWl0IC1cbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5saW1pdCArXG4gICAgICAgICAgICBpICtcbiAgICAgICAgICAgIDEpIGFzIHNyTm9cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnJlc3BdPVwicmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID09PSAxIHx8IChyZXNwb25zaWJpbGl0eT8uYXNzaWduZWVUeXBlID09PSAnYW55JyAmJiBbbnVsbCwgJ2FueSddLmluY2x1ZGVzKHJlc3BvbnNpYmlsaXR5Py5yY1R5cGUpKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5yZXNwb25zaWJpbGl0eT8uaWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZCAmJiByZXNwb25zaWJpbGl0eT8uYXNzaWduZWVEZXRhaWxzPy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgXCIgW2NsYXNzLndpdGgtc3ViLXJlc3BvbnNpYmlsaXR5XT1cIm9wZW5lZFJlc3BvbnNpYmlsaXR5LmluY2x1ZGVzKHJlc3BvbnNpYmlsaXR5Py5pZClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlRGV0YWlscyBhcyBhc3NpZ25lZURldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzci1ub1wiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNyTm8gIFxuICAgICAgICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tzck5vfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID09PSAxIHx8IChyZXNwb25zaWJpbGl0eT8uYXNzaWduZWVUeXBlID09PSAnYW55JyAmJiBbbnVsbCwgJ2FueSddLmluY2x1ZGVzKHJlc3BvbnNpYmlsaXR5Py5yY1R5cGUpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ29uQ29tcGxldGlvbidcIiBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5yZXNwb25zaWJpbGl0eT8uaWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25Db21wbGV0aW9uQ2hhbmdlKHtlYWNoQXNzaWduZWU6IGFzc2lnbmVlRGV0YWlsc1swXSwgcmVzcG9uc2liaWxpdHl9KVwiPjwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHkgd2l0aC1yY1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHQgdngtcHItNSAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItbGlzdCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWF2YXRhci12MiBbYXZhdGFyTGlzdF09XCJyZXNwb25zaWJpbGl0eT8uYWxsQXNzaWduZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInU0lOR0xFX0FWQVRBUidcIj48L2xpYi1hdmF0YXItdjI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlLXRleHQgdngtbWwtMSByZXNwLW5hbWVcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eT8udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5jb250cm9sSWQgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eT8uYWxsUmMgYXMgcmNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1pbm5lciB2eC1kLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS12YWx1ZSB2eC1mcy0xMSB2eC1sYWJlbC10eHQgdngtcHItNVwiIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJjWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ1xuICAgICAgICAgICAgICAgICAgICAgIFwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICByYz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcmNbMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIi0tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmM/Lmxlbmd0aCBcbiAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyYz8ubGVuZ3RoID4gMVwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJjUG9wdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmFtLWNvdW50IHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtcC0wIHZ4LXBsLTEgdngtcHItMSB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgK3t7IHJjPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyY1BvcHVwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHJjPy5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1ibG9jayB2eC13LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPnt7IGRhdGE/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZVJlc3BvbnNpYmlsaXR5KHJlc3BvbnNpYmlsaXR5KVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhc3NpZ25lZURldGFpbHM/Lmxlbmd0aCA+IDEgJiYgIShyZXNwb25zaWJpbGl0eT8uYXNzaWduZWVUeXBlID09PSAnYW55JyAmJiBbbnVsbCwgJ2FueSddLmluY2x1ZGVzKHJlc3BvbnNpYmlsaXR5Py5yY1R5cGUpKTsgZWxzZSBjbG9zZUljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkUmVzcG9uc2liaWxpdHkuaW5jbHVkZXMocmVzcG9uc2liaWxpdHkuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjbG9zZUljb25cbiAgICAgICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cImljb25zIHZ4LWZzLTEwXCI+JiN4ZTllNzs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjbG9zZUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTEwXCI+ICYjeGU5ZTg7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8bGliLXN1Yi1yZXNwb25zaWJpbGl0eSAqbmdJZj1cIm9wZW5lZFJlc3BvbnNpYmlsaXR5LmluY2x1ZGVzKHJlc3BvbnNpYmlsaXR5LmlkKVwiXG4gICAgICAgICAgICAgICAgW3Jlc3BvbnNpYmlsaXR5XT1cInJlc3BvbnNpYmlsaXR5XCIgW3NyTm9dPVwic3JOb1wiIFtzZWxlY3RlZFJlc3BvbnNpYmlsaXR5XT1cInNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXNcIlxuICAgICAgICAgICAgICAgIChvbkNvbXBsZXRpb25DaGFuZ2UpPVwib25Db21wbGV0aW9uQ2hhbmdlKCRldmVudClcIj48L2xpYi1zdWItcmVzcG9uc2liaWxpdHk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWZsb2F0aW5nLWJhciBbc2VsZWN0ZWREYXRhXT1cIltzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5yZXNwb25zaWJpbGl0eV1cIiBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ3RpdGxlJ1wiXG4gICAgICAoY2xvc2VMaXN0KT1cImJhY2soKVwiIChjbG9zZUV2ZW50KT1cInNhdmUoJGV2ZW50KVwiIChkZWxldGVFdmVudCk9XCJkZWxldGVJdGVtKCRldmVudClcIlxuICAgICAgW2lzRGlzYWJsZWRdPVwiIXNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM/LnJlc3BvbnNpYmlsaXR5Py5pZFwiPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=