@lowcodeunit/applications-flow-common 1.39.88-enterprise-switch-fix → 1.39.89-enterprise-switch-fix

Sign up to get free protection for your applications and to get access to all the features.
@@ -247,12 +247,12 @@ export class EaCService {
247
247
  saveEaC.Applications[req.ApplicationLookup] = req.Application;
248
248
  }
249
249
  //await
250
- const status = await Promise.all([
251
- this.projectService.SaveEnterpriseAsCode(state, saveEaC),
252
- ]);
250
+ // const status = await Promise.all([
251
+ const status = await this.projectService.SaveEnterpriseAsCode(state, saveEaC);
252
+ // ]);
253
253
  console.log('State after save app: ', state);
254
254
  this.stateSubject.next(state);
255
- return status[0];
255
+ return status;
256
256
  }
257
257
  async handleSaveDFSModifier(req) {
258
258
  const state = this.stateSubject.getValue();
@@ -333,4 +333,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
333
333
  providedIn: 'root',
334
334
  }]
335
335
  }], ctorParameters: function () { return [{ type: i1.ProjectService }, { type: i2.HttpClient }]; } });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9lYWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDSCxxQkFBcUIsR0FFeEIsTUFBTSxrQ0FBa0MsQ0FBQztBQWExQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBRW5ELE1BQU0sT0FBTyxpQ0FBaUM7Q0FNN0M7QUFFRCxNQUFNLE9BQU8sMkJBQTJCO0NBUXZDO0FBRUQsTUFBTSxPQUFPLGlDQUFpQztDQU03QztBQUVELE1BQU0sT0FBTyw2QkFBNkI7Q0FJekM7QUFLRCxNQUFNLE9BQU8sVUFBVTtJQWVuQixnQkFBZ0I7SUFDaEIsWUFDYyxjQUE4QixFQUM5QixJQUFnQjtRQURoQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUUxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBbEJELGNBQWM7SUFDZCxJQUFXLG9CQUFvQjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFhRCxlQUFlO0lBQ1IsaUJBQWlCLENBQUMsUUFBa0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7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LEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQXFCO1lBQzlCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1lBQzVDLFVBQVUsRUFBRTtnQkFDUixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVTtnQkFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2FBQ25DO1lBQ0QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsb0dBQW9HO1lBQ3BHLFFBQVEsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRTFDLDhDQUE4QztRQUU5QyxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQ3ZELEtBQUssRUFDTCxPQUFPLENBQ1YsQ0FBQztRQUVGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzt1R0E3aEJRLFVBQVU7MkdBQVYsVUFBVSxjQUZQLE1BQU07MkZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4vcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgIFVucGFja0xvd0NvZGVVbml0UmVxdWVzdCxcbn0gZnJvbSAnLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xuaW1wb3J0IHtcbiAgICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgICBFYUNEYXRhVG9rZW4sXG4gICAgRWFDREZTTW9kaWZpZXIsXG4gICAgRWFDRW52aXJvbm1lbnRBc0NvZGUsXG4gICAgRWFDSG9zdCxcbiAgICBFYUNQcm9qZWN0QXNDb2RlLFxuICAgIEVudGVycHJpc2VBc0NvZGUsXG59IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBGZWVkRW50cnksIEZlZWRJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXItZmVlZC5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmFzZVJlc3BvbnNlLCBTdGF0dXMgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdCB7XG4gICAgcHVibGljIEFwcGxpY2F0aW9uPzogRWFDQXBwbGljYXRpb25Bc0NvZGU7XG5cbiAgICBwdWJsaWMgQXBwbGljYXRpb25Mb29rdXA/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgUHJvamVjdExvb2t1cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVERlNNb2RpZmllckV2ZW50UmVxdWVzdCB7XG4gICAgcHVibGljIEFwcGxpY2F0aW9uTG9va3VwPzogc3RyaW5nO1xuXG4gICAgcHVibGljIE1vZGlmaWVyPzogRWFDREZTTW9kaWZpZXI7XG5cbiAgICBwdWJsaWMgTW9kaWZpZXJMb29rdXBzPzogQXJyYXk8c3RyaW5nPjtcblxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3Vwcz86IEFycmF5PHN0cmluZz47XG59XG5cbmV4cG9ydCBjbGFzcyBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3Qge1xuICAgIHB1YmxpYyBFbnRlcnByaXNlRGF0YVRva2Vucz86IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDRGF0YVRva2VuIH07XG5cbiAgICBwdWJsaWMgRW52aXJvbm1lbnQ/OiBFYUNFbnZpcm9ubWVudEFzQ29kZTtcblxuICAgIHB1YmxpYyBFbnZpcm9ubWVudExvb2t1cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVQcm9qZWN0QXNDb2RlRXZlbnRSZXF1ZXN0IHtcbiAgICBwdWJsaWMgUHJvamVjdD86IEVhQ1Byb2plY3RBc0NvZGU7XG5cbiAgICBwdWJsaWMgUHJvamVjdExvb2t1cD86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRWFDU2VydmljZSB7XG4gICAgLy9GaWVsZHNcbiAgICBwcm90ZWN0ZWQgc3RhdGVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25zRmxvd1N0YXRlPjtcblxuICAgIC8vICBQcm9wZXJ0aWVzXG4gICAgcHVibGljIGdldCBFZGl0aW5nUHJvamVjdExvb2t1cCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0U2VydmljZS5FZGl0aW5nUHJvamVjdExvb2t1cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IENyZWF0aW5nUHJvamVjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvamVjdFNlcnZpY2UuQ3JlYXRpbmdQcm9qZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBTdGF0ZTogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbnNGbG93U3RhdGU+O1xuXG4gICAgLy8gIENvbnN0cnVjdG9yc1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudFxuICAgICkge1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QobmV3IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSgpKTtcbiAgICAgICAgdGhpcy5TdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vICBBUEkgTWV0aG9kc1xuICAgIHB1YmxpYyBDaGVja1VzZXJGZWVkSXRlbShmZWVkSXRlbTogRmVlZEl0ZW0pOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChmZWVkSXRlbS5SZWZyZXNoTGluayk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFwcGxpY2F0aW9uKFxuICAgICAgICBhcHBMb29rdXA6IHN0cmluZyxcbiAgICAgICAgYXBwTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBhcHBsaWNhdGlvbiAnJHthcHBOYW1lfSc/YClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgQXBwbGljYXRpb25zOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbjoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRGV2T3BzQWN0aW9uKFxuICAgICAgICBkb2FMb29rdXA6IHN0cmluZyxcbiAgICAgICAgZG9hTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShcbiAgICAgICAgICAgICAgICBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBCdWlsZCBQaXBlbGluZSAnJHtkb2FOYW1lfSc/YFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIEVudmlyb25tZW50czoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW3N0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudF0gPSB7XG4gICAgICAgICAgICAgICAgRGV2T3BzQWN0aW9uczoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW1xuICAgICAgICAgICAgICAgIHN0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudFxuICAgICAgICAgICAgXS5EZXZPcHNBY3Rpb25zW2RvYUxvb2t1cF0gPSB7fTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgZWFjXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU1vZGlmaWVyKFxuICAgICAgICBtb2RpZmllckxvb2t1cDogc3RyaW5nLFxuICAgICAgICBtb2RpZmllck5hbWU6IHN0cmluZ1xuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmZpcm0oXG4gICAgICAgICAgICAgICAgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgTW9kaWZpZXIgJyR7bW9kaWZpZXJOYW1lfSc/YFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIE1vZGlmaWVyczoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuTW9kaWZpZXJzW21vZGlmaWVyTG9va3VwXSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlUHJvamVjdChcbiAgICAgICAgcHJvamVjdExvb2t1cDogc3RyaW5nLFxuICAgICAgICBwcm9qZWN0TmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBQcm9qZWN0ICcke3Byb2plY3ROYW1lfSc/YClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVhYzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgICAgICBQcm9qZWN0czoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuUHJvamVjdHNbcHJvamVjdExvb2t1cF0gPSB7XG4gICAgICAgICAgICAgICAgUHJvamVjdDoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVTb3VyY2VDb250cm9sKFxuICAgICAgICBzcmNMb29rdXA6IHN0cmluZyxcbiAgICAgICAgc3JjTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShcbiAgICAgICAgICAgICAgICBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBTb3VyY2UgQ29udHJvbCAnJHtzcmNOYW1lfSc/YFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIEVudmlyb25tZW50czoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW3N0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudF0gPSB7XG4gICAgICAgICAgICAgICAgU291cmNlczoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW3N0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudF0uU291cmNlc1tcbiAgICAgICAgICAgICAgICBzcmNMb29rdXBcbiAgICAgICAgICAgIF0gPSB7fTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgZWFjXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLkVuc3VyZVVzZXJFbnRlcnByaXNlRXZlbnQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAvLyAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW5zdXJlVXNlckVudGVycHJpc2UodGhpcy5TdGF0ZSk7XG4gICAgLy8gfSk7XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlVXNlckVudGVycHJpc2UoKTogUHJvbWlzZTxCYXNlUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW5zdXJlVXNlckVudGVycHJpc2Uoc3RhdGUpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICBlYWM6IEVudGVycHJpc2VBc0NvZGVcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIGVhY1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRBY3RpdmVFbnRlcnByaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5HZXRBY3RpdmVFbnRlcnByaXNlKHN0YXRlKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTG9hZFVzZXJGZWVkKFxuICAgICAgICBwYWdlOiBudW1iZXIsXG4gICAgICAgIHBhZ2VTaXplOiBudW1iZXIsXG4gICAgICAgIGZvckNoZWNrOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGZpbHRlclN0cjogc3RyaW5nID0gJydcbiAgICApOiBQcm9taXNlPEFycmF5PEZlZWRJdGVtPj4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkVXNlckZlZWQoXG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZVNpemUsXG4gICAgICAgICAgICBmaWx0ZXJTdHIsXG4gICAgICAgICAgICBmb3JDaGVjayxcbiAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIEdlbmVyYXRlUm91dGVkQXBwbGljYXRpb25zKGFwcGxpY2F0aW9uczoge1xuICAgICAgICBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcbiAgICB9KToge1xuICAgICAgICBbcm91dGU6IHN0cmluZ106IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDQXBwbGljYXRpb25Bc0NvZGUgfTtcbiAgICB9IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucHJvamVjdFNlcnZpY2UuR2VuZXJhdGVSb3V0ZWRBcHBsaWNhdGlvbnMoXG4gICAgICAgICAgICBhcHBsaWNhdGlvbnMsXG4gICAgICAgICAgICBzdGF0ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgSGFzVmFsaWRDb25uZWN0aW9uKCk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5IYXNWYWxpZENvbm5lY3Rpb24oc3RhdGUpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW50ZXJwcmlzZXMoKTogUHJvbWlzZTxBcnJheTxhbnk+PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkxpc3RFbnRlcnByaXNlcyhzdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExvYWRFbnRlcnByaXNlQXNDb2RlKCk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkRW50ZXJwcmlzZUFzQ29kZShzdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExvYWRVc2VySW5mbygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuTG9hZFVzZXJMaWNlbnNlSW5mbyhzdGF0ZSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBSZWxvYWRGZWVkKCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgaWYgKHN0YXRlLkZlZWRDaGVjaykge1xuICAgICAgICAgICAgc3RhdGUuRmVlZCA9IHN0YXRlLkZlZWRDaGVjay5JdGVtcztcblxuICAgICAgICAgICAgc3RhdGUuRmVlZEFjdGlvbnMgPSBzdGF0ZS5GZWVkQ2hlY2suQWN0aW9ucztcblxuICAgICAgICAgICAgc3RhdGUuRmVlZFNvdXJjZUNvbnRyb2xMb29rdXBzID1cbiAgICAgICAgICAgICAgICBzdGF0ZS5GZWVkQ2hlY2suU291cmNlQ29udHJvbExvb2t1cHM7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5GZWVkQ2hlY2sgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVBcHBsaWNhdGlvbkFzQ29kZShcbiAgICAgICAgcmVxOiBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQ2FsbGluZyBTYXZlIEFwcCBhcyBDb2RlOiAnLCByZXEpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVTYXZlQXBwbGljYXRpb24ocmVxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZURGU01vZGlmaWVyKFxuICAgICAgICByZXE6IFNhdmVERlNNb2RpZmllckV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVNhdmVERlNNb2RpZmllcihyZXEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlRW50ZXJwcmlzZUFzQ29kZShlYWM6IEVudGVycHJpc2VBc0NvZGUpOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgZWFjXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlRW52aXJvbm1lbnRBc0NvZGUoXG4gICAgICAgIHJlcTogU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZUVudmlyb25tZW50KHJlcSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVQcm9qZWN0QXNDb2RlKFxuICAgICAgICByZXE6IFNhdmVQcm9qZWN0QXNDb2RlRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZVByb2plY3QocmVxLlByb2plY3RMb29rdXAsIHJlcS5Qcm9qZWN0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2V0QWN0aXZlRW50ZXJwcmlzZShlbnRMb29rdXA6IGFueSk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnByb2plY3RTZXJ2aWNlLlNldEFjdGl2ZUVudGVycHJpc2UoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIGVudExvb2t1cFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZXRDcmVhdGluZ1Byb2plY3QoY3JlYXRpbmdQcm9qZWN0OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnByb2plY3RTZXJ2aWNlLlNldENyZWF0aW5nUHJvamVjdChjcmVhdGluZ1Byb2plY3QpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2V0RWRpdFByb2plY3RTZXR0aW5ncyhwcm9qZWN0TG9va3VwOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2V0RWRpdFByb2plY3RTZXR0aW5ncyhcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgcHJvamVjdExvb2t1cFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTdWJtaXRGZWVkRW50cnkoZW50cnk6IEZlZWRFbnRyeSk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlN1Ym1pdEZlZWRFbnRyeShzdGF0ZSwgZW50cnkpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVbnBhY2tMb3dDb2RlVW5pdChcbiAgICAgICAgcmVxOiBVbnBhY2tMb3dDb2RlVW5pdFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKFxuICAgICAgICAgICAgICAgIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5wYWNrIGFwcGxpY2F0aW9uICcke3JlcS5BcHBsaWNhdGlvbk5hbWV9JyB3aXRoIHZlcnNpb24gJyR7cmVxLlZlcnNpb259Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlVucGFja0xvd0NvZGVVbml0KFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIHJlcVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gIEhlbHBlcnNcbiAgICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZUFwcGxpY2F0aW9uKFxuICAgICAgICByZXE6IFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnY2FsbGluZyBoYW5kbGUgU2F2ZSBBcHA6ICcsIHN0YXRlKTtcblxuICAgICAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICBBcHBsaWNhdGlvbnM6IHt9LFxuICAgICAgICAgICAgUHJvamVjdHM6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyZXEuUHJvamVjdExvb2t1cCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdQcm9qID0ge1xuICAgICAgICAgICAgICAgIFtyZXEuUHJvamVjdExvb2t1cF06IHtcbiAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25Mb29rdXBzOiBbcmVxLkFwcGxpY2F0aW9uTG9va3VwXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgc2F2ZUVhQy5Qcm9qZWN0cyA9IGV4aXN0aW5nUHJvajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXEuQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgIHNhdmVFYUMuQXBwbGljYXRpb25zW3JlcS5BcHBsaWNhdGlvbkxvb2t1cF0gPSByZXEuQXBwbGljYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy9hd2FpdFxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKHN0YXRlLCBzYXZlRWFDKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTdGF0ZSBhZnRlciBzYXZlIGFwcDogJywgc3RhdGUpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzWzBdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlREZTTW9kaWZpZXIoXG4gICAgICAgIHJlcTogU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHNhdmVFYUM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgIE1vZGlmaWVyczoge30sXG4gICAgICAgICAgICBQcm9qZWN0czoge30sXG4gICAgICAgICAgICBBcHBsaWNhdGlvbnM6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyZXEuTW9kaWZpZXIpIHtcbiAgICAgICAgICAgIHNhdmVFYUMuTW9kaWZpZXJzW3JlcS5Nb2RpZmllckxvb2t1cHNbMF1dID0gcmVxLk1vZGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcS5Qcm9qZWN0TG9va3Vwcykge1xuICAgICAgICAgICAgcmVxLlByb2plY3RMb29rdXBzLmZvckVhY2goKGxvb2t1cCkgPT4ge1xuICAgICAgICAgICAgICAgIHNhdmVFYUMuUHJvamVjdHNbbG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgTW9kaWZpZXJMb29rdXBzOiByZXEuTW9kaWZpZXJMb29rdXBzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXEuQXBwbGljYXRpb25Mb29rdXApIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdBUFBMT29rdXA6ICcsIHJlcS5BcHBsaWNhdGlvbkxvb2t1cCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc2F2ZUVBQzogJywgc2F2ZUVhQyk7XG4gICAgICAgICAgICBzYXZlRWFDLkFwcGxpY2F0aW9uc1tyZXEuQXBwbGljYXRpb25Mb29rdXBdID0ge1xuICAgICAgICAgICAgICAgIE1vZGlmaWVyTG9va3VwczogcmVxLk1vZGlmaWVyTG9va3VwcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZygnU2F2ZSBtb2QgZWFjOiAnLCBzYXZlRWFDKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBzYXZlRWFDXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVFbnZpcm9ubWVudChcbiAgICAgICAgcmVxOiBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlPy5FYUM/LkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICBEYXRhVG9rZW5zOiB7fSxcbiAgICAgICAgICAgIEVudmlyb25tZW50czoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHJlcS5FbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgc2F2ZUVhQy5FbnZpcm9ubWVudHNbcmVxLkVudmlyb25tZW50TG9va3VwXSA9IHJlcS5FbnZpcm9ubWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXEuRW50ZXJwcmlzZURhdGFUb2tlbnMpIHtcbiAgICAgICAgICAgIHNhdmVFYUMuRGF0YVRva2VucyA9IHJlcS5FbnRlcnByaXNlRGF0YVRva2VucztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIHNhdmVFYUNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZVByb2plY3QoXG4gICAgICAgIHByb2plY3RMb29rdXA6IHN0cmluZyxcbiAgICAgICAgcHJvamVjdDogRWFDUHJvamVjdEFzQ29kZVxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHByb2pIb3N0czogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNIb3N0IH0gPSB7fTtcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgcHJvamVjdD8uSG9zdHM/LmZvckVhY2goKGhvc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgcHJvakhvc3RzW2hvc3RdID0gc3RhdGUuRWFDLkhvc3RzW2hvc3RdO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICBFbnRlcnByaXNlOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuRWFDLkVudGVycHJpc2UsXG4gICAgICAgICAgICAgICAgUHJpbWFyeUhvc3Q6IHByb2plY3QuUHJpbWFyeUhvc3QsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSG9zdHM6IHByb2pIb3N0cyxcbiAgICAgICAgICAgIC8vIFByb3ZpZGVyczogc3RhdGUuRWFDLlByb3ZpZGVycywgIC8vICBUT0RPOiAgUmVtb3ZlIGFmdGVyIGFsbCBwcm92aWRlcnMgQURCMkMncyBoYXZlIGJlZW4gdXBncmFkZWRcbiAgICAgICAgICAgIFByb2plY3RzOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICBzYXZlRWFDLlByb2plY3RzW3Byb2plY3RMb29rdXBdID0gcHJvamVjdDtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZygnc2F2ZSBlYWMgcmVxdWVzdDogJywgc2F2ZUVhQyk7XG5cbiAgICAgICAgbGV0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIHNhdmVFYUNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlNldEVkaXRQcm9qZWN0U2V0dGluZ3MocHJvamVjdExvb2t1cCk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxufVxuIl19
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9lYWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDSCxxQkFBcUIsR0FFeEIsTUFBTSxrQ0FBa0MsQ0FBQztBQWExQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBRW5ELE1BQU0sT0FBTyxpQ0FBaUM7Q0FNN0M7QUFFRCxNQUFNLE9BQU8sMkJBQTJCO0NBUXZDO0FBRUQsTUFBTSxPQUFPLGlDQUFpQztDQU03QztBQUVELE1BQU0sT0FBTyw2QkFBNkI7Q0FJekM7QUFLRCxNQUFNLE9BQU8sVUFBVTtJQWVuQixnQkFBZ0I7SUFDaEIsWUFDYyxjQUE4QixFQUM5QixJQUFnQjtRQURoQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUUxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBbEJELGNBQWM7SUFDZCxJQUFXLG9CQUFvQjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFhRCxlQUFlO0lBQ1IsaUJBQWlCLENBQUMsUUFBa0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7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QUUsRUFBRTtZQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sR0FBcUI7WUFDOUIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0I7WUFDNUMsVUFBVSxFQUFFO2dCQUNSLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVO2dCQUN2QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7YUFDbkM7WUFDRCxLQUFLLEVBQUUsU0FBUztZQUNoQixvR0FBb0c7WUFDcEcsUUFBUSxFQUFFLEVBQUU7U0FDZixDQUFDO1FBRUYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUM7UUFFMUMsOENBQThDO1FBRTlDLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FDdkQsS0FBSyxFQUNMLE9BQU8sQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7O3VHQWhpQlEsVUFBVTsyR0FBVixVQUFVLGNBRlAsTUFBTTsyRkFFVCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgVW5wYWNrTG93Q29kZVVuaXRSZXF1ZXN0LFxufSBmcm9tICcuLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5pbXBvcnQge1xuICAgIEVhQ0FwcGxpY2F0aW9uQXNDb2RlLFxuICAgIEVhQ0RhdGFUb2tlbixcbiAgICBFYUNERlNNb2RpZmllcixcbiAgICBFYUNFbnZpcm9ubWVudEFzQ29kZSxcbiAgICBFYUNIb3N0LFxuICAgIEVhQ1Byb2plY3RBc0NvZGUsXG4gICAgRW50ZXJwcmlzZUFzQ29kZSxcbn0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEZlZWRFbnRyeSwgRmVlZEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvdXNlci1mZWVkLm1vZGVsJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCYXNlUmVzcG9uc2UsIFN0YXR1cyB9IGZyb20gJ0BsY3UvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0IHtcbiAgICBwdWJsaWMgQXBwbGljYXRpb24/OiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICAgIHB1YmxpYyBBcHBsaWNhdGlvbkxvb2t1cD86IHN0cmluZztcblxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0IHtcbiAgICBwdWJsaWMgQXBwbGljYXRpb25Mb29rdXA/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgTW9kaWZpZXI/OiBFYUNERlNNb2RpZmllcjtcblxuICAgIHB1YmxpYyBNb2RpZmllckxvb2t1cHM/OiBBcnJheTxzdHJpbmc+O1xuXG4gICAgcHVibGljIFByb2plY3RMb29rdXBzPzogQXJyYXk8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCB7XG4gICAgcHVibGljIEVudGVycHJpc2VEYXRhVG9rZW5zPzogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNEYXRhVG9rZW4gfTtcblxuICAgIHB1YmxpYyBFbnZpcm9ubWVudD86IEVhQ0Vudmlyb25tZW50QXNDb2RlO1xuXG4gICAgcHVibGljIEVudmlyb25tZW50TG9va3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2F2ZVByb2plY3RBc0NvZGVFdmVudFJlcXVlc3Qge1xuICAgIHB1YmxpYyBQcm9qZWN0PzogRWFDUHJvamVjdEFzQ29kZTtcblxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwPzogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFYUNTZXJ2aWNlIHtcbiAgICAvL0ZpZWxkc1xuICAgIHByb3RlY3RlZCBzdGF0ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvbnNGbG93U3RhdGU+O1xuXG4gICAgLy8gIFByb3BlcnRpZXNcbiAgICBwdWJsaWMgZ2V0IEVkaXRpbmdQcm9qZWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2plY3RTZXJ2aWNlLkVkaXRpbmdQcm9qZWN0TG9va3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgQ3JlYXRpbmdQcm9qZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0U2VydmljZS5DcmVhdGluZ1Byb2plY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIFN0YXRlOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZT47XG5cbiAgICAvLyAgQ29uc3RydWN0b3JzXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChuZXcgQXBwbGljYXRpb25zRmxvd1N0YXRlKCkpO1xuICAgICAgICB0aGlzLlN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gIEFQSSBNZXRob2RzXG4gICAgcHVibGljIENoZWNrVXNlckZlZWRJdGVtKGZlZWRJdGVtOiBGZWVkSXRlbSk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGZlZWRJdGVtLlJlZnJlc2hMaW5rKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXBwbGljYXRpb24oXG4gICAgICAgIGFwcExvb2t1cDogc3RyaW5nLFxuICAgICAgICBhcHBOYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFwcGxpY2F0aW9uICcke2FwcE5hbWV9Jz9gKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGVhYzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbnM6IHt9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZWFjLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdID0ge1xuICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIGVhY1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEZXZPcHNBY3Rpb24oXG4gICAgICAgIGRvYUxvb2t1cDogc3RyaW5nLFxuICAgICAgICBkb2FOYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKFxuICAgICAgICAgICAgICAgIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIEJ1aWxkIFBpcGVsaW5lICcke2RvYU5hbWV9Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgRW52aXJvbm1lbnRzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XSA9IHtcbiAgICAgICAgICAgICAgICBEZXZPcHNBY3Rpb25zOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbXG4gICAgICAgICAgICAgICAgc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XG4gICAgICAgICAgICBdLkRldk9wc0FjdGlvbnNbZG9hTG9va3VwXSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlTW9kaWZpZXIoXG4gICAgICAgIG1vZGlmaWVyTG9va3VwOiBzdHJpbmcsXG4gICAgICAgIG1vZGlmaWVyTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShcbiAgICAgICAgICAgICAgICBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBNb2RpZmllciAnJHttb2RpZmllck5hbWV9Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgTW9kaWZpZXJzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5Nb2RpZmllcnNbbW9kaWZpZXJMb29rdXBdID0ge307XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIGVhY1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVQcm9qZWN0KFxuICAgICAgICBwcm9qZWN0TG9va3VwOiBzdHJpbmcsXG4gICAgICAgIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIFByb2plY3QgJyR7cHJvamVjdE5hbWV9Jz9gKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIFByb2plY3RzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5Qcm9qZWN0c1twcm9qZWN0TG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICBQcm9qZWN0OiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIGVhY1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVNvdXJjZUNvbnRyb2woXG4gICAgICAgIHNyY0xvb2t1cDogc3RyaW5nLFxuICAgICAgICBzcmNOYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKFxuICAgICAgICAgICAgICAgIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIFNvdXJjZSBDb250cm9sICcke3NyY05hbWV9Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgRW52aXJvbm1lbnRzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XSA9IHtcbiAgICAgICAgICAgICAgICBTb3VyY2VzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XS5Tb3VyY2VzW1xuICAgICAgICAgICAgICAgIHNyY0xvb2t1cFxuICAgICAgICAgICAgXSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoaXMuYXBwc0Zsb3dFdmVudHNTdmMuRW5zdXJlVXNlckVudGVycHJpc2VFdmVudC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgIC8vICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnN1cmVVc2VyRW50ZXJwcmlzZSh0aGlzLlN0YXRlKTtcbiAgICAvLyB9KTtcblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVVc2VyRW50ZXJwcmlzZSgpOiBQcm9taXNlPEJhc2VSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnN1cmVVc2VyRW50ZXJwcmlzZShzdGF0ZSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgIGVhYzogRW50ZXJwcmlzZUFzQ29kZVxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgZWFjXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldEFjdGl2ZUVudGVycHJpc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkdldEFjdGl2ZUVudGVycHJpc2Uoc3RhdGUpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMb2FkVXNlckZlZWQoXG4gICAgICAgIHBhZ2U6IG51bWJlcixcbiAgICAgICAgcGFnZVNpemU6IG51bWJlcixcbiAgICAgICAgZm9yQ2hlY2s6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgZmlsdGVyU3RyOiBzdHJpbmcgPSAnJ1xuICAgICk6IFByb21pc2U8QXJyYXk8RmVlZEl0ZW0+PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkxvYWRVc2VyRmVlZChcbiAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgICAgIGZpbHRlclN0cixcbiAgICAgICAgICAgIGZvckNoZWNrLFxuICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgR2VuZXJhdGVSb3V0ZWRBcHBsaWNhdGlvbnMoYXBwbGljYXRpb25zOiB7XG4gICAgICAgIFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlO1xuICAgIH0pOiB7XG4gICAgICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIH0ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5wcm9qZWN0U2VydmljZS5HZW5lcmF0ZVJvdXRlZEFwcGxpY2F0aW9ucyhcbiAgICAgICAgICAgIGFwcGxpY2F0aW9ucyxcbiAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBIYXNWYWxpZENvbm5lY3Rpb24oKTogUHJvbWlzZTxFbnRlcnByaXNlQXNDb2RlPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkhhc1ZhbGlkQ29ubmVjdGlvbihzdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFbnRlcnByaXNlcygpOiBQcm9taXNlPEFycmF5PGFueT4+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuTGlzdEVudGVycHJpc2VzKHN0YXRlKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTG9hZEVudGVycHJpc2VBc0NvZGUoKTogUHJvbWlzZTxFbnRlcnByaXNlQXNDb2RlPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkxvYWRFbnRlcnByaXNlQXNDb2RlKHN0YXRlKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTG9hZFVzZXJJbmZvKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkVXNlckxpY2Vuc2VJbmZvKHN0YXRlKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIFJlbG9hZEZlZWQoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBpZiAoc3RhdGUuRmVlZENoZWNrKSB7XG4gICAgICAgICAgICBzdGF0ZS5GZWVkID0gc3RhdGUuRmVlZENoZWNrLkl0ZW1zO1xuXG4gICAgICAgICAgICBzdGF0ZS5GZWVkQWN0aW9ucyA9IHN0YXRlLkZlZWRDaGVjay5BY3Rpb25zO1xuXG4gICAgICAgICAgICBzdGF0ZS5GZWVkU291cmNlQ29udHJvbExvb2t1cHMgPVxuICAgICAgICAgICAgICAgIHN0YXRlLkZlZWRDaGVjay5Tb3VyY2VDb250cm9sTG9va3VwcztcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLkZlZWRDaGVjayA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlKFxuICAgICAgICByZXE6IFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDYWxsaW5nIFNhdmUgQXBwIGFzIENvZGU6ICcsIHJlcSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVNhdmVBcHBsaWNhdGlvbihyZXEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlREZTTW9kaWZpZXIoXG4gICAgICAgIHJlcTogU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZURGU01vZGlmaWVyKHJlcSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVFbnRlcnByaXNlQXNDb2RlKGVhYzogRW50ZXJwcmlzZUFzQ29kZSk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBlYWNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVFbnZpcm9ubWVudEFzQ29kZShcbiAgICAgICAgcmVxOiBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVTYXZlRW52aXJvbm1lbnQocmVxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZVByb2plY3RBc0NvZGUoXG4gICAgICAgIHJlcTogU2F2ZVByb2plY3RBc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVTYXZlUHJvamVjdChyZXEuUHJvamVjdExvb2t1cCwgcmVxLlByb2plY3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZXRBY3RpdmVFbnRlcnByaXNlKGVudExvb2t1cDogYW55KTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucHJvamVjdFNlcnZpY2UuU2V0QWN0aXZlRW50ZXJwcmlzZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgZW50TG9va3VwXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNldENyZWF0aW5nUHJvamVjdChjcmVhdGluZ1Byb2plY3Q6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucHJvamVjdFNlcnZpY2UuU2V0Q3JlYXRpbmdQcm9qZWN0KGNyZWF0aW5nUHJvamVjdCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZXRFZGl0UHJvamVjdFNldHRpbmdzKHByb2plY3RMb29rdXA6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TZXRFZGl0UHJvamVjdFNldHRpbmdzKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBwcm9qZWN0TG9va3VwXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFN1Ym1pdEZlZWRFbnRyeShlbnRyeTogRmVlZEVudHJ5KTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU3VibWl0RmVlZEVudHJ5KHN0YXRlLCBlbnRyeSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVucGFja0xvd0NvZGVVbml0KFxuICAgICAgICByZXE6IFVucGFja0xvd0NvZGVVbml0UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmZpcm0oXG4gICAgICAgICAgICAgICAgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bnBhY2sgYXBwbGljYXRpb24gJyR7cmVxLkFwcGxpY2F0aW9uTmFtZX0nIHdpdGggdmVyc2lvbiAnJHtyZXEuVmVyc2lvbn0nP2BcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuVW5wYWNrTG93Q29kZVVuaXQoXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgcmVxXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAgSGVscGVyc1xuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQXBwbGljYXRpb24oXG4gICAgICAgIHJlcTogU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCdjYWxsaW5nIGhhbmRsZSBTYXZlIEFwcDogJywgc3RhdGUpO1xuXG4gICAgICAgIGNvbnN0IHNhdmVFYUM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uczoge30sXG4gICAgICAgICAgICBQcm9qZWN0czoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHJlcS5Qcm9qZWN0TG9va3VwKSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1Byb2ogPSB7XG4gICAgICAgICAgICAgICAgW3JlcS5Qcm9qZWN0TG9va3VwXToge1xuICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkxvb2t1cHM6IFtyZXEuQXBwbGljYXRpb25Mb29rdXBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzYXZlRWFDLlByb2plY3RzID0gZXhpc3RpbmdQcm9qO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcS5BcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgc2F2ZUVhQy5BcHBsaWNhdGlvbnNbcmVxLkFwcGxpY2F0aW9uTG9va3VwXSA9IHJlcS5BcHBsaWNhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvL2F3YWl0XG4gICAgICAgIC8vIGNvbnN0IHN0YXR1cyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgc2F2ZUVhQ1xuICAgICAgICApO1xuICAgICAgICAvLyBdKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1N0YXRlIGFmdGVyIHNhdmUgYXBwOiAnLCBzdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVERlNNb2RpZmllcihcbiAgICAgICAgcmVxOiBTYXZlREZTTW9kaWZpZXJFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgTW9kaWZpZXJzOiB7fSxcbiAgICAgICAgICAgIFByb2plY3RzOiB7fSxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uczoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHJlcS5Nb2RpZmllcikge1xuICAgICAgICAgICAgc2F2ZUVhQy5Nb2RpZmllcnNbcmVxLk1vZGlmaWVyTG9va3Vwc1swXV0gPSByZXEuTW9kaWZpZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxLlByb2plY3RMb29rdXBzKSB7XG4gICAgICAgICAgICByZXEuUHJvamVjdExvb2t1cHMuZm9yRWFjaCgobG9va3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgc2F2ZUVhQy5Qcm9qZWN0c1tsb29rdXBdID0ge1xuICAgICAgICAgICAgICAgICAgICBNb2RpZmllckxvb2t1cHM6IHJlcS5Nb2RpZmllckxvb2t1cHMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcS5BcHBsaWNhdGlvbkxvb2t1cCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0FQUExPb2t1cDogJywgcmVxLkFwcGxpY2F0aW9uTG9va3VwKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdzYXZlRUFDOiAnLCBzYXZlRWFDKTtcbiAgICAgICAgICAgIHNhdmVFYUMuQXBwbGljYXRpb25zW3JlcS5BcHBsaWNhdGlvbkxvb2t1cF0gPSB7XG4gICAgICAgICAgICAgICAgTW9kaWZpZXJMb29rdXBzOiByZXEuTW9kaWZpZXJMb29rdXBzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdTYXZlIG1vZCBlYWM6ICcsIHNhdmVFYUMpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIHNhdmVFYUNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZUVudmlyb25tZW50KFxuICAgICAgICByZXE6IFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGU/LkVhQz8uRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgIERhdGFUb2tlbnM6IHt9LFxuICAgICAgICAgICAgRW52aXJvbm1lbnRzOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocmVxLkVudmlyb25tZW50KSB7XG4gICAgICAgICAgICBzYXZlRWFDLkVudmlyb25tZW50c1tyZXEuRW52aXJvbm1lbnRMb29rdXBdID0gcmVxLkVudmlyb25tZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcS5FbnRlcnByaXNlRGF0YVRva2Vucykge1xuICAgICAgICAgICAgc2F2ZUVhQy5EYXRhVG9rZW5zID0gcmVxLkVudGVycHJpc2VEYXRhVG9rZW5zO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgc2F2ZUVhQ1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlUHJvamVjdChcbiAgICAgICAgcHJvamVjdExvb2t1cDogc3RyaW5nLFxuICAgICAgICBwcm9qZWN0OiBFYUNQcm9qZWN0QXNDb2RlXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3QgcHJvakhvc3RzOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0hvc3QgfSA9IHt9O1xuXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBwcm9qZWN0Py5Ib3N0cz8uZm9yRWFjaCgoaG9zdDogYW55KSA9PiB7XG4gICAgICAgICAgICBwcm9qSG9zdHNbaG9zdF0gPSBzdGF0ZS5FYUMuSG9zdHNbaG9zdF07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNhdmVFYUM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgIEVudGVycHJpc2U6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5FYUMuRW50ZXJwcmlzZSxcbiAgICAgICAgICAgICAgICBQcmltYXJ5SG9zdDogcHJvamVjdC5QcmltYXJ5SG9zdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBIb3N0czogcHJvakhvc3RzLFxuICAgICAgICAgICAgLy8gUHJvdmlkZXJzOiBzdGF0ZS5FYUMuUHJvdmlkZXJzLCAgLy8gIFRPRE86ICBSZW1vdmUgYWZ0ZXIgYWxsIHByb3ZpZGVycyBBREIyQydzIGhhdmUgYmVlbiB1cGdyYWRlZFxuICAgICAgICAgICAgUHJvamVjdHM6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHNhdmVFYUMuUHJvamVjdHNbcHJvamVjdExvb2t1cF0gPSBwcm9qZWN0O1xuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdzYXZlIGVhYyByZXF1ZXN0OiAnLCBzYXZlRWFDKTtcblxuICAgICAgICBsZXQgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgc2F2ZUVhQ1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuU2V0RWRpdFByb2plY3RTZXR0aW5ncyhwcm9qZWN0TG9va3VwKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG59XG4iXX0=