@lowcodeunit/applications-flow-common 1.39.16-integration → 1.39.18-hardening-bugs

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.
@@ -81,12 +81,11 @@ export class BuildPipelineFormComponent {
81
81
  this.SaveEnvironment();
82
82
  }
83
83
  SaveEnvironment() {
84
- // console.log("submitting build pipeline: ", this.BuildPipelineFormGroup.value);
85
84
  const saveEnvReq = {
86
85
  Environment: {
87
86
  //...this.Environment,
88
87
  Artifacts: this.Environment.Artifacts || {},
89
- DevOpsActions: this.Environment.DevOpsActions || {},
88
+ //DevOpsActions: this.Environment.DevOpsActions || {},
90
89
  //Secrets: this.Environment.Secrets || {},
91
90
  //Sources: this.Environment.Sources || {},
92
91
  },
@@ -95,8 +94,8 @@ export class BuildPipelineFormComponent {
95
94
  };
96
95
  let artifactLookup;
97
96
  let artifact = {
98
- ...this.Artifact,
99
- ...this.SelectedHostingOptionInputControlValues,
97
+ // ...this.Artifact,
98
+ // ...this.SelectedHostingOptionInputControlValues,
100
99
  };
101
100
  if (!this.ArtifactLookup) {
102
101
  artifactLookup = Guid.CreateRaw();
@@ -145,7 +144,7 @@ export class BuildPipelineFormComponent {
145
144
  };
146
145
  saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
147
146
  }
148
- // console.log('env req: ', saveEnvReq);
147
+ console.log('env req: ', saveEnvReq);
149
148
  this.eacSvc.SaveEnvironmentAsCode(saveEnvReq).then((res) => {
150
149
  this.ResponseEvent.emit(res);
151
150
  });
@@ -242,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
242
241
  type: Output,
243
242
  args: ['response-event']
244
243
  }] } });
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcGlwZWxpbmUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9jb250cm9scy9idWlsZC1waXBlbGluZS1mb3JtL2J1aWxkLXBpcGVsaW5lLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvYnVpbGQtcGlwZWxpbmUtZm9ybS9idWlsZC1waXBlbGluZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlILFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBdUIsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBV3hELE9BQU8sRUFDSCxxQkFBcUIsR0FFeEIsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzdDLE1BQU0sT0FBTywwQkFBMEI7SUEyRm5DLFlBQ2MsTUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsV0FBb0M7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFFOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUF4RUQsSUFBYyxRQUFRO1FBQ2xCLCtFQUErRTtRQUMvRSxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxj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O3NCQURuQixNQUFNO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlTW9kZWxlZFJlc3BvbnNlLCBHdWlkIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBFYUNBcnRpZmFjdCxcbiAgICBFYUNEZXZPcHNBY3Rpb24sXG4gICAgRWFDRW52aXJvbm1lbnRBc0NvZGUsXG59IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcGxpY2F0aW9ucy1mbG93LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBFYUNTZXJ2aWNlLFxuICAgIFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWFjLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBQcm9qZWN0SG9zdGluZ0RldGFpbHMsXG4gICAgUHJvamVjdEhvc3RpbmdPcHRpb24sXG59IGZyb20gJy4uLy4uL3N0YXRlL2FwcGxpY2F0aW9ucy1mbG93LnN0YXRlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsY3UtYnVpbGQtcGlwZWxpbmUtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2J1aWxkLXBpcGVsaW5lLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2J1aWxkLXBpcGVsaW5lLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnVpbGRQaXBlbGluZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8vUFJPUEVSVElFU1xuXG4gICAgLy8gQElucHV0KCdidWlsZC1waXBlbGluZScpXG4gICAgcHVibGljIEJ1aWxkUGlwZWxpbmU6IHN0cmluZztcblxuICAgIEBJbnB1dCgnZGV2b3BzLWFjdGlvbi1sb29rdXAnKVxuICAgIHB1YmxpYyBEZXZPcHNBY3Rpb25Mb29rdXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgnZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgnZW52aXJvbm1lbnQnKVxuICAgIHB1YmxpYyBFbnZpcm9ubWVudDogRWFDRW52aXJvbm1lbnRBc0NvZGU7XG5cbiAgICBASW5wdXQoJ2Vudmlyb25tZW50LWxvb2t1cCcpXG4gICAgcHVibGljIEVudmlyb25tZW50TG9va3VwOiBzdHJpbmc7XG5cbiAgICAvLyBASW5wdXQoJ2hvc3RpbmctZGV0YWlscycpXG4gICAgcHVibGljIEhvc3RpbmdEZXRhaWxzOiBQcm9qZWN0SG9zdGluZ0RldGFpbHM7XG5cbiAgICBASW5wdXQoJ2xvYWRpbmcnKVxuICAgIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgncmVzcG9uc2UtZXZlbnQnKVxuICAgIHB1YmxpYyBSZXNwb25zZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAgIHByb3RlY3RlZCBnZXQgQXJ0aWZhY3QoKTogRWFDQXJ0aWZhY3Qge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkFSVElGQUNUOiBcIiwgdGhpcy5FbnZpcm9ubWVudD8uQXJ0aWZhY3RzW3RoaXMuQXJ0aWZhY3RMb29rdXBdKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuRW52aXJvbm1lbnQ/LkFydGlmYWN0cyAmJiB0aGlzLkFydGlmYWN0TG9va3VwXG4gICAgICAgICAgICA/IHRoaXMuRW52aXJvbm1lbnQ/LkFydGlmYWN0c1t0aGlzLkFydGlmYWN0TG9va3VwXSB8fCB7fVxuICAgICAgICAgICAgOiB7fTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IEFydGlmYWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGFydExvb2t1cCA9IHRoaXMuRGV2T3BzQWN0aW9uPy5BcnRpZmFjdExvb2t1cHNcbiAgICAgICAgICAgID8gdGhpcy5EZXZPcHNBY3Rpb24/LkFydGlmYWN0TG9va3Vwc1swXVxuICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIHJldHVybiBhcnRMb29rdXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBCdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cD8uZ2V0KCdidWlsZFBpcGVsaW5lJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBEZXZPcHNBY3Rpb24oKTogRWFDRGV2T3BzQWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyAmJiB0aGlzLkRldk9wc0FjdGlvbkxvb2t1cFxuICAgICAgICAgICAgPyB0aGlzLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnNbdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBdIHx8IHt9XG4gICAgICAgICAgICA6IHt9O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgRGV2T3BzQWN0aW9ucygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0Rldk9wc0FjdGlvbiB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyB8fCB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbk5hbWVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmdldCgnZGV2T3BzQWN0aW9uTmFtZScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgTlBNVG9rZW5Gb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmdldCgnbnBtVG9rZW4nKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlcygpOiB7XG4gICAgICAgIFtsb29rdXA6IHN0cmluZ106IGFueTtcbiAgICB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uPy5JbnB1dHM/LnJlZHVjZSgocHJldiwgY3VyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXM6IGFueSA9IHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmVzW2N1ci5Mb29rdXBdID1cbiAgICAgICAgICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuY29udHJvbHNbY3VyLkxvb2t1cF0udmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICAvLyBwdWJsaWMgRGV2T3BzQWN0aW9uOiBFYUNEZXZPcHNBY3Rpb247XG5cbiAgICAvLyBwdWJsaWMgRGV2T3BzQWN0aW9uczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNEZXZPcHNBY3Rpb24gfTtcblxuICAgIHB1YmxpYyBCdWlsZFBpcGVsaW5lRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgICAvLyBwdWJsaWMgU2VsZWN0ZWRIb3N0aW5nT3B0aW9uSW5wdXRDb250cm9sVmFsdWVzOiB7XG4gICAgLy8gICAgIFtsb29rdXA6IHN0cmluZ106IGFueTtcbiAgICAvLyB9O1xuXG4gICAgcHVibGljIFNlbGVjdGVkSG9zdGluZ09wdGlvbjogUHJvamVjdEhvc3RpbmdPcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJvdGVjdGVkIGFwcHNGbG93U3ZjOiBBcHBsaWNhdGlvbnNGbG93U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMgPSBuZXcgUHJvamVjdEhvc3RpbmdEZXRhaWxzKCk7XG4gICAgICAgIHRoaXMuUmVzcG9uc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xuXG4gICAgICAgIHRoaXMubG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5sb2FkUHJvamVjdEhvc3RpbmdEZXRhaWxzKCk7XG4gICAgfVxuXG4gICAgLy9BUEkgTUVUSE9EU1xuXG4gICAgcHVibGljIEJ1aWxkUGlwZWxpbmVDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICAvL2ZvciBzb21lIHJlYXNvbiB0aGlzIHZhbHVlIGlzIGNvbWluZyBiYWNrIHVuZGVmaW5lZFxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJ1aWxkIHBpcGVsaW5lIHZhbHVlOiBcIiwgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2w/LnZhbHVlKVxuICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmUgPSB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtQ29udHJvbD8udmFsdWU7XG4gICAgICAgIC8vIHRoaXMubG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpO1xuXG4gICAgICAgIHRoaXMuc2V0dXBDb250cm9sc0ZvckZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgU3VibWl0QnVpbGRQaXBlbGluZSgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJzdWJtaXR0aW5nIGJ1aWxkIHBpcGVsaW5lOiBcIiwgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLnZhbHVlKTtcbiAgICAgICAgdGhpcy5TYXZlRW52aXJvbm1lbnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgU2F2ZUVudmlyb25tZW50KCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcInN1Ym1pdHRpbmcgYnVpbGQgcGlwZWxpbmU6IFwiLCB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAudmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IHNhdmVFbnZSZXE6IFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCA9IHtcbiAgICAgICAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgLy8uLi50aGlzLkVudmlyb25tZW50LFxuICAgICAgICAgICAgICAgIEFydGlmYWN0czogdGhpcy5FbnZpcm9ubWVudC5BcnRpZmFjdHMgfHwge30sXG4gICAgICAgICAgICAgICAgRGV2T3BzQWN0aW9uczogdGhpcy5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zIHx8IHt9LFxuICAgICAgICAgICAgICAgIC8vU2VjcmV0czogdGhpcy5FbnZpcm9ubWVudC5TZWNyZXRzIHx8IHt9LFxuICAgICAgICAgICAgICAgIC8vU291cmNlczogdGhpcy5FbnZpcm9ubWVudC5Tb3VyY2VzIHx8IHt9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEVudmlyb25tZW50TG9va3VwOiB0aGlzLkVudmlyb25tZW50TG9va3VwLFxuICAgICAgICAgICAgLy9FbnRlcnByaXNlRGF0YVRva2Vuczoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGFydGlmYWN0TG9va3VwOiBzdHJpbmc7XG5cbiAgICAgICAgbGV0IGFydGlmYWN0OiBFYUNBcnRpZmFjdCA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuQXJ0aWZhY3QsXG4gICAgICAgICAgICAuLi50aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlcyxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIXRoaXMuQXJ0aWZhY3RMb29rdXApIHtcbiAgICAgICAgICAgIGFydGlmYWN0TG9va3VwID0gR3VpZC5DcmVhdGVSYXcoKTtcblxuICAgICAgICAgICAgYXJ0aWZhY3QgPSB7XG4gICAgICAgICAgICAgICAgLi4uYXJ0aWZhY3QsXG4gICAgICAgICAgICAgICAgVHlwZTogdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb24uQXJ0aWZhY3RUeXBlLFxuICAgICAgICAgICAgICAgIE5hbWU6IHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLk5hbWUsXG4gICAgICAgICAgICAgICAgTlBNUmVnaXN0cnk6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8nLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFydGlmYWN0TG9va3VwID0gdGhpcy5BcnRpZmFjdExvb2t1cDtcbiAgICAgICAgfVxuXG4gICAgICAgIHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuQXJ0aWZhY3RzW2FydGlmYWN0TG9va3VwXSA9IGFydGlmYWN0O1xuXG4gICAgICAgIGxldCBkZXZPcHNBY3Rpb25Mb29rdXA6IHN0cmluZztcblxuICAgICAgICBpZiAoIXRoaXMuRGV2T3BzQWN0aW9uTG9va3VwKSB7XG4gICAgICAgICAgICBkZXZPcHNBY3Rpb25Mb29rdXAgPSBHdWlkLkNyZWF0ZVJhdygpO1xuXG4gICAgICAgICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLkRldk9wc0FjdGlvbixcbiAgICAgICAgICAgICAgICBBcnRpZmFjdExvb2t1cHM6IFthcnRpZmFjdExvb2t1cF0sXG4gICAgICAgICAgICAgICAgTmFtZTogdGhpcy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgICAgUGF0aDogdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb24uUGF0aCxcbiAgICAgICAgICAgICAgICBUZW1wbGF0ZXM6IHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLlRlbXBsYXRlcyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLk5QTVRva2VuRm9ybUNvbnRyb2w/LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VjcmV0TG9va3VwID0gJ25wbS1hY2Nlc3MtdG9rZW4nO1xuXG4gICAgICAgICAgICAgICAgZG9hLlNlY3JldExvb2t1cHMgPSBbc2VjcmV0TG9va3VwXTtcblxuICAgICAgICAgICAgICAgIGlmICghc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5TZWNyZXRzW3NlY3JldExvb2t1cF0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5TZWNyZXRzW3NlY3JldExvb2t1cF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBOYW1lOiAnTlBNIEFjY2VzcyBUb2tlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRhVG9rZW5Mb29rdXA6IHNlY3JldExvb2t1cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEtub3duQXM6ICdOUE1fVE9LRU4nLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNhdmVFbnZSZXEuRW50ZXJwcmlzZURhdGFUb2tlbnNbc2VjcmV0TG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgVmFsdWU6IHRoaXMuTlBNVG9rZW5Gb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnNbZGV2T3BzQWN0aW9uTG9va3VwXSA9IGRvYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRldk9wc0FjdGlvbkxvb2t1cCA9IHRoaXMuRGV2T3BzQWN0aW9uTG9va3VwO1xuXG4gICAgICAgICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLkRldk9wc0FjdGlvbixcbiAgICAgICAgICAgICAgICBOYW1lOiB0aGlzLkRldk9wc0FjdGlvbk5hbWVGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9uc1tkZXZPcHNBY3Rpb25Mb29rdXBdID0gZG9hO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdlbnYgcmVxOiAnLCBzYXZlRW52UmVxKTtcblxuICAgICAgICB0aGlzLmVhY1N2Yy5TYXZlRW52aXJvbm1lbnRBc0NvZGUoc2F2ZUVudlJlcSkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLlJlc3BvbnNlRXZlbnQuZW1pdChyZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAgSGVscGVyc1xuXG4gICAgcHJvdGVjdGVkIGdldFNlbGVjdGVkSG9zdGluZ09wdGlvbigpIHtcbiAgICAgICAgdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb24gPSB0aGlzLkhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9ucz8uZmluZChcbiAgICAgICAgICAgIChobykgPT4gaG8uTG9va3VwID09PSB0aGlzLkJ1aWxkUGlwZWxpbmVcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldHVwQ29udHJvbHNGb3JGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldFNlbGVjdGVkSG9zdGluZ09wdGlvbigpO1xuXG4gICAgICAgIC8vIHRoaXMuQnVpbGRQaXBlbGluZSA9XG4gICAgICAgIC8vICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lIHx8IHRoaXMuSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zXG4gICAgICAgIC8vICAgICAgICAgICA/IHRoaXMuSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zWzBdPy5Mb29rdXBcbiAgICAgICAgLy8gICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJob3N0aW5nIGRldGFpbHM6IFwiLCB0aGlzLkhvc3RpbmdEZXRhaWxzKVxuXG4gICAgICAgIGZvciAoY29uc3QgY3RybE5hbWUgaW4gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICAvL2Rldk9wc0FjdGlvbiBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgICAvL3JlbW92ZXMgaG9zdGluZyBkZXRhaWxzXG4gICAgICAgICAgICBpZiAoY3RybE5hbWUgIT09ICdidWlsZFBpcGVsaW5lJyAmJiBjdHJsTmFtZSAhPT0gJ2Rldk9wc0FjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInJlbW92aW5nIGNvbnRyb2w6IFwiLCBjdHJsTmFtZSlcbiAgICAgICAgICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAucmVtb3ZlQ29udHJvbChjdHJsTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdidWlsZFBpcGVsaW5lJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh0aGlzLkJ1aWxkUGlwZWxpbmUgfHwgJycsIFtcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdkZXZPcHNBY3Rpb25OYW1lJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkRldk9wc0FjdGlvbj8uTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbj8uTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcInNlbGVjdGVkIGhvc3Rpbmcgb3B0aW9uczogXCIsIHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uPy5JbnB1dHMpO1xuXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uPy5JbnB1dHM/LmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gaW5wdXQuUmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXTtcblxuICAgICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgaW5wdXQuTG9va3VwLFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5BcnRpZmFjdFtpbnB1dC5Mb29rdXBdIHx8IGlucHV0LkRlZmF1bHRWYWx1ZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIGlmICh0aGlzLkRpc2FibGVkKSB7XG4gICAgICAgICAgICAvLyAgIHRoaXMuRm9ybUdyb3VwLmNvbnRyb2xzW2lucHV0Lkxvb2t1cF0uZGlzYWJsZSgpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5CdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2w/LnZhbHVlID09PSAnbnBtLXJlbGVhc2UnKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbnBtIHJlbGVhc2UnKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwPy5jb250cm9scz8ubnBtVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbnBtIHRva2VuIGlmJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgICducG1Ub2tlbicsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5EaXNhYmxlZCA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmNvbnRyb2xzLm5wbVRva2VuLmRpc2FibGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtQ29udHJvbD8udmFsdWUgPT09ICdnaXRodWItYXJ0aWZhY3RzLXJlbGVhc2UnXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cD8uY29udHJvbHM/Lm5wbVRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ25wbVRva2VuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Ib3N0aW5nRGV0YWlscy5Mb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hcHBzRmxvd1N2Yy5Mb2FkUHJvamVjdEhvc3RpbmdEZXRhaWxzKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHJlc3BvbnNlOiBCYXNlTW9kZWxlZFJlc3BvbnNlPFByb2plY3RIb3N0aW5nRGV0YWlscz4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzID0gcmVzcG9uc2UuTW9kZWw7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Jlc3BvbnNlOiAnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5Ib3N0aW5nRGV0YWlscy5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnIERldk9wc0FjdGlvbi5QYXRoOiAnLCB0aGlzLkRldk9wc0FjdGlvbi5QYXRoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhvc3RPcHRpb24gPSB0aGlzLkhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9ucz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGhvKSA9PiBoby5QYXRoID09PSB0aGlzLkRldk9wc0FjdGlvbi5QYXRoXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZSA9IGhvc3RPcHRpb24/Lkxvb2t1cDtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbiA9IGhvc3RPcHRpb247XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkJ1aWxkIFBpcGVsaW5lIEhFUkU9IFwiLCB0aGlzLkJ1aWxkUGlwZWxpbmUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cENvbnRyb2xzRm9yRm9ybSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRVJSOiAnLCBlcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMuTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnSE9TVElORyBERVRBSUxTOiAnLCB0aGlzLkhvc3RpbmdEZXRhaWxzKTtcbiAgICB9XG59XG4iLCI8Zm9ybVxuICAgIGNsYXNzPVwiZm9ybS1jYXJkXCJcbiAgICBbZm9ybUdyb3VwXT1cIkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXBcIlxuICAgIChuZ1N1Ym1pdCk9XCJTdWJtaXRCdWlsZFBpcGVsaW5lKClcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJIb3N0aW5nRGV0YWlscz8uTG9hZGluZyB8fCBMb2FkaW5nXCI+XG4gICAgICAgIDxza2VsZXRvbi1ibG9jayBjbGFzcz1cInMtYmxvY2tcIiBlZmZlY3Q9XCJ3YXZlXCI+PC9za2VsZXRvbi1ibG9jaz5cblxuICAgICAgICA8c2tlbGV0b24tYmxvY2sgY2xhc3M9XCJzLWJsb2NrXCIgZWZmZWN0PVwid2F2ZVwiPjwvc2tlbGV0b24tYmxvY2s+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkSG9zdGluZ09wdGlvbj8uSW5wdXRzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGhvc3RPcHRpb24gb2YgSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2tlbGV0b24tYmxvY2sgY2xhc3M9XCJzLWJsb2NrXCIgZWZmZWN0PVwid2F2ZVwiPjwvc2tlbGV0b24tYmxvY2s+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPHNrZWxldG9uLWJsb2NrICpuZ0lmPVwiXCIgY2xhc3M9XCJzLWJsb2NrXCIgZWZmZWN0PVwid2F2ZVwiPjwvc2tlbGV0b24tYmxvY2s+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUhvc3RpbmdEZXRhaWxzPy5Mb2FkaW5nICYmICFMb2FkaW5nXCI+XG4gICAgICAgIDwhLS0gPGRpdiAgKm5nSWY9XCIhSG9zdGluZ0RldGFpbHM/LkxvYWRpbmdcIj4gLS0+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1aWxkUGlwZWxpbmVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQnVpbGQgUGlwZWxpbmVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJCdWlsZFBpcGVsaW5lQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaG9zdE9wdGlvbiBvZiBIb3N0aW5nRGV0YWlscz8uSG9zdGluZ09wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaG9zdE9wdGlvbi5Mb29rdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhvc3RPcHRpb24uTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgIDxtYXQtaGludD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBob3N0T3B0aW9uIG9mIEhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkJ1aWxkUGlwZWxpbmUgPT0gaG9zdE9wdGlvbj8uTG9va3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBob3N0T3B0aW9uLkRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGV2T3BzQWN0aW9uTmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIG9mIERldk9wcyBBY3Rpb25cIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkPVwidHJ1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGlucHV0IG9mIFNlbGVjdGVkSG9zdGluZ09wdGlvbj8uSW5wdXRzXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImlucHV0Lkxvb2t1cFwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnB1dC5QbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpbnB1dC5SZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxtYXQtaGludD57eyBpbnB1dC5IaW50IH19PC9tYXQtaGludD5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJCdWlsZFBpcGVsaW5lID09ICducG0tcmVsZWFzZSdcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoIHdpdGgtaGludCBwYWRkaW5nLWJvdHRvbS00XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5zZWN1cml0eTwvbWF0LWljb24+XG5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJucG0tdG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5wbVRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOUE0gdG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiIURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCItd2Via2l0LXRleHQtc2VjdXJpdHk6IGRpc2NcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPG1hdC1oaW50PlxuICAgICAgICAgICAgICAgICAgICBTZWN1cmVseSBwdWJsaXNoIHRvIE5QTSwgcHJvdmlkZSBhbiBOUE0gUGVyc29uYWwgQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgIFRva2VuIChQQVQpIHdpdGggcHVibGlzaCBhY2Nlc3MgdG8gdGhlIG9yZ2FuaXphdGlvbiB1c2VkIGZvclxuICAgICAgICAgICAgICAgICAgICB5b3VyIE5QTSBwYWNrYWdlcy4gTGVhcm4gaG93IHRvIGNyZWF0ZSBhbmQgdmlldyBhY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9jcmVhdGluZy1hbmQtdmlld2luZy1hY2Nlc3MtdG9rZW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByaW1hcnktbGlua1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L21hdC1oaW50PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxuXG4gICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIkhvc3RpbmdEZXRhaWxzPy5Mb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ByZWFkXCI+XG4gICAgICAgICAgICAgIDxsY3UtbG9hZGVyIHN0eWxlPVwibWFyZ2luOiBhdXRvXCIgW2xvYWRpbmddPVwidHJ1ZVwiPjwvbGN1LWxvYWRlcj5cbiAgICAgICAgICBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpbi0zXCI+XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibWF0LXRpdGxlXCI+TG9hZGluZyBob3N0aW5nIGRldGFpbHM8L2g0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIDwvbWF0LWNhcmQtY29udGVudD4gLS0+XG5cbiAgICA8IS0tIDxtYXQtY2FyZC1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+IC0tPlxuXG4gICAgPCEtLSA8YnV0dG9uIFxuICAgICAgICAgICpuZ0lmPVwiIUxvYWRpbmdcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgICAgICBmeEZsZXg9XCIxMDAlXCIgXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFCdWlsZFBpcGVsaW5lRm9ybUdyb3VwLnZhbGlkIHx8ICFCdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmRpcnR5XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnNhdmU8L21hdC1pY29uPlxuICAgICAgICAgIFNhdmUgQnVpbGQgUGlwZWxpbmVcbiAgICAgICAgPC9idXR0b24+IC0tPlxuICAgIDwhLS0gPGxjdS1sb2FkZXIgW2xvYWRpbmddPVwiTG9hZGluZ1wiPjwvbGN1LWxvYWRlcj4gICAtLT5cblxuICAgIDwhLS0gPC9tYXQtY2FyZC1hY3Rpb25zPiAtLT5cbiAgICA8IS0tIDwvbWF0LWNhcmQ+IC0tPlxuPC9mb3JtPlxuIl19
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcGlwZWxpbmUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9jb250cm9scy9idWlsZC1waXBlbGluZS1mb3JtL2J1aWxkLXBpcGVsaW5lLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvYnVpbGQtcGlwZWxpbmUtZm9ybS9idWlsZC1waXBlbGluZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlILFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBdUIsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBV3hELE9BQU8sRUFDSCxxQkFBcUIsR0FFeEIsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzdDLE1BQU0sT0FBTywwQkFBMEI7SUEyRm5DLFlBQ2MsTUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsV0FBb0M7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFFOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUF4RUQsSUFBYyxRQUFRO1FBQ2xCLCtFQUErRTtRQUMvRSxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxj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dCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtR3JvdXAsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZU1vZGVsZWRSZXNwb25zZSwgR3VpZCB9IGZyb20gJ0BsY3UvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRWFDQXJ0aWZhY3QsXG4gICAgRWFDRGV2T3BzQWN0aW9uLFxuICAgIEVhQ0Vudmlyb25tZW50QXNDb2RlLFxufSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25zRmxvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbnMtZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgRWFDU2VydmljZSxcbiAgICBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3QsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgUHJvamVjdEhvc3RpbmdEZXRhaWxzLFxuICAgIFByb2plY3RIb3N0aW5nT3B0aW9uLFxufSBmcm9tICcuLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGN1LWJ1aWxkLXBpcGVsaW5lLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idWlsZC1waXBlbGluZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9idWlsZC1waXBlbGluZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJ1aWxkUGlwZWxpbmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvL1BST1BFUlRJRVNcblxuICAgIC8vIEBJbnB1dCgnYnVpbGQtcGlwZWxpbmUnKVxuICAgIHB1YmxpYyBCdWlsZFBpcGVsaW5lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ2Rldm9wcy1hY3Rpb24tbG9va3VwJylcbiAgICBwdWJsaWMgRGV2T3BzQWN0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ2Rpc2FibGVkJylcbiAgICBwdWJsaWMgRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoJ2Vudmlyb25tZW50JylcbiAgICBwdWJsaWMgRW52aXJvbm1lbnQ6IEVhQ0Vudmlyb25tZW50QXNDb2RlO1xuXG4gICAgQElucHV0KCdlbnZpcm9ubWVudC1sb29rdXAnKVxuICAgIHB1YmxpYyBFbnZpcm9ubWVudExvb2t1cDogc3RyaW5nO1xuXG4gICAgLy8gQElucHV0KCdob3N0aW5nLWRldGFpbHMnKVxuICAgIHB1YmxpYyBIb3N0aW5nRGV0YWlsczogUHJvamVjdEhvc3RpbmdEZXRhaWxzO1xuXG4gICAgQElucHV0KCdsb2FkaW5nJylcbiAgICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoJ3Jlc3BvbnNlLWV2ZW50JylcbiAgICBwdWJsaWMgUmVzcG9uc2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IEFydGlmYWN0KCk6IEVhQ0FydGlmYWN0IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJBUlRJRkFDVDogXCIsIHRoaXMuRW52aXJvbm1lbnQ/LkFydGlmYWN0c1t0aGlzLkFydGlmYWN0TG9va3VwXSk7XG4gICAgICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHMgJiYgdGhpcy5BcnRpZmFjdExvb2t1cFxuICAgICAgICAgICAgPyB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHNbdGhpcy5BcnRpZmFjdExvb2t1cF0gfHwge31cbiAgICAgICAgICAgIDoge307XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBBcnRpZmFjdExvb2t1cCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBhcnRMb29rdXAgPSB0aGlzLkRldk9wc0FjdGlvbj8uQXJ0aWZhY3RMb29rdXBzXG4gICAgICAgICAgICA/IHRoaXMuRGV2T3BzQWN0aW9uPy5BcnRpZmFjdExvb2t1cHNbMF1cbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICByZXR1cm4gYXJ0TG9va3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgQnVpbGRQaXBlbGluZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXA/LmdldCgnYnVpbGRQaXBlbGluZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgRGV2T3BzQWN0aW9uKCk6IEVhQ0Rldk9wc0FjdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnMgJiYgdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBcbiAgICAgICAgICAgID8gdGhpcy5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW3RoaXMuRGV2T3BzQWN0aW9uTG9va3VwXSB8fCB7fVxuICAgICAgICAgICAgOiB7fTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IERldk9wc0FjdGlvbnMoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNEZXZPcHNBY3Rpb24gfSB7XG4gICAgICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnMgfHwge307XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBEZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5nZXQoJ2Rldk9wc0FjdGlvbk5hbWUnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IE5QTVRva2VuRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5nZXQoJ25wbVRva2VuJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBTZWxlY3RlZEhvc3RpbmdPcHRpb25JbnB1dENvbnRyb2xWYWx1ZXMoKToge1xuICAgICAgICBbbG9va3VwOiBzdHJpbmddOiBhbnk7XG4gICAgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbj8uSW5wdXRzPy5yZWR1Y2UoKHByZXYsIGN1cikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJlc1tjdXIuTG9va3VwXSA9XG4gICAgICAgICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmNvbnRyb2xzW2N1ci5Mb29rdXBdLnZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgLy8gcHVibGljIERldk9wc0FjdGlvbjogRWFDRGV2T3BzQWN0aW9uO1xuXG4gICAgLy8gcHVibGljIERldk9wc0FjdGlvbnM6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDRGV2T3BzQWN0aW9uIH07XG5cbiAgICBwdWJsaWMgQnVpbGRQaXBlbGluZUZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gICAgLy8gcHVibGljIFNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlczoge1xuICAgIC8vICAgICBbbG9va3VwOiBzdHJpbmddOiBhbnk7XG4gICAgLy8gfTtcblxuICAgIHB1YmxpYyBTZWxlY3RlZEhvc3RpbmdPcHRpb246IFByb2plY3RIb3N0aW5nT3B0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBlYWNTdmM6IEVhQ1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByb3RlY3RlZCBhcHBzRmxvd1N2YzogQXBwbGljYXRpb25zRmxvd1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzID0gbmV3IFByb2plY3RIb3N0aW5nRGV0YWlscygpO1xuICAgICAgICB0aGlzLlJlc3BvbnNlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcblxuICAgICAgICB0aGlzLmxvYWRQcm9qZWN0SG9zdGluZ0RldGFpbHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMubG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpO1xuICAgIH1cblxuICAgIC8vQVBJIE1FVEhPRFNcblxuICAgIHB1YmxpYyBCdWlsZFBpcGVsaW5lQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgLy9mb3Igc29tZSByZWFzb24gdGhpcyB2YWx1ZSBpcyBjb21pbmcgYmFjayB1bmRlZmluZWRcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJidWlsZCBwaXBlbGluZSB2YWx1ZTogXCIsIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Db250cm9sPy52YWx1ZSlcbiAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lID0gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2w/LnZhbHVlO1xuICAgICAgICAvLyB0aGlzLmxvYWRQcm9qZWN0SG9zdGluZ0RldGFpbHMoKTtcblxuICAgICAgICB0aGlzLnNldHVwQ29udHJvbHNGb3JGb3JtKCk7XG4gICAgfVxuXG4gICAgcHVibGljIFN1Ym1pdEJ1aWxkUGlwZWxpbmUoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwic3VibWl0dGluZyBidWlsZCBwaXBlbGluZTogXCIsIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC52YWx1ZSk7XG4gICAgICAgIHRoaXMuU2F2ZUVudmlyb25tZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIFNhdmVFbnZpcm9ubWVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2F2ZUVudlJlcTogU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICAvLy4uLnRoaXMuRW52aXJvbm1lbnQsXG4gICAgICAgICAgICAgICAgQXJ0aWZhY3RzOiB0aGlzLkVudmlyb25tZW50LkFydGlmYWN0cyB8fCB7fSxcbiAgICAgICAgICAgICAgICAvL0Rldk9wc0FjdGlvbnM6IHRoaXMuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyB8fCB7fSxcbiAgICAgICAgICAgICAgICAvL1NlY3JldHM6IHRoaXMuRW52aXJvbm1lbnQuU2VjcmV0cyB8fCB7fSxcbiAgICAgICAgICAgICAgICAvL1NvdXJjZXM6IHRoaXMuRW52aXJvbm1lbnQuU291cmNlcyB8fCB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBFbnZpcm9ubWVudExvb2t1cDogdGhpcy5FbnZpcm9ubWVudExvb2t1cCxcbiAgICAgICAgICAgIC8vRW50ZXJwcmlzZURhdGFUb2tlbnM6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBhcnRpZmFjdExvb2t1cDogc3RyaW5nO1xuXG4gICAgICAgIGxldCBhcnRpZmFjdDogRWFDQXJ0aWZhY3QgPSB7XG4gICAgICAgICAgICAvLyAuLi50aGlzLkFydGlmYWN0LFxuICAgICAgICAgICAgLy8gLi4udGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb25JbnB1dENvbnRyb2xWYWx1ZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCF0aGlzLkFydGlmYWN0TG9va3VwKSB7XG4gICAgICAgICAgICBhcnRpZmFjdExvb2t1cCA9IEd1aWQuQ3JlYXRlUmF3KCk7XG5cbiAgICAgICAgICAgIGFydGlmYWN0ID0ge1xuICAgICAgICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgICAgICAgIFR5cGU6IHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLkFydGlmYWN0VHlwZSxcbiAgICAgICAgICAgICAgICBOYW1lOiB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5OYW1lLFxuICAgICAgICAgICAgICAgIE5QTVJlZ2lzdHJ5OiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnRpZmFjdExvb2t1cCA9IHRoaXMuQXJ0aWZhY3RMb29rdXA7XG4gICAgICAgIH1cblxuICAgICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LkFydGlmYWN0c1thcnRpZmFjdExvb2t1cF0gPSBhcnRpZmFjdDtcblxuICAgICAgICBsZXQgZGV2T3BzQWN0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKCF0aGlzLkRldk9wc0FjdGlvbkxvb2t1cCkge1xuICAgICAgICAgICAgZGV2T3BzQWN0aW9uTG9va3VwID0gR3VpZC5DcmVhdGVSYXcoKTtcblxuICAgICAgICAgICAgY29uc3QgZG9hOiBFYUNEZXZPcHNBY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgICAgICAgICAgQXJ0aWZhY3RMb29rdXBzOiBbYXJ0aWZhY3RMb29rdXBdLFxuICAgICAgICAgICAgICAgIE5hbWU6IHRoaXMuRGV2T3BzQWN0aW9uTmFtZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAgIFBhdGg6IHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLlBhdGgsXG4gICAgICAgICAgICAgICAgVGVtcGxhdGVzOiB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5UZW1wbGF0ZXMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5OUE1Ub2tlbkZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3JldExvb2t1cCA9ICducG0tYWNjZXNzLXRva2VuJztcblxuICAgICAgICAgICAgICAgIGRvYS5TZWNyZXRMb29rdXBzID0gW3NlY3JldExvb2t1cF07XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgTmFtZTogJ05QTSBBY2Nlc3MgVG9rZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVRva2VuTG9va3VwOiBzZWNyZXRMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBLbm93bkFzOiAnTlBNX1RPS0VOJyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzYXZlRW52UmVxLkVudGVycHJpc2VEYXRhVG9rZW5zW3NlY3JldExvb2t1cF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiB0aGlzLk5QTVRva2VuRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW2Rldk9wc0FjdGlvbkxvb2t1cF0gPSBkb2E7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXZPcHNBY3Rpb25Mb29rdXAgPSB0aGlzLkRldk9wc0FjdGlvbkxvb2t1cDtcblxuICAgICAgICAgICAgY29uc3QgZG9hOiBFYUNEZXZPcHNBY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgICAgICAgICAgTmFtZTogdGhpcy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnNbZGV2T3BzQWN0aW9uTG9va3VwXSA9IGRvYTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygnZW52IHJlcTogJywgc2F2ZUVudlJlcSk7XG5cbiAgICAgICAgdGhpcy5lYWNTdmMuU2F2ZUVudmlyb25tZW50QXNDb2RlKHNhdmVFbnZSZXEpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5SZXNwb25zZUV2ZW50LmVtaXQocmVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gIEhlbHBlcnNcblxuICAgIHByb3RlY3RlZCBnZXRTZWxlY3RlZEhvc3RpbmdPcHRpb24oKSB7XG4gICAgICAgIHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uID0gdGhpcy5Ib3N0aW5nRGV0YWlscz8uSG9zdGluZ09wdGlvbnM/LmZpbmQoXG4gICAgICAgICAgICAoaG8pID0+IGhvLkxvb2t1cCA9PT0gdGhpcy5CdWlsZFBpcGVsaW5lXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXR1cENvbnRyb2xzRm9yRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRTZWxlY3RlZEhvc3RpbmdPcHRpb24oKTtcblxuICAgICAgICAvLyB0aGlzLkJ1aWxkUGlwZWxpbmUgPVxuICAgICAgICAvLyAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZSB8fCB0aGlzLkhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9uc1xuICAgICAgICAvLyAgICAgICAgICAgPyB0aGlzLkhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9uc1swXT8uTG9va3VwXG4gICAgICAgIC8vICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaG9zdGluZyBkZXRhaWxzOiBcIiwgdGhpcy5Ib3N0aW5nRGV0YWlscylcblxuICAgICAgICBmb3IgKGNvbnN0IGN0cmxOYW1lIGluIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5jb250cm9scykge1xuICAgICAgICAgICAgLy9kZXZPcHNBY3Rpb24gZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgLy9yZW1vdmVzIGhvc3RpbmcgZGV0YWlsc1xuICAgICAgICAgICAgaWYgKGN0cmxOYW1lICE9PSAnYnVpbGRQaXBlbGluZScgJiYgY3RybE5hbWUgIT09ICdkZXZPcHNBY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJyZW1vdmluZyBjb250cm9sOiBcIiwgY3RybE5hbWUpXG4gICAgICAgICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woY3RybE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnYnVpbGRQaXBlbGluZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5CdWlsZFBpcGVsaW5lIHx8ICcnLCBbXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnZGV2T3BzQWN0aW9uTmFtZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5EZXZPcHNBY3Rpb24/Lk5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb24/Lk5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJzZWxlY3RlZCBob3N0aW5nIG9wdGlvbnM6IFwiLCB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbj8uSW5wdXRzKTtcblxuICAgICAgICB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbj8uSW5wdXRzPy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGlucHV0LlJlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW107XG5cbiAgICAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgIGlucHV0Lkxvb2t1cCxcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQXJ0aWZhY3RbaW5wdXQuTG9va3VwXSB8fCBpbnB1dC5EZWZhdWx0VmFsdWUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBpZiAodGhpcy5EaXNhYmxlZCkge1xuICAgICAgICAgICAgLy8gICB0aGlzLkZvcm1Hcm91cC5jb250cm9sc1tpbnB1dC5Mb29rdXBdLmRpc2FibGUoKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Db250cm9sPy52YWx1ZSA9PT0gJ25wbS1yZWxlYXNlJykge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ25wbSByZWxlYXNlJyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cD8uY29udHJvbHM/Lm5wbVRva2VuKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ25wbSB0b2tlbiBpZicpO1xuICAgICAgICAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgICAgICAnbnBtVG9rZW4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRGlzYWJsZWQgPyBbXSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLkRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5jb250cm9scy5ucG1Ub2tlbi5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2w/LnZhbHVlID09PSAnZ2l0aHViLWFydGlmYWN0cy1yZWxlYXNlJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXA/LmNvbnRyb2xzPy5ucG1Ub2tlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCducG1Ub2tlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRQcm9qZWN0SG9zdGluZ0RldGFpbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMuTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYXBwc0Zsb3dTdmMuTG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxQcm9qZWN0SG9zdGluZ0RldGFpbHM+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5Ib3N0aW5nRGV0YWlscyA9IHJlc3BvbnNlLk1vZGVsO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZXNwb25zZTogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJyBEZXZPcHNBY3Rpb24uUGF0aDogJywgdGhpcy5EZXZPcHNBY3Rpb24uUGF0aCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBob3N0T3B0aW9uID0gdGhpcy5Ib3N0aW5nRGV0YWlscz8uSG9zdGluZ09wdGlvbnM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChobykgPT4gaG8uUGF0aCA9PT0gdGhpcy5EZXZPcHNBY3Rpb24uUGF0aFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmUgPSBob3N0T3B0aW9uPy5Mb29rdXA7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb24gPSBob3N0T3B0aW9uO1xuXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJCdWlsZCBQaXBlbGluZSBIRVJFPSBcIiwgdGhpcy5CdWlsZFBpcGVsaW5lKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBDb250cm9sc0ZvckZvcm0oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0VSUjogJywgZXJyKTtcbiAgICAgICAgICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzLkxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ0hPU1RJTkcgREVUQUlMUzogJywgdGhpcy5Ib3N0aW5nRGV0YWlscyk7XG4gICAgfVxufVxuIiwiPGZvcm1cbiAgICBjbGFzcz1cImZvcm0tY2FyZFwiXG4gICAgW2Zvcm1Hcm91cF09XCJCdWlsZFBpcGVsaW5lRm9ybUdyb3VwXCJcbiAgICAobmdTdWJtaXQpPVwiU3VibWl0QnVpbGRQaXBlbGluZSgpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSG9zdGluZ0RldGFpbHM/LkxvYWRpbmcgfHwgTG9hZGluZ1wiPlxuICAgICAgICA8c2tlbGV0b24tYmxvY2sgY2xhc3M9XCJzLWJsb2NrXCIgZWZmZWN0PVwid2F2ZVwiPjwvc2tlbGV0b24tYmxvY2s+XG5cbiAgICAgICAgPHNrZWxldG9uLWJsb2NrIGNsYXNzPVwicy1ibG9ja1wiIGVmZmVjdD1cIndhdmVcIj48L3NrZWxldG9uLWJsb2NrPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTZWxlY3RlZEhvc3RpbmdPcHRpb24/LklucHV0c1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBob3N0T3B0aW9uIG9mIEhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNrZWxldG9uLWJsb2NrIGNsYXNzPVwicy1ibG9ja1wiIGVmZmVjdD1cIndhdmVcIj48L3NrZWxldG9uLWJsb2NrPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxza2VsZXRvbi1ibG9jayAqbmdJZj1cIlwiIGNsYXNzPVwicy1ibG9ja1wiIGVmZmVjdD1cIndhdmVcIj48L3NrZWxldG9uLWJsb2NrPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFIb3N0aW5nRGV0YWlscz8uTG9hZGluZyAmJiAhTG9hZGluZ1wiPlxuICAgICAgICA8IS0tIDxkaXYgICpuZ0lmPVwiIUhvc3RpbmdEZXRhaWxzPy5Mb2FkaW5nXCI+IC0tPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJidWlsZFBpcGVsaW5lXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkJ1aWxkIFBpcGVsaW5lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiQnVpbGRQaXBlbGluZUNoYW5nZWQoKVwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhvc3RPcHRpb24gb2YgSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImhvc3RPcHRpb24uTG9va3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBob3N0T3B0aW9uLk5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuXG4gICAgICAgICAgICA8bWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaG9zdE9wdGlvbiBvZiBIb3N0aW5nRGV0YWlscz8uSG9zdGluZ09wdGlvbnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJCdWlsZFBpcGVsaW5lID09IGhvc3RPcHRpb24/Lkxvb2t1cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaG9zdE9wdGlvbi5EZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRldk9wc0FjdGlvbk5hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTmFtZSBvZiBEZXZPcHMgQWN0aW9uXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZD1cInRydWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBTZWxlY3RlZEhvc3RpbmdPcHRpb24/LklucHV0c1wiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpbnB1dC5Mb29rdXBcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaW5wdXQuUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaW5wdXQuUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWhpbnQ+e3sgaW5wdXQuSGludCB9fTwvbWF0LWhpbnQ+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiQnVpbGRQaXBlbGluZSA9PSAnbnBtLXJlbGVhc2UnXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aCB3aXRoLWhpbnQgcGFkZGluZy1ib3R0b20tNFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VjdXJpdHk8L21hdC1pY29uPlxuXG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGlkPVwibnBtLXRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJucG1Ub2tlblwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTlBNIHRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiLXdlYmtpdC10ZXh0LXNlY3VyaXR5OiBkaXNjXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxtYXQtaGludD5cbiAgICAgICAgICAgICAgICAgICAgU2VjdXJlbHkgcHVibGlzaCB0byBOUE0sIHByb3ZpZGUgYW4gTlBNIFBlcnNvbmFsIEFjY2Vzc1xuICAgICAgICAgICAgICAgICAgICBUb2tlbiAoUEFUKSB3aXRoIHB1Ymxpc2ggYWNjZXNzIHRvIHRoZSBvcmdhbml6YXRpb24gdXNlZCBmb3JcbiAgICAgICAgICAgICAgICAgICAgeW91ciBOUE0gcGFja2FnZXMuIExlYXJuIGhvdyB0byBjcmVhdGUgYW5kIHZpZXcgYWNjZXNzXG4gICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY3JlYXRpbmctYW5kLXZpZXdpbmctYWNjZXNzLXRva2Vuc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcmltYXJ5LWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBoZXJlLlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDwvZGl2PiAtLT5cblxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJIb3N0aW5nRGV0YWlscz8uTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwcmVhZFwiPlxuICAgICAgICAgICAgICA8bGN1LWxvYWRlciBzdHlsZT1cIm1hcmdpbjogYXV0b1wiIFtsb2FkaW5nXT1cInRydWVcIj48L2xjdS1sb2FkZXI+XG4gICAgICAgICAgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW4tM1wiPlxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1hdC10aXRsZVwiPkxvYWRpbmcgaG9zdGluZyBkZXRhaWxzPC9oND5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSA8L21hdC1jYXJkLWNvbnRlbnQ+IC0tPlxuXG4gICAgPCEtLSA8bWF0LWNhcmQtYWN0aW9ucyBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPiAtLT5cblxuICAgIDwhLS0gPGJ1dHRvbiBcbiAgICAgICAgICAqbmdJZj1cIiFMb2FkaW5nXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCIgXG4gICAgICAgICAgZnhGbGV4PVwiMTAwJVwiIFxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhQnVpbGRQaXBlbGluZUZvcm1Hcm91cC52YWxpZCB8fCAhQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5kaXJ0eVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj5cbiAgICAgICAgICBTYXZlIEJ1aWxkIFBpcGVsaW5lXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICA8IS0tIDxsY3UtbG9hZGVyIFtsb2FkaW5nXT1cIkxvYWRpbmdcIj48L2xjdS1sb2FkZXI+ICAgLS0+XG5cbiAgICA8IS0tIDwvbWF0LWNhcmQtYWN0aW9ucz4gLS0+XG4gICAgPCEtLSA8L21hdC1jYXJkPiAtLT5cbjwvZm9ybT5cbiJdfQ==
@@ -111,7 +111,7 @@ export class ProcessorDetailsFormComponent {
111
111
  if (!this.EditingApplication) {
112
112
  this.CreateNewApplication();
113
113
  }
114
- else {
114
+ else if (!this.ProcessorDetailsFormGroup) {
115
115
  this.SetupProcessorDetailsForm();
116
116
  }
117
117
  // else if (this.EditingApplication && !this.ProcessorDetailsFormGroup) {
@@ -279,14 +279,17 @@ export class ProcessorDetailsFormComponent {
279
279
  }
280
280
  listBuildPaths() {
281
281
  // this.Loading = true;
282
- console.log('Source Control: ', this.SourceControls[this.SourceControlFormControl.value]);
282
+ // console.log(
283
+ // 'Source Control: ',
284
+ // this.SourceControls[this.SourceControlFormControl.value]
285
+ // );
283
286
  this.appsFlowSvc
284
287
  .ListBuildPaths(this.SourceControls[this.SourceControlFormControl.value]
285
288
  ?.Organization, this.SourceControls[this.SourceControlFormControl.value]
286
289
  ?.Repository)
287
290
  .subscribe((response) => {
288
291
  this.BuildPathOptions = response.Model;
289
- console.log('build path options: ', this.BuildPathOptions);
292
+ // console.log('build path options: ', this.BuildPathOptions);
290
293
  // this.Loading = false;
291
294
  // if (this.BuildPathOptions?.length === 1) {
292
295
  // this.BuildPathFormControl.setValue(this.BuildPathOptions[0]);
@@ -295,6 +298,7 @@ export class ProcessorDetailsFormComponent {
295
298
  }
296
299
  setupLcuTypeSubForm() {
297
300
  this.cleanupLcuTypeSubForm();
301
+ // console.log('LCU Type: ', this.LCUType);
298
302
  if (this.LCUType) {
299
303
  switch (this.LCUType) {
300
304
  case 'API':
@@ -312,9 +316,9 @@ export class ProcessorDetailsFormComponent {
312
316
  case 'WordPress':
313
317
  this.setupLCUWordPressForm();
314
318
  break;
315
- // case 'NPM':
316
- // this.setupLCUNPMForm();
317
- // break;
319
+ case 'NPM':
320
+ this.setupLCUNPMForm();
321
+ break;
318
322
  case 'SPA':
319
323
  this.setupLCUSPAForm();
320
324
  break;
@@ -338,7 +342,7 @@ export class ProcessorDetailsFormComponent {
338
342
  }
339
343
  }
340
344
  setupLCUGitHubForm() {
341
- console.log('EditingApplication: ', this.EditingApplication);
345
+ // console.log('EditingApplication: ', this.EditingApplication);
342
346
  this.ProcessorDetailsFormGroup.addControl('sourceControl', this.formBldr.control(this.EditingApplication.LowCodeUnit?.SourceControlLookup || '', [Validators.required]));
343
347
  this.IsSourceControlValid = this.SourceControlFormControl.valid;
344
348
  this.ProcessorDetailsFormGroup.addControl('buildPath', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Path || '', [Validators.required]));
@@ -356,6 +360,9 @@ export class ProcessorDetailsFormComponent {
356
360
  this.ProcessorDetailsFormGroup.addControl('apiRoot', this.formBldr.control(this.EditingApplication.LowCodeUnit?.APIRoot || '', [Validators.required]));
357
361
  this.ProcessorDetailsFormGroup.addControl('security', this.formBldr.control(this.EditingApplication.LowCodeUnit?.Security || '', [Validators.required]));
358
362
  }
363
+ setupLCUNPMForm() {
364
+ this.ProcessorDetailsFormGroup.addControl('sourceControl', this.formBldr.control(this.EditingApplication.LowCodeUnit?.SourceControlLookup || '', [Validators.required]));
365
+ }
359
366
  setupLCUGitHubOAuthForm() {
360
367
  this.ProcessorDetailsFormGroup.addControl('clientId', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ClientID || '', [Validators.required]));
361
368
  this.ProcessorDetailsFormGroup.addControl('clientSecret', this.formBldr.control(this.EditingApplication.LowCodeUnit?.ClientSecret || '', [Validators.required]));
@@ -443,4 +450,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
443
450
  type: Output,
444
451
  args: ['save-form-event']
445
452
  }] } });
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLWRldGFpbHMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9jb250cm9scy9wcm9jZXNzb3ItZGV0YWlscy1mb3JtL3Byb2Nlc3Nvci1kZXRhaWxzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvcHJvY2Vzc29yLWRldGFpbHMtZm9ybS9wcm9jZXNzb3ItZGV0YWlscy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlILFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBdUIsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hELE9BQU8sRUFDSCxvQkFBb0IsR0FHdkIsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVk1QixNQUFNLE9BQU8sNkJBQTZCO0lBaUp0QyxZQUNjLFdBQW9DLEVBQ3BDLFFBQXFCLEVBQ3JCLE1BQWtCO1FBRmxCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFFNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUEvSEQsSUFBVyxrQkFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMseUJBQXlCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUM1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QUk1QixXQUFXO3NCQURqQixLQUFLO3VCQUFDLGFBQWE7Z0JBSWIsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBSWpCLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsYUFBYTtnQkFJYixvQkFBb0I7c0JBRDFCLEtBQUs7dUJBQUMsd0JBQXdCO2dCQUl4QixhQUFhO3NCQURuQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFJaEIsT0FBTztzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBSVQsYUFBYTtzQkFEbkIsTUFBTTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtR3JvdXAsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IEJhc2VNb2RlbGVkUmVzcG9uc2UsIEd1aWQgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEVhQ0FwcGxpY2F0aW9uQXNDb2RlLFxuICAgIEVhQ0Vudmlyb25tZW50QXNDb2RlLFxuICAgIEVhQ1NvdXJjZUNvbnRyb2wsXG59IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcGxpY2F0aW9ucy1mbG93LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBFYUNTZXJ2aWNlLFxuICAgIFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWFjLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xjdS1wcm9jZXNzb3ItZGV0YWlscy1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzc29yLWRldGFpbHMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzc29yLWRldGFpbHMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzb3JEZXRhaWxzRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdlZGl0aW5nLWFwcGxpY2F0aW9uJylcbiAgICBwdWJsaWMgRWRpdGluZ0FwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICAgIEBJbnB1dCgnZWRpdGluZy1hcHBsaWNhdGlvbi1sb29rdXAnKVxuICAgIHB1YmxpYyBFZGl0aW5nQXBwbGljYXRpb25Mb29rdXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgnZW52aXJvbm1lbnQnKVxuICAgIHB1YmxpYyBFbnZpcm9ubWVudDogRWFDRW52aXJvbm1lbnRBc0NvZGU7XG5cbiAgICBASW5wdXQoJ2hhcy1zYXZlLWJ1dHRvbicpXG4gICAgcHVibGljIEhhc1NhdmVCdXR0b246IGJvb2xlYW47XG5cbiAgICBASW5wdXQoJ2lzLWRpc2FibGVkJylcbiAgICBwdWJsaWMgSXNEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgnc291cmNlLWNvbnRyb2wtbG9va3VwcycpXG4gICAgcHVibGljIFNvdXJjZUNvbnRyb2xMb29rdXBzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgQElucHV0KCdwcm9qZWN0LWxvb2t1cCcpXG4gICAgcHVibGljIFByb2plY3RMb29rdXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgnbG9hZGluZycpXG4gICAgcHVibGljIExvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCdzYXZlLWZvcm0tZXZlbnQnKVxuICAgIHB1YmxpYyBTYXZlRm9ybUV2ZW50OiBFdmVudEVtaXR0ZXI8e30+O1xuXG4gICAgcHVibGljIGdldCBBUElSb290Rm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuYXBpUm9vdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IEJ1aWxkRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuYnVpbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBCdWlsZFBhdGhGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5idWlsZFBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBDbGllbnRJREZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLmNsaWVudElkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgQ2xpZW50U2VjcmV0Rm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuY2xpZW50U2VjcmV0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgRGVmYXVsdEZpbGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5kZWZhdWx0RmlsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IERlZmF1bHRTb3VyY2VDb250cm9sKCk6IEVhQ1NvdXJjZUNvbnRyb2wge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgT3JnYW5pemF0aW9uOiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG93Q29kZVVuaXQ/Lk9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIFJlcG9zaXRvcnk6IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uPy5Mb3dDb2RlVW5pdD8uUmVwb3NpdG9yeSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IEluYm91bmRQYXRoRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuaW5ib3VuZFBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBJbmNsdWRlUmVxdWVzdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLmluY2x1ZGVSZXF1ZXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgTWV0aG9kc0Zvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLm1ldGhvZHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBQYWNrYWdlRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMucGFja2FnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFBlcm1hbmVudEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnBlcm1hbmVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFByZXNlcnZlTWV0aG9kRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMucHJlc2VydmVNZXRob2Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBSZWRpcmVjdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnJlZGlyZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgU2NvcGVzRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuc2NvcGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgU2VjdXJpdHlGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5zZWN1cml0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5zb3VyY2VDb250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgU1BBUm9vdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnNwYVJvb3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBUb2tlbkxvb2t1cEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnRva2VuTG9va3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRGb3JtQ29udHJvbHMoKTogQXJyYXk8QWJzdHJhY3RDb250cm9sPiB7XG4gICAgICAgIGxldCB2ZmM6IEFycmF5PEFic3RyYWN0Q29udHJvbD4gPSBuZXcgQXJyYXk8QWJzdHJhY3RDb250cm9sPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIGluIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmdldChmaWVsZCk7XG4gICAgICAgICAgICBpZiAoY29udHJvbC52YWxpZCkge1xuICAgICAgICAgICAgICAgIHZmYy5wdXNoKGNvbnRyb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiVkZDPVwiLCB2ZmMpXG4gICAgICAgIHJldHVybiB2ZmM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWZXJzaW9uRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMudmVyc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFppcEZpbGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy56aXBGaWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBCdWlsZFBhdGhPcHRpb25zOiBzdHJpbmdbXTtcblxuICAgIHB1YmxpYyBJc1Blcm1hbmVudDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBJc1ByZXNlcnZlOiBib29sZWFuO1xuXG4gICAgcHVibGljIElzU291cmNlQ29udHJvbFZhbGlkOiBib29sZWFuO1xuXG4gICAgcHVibGljIExDVVR5cGU6IHN0cmluZztcblxuICAgIHB1YmxpYyByZWRpcmVjdFRvb2x0aXA6IHN0cmluZztcblxuICAgIHB1YmxpYyBTb3VyY2VDb250cm9sczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNTb3VyY2VDb250cm9sIH07XG5cbiAgICBwdWJsaWMgUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gICAgcHVibGljIFByb2Nlc3NvclR5cGU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgYXBwc0Zsb3dTdmM6IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZm9ybUJsZHI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcm90ZWN0ZWQgZWFjU3ZjOiBFYUNTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJyc7XG5cbiAgICAgICAgdGhpcy5IYXNTYXZlQnV0dG9uID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLlNhdmVGb3JtRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuRW52aXJvbm1lbnQ/LlNvdXJjZXMpIHtcbiAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbHMgPSB0aGlzLkVudmlyb25tZW50Py5Tb3VyY2VzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5FZGl0aW5nQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuQ3JlYXRlTmV3QXBwbGljYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuU2V0dXBQcm9jZXNzb3JEZXRhaWxzRm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVsc2UgaWYgKHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uICYmICF0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXApIHtcbiAgICAgICAgLy8gICAgIHRoaXMuU2V0dXBQcm9jZXNzb3JEZXRhaWxzRm9ybSgpO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgLy8gaWYgKHRoaXMuSXNEaXNhYmxlZCkge1xuICAgICAgICAvLyAgICAgdGhpcy5zZXR1cFByb2Nlc3NvckRldGFpbHNGb3JtKCk7XG4gICAgICAgIC8vICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmVuYWJsZSgpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgcHVibGljIENyZWF0ZU5ld0FwcGxpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlNldEVkaXRpbmdBcHBsaWNhdGlvbihHdWlkLkNyZWF0ZVJhdygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgRGV0ZXJtaW5lVG9vbHRpcFRleHQoKSB7XG4gICAgICAgIGxldCBwZXJtYW5lbnRWYWx1ZSA9IHRoaXMuUGVybWFuZW50Rm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgIGxldCBwcmVzZXJ2ZVZhbHVlID0gdGhpcy5QcmVzZXJ2ZU1ldGhvZEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgIGlmIChwZXJtYW5lbnRWYWx1ZSA9PT0gdHJ1ZSAmJiBwcmVzZXJ2ZVZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzAxIOKAkyBQZXJtYW5lbnQgYW5kIE5vdCBQcmVzZXJ2ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IGZhbHNlICYmIHByZXNlcnZlVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICczMDIg4oCTIE5vdCBQZXJtYW5lbnQgYW5kIE5vdCBQcmVzZXJ2ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IGZhbHNlICYmIHByZXNlcnZlVmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJzMwNyDigJMgTm90IFBlcm1hbmVudCBhbmQgUHJlc2VydmUnO1xuICAgICAgICB9IGVsc2UgaWYgKHBlcm1hbmVudFZhbHVlID09PSB0cnVlICYmIHByZXNlcnZlVmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJzMwOCDigJMgUGVybWFuZW50IGFuZCBQcmVzZXJ2ZSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgU2F2ZVByb2Nlc3NvckRldGFpbHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFwcDogRWFDQXBwbGljYXRpb25Bc0NvZGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbjtcbiAgICAgICAgYXBwLkxvb2t1cENvbmZpZy5BbGxvd2VkTWV0aG9kcyA9IHRoaXMuTWV0aG9kc0Zvcm1Db250cm9sPy52YWx1ZVxuICAgICAgICAgICAgPy5zcGxpdCgnICcpXG4gICAgICAgICAgICAuZmlsdGVyKCh2OiBzdHJpbmcpID0+ICEhdik7XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuVHlwZSA9IHRoaXMuUHJvY2Vzc29yVHlwZTtcblxuICAgICAgICBzd2l0Y2ggKGFwcC5Qcm9jZXNzb3IuVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnREZTJzpcbiAgICAgICAgICAgICAgICBhcHAuUHJvY2Vzc29yLkRlZmF1bHRGaWxlID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5EZWZhdWx0RmlsZUZvcm1Db250cm9sLnZhbHVlIHx8ICdpbmRleC5odG1sJztcblxuICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgVHlwZTogdGhpcy5MQ1VUeXBlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0dpdEh1Yic6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuT3JnYW5pemF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0/Lk9yZ2FuaXphdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlJlcG9zaXRvcnkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXT8uUmVwb3NpdG9yeTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LkJ1aWxkID0gdGhpcy5CdWlsZEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUGF0aCA9IHRoaXMuQnVpbGRQYXRoRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5Tb3VyY2VDb250cm9sTG9va3VwID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05QTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUGFja2FnZSA9IHRoaXMuUGFja2FnZUZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuVmVyc2lvbiA9IHRoaXMuVmVyc2lvbkZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnV29yZFByZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5BUElSb290ID0gdGhpcy5BUElSb290Rm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdaaXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlppcEZpbGUgPSB0aGlzLlppcEZpbGVGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnT0F1dGgnOlxuICAgICAgICAgICAgICAgIGFwcC5Qcm9jZXNzb3IuU2NvcGVzID0gdGhpcy5TY29wZXNGb3JtQ29udHJvbC52YWx1ZS5zcGxpdCgnICcpO1xuXG4gICAgICAgICAgICAgICAgYXBwLlByb2Nlc3Nvci5Ub2tlbkxvb2t1cCA9IHRoaXMuVG9rZW5Mb29rdXBGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgVHlwZTogdGhpcy5MQ1VUeXBlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0dpdEh1Yk9BdXRoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5DbGllbnRJRCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5DbGllbnRJREZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuQ2xpZW50U2VjcmV0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkNsaWVudFNlY3JldEZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdQcm94eSc6XG4gICAgICAgICAgICAgICAgYXBwLlByb2Nlc3Nvci5JbmJvdW5kUGF0aCA9IHRoaXMuSW5ib3VuZFBhdGhGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgVHlwZTogdGhpcy5MQ1VUeXBlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0FQSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuQVBJUm9vdCA9IHRoaXMuQVBJUm9vdEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuU2VjdXJpdHkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU2VjdXJpdHlGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnU1BBJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5TUEFSb290ID0gdGhpcy5TUEFSb290Rm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1JlZGlyZWN0JzpcbiAgICAgICAgICAgICAgICBhcHAuUHJvY2Vzc29yLkluY2x1ZGVSZXF1ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLkluY2x1ZGVSZXF1ZXN0Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBhcHAuUHJvY2Vzc29yLlBlcm1hbmVudCA9ICEhdGhpcy5QZXJtYW5lbnRGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGFwcC5Qcm9jZXNzb3IuUHJlc2VydmVNZXRob2QgPVxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuUHJlc2VydmVNZXRob2RGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGFwcC5Qcm9jZXNzb3IuUmVkaXJlY3QgPSB0aGlzLlJlZGlyZWN0Rm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFwcC5Mb29rdXBDb25maWcuUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgYXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXggPSBgLyR7YXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXh9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNhdmVBcHBSZXE6IFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdCA9IHtcbiAgICAgICAgICAgIFByb2plY3RMb29rdXA6IHRoaXMuUHJvamVjdExvb2t1cCxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uOiBhcHAsXG4gICAgICAgICAgICBBcHBsaWNhdGlvbkxvb2t1cDpcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbkxvb2t1cCB8fCBHdWlkLkNyZWF0ZVJhdygpLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZWFjU3ZjLlNhdmVBcHBsaWNhdGlvbkFzQ29kZShzYXZlQXBwUmVxKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuU2F2ZUZvcm1FdmVudC5lbWl0KHJlcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBTZXRFZGl0aW5nQXBwbGljYXRpb24oYXBwTG9va3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24gPSBuZXcgRWFDQXBwbGljYXRpb25Bc0NvZGUoKTtcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb25Mb29rdXAgPSBhcHBMb29rdXA7XG5cbiAgICAgICAgdGhpcy5TZXR1cFByb2Nlc3NvckRldGFpbHNGb3JtKCk7XG4gICAgfVxuXG4gICAgcHVibGljIFNvdXJjZUNvbnRyb2xDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5Jc1NvdXJjZUNvbnRyb2xWYWxpZCA9IHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbGlkO1xuICAgICAgICB0aGlzLmxpc3RCdWlsZFBhdGhzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIFByb2Nlc3NvclR5cGVDaGFuZ2VkKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICAgICAgdGhpcy5zZXR1cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk7XG4gICAgfVxuXG4gICAgcHVibGljIExDVVR5cGVDaGFuZ2VkKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5MQ1VUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICAgICAgdGhpcy5zZXR1cExjdVR5cGVTdWJGb3JtKCk7XG4gICAgfVxuXG4gICAgLy9IRUxQRVJTXG5cbiAgICBwcm90ZWN0ZWQgY2xlYW51cExjdVR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnbWV0aG9kcycpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnYXBpUm9vdCcpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnc2VjdXJpdHknKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnc3BhUm9vdCcpO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdhcHBsaWNhdGlvbklkJyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzb3VyY2VDb250cm9sJyk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2J1aWxkJyk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2NsaWVudElkJyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdjbGllbnRTZWNyZXQnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3BhY2thZ2UnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3ZlcnNpb24nKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnemlwRmlsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjbGVhbnVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdkZWZhdWx0RmlsZScpO1xuXG4gICAgICAgIC8vIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnZGZzTGN1VHlwZScpO1xuXG4gICAgICAgIC8vIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnb2F1dGhMY3VUeXBlJyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzY29wZXMnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Rva2VuTG9va3VwJyk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2luYm91bmRQYXRoJyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdwcm94eUxjdVR5cGUnKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnaW5jbHVkZVJlcXVlc3QnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3JlZGlyZWN0Jyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdwZXJtYW5lbnQnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3ByZXNlcnZlTWV0aG9kJyk7XG5cbiAgICAgICAgdGhpcy5jbGVhbnVwTGN1VHlwZVN1YkZvcm0oKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbGlzdEJ1aWxkUGF0aHMoKTogdm9pZCB7XG4gICAgICAgIC8vIHRoaXMuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAnU291cmNlIENvbnRyb2w6ICcsXG4gICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xzW3RoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbHVlXVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYXBwc0Zsb3dTdmNcbiAgICAgICAgICAgIC5MaXN0QnVpbGRQYXRocyhcbiAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xzW3RoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbHVlXVxuICAgICAgICAgICAgICAgICAgICA/Lk9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xzW3RoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbHVlXVxuICAgICAgICAgICAgICAgICAgICA/LlJlcG9zaXRvcnlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCYXNlTW9kZWxlZFJlc3BvbnNlPHN0cmluZ1tdPikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuQnVpbGRQYXRoT3B0aW9ucyA9IHJlc3BvbnNlLk1vZGVsO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdidWlsZCBwYXRoIG9wdGlvbnM6ICcsIHRoaXMuQnVpbGRQYXRoT3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICAvLyB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLkJ1aWxkUGF0aE9wdGlvbnM/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5CdWlsZFBhdGhGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLkJ1aWxkUGF0aE9wdGlvbnNbMF0pO1xuICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cExjdVR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFudXBMY3VUeXBlU3ViRm9ybSgpO1xuXG4gICAgICAgIGlmICh0aGlzLkxDVVR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5MQ1VUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQVBJJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cExDVUFQSUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdBcHBsaWNhdGlvblBvaW50ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwTENVQXBwbGljYXRpb25Qb2ludGVyRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ0dpdEh1Yic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBMQ1VHaXRIdWJGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnR2l0SHViT0F1dGgnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwTENVR2l0SHViT0F1dGhGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnV29yZFByZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cExDVVdvcmRQcmVzc0Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAvLyBjYXNlICdOUE0nOlxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5zZXR1cExDVU5QTUZvcm0oKTtcbiAgICAgICAgICAgICAgICAvLyAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnU1BBJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cExDVVNQQUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdaaXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwTENVWmlwRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBTZXR1cFByb2Nlc3NvckRldGFpbHNGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvclR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uUHJvY2Vzc29yPy5UeXBlIHx8ICcnO1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdFRElUSU5HIEFQUCA9ICcsIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwO1xuICAgICAgICBpZiAodGhpcy5FZGl0aW5nQXBwbGljYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwID0gdGhpcy5mb3JtQmxkci5ncm91cCh7XG4gICAgICAgICAgICAgICAgcHJvY1R5cGU6IFt0aGlzLlByb2Nlc3NvclR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHRoaXMuc2V0dXBEZnNGb3JtKCk7XG5cbiAgICAgICAgICAgIC8vIHRoaXMuc2V0dXBMY3VUeXBlU3ViRm9ybSgpO1xuICAgICAgICAgICAgdGhpcy5zZXR1cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VHaXRIdWJGb3JtKCk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZygnRWRpdGluZ0FwcGxpY2F0aW9uOiAnLCB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbik7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnc291cmNlQ29udHJvbCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlNvdXJjZUNvbnRyb2xMb29rdXAgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Jc1NvdXJjZUNvbnRyb2xWYWxpZCA9IHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbGlkO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2J1aWxkUGF0aCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlBhdGggfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnYnVpbGQnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5CdWlsZCB8fCAnbGF0ZXN0JyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmxpc3RCdWlsZFBhdGhzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwTENVQXBwbGljYXRpb25Qb2ludGVyRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnYXBwbGljYXRpb25JZCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkFwcGxpY2F0aW9uSUQgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwTENVU1BBRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnc3BhUm9vdCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlNQQVJvb3QgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwTENVQVBJRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnbWV0aG9kcycsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG9va3VwQ29uZmlnPy5BbGxvd2VkTWV0aG9kcz8uam9pbihcbiAgICAgICAgICAgICAgICAgICAgJyAnXG4gICAgICAgICAgICAgICAgKSB8fCAnJyxcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2FwaVJvb3QnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5BUElSb290IHx8ICcnLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ3NlY3VyaXR5JyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU2VjdXJpdHkgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwTENVR2l0SHViT0F1dGhGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdjbGllbnRJZCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkNsaWVudElEIHx8ICcnLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2NsaWVudFNlY3JldCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkNsaWVudFNlY3JldCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VXb3JkUHJlc3NGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdhcGlSb290JyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uQVBJUm9vdCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBQcm94eUZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuTENVVHlwZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5UeXBlIHx8ICcnO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2luYm91bmRQYXRoJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LkluYm91bmRQYXRoIHx8ICcnLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2xjdVR5cGUnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cFJlZGlyZWN0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAncmVkaXJlY3QnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uUmVkaXJlY3QgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAncGVybWFuZW50JyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LlBlcm1hbmVudCB8fCBmYWxzZSxcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ3ByZXNlcnZlTWV0aG9kJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LlByZXNlcnZlTWV0aG9kIHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnaW5jbHVkZVJlcXVlc3QnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uSW5jbHVkZVJlcXVlc3QgfHwgZmFsc2UsXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLkRldGVybWluZVRvb2x0aXBUZXh0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwT0F1dGhGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLkxDVVR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uVHlwZSB8fCAnJztcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdzY29wZXMnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uU2NvcGVzPy5Kb2luKCcgJykgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAndG9rZW5Mb29rdXAnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uVG9rZW5Mb29rdXAgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnbGN1VHlwZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5MQ1VUeXBlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwTENVWmlwRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnemlwRmlsZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlppcEZpbGUgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwRGZzRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5MQ1VUeXBlID0gdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlR5cGUgfHwgJyc7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnZGVmYXVsdEZpbGUnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uRGVmYXVsdEZpbGUgfHwgJ2luZGV4Lmh0bWwnLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2xjdVR5cGUnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFudXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpO1xuXG4gICAgICAgIGlmICh0aGlzLlByb2Nlc3NvclR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5Qcm9jZXNzb3JUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnREZTJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cERmc0Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdPQXV0aCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBPQXV0aEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdQcm94eSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBQcm94eUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdSZWRpcmVjdCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBSZWRpcmVjdEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldHVwTGN1VHlwZVN1YkZvcm0oKTtcbiAgICB9XG59XG4iLCI8Zm9ybVxuICAgIGNsYXNzPVwicHJvY2Vzc29yLWRldGFpbHMtZm9ybVwiXG4gICAgW2Zvcm1Hcm91cF09XCJQcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwXCJcbiAgICAobmdTdWJtaXQpPVwiU2F2ZVByb2Nlc3NvckRldGFpbHMoKVwiXG4+XG4gICAgPCEtLSA8bWF0LWNhcmQgY2xhc3M9XCJzcHJlYWQgZmxvdy1jYXJkXCI+IC0tPlxuICAgIDwhLS0gPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgIDxtYXQtY2FyZC10aXRsZT4gUHJvY2Vzc29yIERldGFpbHMgPC9tYXQtY2FyZC10aXRsZT5cbiAgICA8L21hdC1jYXJkLWhlYWRlcj4gLS0+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTG9hZGluZ1wiPlxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZjIG9mIFZhbGlkRm9ybUNvbnRyb2xzXCI+IC0tPlxuICAgICAgICA8c2tlbGV0b24tYmxvY2tcbiAgICAgICAgICAgIFtpZF09XCJmY1wiXG4gICAgICAgICAgICBjbGFzcz1cInMtYmxvY2tcIlxuICAgICAgICAgICAgZWZmZWN0PVwid2F2ZVwiXG4gICAgICAgID48L3NrZWxldG9uLWJsb2NrPlxuICAgICAgICA8c2tlbGV0b24tYmxvY2tcbiAgICAgICAgICAgIFtpZF09XCJmY1wiXG4gICAgICAgICAgICBjbGFzcz1cInMtYmxvY2tcIlxuICAgICAgICAgICAgZWZmZWN0PVwid2F2ZVwiXG4gICAgICAgID48L3NrZWxldG9uLWJsb2NrPlxuICAgICAgICA8c2tlbGV0b24tYmxvY2tcbiAgICAgICAgICAgIFtpZF09XCJmY1wiXG4gICAgICAgICAgICBjbGFzcz1cInMtYmxvY2tcIlxuICAgICAgICAgICAgZWZmZWN0PVwid2F2ZVwiXG4gICAgICAgID48L3NrZWxldG9uLWJsb2NrPlxuICAgICAgICA8c2tlbGV0b24tYmxvY2tcbiAgICAgICAgICAgIFtpZF09XCJmY1wiXG4gICAgICAgICAgICBjbGFzcz1cInMtYmxvY2tcIlxuICAgICAgICAgICAgZWZmZWN0PVwid2F2ZVwiXG4gICAgICAgID48L3NrZWxldG9uLWJsb2NrPlxuICAgICAgICA8IS0tIDwvbmctY29udGFpbmVyPiAtLT5cblxuICAgICAgICA8bGN1LWxvYWRlclxuICAgICAgICAgICAgKm5nSWY9XCJMQ1VUeXBlID09PSAnUmVkaXJlY3QnXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIkxvYWRpbmdcIlxuICAgICAgICA+PC9sY3UtbG9hZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gRU5EIFNLRUxFVE9OIC0tPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFMb2FkaW5nXCI+XG4gICAgICAgIDwhLS0gPG1hdC1jYXJkLWNvbnRlbnQ+IC0tPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGVcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2NUeXBlXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIlByb2Nlc3NvclR5cGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJERlNcIj5WaWV3IFBhY2thZ2U8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlJlZGlyZWN0XCI+UmVkaXJlY3Q8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlByb3h5XCI+UHJveHk8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIk9BdXRoXCI+T0F1dGg8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiUHJvY2Vzc29yVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0RGUydcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkRlZmF1bHQgRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0RmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxjdVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJMQ1VUeXBlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiTlBNXCI+TlBNPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkdpdEh1YlwiPkdpdEh1YjwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJXb3JkUHJlc3NcIj5Xb3JkUHJlc3M8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiWmlwXCI+WmlwPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgIDxkaXYgW25nU3dpdGNoXT1cIkxDVVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0dpdEh1YidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxjdS1zb3VyY2UtY29udHJvbC1mb3JtLWNvbnRyb2xzXG4gICAgICAgICAgICAgICAgW2J1aWxkLXBhdGhdPVwiRWRpdGluZ0FwcGxpY2F0aW9uPy5Mb3dDb2RlVW5pdD8uUGF0aFwiXG4gICAgICAgICAgICAgICAgW2Zvcm0tZ3JvdXBdPVwiUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgW3NvdXJjZS1jb250cm9sXT1cIkRlZmF1bHRTb3VyY2VDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbdXNlLWJyYW5jaGVzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbdXNlLWJ1aWxkLXBhdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L2xjdS1zb3VyY2UtY29udHJvbC1mb3JtLWNvbnRyb2xzPiAtLT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNvdXJjZSBDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic291cmNlQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiU291cmNlQ29udHJvbENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjTG9va3VwIG9mIFNvdXJjZUNvbnRyb2xMb29rdXBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNjTG9va3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2NMb29rdXAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1vcHRpb24gdmFsdWU9XCJaaXBcIj5aaXA8L21hdC1vcHRpb24+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGggd2l0aC1oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIklzU291cmNlQ29udHJvbFZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJidWlsZFBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkJ1aWxkIFBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1aWxkUGF0aCBvZiBCdWlsZFBhdGhPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImJ1aWxkUGF0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGJ1aWxkUGF0aCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBwYXRoIGlkZW50aWZpZXMgd2hpY2ggYnVpbGQgYWN0aW9uIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBmb3IgeW91ciBjb25maWd1cmF0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIklzU291cmNlQ29udHJvbFZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJCdWlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1aWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IEJ1aWxkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdGluZ0FwcGxpY2F0aW9uPy5Mb3dDb2RlVW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uQ3VycmVudEJ1aWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidOUE0nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU291cmNlIENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzb3VyY2VDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJTb3VyY2VDb250cm9sQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NMb29rdXAgb2YgU291cmNlQ29udHJvbExvb2t1cHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2NMb29rdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzY0xvb2t1cCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsY3UtbnBtLXBhY2thZ2Utc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25wbS1wYWNrYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0aW5nQXBwbGljYXRpb24/Lkxvd0NvZGVVbml0Py5QYWNrYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnBtLXBhY2thZ2UtdmVyc2lvbl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdGluZ0FwcGxpY2F0aW9uPy5Mb3dDb2RlVW5pdD8uVmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm0tZ3JvdXBdPVwiUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9sY3UtbnBtLXBhY2thZ2Utc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBWZXJzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRpbmdBcHBsaWNhdGlvbj8uTG93Q29kZVVuaXQ/LkN1cnJlbnRWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidXb3JkUHJlc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFQSSBSb290XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXBpUm9vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidaaXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlppcCBGaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiemlwRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidPQXV0aCdcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNjb3BlcyAoc3BhY2Ugc2VwYXJhdGVkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzY29wZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUb2tlbiBMb29rdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidG9rZW5Mb29rdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsY3VUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiTENVVHlwZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkdpdEh1Yk9BdXRoXCI+R2l0SHViPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgIDxkaXYgW25nU3dpdGNoXT1cIkxDVVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0dpdEh1Yk9BdXRoJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDbGllbnQgSURcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjbGllbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ2xpZW50IFNlY3JldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNsaWVudFNlY3JldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidQcm94eSdcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkluYm91bmQgUGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbmJvdW5kUGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxjdVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJMQ1VUeXBlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiQVBJXCI+QVBJPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlNQQVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlNpbmdsZSBQYWdlIEFwcGxpY2F0aW9uPC9tYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiTENVVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInQVBJJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBUEkgUm9vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFwaVJvb3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFsbG93ZWQgTWV0aG9kcyAoc2VwYXJhdGUgd2l0aCBzcGFjZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWV0aG9kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VjdXJpdHkgKHtoZWFkZXJ9fnt2YWx1ZX0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VjdXJpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInU1BBJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTUEEgUm9vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNwYVJvb3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInUmVkaXJlY3QnXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJSZWRpcmVjdCBVUkxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVkaXJlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ByZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBlcm1hbmVudFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIElzIFBlcm1hbmVudD9cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwcmVhZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmVzZXJ2ZU1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIFByZXNlcnZlIE1ldGhvZD9cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcHJlYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJEZXRlcm1pbmVUb29sdGlwVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyByZWRpcmVjdFRvb2x0aXAgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvX291dGxpbmVcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwcmVhZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbmNsdWRlUmVxdWVzdFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgUGF0aCBhbmQgUXVlcnk/XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ByZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlNob3VsZCB0aGUgcmVkaXJlY3QgaW5jbHVkZSB0aGUgcGF0aCBhbmQgcXVlcnk/XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19vdXRsaW5lXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPC9tYXQtY2FyZC1jb250ZW50PiAtLT5cbiAgICAgICAgPCEtLSA8bWF0LWNhcmQtYWN0aW9ucyBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPiAtLT5cblxuICAgICAgICA8IS0tIDxidXR0b24gXG4gICAgICAgICAgKm5nSWY9XCJIYXNTYXZlQnV0dG9uICYmICFMb2FkaW5nXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCIgXG4gICAgICAgICAgZnhGbGV4PVwiMTAwJVwiIFxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC52YWxpZCB8fCAhUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5kaXJ0eVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj5cbiAgICAgICAgICBTYXZlIFByb2Nlc3NvciBEZXRhaWxzXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgPCEtLSA8bGN1LWxvYWRlciAqbmdJZj1cIkhhc1NhdmVCdXR0b25cIiBbbG9hZGluZ109XCJMb2FkaW5nXCI+PC9sY3UtbG9hZGVyPiAtLT5cblxuICAgICAgICA8IS0tIDwvbWF0LWNhcmQtYWN0aW9ucz4gLS0+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIDwvbWF0LWNhcmQ+IC0tPlxuPC9mb3JtPlxuIl19
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc29yLWRldGFpbHMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9jb250cm9scy9wcm9jZXNzb3ItZGV0YWlscy1mb3JtL3Byb2Nlc3Nvci1kZXRhaWxzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvcHJvY2Vzc29yLWRldGFpbHMtZm9ybS9wcm9jZXNzb3ItZGV0YWlscy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUlILFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBdUIsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hELE9BQU8sRUFDSCxvQkFBb0IsR0FHdkIsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVk1QixNQUFNLE9BQU8sNkJBQTZCO0lBaUp0QyxZQUNjLFdBQW9DLEVBQ3BDLFFBQXFCLEVBQ3JCLE1BQWtCO1FBRmxCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFFNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUEvSEQsSUFBVyxrQkFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMseUJBQXlCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUM1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O2tCQUx6QyxTQUFTOytCQUNJLDRCQUE0QjtpS0FNL0Isa0JBQWtCO3NCQUR4QixLQUFLO3VCQUFDLHFCQUFxQjtnQkFJckIsd0JBQXdCO3NCQUQ5QixLQUFLO3VCQUFDLDRCQUE0QjtnQkFJNUIsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxhQUFhO2dCQUliLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUlqQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLGFBQWE7Z0JBSWIsb0JBQW9CO3NCQUQxQixLQUFLO3VCQUFDLHdCQUF3QjtnQkFJeEIsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBSWhCLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxTQUFTO2dCQUlULGFBQWE7c0JBRG5CLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUdyb3VwLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBCYXNlTW9kZWxlZFJlc3BvbnNlLCBHdWlkIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgICBFYUNFbnZpcm9ubWVudEFzQ29kZSxcbiAgICBFYUNTb3VyY2VDb250cm9sLFxufSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25zRmxvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbnMtZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgRWFDU2VydmljZSxcbiAgICBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3QsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsY3UtcHJvY2Vzc29yLWRldGFpbHMtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3Nvci1kZXRhaWxzLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3Nvci1kZXRhaWxzLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc29yRGV0YWlsc0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgnZWRpdGluZy1hcHBsaWNhdGlvbicpXG4gICAgcHVibGljIEVkaXRpbmdBcHBsaWNhdGlvbjogRWFDQXBwbGljYXRpb25Bc0NvZGU7XG5cbiAgICBASW5wdXQoJ2VkaXRpbmctYXBwbGljYXRpb24tbG9va3VwJylcbiAgICBwdWJsaWMgRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ2Vudmlyb25tZW50JylcbiAgICBwdWJsaWMgRW52aXJvbm1lbnQ6IEVhQ0Vudmlyb25tZW50QXNDb2RlO1xuXG4gICAgQElucHV0KCdoYXMtc2F2ZS1idXR0b24nKVxuICAgIHB1YmxpYyBIYXNTYXZlQnV0dG9uOiBib29sZWFuO1xuXG4gICAgQElucHV0KCdpcy1kaXNhYmxlZCcpXG4gICAgcHVibGljIElzRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoJ3NvdXJjZS1jb250cm9sLWxvb2t1cHMnKVxuICAgIHB1YmxpYyBTb3VyY2VDb250cm9sTG9va3VwczogQXJyYXk8c3RyaW5nPjtcblxuICAgIEBJbnB1dCgncHJvamVjdC1sb29rdXAnKVxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ2xvYWRpbmcnKVxuICAgIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgnc2F2ZS1mb3JtLWV2ZW50JylcbiAgICBwdWJsaWMgU2F2ZUZvcm1FdmVudDogRXZlbnRFbWl0dGVyPHt9PjtcblxuICAgIHB1YmxpYyBnZXQgQVBJUm9vdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLmFwaVJvb3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBCdWlsZEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLmJ1aWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgQnVpbGRQYXRoRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuYnVpbGRQYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgQ2xpZW50SURGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5jbGllbnRJZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IENsaWVudFNlY3JldEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLmNsaWVudFNlY3JldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IERlZmF1bHRGaWxlRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuZGVmYXVsdEZpbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBEZWZhdWx0U291cmNlQ29udHJvbCgpOiBFYUNTb3VyY2VDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIE9yZ2FuaXphdGlvbjogdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/Lkxvd0NvZGVVbml0Py5Pcmdhbml6YXRpb24sXG4gICAgICAgICAgICBSZXBvc2l0b3J5OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG93Q29kZVVuaXQ/LlJlcG9zaXRvcnksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBJbmJvdW5kUGF0aEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLmluYm91bmRQYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgSW5jbHVkZVJlcXVlc3RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5pbmNsdWRlUmVxdWVzdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IE1ldGhvZHNGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5tZXRob2RzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgUGFja2FnZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnBhY2thZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBQZXJtYW5lbnRGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5wZXJtYW5lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBQcmVzZXJ2ZU1ldGhvZEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnByZXNlcnZlTWV0aG9kO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgUmVkaXJlY3RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5yZWRpcmVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFNjb3Blc0Zvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnNjb3BlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFNlY3VyaXR5Rm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuc2VjdXJpdHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBTb3VyY2VDb250cm9sRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuc291cmNlQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFNQQVJvb3RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy5zcGFSb290O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVG9rZW5Mb29rdXBGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5jb250cm9scy50b2tlbkxvb2t1cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkRm9ybUNvbnRyb2xzKCk6IEFycmF5PEFic3RyYWN0Q29udHJvbD4ge1xuICAgICAgICBsZXQgdmZjOiBBcnJheTxBYnN0cmFjdENvbnRyb2w+ID0gbmV3IEFycmF5PEFic3RyYWN0Q29udHJvbD4oKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBpbiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwPy5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsaWQpIHtcbiAgICAgICAgICAgICAgICB2ZmMucHVzaChjb250cm9sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlZGQz1cIiwgdmZjKVxuICAgICAgICByZXR1cm4gdmZjO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmVyc2lvbkZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA/LmNvbnRyb2xzLnZlcnNpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBaaXBGaWxlRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cD8uY29udHJvbHMuemlwRmlsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgQnVpbGRQYXRoT3B0aW9uczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgSXNQZXJtYW5lbnQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgSXNQcmVzZXJ2ZTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBJc1NvdXJjZUNvbnRyb2xWYWxpZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBMQ1VUeXBlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgcmVkaXJlY3RUb29sdGlwOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgU291cmNlQ29udHJvbHM6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDU291cmNlQ29udHJvbCB9O1xuXG4gICAgcHVibGljIFByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAgIHB1YmxpYyBQcm9jZXNzb3JUeXBlOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGFwcHNGbG93U3ZjOiBBcHBsaWNhdGlvbnNGbG93U2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGZvcm1CbGRyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICcnO1xuXG4gICAgICAgIHRoaXMuSGFzU2F2ZUJ1dHRvbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5TYXZlRm9ybUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLkVudmlyb25tZW50Py5Tb3VyY2VzKSB7XG4gICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xzID0gdGhpcy5FbnZpcm9ubWVudD8uU291cmNlcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLkNyZWF0ZU5ld0FwcGxpY2F0aW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cCkge1xuICAgICAgICAgICAgdGhpcy5TZXR1cFByb2Nlc3NvckRldGFpbHNGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZWxzZSBpZiAodGhpcy5FZGl0aW5nQXBwbGljYXRpb24gJiYgIXRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cCkge1xuICAgICAgICAvLyAgICAgdGhpcy5TZXR1cFByb2Nlc3NvckRldGFpbHNGb3JtKCk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBpZiAodGhpcy5Jc0Rpc2FibGVkKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnNldHVwUHJvY2Vzc29yRGV0YWlsc0Zvcm0oKTtcbiAgICAgICAgLy8gICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5kaXNhYmxlKCk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuZW5hYmxlKCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgQ3JlYXRlTmV3QXBwbGljYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuU2V0RWRpdGluZ0FwcGxpY2F0aW9uKEd1aWQuQ3JlYXRlUmF3KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBEZXRlcm1pbmVUb29sdGlwVGV4dCgpIHtcbiAgICAgICAgbGV0IHBlcm1hbmVudFZhbHVlID0gdGhpcy5QZXJtYW5lbnRGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgbGV0IHByZXNlcnZlVmFsdWUgPSB0aGlzLlByZXNlcnZlTWV0aG9kRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKHBlcm1hbmVudFZhbHVlID09PSB0cnVlICYmIHByZXNlcnZlVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICczMDEg4oCTIFBlcm1hbmVudCBhbmQgTm90IFByZXNlcnZlJztcbiAgICAgICAgfSBlbHNlIGlmIChwZXJtYW5lbnRWYWx1ZSA9PT0gZmFsc2UgJiYgcHJlc2VydmVWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJzMwMiDigJMgTm90IFBlcm1hbmVudCBhbmQgTm90IFByZXNlcnZlJztcbiAgICAgICAgfSBlbHNlIGlmIChwZXJtYW5lbnRWYWx1ZSA9PT0gZmFsc2UgJiYgcHJlc2VydmVWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzA3IOKAkyBOb3QgUGVybWFuZW50IGFuZCBQcmVzZXJ2ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IHRydWUgJiYgcHJlc2VydmVWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzA4IOKAkyBQZXJtYW5lbnQgYW5kIFByZXNlcnZlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBTYXZlUHJvY2Vzc29yRGV0YWlscygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXBwOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uO1xuICAgICAgICBhcHAuTG9va3VwQ29uZmlnLkFsbG93ZWRNZXRob2RzID0gdGhpcy5NZXRob2RzRm9ybUNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAgIC5maWx0ZXIoKHY6IHN0cmluZykgPT4gISF2KTtcbiAgICAgICAgYXBwLlByb2Nlc3Nvci5UeXBlID0gdGhpcy5Qcm9jZXNzb3JUeXBlO1xuXG4gICAgICAgIHN3aXRjaCAoYXBwLlByb2Nlc3Nvci5UeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdERlMnOlxuICAgICAgICAgICAgICAgIGFwcC5Qcm9jZXNzb3IuRGVmYXVsdEZpbGUgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkRlZmF1bHRGaWxlRm9ybUNvbnRyb2wudmFsdWUgfHwgJ2luZGV4Lmh0bWwnO1xuXG4gICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgICAgICAgICAgICBUeXBlOiB0aGlzLkxDVVR5cGUsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoYXBwLkxvd0NvZGVVbml0LlR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnR2l0SHViJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5Pcmdhbml6YXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXT8uT3JnYW5pemF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUmVwb3NpdG9yeSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2wudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdPy5SZXBvc2l0b3J5O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuQnVpbGQgPSB0aGlzLkJ1aWxkRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5QYXRoID0gdGhpcy5CdWlsZFBhdGhGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlNvdXJjZUNvbnRyb2xMb29rdXAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTlBNJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5QYWNrYWdlID0gdGhpcy5QYWNrYWdlRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5WZXJzaW9uID0gdGhpcy5WZXJzaW9uRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdXb3JkUHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LkFQSVJvb3QgPSB0aGlzLkFQSVJvb3RGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1ppcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuWmlwRmlsZSA9IHRoaXMuWmlwRmlsZUZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdPQXV0aCc6XG4gICAgICAgICAgICAgICAgYXBwLlByb2Nlc3Nvci5TY29wZXMgPSB0aGlzLlNjb3Blc0Zvcm1Db250cm9sLnZhbHVlLnNwbGl0KCcgJyk7XG5cbiAgICAgICAgICAgICAgICBhcHAuUHJvY2Vzc29yLlRva2VuTG9va3VwID0gdGhpcy5Ub2tlbkxvb2t1cEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgICAgICAgICAgICBUeXBlOiB0aGlzLkxDVVR5cGUsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoYXBwLkxvd0NvZGVVbml0LlR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnR2l0SHViT0F1dGgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LkNsaWVudElEID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkNsaWVudElERm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5DbGllbnRTZWNyZXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ2xpZW50U2VjcmV0Rm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1Byb3h5JzpcbiAgICAgICAgICAgICAgICBhcHAuUHJvY2Vzc29yLkluYm91bmRQYXRoID0gdGhpcy5JbmJvdW5kUGF0aEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgICAgICAgICAgICBUeXBlOiB0aGlzLkxDVVR5cGUsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoYXBwLkxvd0NvZGVVbml0LlR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQVBJJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5BUElSb290ID0gdGhpcy5BUElSb290Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5TZWN1cml0eSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5TZWN1cml0eUZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdTUEEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlNQQVJvb3QgPSB0aGlzLlNQQVJvb3RGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnUmVkaXJlY3QnOlxuICAgICAgICAgICAgICAgIGFwcC5Qcm9jZXNzb3IuSW5jbHVkZVJlcXVlc3QgPVxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuSW5jbHVkZVJlcXVlc3RGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGFwcC5Qcm9jZXNzb3IuUGVybWFuZW50ID0gISF0aGlzLlBlcm1hbmVudEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgYXBwLlByb2Nlc3Nvci5QcmVzZXJ2ZU1ldGhvZCA9XG4gICAgICAgICAgICAgICAgICAgICEhdGhpcy5QcmVzZXJ2ZU1ldGhvZEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgYXBwLlByb2Nlc3Nvci5SZWRpcmVjdCA9IHRoaXMuUmVkaXJlY3RGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICBhcHAuTG9va3VwQ29uZmlnLlBhdGhSZWdleCA9IGAvJHthcHAuTG9va3VwQ29uZmlnLlBhdGhSZWdleH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2F2ZUFwcFJlcTogU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgUHJvamVjdExvb2t1cDogdGhpcy5Qcm9qZWN0TG9va3VwLFxuICAgICAgICAgICAgQXBwbGljYXRpb246IGFwcCxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uTG9va3VwOlxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwIHx8IEd1aWQuQ3JlYXRlUmF3KCksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5lYWNTdmMuU2F2ZUFwcGxpY2F0aW9uQXNDb2RlKHNhdmVBcHBSZXEpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5TYXZlRm9ybUV2ZW50LmVtaXQocmVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIFNldEVkaXRpbmdBcHBsaWNhdGlvbihhcHBMb29rdXA6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbiA9IG5ldyBFYUNBcHBsaWNhdGlvbkFzQ29kZSgpO1xuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbkxvb2t1cCA9IGFwcExvb2t1cDtcblxuICAgICAgICB0aGlzLlNldHVwUHJvY2Vzc29yRGV0YWlsc0Zvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgU291cmNlQ29udHJvbENoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLklzU291cmNlQ29udHJvbFZhbGlkID0gdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2wudmFsaWQ7XG4gICAgICAgIHRoaXMubGlzdEJ1aWxkUGF0aHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgUHJvY2Vzc29yVHlwZUNoYW5nZWQoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvclR5cGUgPSBldmVudC52YWx1ZTtcblxuICAgICAgICB0aGlzLnNldHVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgTENVVHlwZUNoYW5nZWQoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IHZvaWQge1xuICAgICAgICB0aGlzLkxDVVR5cGUgPSBldmVudC52YWx1ZTtcblxuICAgICAgICB0aGlzLnNldHVwTGN1VHlwZVN1YkZvcm0oKTtcbiAgICB9XG5cbiAgICAvL0hFTFBFUlNcblxuICAgIHByb3RlY3RlZCBjbGVhbnVwTGN1VHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdtZXRob2RzJyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdhcGlSb290Jyk7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzZWN1cml0eScpO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzcGFSb290Jyk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2FwcGxpY2F0aW9uSWQnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3NvdXJjZUNvbnRyb2wnKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnYnVpbGQnKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnY2xpZW50SWQnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2NsaWVudFNlY3JldCcpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncGFja2FnZScpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgndmVyc2lvbicpO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCd6aXBGaWxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsZWFudXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2RlZmF1bHRGaWxlJyk7XG5cbiAgICAgICAgLy8gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdkZnNMY3VUeXBlJyk7XG5cbiAgICAgICAgLy8gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdvYXV0aExjdVR5cGUnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Njb3BlcycpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgndG9rZW5Mb29rdXAnKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnaW5ib3VuZFBhdGgnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Byb3h5TGN1VHlwZScpO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdpbmNsdWRlUmVxdWVzdCcpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncmVkaXJlY3QnKTtcbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Blcm1hbmVudCcpO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncHJlc2VydmVNZXRob2QnKTtcblxuICAgICAgICB0aGlzLmNsZWFudXBMY3VUeXBlU3ViRm9ybSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsaXN0QnVpbGRQYXRocygpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgLy8gICAgICdTb3VyY2UgQ29udHJvbDogJyxcbiAgICAgICAgLy8gICAgIHRoaXMuU291cmNlQ29udHJvbHNbdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2wudmFsdWVdXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgdGhpcy5hcHBzRmxvd1N2Y1xuICAgICAgICAgICAgLkxpc3RCdWlsZFBhdGhzKFxuICAgICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbHNbdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2wudmFsdWVdXG4gICAgICAgICAgICAgICAgICAgID8uT3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbHNbdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2wudmFsdWVdXG4gICAgICAgICAgICAgICAgICAgID8uUmVwb3NpdG9yeVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IEJhc2VNb2RlbGVkUmVzcG9uc2U8c3RyaW5nW10+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5CdWlsZFBhdGhPcHRpb25zID0gcmVzcG9uc2UuTW9kZWw7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2J1aWxkIHBhdGggb3B0aW9uczogJywgdGhpcy5CdWlsZFBhdGhPcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIC8vIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuQnVpbGRQYXRoT3B0aW9ucz8ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLkJ1aWxkUGF0aEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuQnVpbGRQYXRoT3B0aW9uc1swXSk7XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwTGN1VHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYW51cExjdVR5cGVTdWJGb3JtKCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdMQ1UgVHlwZTogJywgdGhpcy5MQ1VUeXBlKTtcblxuICAgICAgICBpZiAodGhpcy5MQ1VUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuTENVVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0FQSSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBMQ1VBUElGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnQXBwbGljYXRpb25Qb2ludGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cExDVUFwcGxpY2F0aW9uUG9pbnRlckZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdHaXRIdWInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwTENVR2l0SHViRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ0dpdEh1Yk9BdXRoJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cExDVUdpdEh1Yk9BdXRoRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ1dvcmRQcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBMQ1VXb3JkUHJlc3NGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnTlBNJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cExDVU5QTUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdTUEEnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwTENVU1BBRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ1ppcCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBMQ1VaaXBGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFNldHVwUHJvY2Vzc29yRGV0YWlsc0Zvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yVHlwZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uPy5Qcm9jZXNzb3I/LlR5cGUgfHwgJyc7XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2coJ0VESVRJTkcgQVBQID0gJywgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24pO1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXA7XG4gICAgICAgIGlmICh0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAgPSB0aGlzLmZvcm1CbGRyLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBwcm9jVHlwZTogW3RoaXMuUHJvY2Vzc29yVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gdGhpcy5zZXR1cERmc0Zvcm0oKTtcblxuICAgICAgICAgICAgLy8gdGhpcy5zZXR1cExjdVR5cGVTdWJGb3JtKCk7XG4gICAgICAgICAgICB0aGlzLnNldHVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cExDVUdpdEh1YkZvcm0oKTogdm9pZCB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdFZGl0aW5nQXBwbGljYXRpb246ICcsIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdzb3VyY2VDb250cm9sJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU291cmNlQ29udHJvbExvb2t1cCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLklzU291cmNlQ29udHJvbFZhbGlkID0gdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2wudmFsaWQ7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnYnVpbGRQYXRoJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uUGF0aCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdidWlsZCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkJ1aWxkIHx8ICdsYXRlc3QnLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubGlzdEJ1aWxkUGF0aHMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VBcHBsaWNhdGlvblBvaW50ZXJGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbklkJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uQXBwbGljYXRpb25JRCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VTUEFGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdzcGFSb290JyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU1BBUm9vdCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VBUElGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdtZXRob2RzJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb29rdXBDb25maWc/LkFsbG93ZWRNZXRob2RzPy5qb2luKFxuICAgICAgICAgICAgICAgICAgICAnICdcbiAgICAgICAgICAgICAgICApIHx8ICcnLFxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnYXBpUm9vdCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkFQSVJvb3QgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnc2VjdXJpdHknLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5TZWN1cml0eSB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VOUE1Gb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdzb3VyY2VDb250cm9sJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU291cmNlQ29udHJvbExvb2t1cCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VHaXRIdWJPQXV0aEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2NsaWVudElkJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uQ2xpZW50SUQgfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnY2xpZW50U2VjcmV0JyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uQ2xpZW50U2VjcmV0IHx8ICcnLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cExDVVdvcmRQcmVzc0Zvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ2FwaVJvb3QnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5BUElSb290IHx8ICcnLFxuICAgICAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cFByb3h5Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5MQ1VUeXBlID0gdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlR5cGUgfHwgJyc7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnaW5ib3VuZFBhdGgnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uSW5ib3VuZFBhdGggfHwgJycsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnbGN1VHlwZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5MQ1VUeXBlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwUmVkaXJlY3RGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdyZWRpcmVjdCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5SZWRpcmVjdCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdwZXJtYW5lbnQnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uUGVybWFuZW50IHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAncHJlc2VydmVNZXRob2QnLFxuICAgICAgICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uUHJlc2VydmVNZXRob2QgfHwgZmFsc2UsXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdpbmNsdWRlUmVxdWVzdCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5JbmNsdWRlUmVxdWVzdCB8fCBmYWxzZSxcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuRGV0ZXJtaW5lVG9vbHRpcFRleHQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBPQXV0aEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuTENVVHlwZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5UeXBlIHx8ICcnO1xuXG4gICAgICAgIHRoaXMuUHJvY2Vzc29yRGV0YWlsc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgICAgICAgJ3Njb3BlcycsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5TY29wZXM/LkpvaW4oJyAnKSB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICd0b2tlbkxvb2t1cCcsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5Ub2tlbkxvb2t1cCB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdsY3VUeXBlJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbCh0aGlzLkxDVVR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBMQ1VaaXBGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICd6aXBGaWxlJyxcbiAgICAgICAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uWmlwRmlsZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBEZnNGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLkxDVVR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uVHlwZSB8fCAnJztcblxuICAgICAgICB0aGlzLlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICdkZWZhdWx0RmlsZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5EZWZhdWx0RmlsZSB8fCAnaW5kZXguaHRtbCcsXG4gICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Qcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAnbGN1VHlwZScsXG4gICAgICAgICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5MQ1VUeXBlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYW51cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuUHJvY2Vzc29yVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLlByb2Nlc3NvclR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdERlMnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwRGZzRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ09BdXRoJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cE9BdXRoRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ1Byb3h5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cFByb3h5Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ1JlZGlyZWN0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cFJlZGlyZWN0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0dXBMY3VUeXBlU3ViRm9ybSgpO1xuICAgIH1cbn1cbiIsIjxmb3JtXG4gICAgY2xhc3M9XCJwcm9jZXNzb3ItZGV0YWlscy1mb3JtXCJcbiAgICBbZm9ybUdyb3VwXT1cIlByb2Nlc3NvckRldGFpbHNGb3JtR3JvdXBcIlxuICAgIChuZ1N1Ym1pdCk9XCJTYXZlUHJvY2Vzc29yRGV0YWlscygpXCJcbj5cbiAgICA8IS0tIDxtYXQtY2FyZCBjbGFzcz1cInNwcmVhZCBmbG93LWNhcmRcIj4gLS0+XG4gICAgPCEtLSA8bWF0LWNhcmQtaGVhZGVyPlxuICAgICAgPG1hdC1jYXJkLXRpdGxlPiBQcm9jZXNzb3IgRGV0YWlscyA8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPiAtLT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJMb2FkaW5nXCI+XG4gICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmMgb2YgVmFsaWRGb3JtQ29udHJvbHNcIj4gLS0+XG4gICAgICAgIDxza2VsZXRvbi1ibG9ja1xuICAgICAgICAgICAgW2lkXT1cImZjXCJcbiAgICAgICAgICAgIGNsYXNzPVwicy1ibG9ja1wiXG4gICAgICAgICAgICBlZmZlY3Q9XCJ3YXZlXCJcbiAgICAgICAgPjwvc2tlbGV0b24tYmxvY2s+XG4gICAgICAgIDxza2VsZXRvbi1ibG9ja1xuICAgICAgICAgICAgW2lkXT1cImZjXCJcbiAgICAgICAgICAgIGNsYXNzPVwicy1ibG9ja1wiXG4gICAgICAgICAgICBlZmZlY3Q9XCJ3YXZlXCJcbiAgICAgICAgPjwvc2tlbGV0b24tYmxvY2s+XG4gICAgICAgIDxza2VsZXRvbi1ibG9ja1xuICAgICAgICAgICAgW2lkXT1cImZjXCJcbiAgICAgICAgICAgIGNsYXNzPVwicy1ibG9ja1wiXG4gICAgICAgICAgICBlZmZlY3Q9XCJ3YXZlXCJcbiAgICAgICAgPjwvc2tlbGV0b24tYmxvY2s+XG4gICAgICAgIDxza2VsZXRvbi1ibG9ja1xuICAgICAgICAgICAgW2lkXT1cImZjXCJcbiAgICAgICAgICAgIGNsYXNzPVwicy1ibG9ja1wiXG4gICAgICAgICAgICBlZmZlY3Q9XCJ3YXZlXCJcbiAgICAgICAgPjwvc2tlbGV0b24tYmxvY2s+XG4gICAgICAgIDwhLS0gPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgICAgIDxsY3UtbG9hZGVyXG4gICAgICAgICAgICAqbmdJZj1cIkxDVVR5cGUgPT09ICdSZWRpcmVjdCdcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiTG9hZGluZ1wiXG4gICAgICAgID48L2xjdS1sb2FkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBFTkQgU0tFTEVUT04gLS0+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUxvYWRpbmdcIj5cbiAgICAgICAgPCEtLSA8bWF0LWNhcmQtY29udGVudD4gLS0+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZVwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvY1R5cGVcIlxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiUHJvY2Vzc29yVHlwZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkRGU1wiPlZpZXcgUGFja2FnZTwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiUmVkaXJlY3RcIj5SZWRpcmVjdDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiUHJveHlcIj5Qcm94eTwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiT0F1dGhcIj5PQXV0aDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJQcm9jZXNzb3JUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInREZTJ1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGVmYXVsdCBGaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRGaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGN1VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIkxDVVR5cGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJOUE1cIj5OUE08L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiR2l0SHViXCI+R2l0SHViPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIldvcmRQcmVzc1wiPldvcmRQcmVzczwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJaaXBcIj5aaXA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiTENVVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInR2l0SHViJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGN1LXNvdXJjZS1jb250cm9sLWZvcm0tY29udHJvbHNcbiAgICAgICAgICAgICAgICBbYnVpbGQtcGF0aF09XCJFZGl0aW5nQXBwbGljYXRpb24/Lkxvd0NvZGVVbml0Py5QYXRoXCJcbiAgICAgICAgICAgICAgICBbZm9ybS1ncm91cF09XCJQcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwXCJcbiAgICAgICAgICAgICAgICBbc291cmNlLWNvbnRyb2xdPVwiRGVmYXVsdFNvdXJjZUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIFt1c2UtYnJhbmNoZXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFt1c2UtYnVpbGQtcGF0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPjwvbGN1LXNvdXJjZS1jb250cm9sLWZvcm0tY29udHJvbHM+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU291cmNlIENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzb3VyY2VDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJTb3VyY2VDb250cm9sQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NMb29rdXAgb2YgU291cmNlQ29udHJvbExvb2t1cHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2NMb29rdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzY0xvb2t1cCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LW9wdGlvbiB2YWx1ZT1cIlppcFwiPlppcDwvbWF0LW9wdGlvbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtZnVsbC13aWR0aCB3aXRoLWhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiSXNTb3VyY2VDb250cm9sVmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1aWxkUGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQnVpbGQgUGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYnVpbGRQYXRoIG9mIEJ1aWxkUGF0aE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiYnVpbGRQYXRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnVpbGRQYXRoIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHBhdGggaWRlbnRpZmllcyB3aGljaCBidWlsZCBhY3Rpb24gdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGZvciB5b3VyIGNvbmZpZ3VyYXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiSXNTb3VyY2VDb250cm9sVmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkJ1aWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYnVpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgQnVpbGQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0aW5nQXBwbGljYXRpb24/Lkxvd0NvZGVVbml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5DdXJyZW50QnVpbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1oaW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ05QTSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTb3VyY2UgQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNvdXJjZUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIlNvdXJjZUNvbnRyb2xDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY0xvb2t1cCBvZiBTb3VyY2VDb250cm9sTG9va3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzY0xvb2t1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNjTG9va3VwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxjdS1ucG0tcGFja2FnZS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnBtLXBhY2thZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRpbmdBcHBsaWNhdGlvbj8uTG93Q29kZVVuaXQ/LlBhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtucG0tcGFja2FnZS12ZXJzaW9uXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0aW5nQXBwbGljYXRpb24/Lkxvd0NvZGVVbml0Py5WZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybS1ncm91cF09XCJQcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2xjdS1ucG0tcGFja2FnZS1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IFZlcnNpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdGluZ0FwcGxpY2F0aW9uPy5Mb3dDb2RlVW5pdD8uQ3VycmVudFZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1dvcmRQcmVzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQVBJIFJvb3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhcGlSb290XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1ppcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiWmlwIEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ6aXBGaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ09BdXRoJ1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2NvcGVzIChzcGFjZSBzZXBhcmF0ZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNjb3Blc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlRva2VuIExvb2t1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0b2tlbkxvb2t1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxjdVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJMQ1VUeXBlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiR2l0SHViT0F1dGhcIj5HaXRIdWI8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiTENVVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInR2l0SHViT0F1dGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNsaWVudCBJRFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNsaWVudElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDbGllbnQgU2VjcmV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2xpZW50U2VjcmV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1Byb3h5J1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSW5ib3VuZCBQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluYm91bmRQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGN1VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIkxDVVR5cGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJBUElcIj5BUEk8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiU1BBXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+U2luZ2xlIFBhZ2UgQXBwbGljYXRpb248L21hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJMQ1VUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidBUEknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFQSSBSb290XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXBpUm9vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWxsb3dlZCBNZXRob2RzIChzZXBhcmF0ZSB3aXRoIHNwYWNlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtZXRob2RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWN1cml0eSAoe2hlYWRlcn1+e3ZhbHVlfSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWN1cml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidTUEEnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNQQSBSb290XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3BhUm9vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidSZWRpcmVjdCdcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlJlZGlyZWN0IFVSTFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWRpcmVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcHJlYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGVybWFuZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgSXMgUGVybWFuZW50P1xuICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ByZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByZXNlcnZlTWV0aG9kXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2VydmUgTWV0aG9kP1xuICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwcmVhZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIkRldGVybWluZVRvb2x0aXBUZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IHJlZGlyZWN0VG9vbHRpcCB9fVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fb3V0bGluZVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ByZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluY2x1ZGVSZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBQYXRoIGFuZCBRdWVyeT9cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcHJlYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiU2hvdWxkIHRoZSByZWRpcmVjdCBpbmNsdWRlIHRoZSBwYXRoIGFuZCBxdWVyeT9cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvX291dGxpbmVcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8L21hdC1jYXJkLWNvbnRlbnQ+IC0tPlxuICAgICAgICA8IS0tIDxtYXQtY2FyZC1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+IC0tPlxuXG4gICAgICAgIDwhLS0gPGJ1dHRvbiBcbiAgICAgICAgICAqbmdJZj1cIkhhc1NhdmVCdXR0b24gJiYgIUxvYWRpbmdcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgICAgICBmeEZsZXg9XCIxMDAlXCIgXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFQcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLnZhbGlkIHx8ICFQcm9jZXNzb3JEZXRhaWxzRm9ybUdyb3VwLmRpcnR5XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnNhdmU8L21hdC1pY29uPlxuICAgICAgICAgIFNhdmUgUHJvY2Vzc29yIERldGFpbHNcbiAgICAgICAgPC9idXR0b24+IC0tPlxuICAgICAgICA8IS0tIDxsY3UtbG9hZGVyICpuZ0lmPVwiSGFzU2F2ZUJ1dHRvblwiIFtsb2FkaW5nXT1cIkxvYWRpbmdcIj48L2xjdS1sb2FkZXI+IC0tPlxuXG4gICAgICAgIDwhLS0gPC9tYXQtY2FyZC1hY3Rpb25zPiAtLT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gPC9tYXQtY2FyZD4gLS0+XG48L2Zvcm0+XG4iXX0=