vcomply-workflow-engine 6.3.8 → 6.3.9

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.
@@ -437,8 +437,7 @@ export class ResponsibilityService {
437
437
  { key: 'formatAndEvidence', run: () => this.isFormatAndEvidenceMissing(responsibilityForm, !!fields?.formatAndEvidence?.mandatory) },
438
438
  { key: 'assessment', run: () => this.isAssessmentMissing(responsibilityForm, !!fields?.assessment?.mandatory) },
439
439
  { key: 'reviewer', run: () => this.isReviewerMissing(responsibilityForm, !!fields?.reviewer?.mandatory, featureFlag_groups) },
440
- { key: 'cc', run: () => this.isCcMissing(responsibilityForm, !!fields?.cc?.mandatory, featureFlag_groups) },
441
- { key: 'fcc', run: () => this.isFccMissing(responsibilityForm, !!fields?.fcc?.mandatory, featureFlag_groups) },
440
+ { key: 'cc', run: () => this.isOverseerMissing(responsibilityForm, !!fields?.cc?.mandatory, featureFlag_groups) },
442
441
  { key: 'grc', run: () => this.isGrcMissing(responsibilityForm, !!fields?.grc?.mandatory) },
443
442
  ];
444
443
  for (const check of checks) {
@@ -502,19 +501,12 @@ export class ResponsibilityService {
502
501
  const hasGroupReviewers = !!form?.groupReviewers?.list?.length;
503
502
  return !hasReviewers && (!featureFlagGroups || !hasGroupReviewers);
504
503
  }
505
- isCcMissing(form, required, featureFlagGroups) {
504
+ isOverseerMissing(form, required, featureFlagGroups) {
506
505
  if (!required)
507
506
  return false;
508
- const hasCc = !!form?.overseers?.list?.length;
509
- const hasGroupCc = !!form?.overseersGroups?.list?.length;
510
- return !hasCc && (!featureFlagGroups || !hasGroupCc);
511
- }
512
- isFccMissing(form, required, featureFlagGroups) {
513
- if (!required)
514
- return false;
515
- const hasFcc = !!form?.overseers?.notifyList?.length;
516
- const hasGroupFcc = !!form?.overseersGroups?.notifyList?.length;
517
- return !hasFcc && (!featureFlagGroups || !hasGroupFcc);
507
+ const hasOverseer = !!(form?.overseers?.list?.length || form?.overseers?.notifyList?.length);
508
+ const hasGroupOverseer = !!(form?.overseersGroups?.list?.length || form?.overseersGroups?.notifyList?.length);
509
+ return !hasOverseer && (!featureFlagGroups || !hasGroupOverseer);
518
510
  }
519
511
  isGrcMissing(form, required) {
520
512
  return required && !(form?.selectedGRCObjects?.length > 0);
@@ -530,4 +522,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
530
522
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
531
523
  type: Optional
532
524
  }] }]; } });
533
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUt2RCxNQUFNLE9BQU8scUJBQXFCO0lBaUJoQyxZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFqQmxDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGVBQVUsR0FBeUIsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDekQsV0FBTSxHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUM1RCxpQkFBWSxHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUNsRSwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQ3RFLEVBQUUsQ0FDSCxDQUFDO1FBQ0ssY0FBUyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUMvRCwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQ3RFLEVBQUUsQ0FDSCxDQUFDO1FBQ00saUJBQVksR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDcEUsaUJBQVks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QVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxZQUFZLENBQUMsSUFBUyxFQUFFLFFBQWlCO1FBQy9DLE9BQU8sUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7K0dBOXZCVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQkksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXNzbWVudExpc3QgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtbGlzdC9zZXJ2aWNlL2Fzc2Vzc21lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXNwb25zaWJpbHR5LmludGVyZmFjZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIHtcbiAgZW52ITogYW55O1xuICBkYXRhUGVyUGFnZSA9IDMwO1xuXG4gIGdyY093bmVycyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgcHVibGljIFJDTGlzdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuICBwdWJsaWMgQXNzaWdub3JMaXN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG4gIHB1YmxpYyBBc3N1cmFuY2VMaXN0Rm9yQXVkaXQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFxuICAgIFtdXG4gICk7XG4gIHB1YmxpYyBHcm91cExpc3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgcHVibGljIEFzc3VyYW5jZUNhdGVnb3J5TGlzdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oXG4gICAgW11cbiAgKTtcbiAgcHJpdmF0ZSBvdmVyc2Vlckxpc3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIHBvbGljeUdyb3VwczogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QocGFyYW1zPzogSHR0cFBhcmFtcykge1xuICAgIGlmICh0aGlzLlJDTGlzdC5nZXRWYWx1ZSgpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuUkNMaXN0LmdldFZhbHVlKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgKyAncmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5SQ0xpc3QubmV4dChyZXMpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRPcmdhbml6YXRpb25Hcm91cHMocGFyYW1zPzogSHR0cFBhcmFtcykge1xuICAgIGlmICh0aGlzLkdyb3VwTGlzdC5nZXRWYWx1ZSgpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuR3JvdXBMaXN0LmdldFZhbHVlKCkpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAnZ3JvdXBzTGlzdCZzdGF0dXM9MSZ0eXBlPWNvbXBsaWFuY2UnLFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuR3JvdXBMaXN0Lm5leHQocmVzKTtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0T3JnYW5pemF0aW9uUG9saWN5R3JvdXBzKHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5wb2xpY3lHcm91cHM/LmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBvbGljeUdyb3Vwcz8udmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAgICdncm91cHNMaXN0JnBlcm1UeXBlPW1hbmFnZVBvbGljaWVzJmZldGNoX2FsbD10cnVlJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLnBvbGljeUdyb3Vwcy5uZXh0KHJlcyk7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0T3JnYW5pemF0aW9uT3ZlcnNlZXJzR3JvdXBzKHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5vdmVyc2Vlckxpc3Q/LmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLm92ZXJzZWVyTGlzdD8udmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvbkdldCArICdncm91cHNMaXN0JmZldGNoX2FsbD10cnVlJywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5vdmVyc2Vlckxpc3QubmV4dChyZXMpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvblVzZXJzKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYub3JnYW5pemF0aW9uR2V0ICsgJ29yZ2FuaXphdGlvblVzZXJzJywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvblBlb3BsZShwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvbkdldCArICdwZW9wbGUnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRBc3NpZ25vcnNMaXN0KHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5Bc3NpZ25vckxpc3QuZ2V0VmFsdWUoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLkFzc2lnbm9yTGlzdC5nZXRWYWx1ZSgpKTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArICdvcmdhbml6YXRpb25Vc2VycyZpc09uQmVoYWxmPTEnLFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuQXNzaWdub3JMaXN0Lm5leHQocmVzKTtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgKyAnY29tcGxpYW5jZUNhdGVnb3J5L0NhdGVnb3J5TGlzdFRyZWUnLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG4gIGdldFByb2dyYW1zTGlzdChwYXJhbXM6IEh0dHBQYXJhbXMsIGlkcz86IGFueSkge1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGNvbnN0IHByb2dyYW1JZCA9IHsgcHJvZ3JhbUlkOiBpZHMgfTtcbiAgICBpZiAoaWRzPy5sZW5ndGgpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgncGF5bG9hZC1vYmplY3QnLCBKU09OLnN0cmluZ2lmeShwcm9ncmFtSWQpKTtcblxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VQb3N0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9wcm9ncmFtTGlzdCcsXG4gICAgICAgICAgcHJvZ3JhbUlkLFxuICAgICAgICAgIHsgcGFyYW1zLCBoZWFkZXJzIH1cbiAgICAgICAgKVxuICAgICAgICAucGlwZShyZXRyeSgyKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdjb21wbGlhbmNlQ2F0ZWdvcnkvcHJvZ3JhbUxpc3QnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRQcm9ncmFtc0xpc3RDb3VudChwYXJhbXM6IEh0dHBQYXJhbXMsIGlkcz86IGFueSkge1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9wcm9ncmFtTGlzdENvdW50JyxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZ2V0Q2F0ZWdvcmllc1VuZGVyUHJvZ3JhbShwYXJhbXM6IEh0dHBQYXJhbXMpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeUxpc3RUcmVlJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZ2V0QXNzdXJhbmNlKCkge1xuICAgIGlmICh0aGlzLkFzc3VyYW5jZUNhdGVnb3J5TGlzdC5nZXRWYWx1ZSgpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuQXNzdXJhbmNlQ2F0ZWdvcnlMaXN0LmdldFZhbHVlKCkpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LmFzc3VyYW5jZUdldCArICdjYXRlZ29yeS9saXN0JmlkPTEnLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5Bc3N1cmFuY2VDYXRlZ29yeUxpc3QubmV4dChyZXMpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRSQ0RldGFpbHNPZkZyYW1ld29yayhyY19pZDogYW55LCBjYXRlZ29yeV9pZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgK1xuICAgICAgICAnY29tcGxpYW5jZUNhdGVnb3J5L0NhdGVnb3J5UkNUcmVlQnlJZCZpZD0nICtcbiAgICAgICAgY2F0ZWdvcnlfaWQgK1xuICAgICAgICAnJnJjX2lkPScgK1xuICAgICAgICByY19pZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIHN1Ym1pdEVudHJ1c3QoZW50cnVzdF9ib2R5OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VQb3N0ICsgJ2NyZWF0ZVJlcG9ydCcsXG4gICAgICBlbnRydXN0X2JvZHksXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cbiAgdXBkYXRlRW50cnVzdChlbnRydXN0X2JvZHk6IGFueSwgb2JqZWN0X2lkOiBhbnksIGlzRGVsZWdhdGU6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZVBvc3QgK1xuICAgICAgICAnY3JlYXRlUmVwb3J0JnJlcG9ydElkPScgK1xuICAgICAgICBvYmplY3RfaWQgK1xuICAgICAgICAnJmlzRGVsZWdhdGU9MCcsXG4gICAgICBlbnRydXN0X2JvZHksXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBlZGl0UmVzcG9uc2liaWxpdHkob2JqZWN0SWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChcbiAgICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdjb21wbGlhbmNlUmVwb3J0L3JlcG9ydEJ5SWQmaWQ9JyArIG9iamVjdElkLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgYWRkQnVsa1Jlc3BvbnNpYmlsaXR5KGVudHJ1c3RfYm9keTogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLmVudi5jb21wbGlhbmNlUG9zdCArICdpbXBvcnQvY3JlYXRlJyxcbiAgICAgIGVudHJ1c3RfYm9keSxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIHVwbG9hZFRvTm9kZShwYXlsb2FkOiBhbnksIGRlczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KHRoaXMuZW52LmZpbGVVcGxvYWRFbmRQb2ludCArICdyaXNrL3Jlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCcsIHsgcmNfaWRfYXJyOiByY0FycmF5ID8/IFtdIH0sIHsgaGVhZGVycyB9KS5waXBlKHJldHJ5KDIpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVudi5maWxlVXBsb2FkRW5kUG9pbnQgKyBkZXMsIHBheWxvYWQsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBmaWxlc1VwbG9hZGluZzogYW55W10gPSBbXTtcbiAgZmlsZXNVcGxvYWRlZDogYW55W10gPSBbXTtcbiAgZmlsZXNVcGxvYWRlZEFuZFVwbG9hZGluZzogYW55W10gPSBbXTtcblxuICBnZXRDYXRlZ29yeURldGFpbHNCeUlkKGlkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeVRyZWVCeUlkJmlkPScgKyBpZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldEZyYW1lV29ya0NvdW50KHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2ZyYW1ld29ya2NvdW50JywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRGcmFtZVdvcmtMaXN0KHBhcmFtczogSHR0cFBhcmFtcykge1xuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LnByb2dyYW1FbmRwb2ludCArICcvZnJhbWV3b3JrJywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZ2V0RnJhbWV3b3JrU3ViQ2F0ZWdvcmllcyhpZDogYW55LCBwYXJhbXM6IEh0dHBQYXJhbXMpIHtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2ZyYW1ld29yay8nICsgaWQsIGh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0RnJhbWV3b3JrQ29udHJvbHMoaWQ6IGFueSwgcGFyYW1zOiBIdHRwUGFyYW1zKSB7XG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYucHJvZ3JhbUVuZHBvaW50ICsgJy9jb250cm9scy8nICsgaWQsIGh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZmlsZVVwbG9hZChmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5jb21wbGlhbmNlUG9zdCArICdmaWxlL3VwbG9hZCcsIGZpbGUsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRBc3Nlc3NtZW50Q2F0ZWdvcnkocGF5bG9hZDogYW55LCBwcm9ncmFtX2lkcz86IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoXG4gICAgICAgIHRoaXMuZW52LmFzc2Vzc21lbnRFbnBvaW50ICtcbiAgICAgICAgICAnY2F0ZWdvcnkvbGlzdCZpc0NyZWF0ZVJlc3BvbnNpYmlsaXR5PXRydWUnICtcbiAgICAgICAgICAocHJvZ3JhbV9pZHMgPyAnJnByb2dyYW1faWRzPScgKyBwcm9ncmFtX2lkcyA6ICcnKSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldEFzc2Vzc21lbnRMaXN0KHBheWxvYWQ6IGFueSwgaWQ6IHN0cmluZywgcHJvZ3JhbV9pZHM/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PEFycmF5PEFzc2Vzc21lbnRMaXN0Pj4oXG4gICAgICAgIHRoaXMuZW52LmFzc2Vzc21lbnRFbnBvaW50ICtcbiAgICAgICAgICAnYXNzZXNzbWVudC9zZWxlY3RBc3Nlc3NtZW50JmlzQ3JlYXRlUmVzcG9uc2liaWxpdHk9dHJ1ZSZjYXRpZD0nICtcbiAgICAgICAgICBpZCArXG4gICAgICAgICAgKHByb2dyYW1faWRzID8gJyZwcm9ncmFtX2lkcz0nICsgcHJvZ3JhbV9pZHMgOiAnJyksXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8QXJyYXk8QXNzZXNzbWVudExpc3Q+PihcbiAgICAgICAgdGhpcy5lbnYuYXNzZXNzbWVudEVucG9pbnQgKyAnYXNzZXNzbWVudC9nZXRBc3Nlc3NtZW50QnlJZCZpZD0nICsgaWQsXG4gICAgICAgIHt9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0R1JDT3duZXJMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxuICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgJ29yZ2FuaXphdGlvbk1lbWJlcnMmaXNHcmNPYmplY3Q9dHJ1ZSZ0eXBlPWFsbCcsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBnZXRPYmplY3RUeXBlKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxuICAgICAgdGhpcy5lbnYuZ3JjX2dldCArICdncmNPYmplY3QvZ2V0R1JDVHlwZUxpc3QmcHJvamVjdGVkPTEnLFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRHUkNPYmplY3REZXRhaWxzKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LmdyY19nZXQgKyAnZ3JjL2dyY0J5SWQmaXNFZGl0PXRydWUmaWQ9JyArIGlkLFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhZGRHUkNPYmplY3QocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KHRoaXMuZW52LmdyY19nZXQgKyAnZ3JjL3NhdmVHUkMnLCBwYXlsb2FkLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlR1JDT2JqZWN0KHBheWxvYWQ6IGFueSwgX2lkOiBzdHJpbmcpIHtcbiAgICBwYXlsb2FkLl9pZCA9IF9pZDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueVtdPih0aGlzLmVudi5ncmNfZ2V0ICsgJ2dyYy91cGRhdGVHUkMnLCBwYXlsb2FkLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Rm9ybUNvbmZpZygpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAnY29tcGxpYW5jZU9wcyZjb25maWdUeXBlPXJlc3BvbnNpYmlsaXR5JyxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgyKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoX2Vycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9mKHsgZGF0YTogeyBmaWVsZHM6IHt9IH0gfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYnVpbGRSZXNwb25zaWJpbGl0eVBheWxvYWQoZXZlbnQ6IGFueSk6IFJlc3BvbnNpYmlsaXR5IHwgbnVsbCB7XG4gICAgY29uc29sZS5sb2coZXZlbnQsICdldmVudCcpO1xuICAgIGNvbnN0IHBheWxvYWQ6IFJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgdGl0bGU6IGV2ZW50LnJlcG9ydF9uYW1lLFxuICAgICAga2V5OiBldmVudC5pc19rZXlfY29tcGxpYW5jZSxcbiAgICAgIHJpc2tDbGFzczogdGhpcy5nZXRSaXNrQ2xhc3MoZXZlbnQucmlza19jbGFzcyksXG4gICAgICBub3RlczogZXZlbnQucmVtYXJrcyxcbiAgICAgIG9iamVjdGl2ZTogZXZlbnQub2JqZWN0aXZlLFxuICAgICAgZnJlcXVlbmN5OiBldmVudC5mcmVxdWVuY3ksXG4gICAgICBhc3NpZ25vcklkOiBldmVudC5tZW1iZXJfaWQsXG4gICAgICBhc3NpZ25lZToge1xuICAgICAgICB0eXBlOiAgZXZlbnQuaXNHcm91cEFzc2lnblRvID8gJ2FueV9vbmUnIDogJ2FsbCcsXG4gICAgICAgIHVzZXJJZDogZXZlbnQuYXNzaWduZWVfbWVtYmVyX2lkPy5zcGxpdCgnLCcpLm1hcChOdW1iZXIpLFxuICAgICAgICB1c2VyR3JvdXBJZDogZXZlbnQuaXNHcm91cEFzc2lnblRvID9ldmVudC51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHMgOiAgZXZlbnQudXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzc1xuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiB7XG4gICAgICAgIHR5cGU6ICBldmVudC5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPyAnYW55JyA6ICdhbGwnLFxuICAgICAgICBpZDogZXZlbnQucmVzcG9uc2liaWxpdHlDZW50ZXJBcnJcbiAgICAgIH0sXG4gICAgICByZXZpZXdlcjoge1xuICAgICAgICB0eXBlOiBldmVudC5yZXZpZXdlcl9hcnI/LnR5cGU/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgIHVzZXJJZDogZXZlbnQucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2Vycz8ubWFwKChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlcj8ubWVtYmVyX2lkKSxcbiAgICAgICAgZnJlcXVlbmN5OiB7XG4gICAgICAgICAgZHVlRGF5czogZXZlbnQ/LnJldmlld19hZnRlcl9kYXlzLFxuICAgICAgICAgIGV4dGVuc2lvbkRheXM6IGV2ZW50Py5yZXZpZXdfZmFpbGVkX2FmdGVyX2RheXNcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG92ZXJzZWVyOiB7XG4gICAgICAgIHN1Y2Nlc3M6IHtcbiAgICAgICAgICB1c2VySWQ6IGV2ZW50LmNjX21lbWJlcl9lbWFpbD8uc3BsaXQoJywnKT8uZmlsdGVyKEJvb2xlYW4pPy5tYXAoTnVtYmVyKSxcbiAgICAgICAgICB1c2VyR3JvdXBJZDogZXZlbnQudXNlckdyb3VwSWRzPy5jY0VtYWlsR3JvdXBJZHNcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDoge1xuICAgICAgICAgIHVzZXJJZDogZXZlbnQuZmFpbHVyZV9jY19tZW1iZXJfZW1haWw/LnNwbGl0KCcsJyk/LmZpbHRlcihCb29sZWFuKT8ubWFwKE51bWJlciksXG4gICAgICAgICAgdXNlckdyb3VwSWQ6IGV2ZW50LnVzZXJHcm91cElkcz8uZmFpbHVyZUNDRW1haWxHcm91cElkc1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXZpZGVuY2U6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGV2ZW50LnJlcG9ydF91cGxvYWRfZmxhZyxcbiAgICAgICAgZm9ybWF0OiB7XG4gICAgICAgICAgdHlwZTogZXZlbnQucmVwb3J0X2Zvcm1hdD8ubGVuZ3RoID8gJ2ZpbGUnIDogKGV2ZW50LmxpbmtfZm9yX2RldGFpbHM/Lmxlbmd0aCA/ICdsaW5rJyA6ICcnKSxcbiAgICAgICAgICBkYXRhOiBldmVudD8ucmVwb3J0X2Zvcm1hdD8ubGVuZ3RoID8gZXZlbnQucmVwb3J0X2Zvcm1hdCA6IGV2ZW50Py5saW5rX2Zvcl9kZXRhaWxzXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YWdzOiBKU09OLnBhcnNlKGV2ZW50LmN1c3RvbV90YWdzKSxcbiAgICAgIHByb2dyYW06IGV2ZW50LmNhdGVnb3J5X2lkPy5zcGxpdCgnLCcpPy5maWx0ZXIoQm9vbGVhbik/Lm1hcChOdW1iZXIpLFxuICAgICAgZ3JjT2JqZWN0SWQ6IGV2ZW50LmxpbmtlZF9HUkNfaWRzLFxuICAgICAgYXNzZXNzbWVudElkOiBldmVudC5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkLFxuICAgICAgXG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9XG5cbiAgZ2V0Umlza0NsYXNzKHJpc2tDbGFzczogMCB8IDEgfCAyIHwgMyk6ICdsb3cnIHwgJ2xvdy1tZWRpdW0nIHwgJ21lZGl1bS1oaWdoJyB8ICdoaWdoJyAge1xuICAgIGNvbnN0IHJpc2tDbGFzc2VzOiBSZWNvcmQ8bnVtYmVyLCAnbG93JyB8ICdsb3ctbWVkaXVtJyB8ICdtZWRpdW0taGlnaCcgfCAnaGlnaCc+ID0ge1xuICAgICAgMDogJ2xvdycsXG4gICAgICAxOiAnbG93LW1lZGl1bScsXG4gICAgICAyOiAnbWVkaXVtLWhpZ2gnLFxuICAgICAgMzogJ2hpZ2gnXG4gICAgfTtcbiAgICByZXR1cm4gcmlza0NsYXNzZXNbcmlza0NsYXNzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIEhUTUwgZW50aXRpZXMgYW5kIHRhZ3MgZnJvbSBhIHN0cmluZyBhbmQgdHJpbXMgd2hpdGVzcGFjZS5cbiAgICogVXNlZCB0byBjaGVjayBpZiBhIHJpY2ggdGV4dCBmaWVsZCBpcyBlZmZlY3RpdmVseSBibGFuay5cbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgc3RyaW5nIHRvIGNsZWFuXG4gICAqIEByZXR1cm5zIFRoZSBjbGVhbmVkIHN0cmluZyBvciBlbXB0eSBzdHJpbmcgaWYgaW5wdXQgaXMgZmFsc3lcbiAgICovXG4gIGNoZWNrQmxhbmsoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgbGV0IHRleHQgPSBkYXRhO1xuICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgLnJlcGxhY2UoL1xcJm5ic3A7L2csICcnKVxuICAgICAgICAucmVwbGFjZSgvPGJyXFxzKlxcLz8+KD86XFxzKil8PFxcL2JyPi9naSwgJycpXG4gICAgICAgIC50cmltKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3JtIGFnYWluc3QgdGhlIGN1cnJlbnQgbWFuZGF0b3J5IGZpZWxkIGNvbmZpZ3VyYXRpb24uXG4gICAqIFxuICAgKiBAcGFyYW0gcmVzcG9uc2liaWxpdHlGb3JtIC0gVGhlIHJlc3BvbnNpYmlsaXR5IGZvcm0gZGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gbWFuZGF0b3J5RmllbGRzTGlzdCAtIENvbmZpZ3VyYXRpb24gb2JqZWN0IGRlZmluaW5nIHdoaWNoIGZpZWxkcyBhcmUgbWFuZGF0b3J5XG4gICAqIEBwYXJhbSBmZWF0dXJlRmxhZ19ncm91cHMgLSBGZWF0dXJlIGZsYWcgaW5kaWNhdGluZyBpZiBncm91cCBhc3NpZ25tZW50cyBhcmUgZW5hYmxlZFxuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyB2YWxpZGF0aW9uIHJlc3VsdCB3aXRoIGBpc1ZhbGlkYCBib29sZWFuIGFuZCBgaW52YWxpZFR5cGVgIHN0cmluZ1xuICAgKiAgICAgICAgICBpbmRpY2F0aW5nIHdoaWNoIGZpZWxkIGZhaWxlZCB2YWxpZGF0aW9uIChlbXB0eSBzdHJpbmcgaWYgYWxsIHZhbGlkYXRpb25zIHBhc3MpXG4gICAqL1xuICB2YWxpZGF0ZVJlc3BvbnNpYmlsaXR5QnlDb25maWcoXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtOiBhbnksXG4gICAgbWFuZGF0b3J5RmllbGRzTGlzdDogYW55LFxuICAgIGZlYXR1cmVGbGFnX2dyb3VwczogYm9vbGVhblxuICApOiB7IGlzVmFsaWQ6IGJvb2xlYW47IGludmFsaWRUeXBlOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgZmllbGRzID0gbWFuZGF0b3J5RmllbGRzTGlzdCB8fCB7fTtcblxuICAgIGNvbnN0IGNoZWNrczogQXJyYXk8e1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICBydW46ICgpID0+IGJvb2xlYW47XG4gICAgfT4gPSBbXG4gICAgICB7IGtleTogJ3dob20nLCBydW46ICgpID0+IHRoaXMuaXNPbkJlaGFsZk1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8ub25CZWhhbGY/Lm1hbmRhdG9yeSkgfSxcbiAgICAgIHsga2V5OiAnd2hhdCcsIHJ1bjogKCkgPT4gdGhpcy5pc05hbWVNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/Lm5hbWU/Lm1hbmRhdG9yeSkgfSxcbiAgICAgIHsga2V5OiAnd2hvJywgcnVuOiAoKSA9PiB0aGlzLmlzQXNzaWduZWVNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/LmFzc2lnbmVlPy5tYW5kYXRvcnksIGZlYXR1cmVGbGFnX2dyb3VwcykgfSxcbiAgICAgIHsga2V5OiAnd2hlbicsIHJ1bjogKCkgPT4gdGhpcy5pc0ZyZXF1ZW5jeU1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8uZnJlcXVlbmN5Py5tYW5kYXRvcnkpIH0sXG4gICAgICB7IGtleTogJ25vdGVzJywgcnVuOiAoKSA9PiB0aGlzLmlzTm90ZU1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8ubm90ZT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdvYmplY3RpdmUnLCBydW46ICgpID0+IHRoaXMuaXNPYmplY3RpdmVNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/Lm9iamVjdGl2ZT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdyYycsIHJ1bjogKCkgPT4gdGhpcy5pc1JjTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5yYz8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdwcm9ncmFtJywgcnVuOiAoKSA9PiB0aGlzLmlzUHJvZ3JhbU1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8ucHJvZ3JhbT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdmb3JtYXRBbmRFdmlkZW5jZScsIHJ1bjogKCkgPT4gdGhpcy5pc0Zvcm1hdEFuZEV2aWRlbmNlTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5mb3JtYXRBbmRFdmlkZW5jZT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdhc3Nlc3NtZW50JywgcnVuOiAoKSA9PiB0aGlzLmlzQXNzZXNzbWVudE1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8uYXNzZXNzbWVudD8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdyZXZpZXdlcicsIHJ1bjogKCkgPT4gdGhpcy5pc1Jldmlld2VyTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5yZXZpZXdlcj8ubWFuZGF0b3J5LCBmZWF0dXJlRmxhZ19ncm91cHMpIH0sXG4gICAgICB7IGtleTogJ2NjJywgcnVuOiAoKSA9PiB0aGlzLmlzQ2NNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/LmNjPy5tYW5kYXRvcnksIGZlYXR1cmVGbGFnX2dyb3VwcykgfSxcbiAgICAgIHsga2V5OiAnZmNjJywgcnVuOiAoKSA9PiB0aGlzLmlzRmNjTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5mY2M/Lm1hbmRhdG9yeSwgZmVhdHVyZUZsYWdfZ3JvdXBzKSB9LFxuICAgICAgeyBrZXk6ICdncmMnLCBydW46ICgpID0+IHRoaXMuaXNHcmNNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/LmdyYz8ubWFuZGF0b3J5KSB9LFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIGNoZWNrcykge1xuICAgICAgaWYgKGNoZWNrLnJ1bigpKSB7XG4gICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IGZhbHNlLCBpbnZhbGlkVHlwZTogY2hlY2sua2V5IH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgaW52YWxpZFR5cGU6ICcnIH07XG4gIH1cblxuICAvLyAtLSBQcml2YXRlIHZhbGlkYXRpb24gaGVscGVycyAtLVxuICBwcml2YXRlIHRleHRJc0JsYW5rKHZhbHVlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF2YWx1ZSB8fCB0aGlzLmNoZWNrQmxhbmsodmFsdWUpLnRyaW0oKSA9PT0gJyc7XG4gIH1cblxuICBwcml2YXRlIGlzT25CZWhhbGZNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgcmVxdWlyZWQgJiZcbiAgICAgIGZvcm0/LmFzc2lnbm9ycz8uZW5hYmxlICYmXG4gICAgICBmb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA9PT0gMFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzTmFtZU1pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXF1aXJlZCAmJiB0aGlzLnRleHRJc0JsYW5rKGZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBc3NpZ25lZU1pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbiwgZmVhdHVyZUZsYWdHcm91cHM6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXJlcXVpcmVkKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaGFzVXNlckFzc2lnbmVlcyA9ICEhZm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGg7XG4gICAgY29uc3QgaGFzR3JvdXBBc3NpZ25lZXMgPSAhIWZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGg7XG4gICAgcmV0dXJuICFoYXNVc2VyQXNzaWduZWVzICYmICghZmVhdHVyZUZsYWdHcm91cHMgfHwgIWhhc0dyb3VwQXNzaWduZWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGcmVxdWVuY3lNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgcmVxdWlyZWQgJiZcbiAgICAgICghZm9ybT8uZnJlcXVlbmN5IHx8IGZvcm0/LmZyZXF1ZW5jeSA9PT0gJycgfHwgZm9ybT8uZnJlcXVlbmN5ID09PSAnNX4wfjB+MCcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNOb3RlTWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlcXVpcmVkICYmIHRoaXMudGV4dElzQmxhbmsoZm9ybT8uZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09iamVjdGl2ZU1pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXF1aXJlZCAmJiB0aGlzLnRleHRJc0JsYW5rKGZvcm0/Lm9iamVjdGl2ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmNNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVxdWlyZWQgJiYgIShmb3JtPy5yYz8ubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwcml2YXRlIGlzUHJvZ3JhbU1pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXF1aXJlZCAmJiAhKGZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDApO1xuICAgIH1cblxuICBwcml2YXRlIGlzRm9ybWF0QW5kRXZpZGVuY2VNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXJlcXVpcmVkKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZmUgPSBmb3JtPy5mb3JtYXRBbmRFdmlkZW5jZTtcbiAgICBjb25zdCBoYXNGaWxlcyA9ICEhZmU/LmZvcm1hdEZpbGVzPy5sZW5ndGg7XG4gICAgY29uc3QgaGFzTGlua3MgPSAhIWZlPy5mb3JtYXRMaW5rcz8ubGVuZ3RoO1xuICAgIGNvbnN0IHJlcXVpcmVzTm90aGluZyA9ICFmZT8uZm9ybWF0UmVxdWlyZWQgJiYgIWZlPy5ldmlkZW5jZVJlcXVpcmVkO1xuICAgIHJldHVybiAhZmUgfHwgKHJlcXVpcmVzTm90aGluZyAmJiAhaGFzRmlsZXMgJiYgIWhhc0xpbmtzKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBc3Nlc3NtZW50TWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlcXVpcmVkICYmICghZm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZCB8fCBmb3JtPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkID09PSAnJylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jldmlld2VyTWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuLCBmZWF0dXJlRmxhZ0dyb3VwczogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICghcmVxdWlyZWQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBoYXNSZXZpZXdlcnMgPSAhIWZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0dyb3VwUmV2aWV3ZXJzID0gISFmb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoO1xuICAgIHJldHVybiAhaGFzUmV2aWV3ZXJzICYmICghZmVhdHVyZUZsYWdHcm91cHMgfHwgIWhhc0dyb3VwUmV2aWV3ZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDY01pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbiwgZmVhdHVyZUZsYWdHcm91cHM6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXJlcXVpcmVkKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaGFzQ2MgPSAhIWZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0dyb3VwQ2MgPSAhIWZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoO1xuICAgIHJldHVybiAhaGFzQ2MgJiYgKCFmZWF0dXJlRmxhZ0dyb3VwcyB8fCAhaGFzR3JvdXBDYyk7XG4gIH1cblxuICBwcml2YXRlIGlzRmNjTWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuLCBmZWF0dXJlRmxhZ0dyb3VwczogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICghcmVxdWlyZWQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBoYXNGY2MgPSAhIWZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0dyb3VwRmNjID0gISFmb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aDtcbiAgICByZXR1cm4gIWhhc0ZjYyAmJiAoIWZlYXR1cmVGbGFnR3JvdXBzIHx8ICFoYXNHcm91cEZjYyk7XG4gIH1cblxuICBwcml2YXRlIGlzR3JjTWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlcXVpcmVkICYmICEoZm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKTtcbiAgfVxufVxuIl19
525
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUt2RCxNQUFNLE9BQU8scUJBQXFCO0lBaUJoQyxZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFqQmxDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGVBQVUsR0FBeUIsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDekQsV0FBTSxHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUM1RCxpQkFBWSxHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUNsRSwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQ3RFLEVBQUUsQ0FDSCxDQUFDO1FBQ0ssY0FBUyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUMvRCwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQ3RFLEVBQUUsQ0FDSCxDQUFDO1FBQ00saUJBQVksR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDcEUsaUJBQVks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SSxFQUFFLE1BQU0sQ0FBQztRQUNyRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7UUFDL0QsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFTLEVBQUUsUUFBaUIsRUFBRSxpQkFBMEI7UUFDaEYsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM1QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0YsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBUyxFQUFFLFFBQWlCO1FBQy9DLE9BQU8sUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7K0dBdHZCVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQkksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXNzbWVudExpc3QgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtbGlzdC9zZXJ2aWNlL2Fzc2Vzc21lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXNwb25zaWJpbHR5LmludGVyZmFjZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIHtcbiAgZW52ITogYW55O1xuICBkYXRhUGVyUGFnZSA9IDMwO1xuXG4gIGdyY093bmVycyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgcHVibGljIFJDTGlzdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuICBwdWJsaWMgQXNzaWdub3JMaXN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG4gIHB1YmxpYyBBc3N1cmFuY2VMaXN0Rm9yQXVkaXQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFxuICAgIFtdXG4gICk7XG4gIHB1YmxpYyBHcm91cExpc3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgcHVibGljIEFzc3VyYW5jZUNhdGVnb3J5TGlzdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oXG4gICAgW11cbiAgKTtcbiAgcHJpdmF0ZSBvdmVyc2Vlckxpc3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIHBvbGljeUdyb3VwczogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QocGFyYW1zPzogSHR0cFBhcmFtcykge1xuICAgIGlmICh0aGlzLlJDTGlzdC5nZXRWYWx1ZSgpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuUkNMaXN0LmdldFZhbHVlKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgKyAncmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5SQ0xpc3QubmV4dChyZXMpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRPcmdhbml6YXRpb25Hcm91cHMocGFyYW1zPzogSHR0cFBhcmFtcykge1xuICAgIGlmICh0aGlzLkdyb3VwTGlzdC5nZXRWYWx1ZSgpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuR3JvdXBMaXN0LmdldFZhbHVlKCkpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAnZ3JvdXBzTGlzdCZzdGF0dXM9MSZ0eXBlPWNvbXBsaWFuY2UnLFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuR3JvdXBMaXN0Lm5leHQocmVzKTtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0T3JnYW5pemF0aW9uUG9saWN5R3JvdXBzKHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5wb2xpY3lHcm91cHM/LmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBvbGljeUdyb3Vwcz8udmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAgICdncm91cHNMaXN0JnBlcm1UeXBlPW1hbmFnZVBvbGljaWVzJmZldGNoX2FsbD10cnVlJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLnBvbGljeUdyb3Vwcy5uZXh0KHJlcyk7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0T3JnYW5pemF0aW9uT3ZlcnNlZXJzR3JvdXBzKHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5vdmVyc2Vlckxpc3Q/LmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLm92ZXJzZWVyTGlzdD8udmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvbkdldCArICdncm91cHNMaXN0JmZldGNoX2FsbD10cnVlJywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5vdmVyc2Vlckxpc3QubmV4dChyZXMpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvblVzZXJzKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYub3JnYW5pemF0aW9uR2V0ICsgJ29yZ2FuaXphdGlvblVzZXJzJywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvblBlb3BsZShwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvbkdldCArICdwZW9wbGUnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRBc3NpZ25vcnNMaXN0KHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5Bc3NpZ25vckxpc3QuZ2V0VmFsdWUoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLkFzc2lnbm9yTGlzdC5nZXRWYWx1ZSgpKTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArICdvcmdhbml6YXRpb25Vc2VycyZpc09uQmVoYWxmPTEnLFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuQXNzaWdub3JMaXN0Lm5leHQocmVzKTtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgKyAnY29tcGxpYW5jZUNhdGVnb3J5L0NhdGVnb3J5TGlzdFRyZWUnLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG4gIGdldFByb2dyYW1zTGlzdChwYXJhbXM6IEh0dHBQYXJhbXMsIGlkcz86IGFueSkge1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGNvbnN0IHByb2dyYW1JZCA9IHsgcHJvZ3JhbUlkOiBpZHMgfTtcbiAgICBpZiAoaWRzPy5sZW5ndGgpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgncGF5bG9hZC1vYmplY3QnLCBKU09OLnN0cmluZ2lmeShwcm9ncmFtSWQpKTtcblxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VQb3N0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9wcm9ncmFtTGlzdCcsXG4gICAgICAgICAgcHJvZ3JhbUlkLFxuICAgICAgICAgIHsgcGFyYW1zLCBoZWFkZXJzIH1cbiAgICAgICAgKVxuICAgICAgICAucGlwZShyZXRyeSgyKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdjb21wbGlhbmNlQ2F0ZWdvcnkvcHJvZ3JhbUxpc3QnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRQcm9ncmFtc0xpc3RDb3VudChwYXJhbXM6IEh0dHBQYXJhbXMsIGlkcz86IGFueSkge1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9wcm9ncmFtTGlzdENvdW50JyxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZ2V0Q2F0ZWdvcmllc1VuZGVyUHJvZ3JhbShwYXJhbXM6IEh0dHBQYXJhbXMpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeUxpc3RUcmVlJyxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZ2V0QXNzdXJhbmNlKCkge1xuICAgIGlmICh0aGlzLkFzc3VyYW5jZUNhdGVnb3J5TGlzdC5nZXRWYWx1ZSgpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuQXNzdXJhbmNlQ2F0ZWdvcnlMaXN0LmdldFZhbHVlKCkpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LmFzc3VyYW5jZUdldCArICdjYXRlZ29yeS9saXN0JmlkPTEnLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5Bc3N1cmFuY2VDYXRlZ29yeUxpc3QubmV4dChyZXMpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRSQ0RldGFpbHNPZkZyYW1ld29yayhyY19pZDogYW55LCBjYXRlZ29yeV9pZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgK1xuICAgICAgICAnY29tcGxpYW5jZUNhdGVnb3J5L0NhdGVnb3J5UkNUcmVlQnlJZCZpZD0nICtcbiAgICAgICAgY2F0ZWdvcnlfaWQgK1xuICAgICAgICAnJnJjX2lkPScgK1xuICAgICAgICByY19pZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIHN1Ym1pdEVudHJ1c3QoZW50cnVzdF9ib2R5OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VQb3N0ICsgJ2NyZWF0ZVJlcG9ydCcsXG4gICAgICBlbnRydXN0X2JvZHksXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cbiAgdXBkYXRlRW50cnVzdChlbnRydXN0X2JvZHk6IGFueSwgb2JqZWN0X2lkOiBhbnksIGlzRGVsZWdhdGU6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZVBvc3QgK1xuICAgICAgICAnY3JlYXRlUmVwb3J0JnJlcG9ydElkPScgK1xuICAgICAgICBvYmplY3RfaWQgK1xuICAgICAgICAnJmlzRGVsZWdhdGU9MCcsXG4gICAgICBlbnRydXN0X2JvZHksXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBlZGl0UmVzcG9uc2liaWxpdHkob2JqZWN0SWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChcbiAgICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdjb21wbGlhbmNlUmVwb3J0L3JlcG9ydEJ5SWQmaWQ9JyArIG9iamVjdElkLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgYWRkQnVsa1Jlc3BvbnNpYmlsaXR5KGVudHJ1c3RfYm9keTogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLmVudi5jb21wbGlhbmNlUG9zdCArICdpbXBvcnQvY3JlYXRlJyxcbiAgICAgIGVudHJ1c3RfYm9keSxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIHVwbG9hZFRvTm9kZShwYXlsb2FkOiBhbnksIGRlczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KHRoaXMuZW52LmZpbGVVcGxvYWRFbmRQb2ludCArICdyaXNrL3Jlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCcsIHsgcmNfaWRfYXJyOiByY0FycmF5ID8/IFtdIH0sIHsgaGVhZGVycyB9KS5waXBlKHJldHJ5KDIpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVudi5maWxlVXBsb2FkRW5kUG9pbnQgKyBkZXMsIHBheWxvYWQsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBmaWxlc1VwbG9hZGluZzogYW55W10gPSBbXTtcbiAgZmlsZXNVcGxvYWRlZDogYW55W10gPSBbXTtcbiAgZmlsZXNVcGxvYWRlZEFuZFVwbG9hZGluZzogYW55W10gPSBbXTtcblxuICBnZXRDYXRlZ29yeURldGFpbHNCeUlkKGlkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeVRyZWVCeUlkJmlkPScgKyBpZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldEZyYW1lV29ya0NvdW50KHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2ZyYW1ld29ya2NvdW50JywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRGcmFtZVdvcmtMaXN0KHBhcmFtczogSHR0cFBhcmFtcykge1xuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LnByb2dyYW1FbmRwb2ludCArICcvZnJhbWV3b3JrJywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZ2V0RnJhbWV3b3JrU3ViQ2F0ZWdvcmllcyhpZDogYW55LCBwYXJhbXM6IEh0dHBQYXJhbXMpIHtcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2ZyYW1ld29yay8nICsgaWQsIGh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0RnJhbWV3b3JrQ29udHJvbHMoaWQ6IGFueSwgcGFyYW1zOiBIdHRwUGFyYW1zKSB7XG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYucHJvZ3JhbUVuZHBvaW50ICsgJy9jb250cm9scy8nICsgaWQsIGh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZmlsZVVwbG9hZChmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5jb21wbGlhbmNlUG9zdCArICdmaWxlL3VwbG9hZCcsIGZpbGUsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRBc3Nlc3NtZW50Q2F0ZWdvcnkocGF5bG9hZDogYW55LCBwcm9ncmFtX2lkcz86IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoXG4gICAgICAgIHRoaXMuZW52LmFzc2Vzc21lbnRFbnBvaW50ICtcbiAgICAgICAgICAnY2F0ZWdvcnkvbGlzdCZpc0NyZWF0ZVJlc3BvbnNpYmlsaXR5PXRydWUnICtcbiAgICAgICAgICAocHJvZ3JhbV9pZHMgPyAnJnByb2dyYW1faWRzPScgKyBwcm9ncmFtX2lkcyA6ICcnKSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldEFzc2Vzc21lbnRMaXN0KHBheWxvYWQ6IGFueSwgaWQ6IHN0cmluZywgcHJvZ3JhbV9pZHM/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PEFycmF5PEFzc2Vzc21lbnRMaXN0Pj4oXG4gICAgICAgIHRoaXMuZW52LmFzc2Vzc21lbnRFbnBvaW50ICtcbiAgICAgICAgICAnYXNzZXNzbWVudC9zZWxlY3RBc3Nlc3NtZW50JmlzQ3JlYXRlUmVzcG9uc2liaWxpdHk9dHJ1ZSZjYXRpZD0nICtcbiAgICAgICAgICBpZCArXG4gICAgICAgICAgKHByb2dyYW1faWRzID8gJyZwcm9ncmFtX2lkcz0nICsgcHJvZ3JhbV9pZHMgOiAnJyksXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8QXJyYXk8QXNzZXNzbWVudExpc3Q+PihcbiAgICAgICAgdGhpcy5lbnYuYXNzZXNzbWVudEVucG9pbnQgKyAnYXNzZXNzbWVudC9nZXRBc3Nlc3NtZW50QnlJZCZpZD0nICsgaWQsXG4gICAgICAgIHt9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0R1JDT3duZXJMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxuICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgJ29yZ2FuaXphdGlvbk1lbWJlcnMmaXNHcmNPYmplY3Q9dHJ1ZSZ0eXBlPWFsbCcsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBnZXRPYmplY3RUeXBlKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxuICAgICAgdGhpcy5lbnYuZ3JjX2dldCArICdncmNPYmplY3QvZ2V0R1JDVHlwZUxpc3QmcHJvamVjdGVkPTEnLFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRHUkNPYmplY3REZXRhaWxzKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LmdyY19nZXQgKyAnZ3JjL2dyY0J5SWQmaXNFZGl0PXRydWUmaWQ9JyArIGlkLFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhZGRHUkNPYmplY3QocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KHRoaXMuZW52LmdyY19nZXQgKyAnZ3JjL3NhdmVHUkMnLCBwYXlsb2FkLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlR1JDT2JqZWN0KHBheWxvYWQ6IGFueSwgX2lkOiBzdHJpbmcpIHtcbiAgICBwYXlsb2FkLl9pZCA9IF9pZDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueVtdPih0aGlzLmVudi5ncmNfZ2V0ICsgJ2dyYy91cGRhdGVHUkMnLCBwYXlsb2FkLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Rm9ybUNvbmZpZygpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAnY29tcGxpYW5jZU9wcyZjb25maWdUeXBlPXJlc3BvbnNpYmlsaXR5JyxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgyKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoX2Vycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9mKHsgZGF0YTogeyBmaWVsZHM6IHt9IH0gfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYnVpbGRSZXNwb25zaWJpbGl0eVBheWxvYWQoZXZlbnQ6IGFueSk6IFJlc3BvbnNpYmlsaXR5IHwgbnVsbCB7XG4gICAgY29uc29sZS5sb2coZXZlbnQsICdldmVudCcpO1xuICAgIGNvbnN0IHBheWxvYWQ6IFJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgdGl0bGU6IGV2ZW50LnJlcG9ydF9uYW1lLFxuICAgICAga2V5OiBldmVudC5pc19rZXlfY29tcGxpYW5jZSxcbiAgICAgIHJpc2tDbGFzczogdGhpcy5nZXRSaXNrQ2xhc3MoZXZlbnQucmlza19jbGFzcyksXG4gICAgICBub3RlczogZXZlbnQucmVtYXJrcyxcbiAgICAgIG9iamVjdGl2ZTogZXZlbnQub2JqZWN0aXZlLFxuICAgICAgZnJlcXVlbmN5OiBldmVudC5mcmVxdWVuY3ksXG4gICAgICBhc3NpZ25vcklkOiBldmVudC5tZW1iZXJfaWQsXG4gICAgICBhc3NpZ25lZToge1xuICAgICAgICB0eXBlOiAgZXZlbnQuaXNHcm91cEFzc2lnblRvID8gJ2FueV9vbmUnIDogJ2FsbCcsXG4gICAgICAgIHVzZXJJZDogZXZlbnQuYXNzaWduZWVfbWVtYmVyX2lkPy5zcGxpdCgnLCcpLm1hcChOdW1iZXIpLFxuICAgICAgICB1c2VyR3JvdXBJZDogZXZlbnQuaXNHcm91cEFzc2lnblRvID9ldmVudC51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHMgOiAgZXZlbnQudXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzc1xuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiB7XG4gICAgICAgIHR5cGU6ICBldmVudC5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPyAnYW55JyA6ICdhbGwnLFxuICAgICAgICBpZDogZXZlbnQucmVzcG9uc2liaWxpdHlDZW50ZXJBcnJcbiAgICAgIH0sXG4gICAgICByZXZpZXdlcjoge1xuICAgICAgICB0eXBlOiBldmVudC5yZXZpZXdlcl9hcnI/LnR5cGU/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgIHVzZXJJZDogZXZlbnQucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2Vycz8ubWFwKChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlcj8ubWVtYmVyX2lkKSxcbiAgICAgICAgZnJlcXVlbmN5OiB7XG4gICAgICAgICAgZHVlRGF5czogZXZlbnQ/LnJldmlld19hZnRlcl9kYXlzLFxuICAgICAgICAgIGV4dGVuc2lvbkRheXM6IGV2ZW50Py5yZXZpZXdfZmFpbGVkX2FmdGVyX2RheXNcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG92ZXJzZWVyOiB7XG4gICAgICAgIHN1Y2Nlc3M6IHtcbiAgICAgICAgICB1c2VySWQ6IGV2ZW50LmNjX21lbWJlcl9lbWFpbD8uc3BsaXQoJywnKT8uZmlsdGVyKEJvb2xlYW4pPy5tYXAoTnVtYmVyKSxcbiAgICAgICAgICB1c2VyR3JvdXBJZDogZXZlbnQudXNlckdyb3VwSWRzPy5jY0VtYWlsR3JvdXBJZHNcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDoge1xuICAgICAgICAgIHVzZXJJZDogZXZlbnQuZmFpbHVyZV9jY19tZW1iZXJfZW1haWw/LnNwbGl0KCcsJyk/LmZpbHRlcihCb29sZWFuKT8ubWFwKE51bWJlciksXG4gICAgICAgICAgdXNlckdyb3VwSWQ6IGV2ZW50LnVzZXJHcm91cElkcz8uZmFpbHVyZUNDRW1haWxHcm91cElkc1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXZpZGVuY2U6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGV2ZW50LnJlcG9ydF91cGxvYWRfZmxhZyxcbiAgICAgICAgZm9ybWF0OiB7XG4gICAgICAgICAgdHlwZTogZXZlbnQucmVwb3J0X2Zvcm1hdD8ubGVuZ3RoID8gJ2ZpbGUnIDogKGV2ZW50LmxpbmtfZm9yX2RldGFpbHM/Lmxlbmd0aCA/ICdsaW5rJyA6ICcnKSxcbiAgICAgICAgICBkYXRhOiBldmVudD8ucmVwb3J0X2Zvcm1hdD8ubGVuZ3RoID8gZXZlbnQucmVwb3J0X2Zvcm1hdCA6IGV2ZW50Py5saW5rX2Zvcl9kZXRhaWxzXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YWdzOiBKU09OLnBhcnNlKGV2ZW50LmN1c3RvbV90YWdzKSxcbiAgICAgIHByb2dyYW06IGV2ZW50LmNhdGVnb3J5X2lkPy5zcGxpdCgnLCcpPy5maWx0ZXIoQm9vbGVhbik/Lm1hcChOdW1iZXIpLFxuICAgICAgZ3JjT2JqZWN0SWQ6IGV2ZW50LmxpbmtlZF9HUkNfaWRzLFxuICAgICAgYXNzZXNzbWVudElkOiBldmVudC5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkLFxuICAgICAgXG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9XG5cbiAgZ2V0Umlza0NsYXNzKHJpc2tDbGFzczogMCB8IDEgfCAyIHwgMyk6ICdsb3cnIHwgJ2xvdy1tZWRpdW0nIHwgJ21lZGl1bS1oaWdoJyB8ICdoaWdoJyAge1xuICAgIGNvbnN0IHJpc2tDbGFzc2VzOiBSZWNvcmQ8bnVtYmVyLCAnbG93JyB8ICdsb3ctbWVkaXVtJyB8ICdtZWRpdW0taGlnaCcgfCAnaGlnaCc+ID0ge1xuICAgICAgMDogJ2xvdycsXG4gICAgICAxOiAnbG93LW1lZGl1bScsXG4gICAgICAyOiAnbWVkaXVtLWhpZ2gnLFxuICAgICAgMzogJ2hpZ2gnXG4gICAgfTtcbiAgICByZXR1cm4gcmlza0NsYXNzZXNbcmlza0NsYXNzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIEhUTUwgZW50aXRpZXMgYW5kIHRhZ3MgZnJvbSBhIHN0cmluZyBhbmQgdHJpbXMgd2hpdGVzcGFjZS5cbiAgICogVXNlZCB0byBjaGVjayBpZiBhIHJpY2ggdGV4dCBmaWVsZCBpcyBlZmZlY3RpdmVseSBibGFuay5cbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgc3RyaW5nIHRvIGNsZWFuXG4gICAqIEByZXR1cm5zIFRoZSBjbGVhbmVkIHN0cmluZyBvciBlbXB0eSBzdHJpbmcgaWYgaW5wdXQgaXMgZmFsc3lcbiAgICovXG4gIGNoZWNrQmxhbmsoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgbGV0IHRleHQgPSBkYXRhO1xuICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgLnJlcGxhY2UoL1xcJm5ic3A7L2csICcnKVxuICAgICAgICAucmVwbGFjZSgvPGJyXFxzKlxcLz8+KD86XFxzKil8PFxcL2JyPi9naSwgJycpXG4gICAgICAgIC50cmltKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSByZXNwb25zaWJpbGl0eSBmb3JtIGFnYWluc3QgdGhlIGN1cnJlbnQgbWFuZGF0b3J5IGZpZWxkIGNvbmZpZ3VyYXRpb24uXG4gICAqIFxuICAgKiBAcGFyYW0gcmVzcG9uc2liaWxpdHlGb3JtIC0gVGhlIHJlc3BvbnNpYmlsaXR5IGZvcm0gZGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gbWFuZGF0b3J5RmllbGRzTGlzdCAtIENvbmZpZ3VyYXRpb24gb2JqZWN0IGRlZmluaW5nIHdoaWNoIGZpZWxkcyBhcmUgbWFuZGF0b3J5XG4gICAqIEBwYXJhbSBmZWF0dXJlRmxhZ19ncm91cHMgLSBGZWF0dXJlIGZsYWcgaW5kaWNhdGluZyBpZiBncm91cCBhc3NpZ25tZW50cyBhcmUgZW5hYmxlZFxuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyB2YWxpZGF0aW9uIHJlc3VsdCB3aXRoIGBpc1ZhbGlkYCBib29sZWFuIGFuZCBgaW52YWxpZFR5cGVgIHN0cmluZ1xuICAgKiAgICAgICAgICBpbmRpY2F0aW5nIHdoaWNoIGZpZWxkIGZhaWxlZCB2YWxpZGF0aW9uIChlbXB0eSBzdHJpbmcgaWYgYWxsIHZhbGlkYXRpb25zIHBhc3MpXG4gICAqL1xuICB2YWxpZGF0ZVJlc3BvbnNpYmlsaXR5QnlDb25maWcoXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtOiBhbnksXG4gICAgbWFuZGF0b3J5RmllbGRzTGlzdDogYW55LFxuICAgIGZlYXR1cmVGbGFnX2dyb3VwczogYm9vbGVhblxuICApOiB7IGlzVmFsaWQ6IGJvb2xlYW47IGludmFsaWRUeXBlOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgZmllbGRzID0gbWFuZGF0b3J5RmllbGRzTGlzdCB8fCB7fTtcblxuICAgIGNvbnN0IGNoZWNrczogQXJyYXk8e1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICBydW46ICgpID0+IGJvb2xlYW47XG4gICAgfT4gPSBbXG4gICAgICB7IGtleTogJ3dob20nLCBydW46ICgpID0+IHRoaXMuaXNPbkJlaGFsZk1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8ub25CZWhhbGY/Lm1hbmRhdG9yeSkgfSxcbiAgICAgIHsga2V5OiAnd2hhdCcsIHJ1bjogKCkgPT4gdGhpcy5pc05hbWVNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/Lm5hbWU/Lm1hbmRhdG9yeSkgfSxcbiAgICAgIHsga2V5OiAnd2hvJywgcnVuOiAoKSA9PiB0aGlzLmlzQXNzaWduZWVNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/LmFzc2lnbmVlPy5tYW5kYXRvcnksIGZlYXR1cmVGbGFnX2dyb3VwcykgfSxcbiAgICAgIHsga2V5OiAnd2hlbicsIHJ1bjogKCkgPT4gdGhpcy5pc0ZyZXF1ZW5jeU1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8uZnJlcXVlbmN5Py5tYW5kYXRvcnkpIH0sXG4gICAgICB7IGtleTogJ25vdGVzJywgcnVuOiAoKSA9PiB0aGlzLmlzTm90ZU1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8ubm90ZT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdvYmplY3RpdmUnLCBydW46ICgpID0+IHRoaXMuaXNPYmplY3RpdmVNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/Lm9iamVjdGl2ZT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdyYycsIHJ1bjogKCkgPT4gdGhpcy5pc1JjTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5yYz8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdwcm9ncmFtJywgcnVuOiAoKSA9PiB0aGlzLmlzUHJvZ3JhbU1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8ucHJvZ3JhbT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdmb3JtYXRBbmRFdmlkZW5jZScsIHJ1bjogKCkgPT4gdGhpcy5pc0Zvcm1hdEFuZEV2aWRlbmNlTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5mb3JtYXRBbmRFdmlkZW5jZT8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdhc3Nlc3NtZW50JywgcnVuOiAoKSA9PiB0aGlzLmlzQXNzZXNzbWVudE1pc3NpbmcocmVzcG9uc2liaWxpdHlGb3JtLCAhIWZpZWxkcz8uYXNzZXNzbWVudD8ubWFuZGF0b3J5KSB9LFxuICAgICAgeyBrZXk6ICdyZXZpZXdlcicsIHJ1bjogKCkgPT4gdGhpcy5pc1Jldmlld2VyTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5yZXZpZXdlcj8ubWFuZGF0b3J5LCBmZWF0dXJlRmxhZ19ncm91cHMpIH0sXG4gICAgICB7IGtleTogJ2NjJywgcnVuOiAoKSA9PiB0aGlzLmlzT3ZlcnNlZXJNaXNzaW5nKHJlc3BvbnNpYmlsaXR5Rm9ybSwgISFmaWVsZHM/LmNjPy5tYW5kYXRvcnksIGZlYXR1cmVGbGFnX2dyb3VwcykgfSxcbiAgICAgIHsga2V5OiAnZ3JjJywgcnVuOiAoKSA9PiB0aGlzLmlzR3JjTWlzc2luZyhyZXNwb25zaWJpbGl0eUZvcm0sICEhZmllbGRzPy5ncmM/Lm1hbmRhdG9yeSkgfSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBjaGVjayBvZiBjaGVja3MpIHtcbiAgICAgIGlmIChjaGVjay5ydW4oKSkge1xuICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgaW52YWxpZFR5cGU6IGNoZWNrLmtleSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGludmFsaWRUeXBlOiAnJyB9O1xuICB9XG5cbiAgLy8gLS0gUHJpdmF0ZSB2YWxpZGF0aW9uIGhlbHBlcnMgLS1cbiAgcHJpdmF0ZSB0ZXh0SXNCbGFuayh2YWx1ZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdmFsdWUgfHwgdGhpcy5jaGVja0JsYW5rKHZhbHVlKS50cmltKCkgPT09ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09uQmVoYWxmTWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlcXVpcmVkICYmXG4gICAgICBmb3JtPy5hc3NpZ25vcnM/LmVuYWJsZSAmJlxuICAgICAgZm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPT09IDBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05hbWVNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVxdWlyZWQgJiYgdGhpcy50ZXh0SXNCbGFuayhmb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGlzQXNzaWduZWVNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4sIGZlYXR1cmVGbGFnR3JvdXBzOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyZXF1aXJlZCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGhhc1VzZXJBc3NpZ25lZXMgPSAhIWZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0dyb3VwQXNzaWduZWVzID0gISFmb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoO1xuICAgIHJldHVybiAhaGFzVXNlckFzc2lnbmVlcyAmJiAoIWZlYXR1cmVGbGFnR3JvdXBzIHx8ICFoYXNHcm91cEFzc2lnbmVlcyk7XG4gIH1cblxuICBwcml2YXRlIGlzRnJlcXVlbmN5TWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlcXVpcmVkICYmXG4gICAgICAoIWZvcm0/LmZyZXF1ZW5jeSB8fCBmb3JtPy5mcmVxdWVuY3kgPT09ICcnIHx8IGZvcm0/LmZyZXF1ZW5jeSA9PT0gJzV+MH4wfjAnKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzTm90ZU1pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXF1aXJlZCAmJiB0aGlzLnRleHRJc0JsYW5rKGZvcm0/LmRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNPYmplY3RpdmVNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVxdWlyZWQgJiYgdGhpcy50ZXh0SXNCbGFuayhmb3JtPy5vYmplY3RpdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JjTWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlcXVpcmVkICYmICEoZm9ybT8ucmM/Lmxlbmd0aCA+IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Byb2dyYW1NaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVxdWlyZWQgJiYgIShmb3JtPy5wcm9ncmFtPy5sZW5ndGggPiAwKTtcbiAgICB9XG5cbiAgcHJpdmF0ZSBpc0Zvcm1hdEFuZEV2aWRlbmNlTWlzc2luZyhmb3JtOiBhbnksIHJlcXVpcmVkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyZXF1aXJlZCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGZlID0gZm9ybT8uZm9ybWF0QW5kRXZpZGVuY2U7XG4gICAgY29uc3QgaGFzRmlsZXMgPSAhIWZlPy5mb3JtYXRGaWxlcz8ubGVuZ3RoO1xuICAgIGNvbnN0IGhhc0xpbmtzID0gISFmZT8uZm9ybWF0TGlua3M/Lmxlbmd0aDtcbiAgICBjb25zdCByZXF1aXJlc05vdGhpbmcgPSAhZmU/LmZvcm1hdFJlcXVpcmVkICYmICFmZT8uZXZpZGVuY2VSZXF1aXJlZDtcbiAgICByZXR1cm4gIWZlIHx8IChyZXF1aXJlc05vdGhpbmcgJiYgIWhhc0ZpbGVzICYmICFoYXNMaW5rcyk7XG4gIH1cblxuICBwcml2YXRlIGlzQXNzZXNzbWVudE1pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICByZXF1aXJlZCAmJiAoIWZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQgfHwgZm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZCA9PT0gJycpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXZpZXdlck1pc3NpbmcoZm9ybTogYW55LCByZXF1aXJlZDogYm9vbGVhbiwgZmVhdHVyZUZsYWdHcm91cHM6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXJlcXVpcmVkKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaGFzUmV2aWV3ZXJzID0gISFmb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aDtcbiAgICBjb25zdCBoYXNHcm91cFJldmlld2VycyA9ICEhZm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aDtcbiAgICByZXR1cm4gIWhhc1Jldmlld2VycyAmJiAoIWZlYXR1cmVGbGFnR3JvdXBzIHx8ICFoYXNHcm91cFJldmlld2Vycyk7XG4gIH1cblxuICBwcml2YXRlIGlzT3ZlcnNlZXJNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4sIGZlYXR1cmVGbGFnR3JvdXBzOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyZXF1aXJlZCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGhhc092ZXJzZWVyID0gISEoZm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggfHwgZm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGgpO1xuICAgIGNvbnN0IGhhc0dyb3VwT3ZlcnNlZXIgPSAhIShmb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCB8fCBmb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCk7XG4gICAgcmV0dXJuICFoYXNPdmVyc2VlciAmJiAoIWZlYXR1cmVGbGFnR3JvdXBzIHx8ICFoYXNHcm91cE92ZXJzZWVyKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNHcmNNaXNzaW5nKGZvcm06IGFueSwgcmVxdWlyZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVxdWlyZWQgJiYgIShmb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDApO1xuICB9XG59XG4iXX0=
@@ -2484,8 +2484,7 @@ class ResponsibilityService {
2484
2484
  { key: 'formatAndEvidence', run: () => this.isFormatAndEvidenceMissing(responsibilityForm, !!fields?.formatAndEvidence?.mandatory) },
2485
2485
  { key: 'assessment', run: () => this.isAssessmentMissing(responsibilityForm, !!fields?.assessment?.mandatory) },
2486
2486
  { key: 'reviewer', run: () => this.isReviewerMissing(responsibilityForm, !!fields?.reviewer?.mandatory, featureFlag_groups) },
2487
- { key: 'cc', run: () => this.isCcMissing(responsibilityForm, !!fields?.cc?.mandatory, featureFlag_groups) },
2488
- { key: 'fcc', run: () => this.isFccMissing(responsibilityForm, !!fields?.fcc?.mandatory, featureFlag_groups) },
2487
+ { key: 'cc', run: () => this.isOverseerMissing(responsibilityForm, !!fields?.cc?.mandatory, featureFlag_groups) },
2489
2488
  { key: 'grc', run: () => this.isGrcMissing(responsibilityForm, !!fields?.grc?.mandatory) },
2490
2489
  ];
2491
2490
  for (const check of checks) {
@@ -2549,19 +2548,12 @@ class ResponsibilityService {
2549
2548
  const hasGroupReviewers = !!form?.groupReviewers?.list?.length;
2550
2549
  return !hasReviewers && (!featureFlagGroups || !hasGroupReviewers);
2551
2550
  }
2552
- isCcMissing(form, required, featureFlagGroups) {
2551
+ isOverseerMissing(form, required, featureFlagGroups) {
2553
2552
  if (!required)
2554
2553
  return false;
2555
- const hasCc = !!form?.overseers?.list?.length;
2556
- const hasGroupCc = !!form?.overseersGroups?.list?.length;
2557
- return !hasCc && (!featureFlagGroups || !hasGroupCc);
2558
- }
2559
- isFccMissing(form, required, featureFlagGroups) {
2560
- if (!required)
2561
- return false;
2562
- const hasFcc = !!form?.overseers?.notifyList?.length;
2563
- const hasGroupFcc = !!form?.overseersGroups?.notifyList?.length;
2564
- return !hasFcc && (!featureFlagGroups || !hasGroupFcc);
2554
+ const hasOverseer = !!(form?.overseers?.list?.length || form?.overseers?.notifyList?.length);
2555
+ const hasGroupOverseer = !!(form?.overseersGroups?.list?.length || form?.overseersGroups?.notifyList?.length);
2556
+ return !hasOverseer && (!featureFlagGroups || !hasGroupOverseer);
2565
2557
  }
2566
2558
  isGrcMissing(form, required) {
2567
2559
  return required && !(form?.selectedGRCObjects?.length > 0);