@hmcts/ccd-case-ui-toolkit 6.19.16-rc1 → 6.19.16-rc2

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.
@@ -84,15 +84,12 @@ export class WizardPageFieldToCaseFieldMapper {
84
84
  }
85
85
  }
86
86
  hideParentIfAllChildrenHidden(caseField) {
87
- var _a;
88
87
  const childrenCaseFields = this.getCaseFieldChildren(caseField);
89
88
  childrenCaseFields.forEach(e => this.hideParentIfAllChildrenHidden(e));
90
- // filter out judicialuser field to avoid issue with the field to be hide/unhide based on the selection
91
89
  if (childrenCaseFields.length > 0 && this.allCaseFieldsHidden(childrenCaseFields)) {
92
90
  caseField.hidden = true;
93
- if (caseField.field_type.id !== 'JudicialUser' && ((_a = caseField.field_type.collection_field_type) === null || _a === void 0 ? void 0 : _a.id) !== 'JudicialUser') {
94
- caseField.display_context = 'HIDDEN';
95
- }
91
+ // marking display_context as special hidden so field not being deleted in event submission
92
+ caseField.display_context = 'HIDDEN_TEMP';
96
93
  }
97
94
  }
98
95
  getCaseFieldChildren(caseField) {
@@ -106,7 +103,7 @@ export class WizardPageFieldToCaseFieldMapper {
106
103
  return childrenCaseFields;
107
104
  }
108
105
  allCaseFieldsHidden(children) {
109
- return children.every(e => e.display_context === 'HIDDEN');
106
+ return children.every(e => e.display_context === 'HIDDEN' || e.display_context === 'HIDDEN_TEMP');
110
107
  }
111
108
  }
112
109
  WizardPageFieldToCaseFieldMapper.ɵfac = function WizardPageFieldToCaseFieldMapper_Factory(t) { return new (t || WizardPageFieldToCaseFieldMapper)(); };
@@ -117,4 +114,4 @@ WizardPageFieldToCaseFieldMapper.ɵprov = i0.ɵɵdefineInjectable({ token: Wizar
117
114
  providedIn: 'root',
118
115
  }]
119
116
  }], null, null); })();
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7O0FBUW5HLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDcEMsTUFBTSxDQUFDLGdCQUFtQyxFQUFFLFVBQXVCO1FBQ3hFLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sR0FBRyxDQUFDLGVBQWdDLEVBQUUsVUFBdUI7UUFDbkUsTUFBTSxTQUFTLEdBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFGLFNBQVMsQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ3hDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUV4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksZUFBZSxDQUFDLHVCQUF1QixJQUFJLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pHLGVBQWUsQ0FBQyx1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O2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9jb25kaXRpb25hbC1zaG93L2RvbWFpbi9jb25kaXRpb25hbC1zaG93Lm1vZGVsJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgQ29tcGxleEZpZWxkT3ZlcnJpZGUgfSBmcm9tICcuLi9kb21haW4vd2l6YXJkLXBhZ2UtZmllbGQtY29tcGxleC1vdmVycmlkZS5tb2RlbCc7XG5pbXBvcnQgeyBXaXphcmRQYWdlRmllbGQgfSBmcm9tICcuLi9kb21haW4vd2l6YXJkLXBhZ2UtZmllbGQubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkUGFnZUZpZWxkVG9DYXNlRmllbGRNYXBwZXIge1xuICBwdWJsaWMgbWFwQWxsKHdpemFyZFBhZ2VGaWVsZHM6IFdpemFyZFBhZ2VGaWVsZFtdLCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IENhc2VGaWVsZFtdIHtcbiAgICByZXR1cm4gd2l6YXJkUGFnZUZpZWxkcy5tYXAod2l6YXJkRmllbGQgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubWFwKHdpemFyZEZpZWxkLCBjYXNlRmllbGRzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwKHdpemFyZFBhZ2VGaWVsZDogV2l6YXJkUGFnZUZpZWxkLCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IENhc2VGaWVsZCB7XG4gICAgY29uc3QgY2FzZUZpZWxkOiBDYXNlRmllbGQgPSBjYXNlRmllbGRzLmZpbmQoZSA9PiBlLmlkID09PSB3aXphcmRQYWdlRmllbGQuY2FzZV9maWVsZF9pZCk7XG4gICAgY2FzZUZpZWxkLndpemFyZFByb3BzID0gd2l6YXJkUGFnZUZpZWxkO1xuICAgIGNhc2VGaWVsZC5vcmRlciA9IHdpemFyZFBhZ2VGaWVsZC5vcmRlcjtcblxuICAgIHRoaXMuZml4U2hvd0NvbmRpdGlvblBhdGgoY2FzZUZpZWxkLCAnJyk7XG5cbiAgICBpZiAod2l6YXJkUGFnZUZpZWxkLmNvbXBsZXhfZmllbGRfb3ZlcnJpZGVzICYmIHdpemFyZFBhZ2VGaWVsZC5jb21wbGV4X2ZpZWxkX292ZXJyaWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICB3aXphcmRQYWdlRmllbGQuY29tcGxleF9maWVsZF9vdmVycmlkZXMuZm9yRWFjaCgob3ZlcnJpZGU6IENvbXBsZXhGaWVsZE92ZXJyaWRlKSA9PiB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0NvbXBsZXhGaWVsZE92ZXJyaWRlKG92ZXJyaWRlLCBjYXNlRmllbGQsIGNhc2VGaWVsZHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyB3aWxsIGZpeCB0aGUgQ2FzZUxpbmsgdHlwZSBhcyB3ZSBleGNsdWRlIGl0IGluIGNjZEZpZWxkc0ZpbHRlciBkaXJlY3RpdmVcbiAgICB0aGlzLmhpZGVQYXJlbnRJZkFsbENoaWxkcmVuSGlkZGVuKGNhc2VGaWVsZCk7XG5cbiAgICByZXR1cm4gY2FzZUZpZWxkO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzQ29tcGxleEZpZWxkT3ZlcnJpZGUob3ZlcnJpZGU6IENvbXBsZXhGaWVsZE92ZXJyaWRlLCBjYXNlRmllbGQ6IENhc2VGaWVsZCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pIHtcbiAgICBjb25zdCBjYXNlRmllbGRJZHMgPSBvdmVycmlkZS5jb21wbGV4X2ZpZWxkX2VsZW1lbnRfaWQuc3BsaXQoJy4nKTtcbiAgICBsZXQgY2FzZUZpZWxkTGVhZjogQ2FzZUZpZWxkO1xuXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENhc2VGaWVsZENoaWxkcmVuKGNhc2VGaWVsZCk7XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgW18sIC4uLnRhaWxdID0gY2FzZUZpZWxkSWRzO1xuICAgICAgY2FzZUZpZWxkTGVhZiA9IHRoaXMuZ2V0Q2FzZUZpZWxkTGVhZih0YWlsLCBjaGlsZHJlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhc2VGaWVsZExlYWYgPSB0aGlzLmdldENhc2VGaWVsZExlYWYoY2FzZUZpZWxkSWRzLCBjYXNlRmllbGRzKTtcbiAgICB9XG5cbiAgICBpZiAob3ZlcnJpZGUuZGlzcGxheV9jb250ZXh0ICE9PSAnSElEREVOJykge1xuICAgICAgY2FzZUZpZWxkTGVhZi5oaWRkZW4gPSBmYWxzZTtcbiAgICAgIGNhc2VGaWVsZExlYWYuZGlzcGxheV9jb250ZXh0ID0gb3ZlcnJpZGUuZGlzcGxheV9jb250ZXh0O1xuICAgICAgaWYgKG92ZXJyaWRlLmxhYmVsICYmIG92ZXJyaWRlLmxhYmVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FzZUZpZWxkTGVhZi5sYWJlbCA9IG92ZXJyaWRlLmxhYmVsO1xuICAgICAgfVxuICAgICAgaWYgKG92ZXJyaWRlLmhpbnRfdGV4dCAmJiBvdmVycmlkZS5oaW50X3RleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBjYXNlRmllbGRMZWFmLmhpbnRfdGV4dCA9IG92ZXJyaWRlLmhpbnRfdGV4dDtcbiAgICAgIH1cbiAgICAgIGlmIChvdmVycmlkZS5zaG93X2NvbmRpdGlvbiAmJiBvdmVycmlkZS5zaG93X2NvbmRpdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNhc2VGaWVsZExlYWYuc2hvd19jb25kaXRpb24gPSBvdmVycmlkZS5zaG93X2NvbmRpdGlvbjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY2FzZUZpZWxkTGVhZi5oaWRkZW4gPSB0cnVlO1xuICAgICAgY2FzZUZpZWxkTGVhZi5kaXNwbGF5X2NvbnRleHQgPSBvdmVycmlkZS5kaXNwbGF5X2NvbnRleHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaXhTaG93Q29uZGl0aW9uUGF0aChjYXNlRmllbGQ6IENhc2VGaWVsZCwgcGF0aFByZWZpeDogc3RyaW5nKSB7XG4gICAgaWYgKGNhc2VGaWVsZC5zaG93X2NvbmRpdGlvbikge1xuICAgICAgY2FzZUZpZWxkLnNob3dfY29uZGl0aW9uID0gU2hvd0NvbmRpdGlvbi5hZGRQYXRoUHJlZml4VG9Db25kaXRpb24oY2FzZUZpZWxkLnNob3dfY29uZGl0aW9uLCBwYXRoUHJlZml4KTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZHJlbkNhc2VGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZENoaWxkcmVuKGNhc2VGaWVsZCk7XG5cbiAgICBjaGlsZHJlbkNhc2VGaWVsZHMuZm9yRWFjaChjb2xsZWN0aW9uQ2FzZUZpZWxkID0+IHtcbiAgICAgIHRoaXMuZml4U2hvd0NvbmRpdGlvblBhdGgoY29sbGVjdGlvbkNhc2VGaWVsZCwgdGhpcy5wcmVwYXJlUGF0aFByZWZpeChwYXRoUHJlZml4LCBjYXNlRmllbGQuaWQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZVBhdGhQcmVmaXgocGF0aFByZWZpeDogc3RyaW5nLCBjYXNlRmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiBwYXRoUHJlZml4Lmxlbmd0aCA9PT0gMCA/IGNhc2VGaWVsZCA6IGAke3BhdGhQcmVmaXh9LiR7Y2FzZUZpZWxkfWA7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VGaWVsZExlYWYoY2FzZUZpZWxkSWQ6IHN0cmluZ1tdLCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IENhc2VGaWVsZCB7XG4gICAgY29uc3QgW2hlYWQsIC4uLnRhaWxdID0gY2FzZUZpZWxkSWQ7XG4gICAgaWYgKGNhc2VGaWVsZElkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgY2FzZUxlYWYgPSBjYXNlRmllbGRzLmZpbmQoZSA9PiBlLmlkID09PSBoZWFkKTtcbiAgICAgIGlmICghY2FzZUxlYWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBsZWFmIGZvciBjYXNlRmllbGRJZCAke2Nhc2VGaWVsZElkLmpvaW4oJy4nKX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYXNlTGVhZjtcbiAgICB9IGVsc2UgaWYgKGNhc2VGaWVsZElkLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IGNhc2VGaWVsZCA9IGNhc2VGaWVsZHMuZmluZChlID0+IGUuaWQgPT09IGhlYWQpO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENhc2VGaWVsZENoaWxkcmVuKGNhc2VGaWVsZCk7XG5cbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBmaWVsZF90eXBlIG9yIGNvbXBsZXhfZmllbGRzIG1pc3NpbmcgZm9yICR7Y2FzZUZpZWxkSWQuam9pbignLicpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FzZUZpZWxkTGVhZih0YWlsLCBjaGlsZHJlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgbGVhZiBmb3IgY2FzZUZpZWxkSWQgJHtjYXNlRmllbGRJZC5qb2luKCcuJyl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlUGFyZW50SWZBbGxDaGlsZHJlbkhpZGRlbihjYXNlRmllbGQ6IENhc2VGaWVsZCkge1xuICAgIGNvbnN0IGNoaWxkcmVuQ2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkQ2hpbGRyZW4oY2FzZUZpZWxkKTtcblxuICAgIGNoaWxkcmVuQ2FzZUZpZWxkcy5mb3JFYWNoKGUgPT4gdGhpcy5oaWRlUGFyZW50SWZBbGxDaGlsZHJlbkhpZGRlbihlKSk7XG5cbiAgICAvLyBmaWx0ZXIgb3V0IGp1ZGljaWFsdXNlciBmaWVsZCB0byBhdm9pZCBpc3N1ZSB3aXRoIHRoZSBmaWVsZCB0byBiZSBoaWRlL3VuaGlkZSBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uXG4gICAgaWYgKGNoaWxkcmVuQ2FzZUZpZWxkcy5sZW5ndGggPiAwICYmIHRoaXMuYWxsQ2FzZUZpZWxkc0hpZGRlbihjaGlsZHJlbkNhc2VGaWVsZHMpKSB7XG4gICAgICBjYXNlRmllbGQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIGlmIChjYXNlRmllbGQuZmllbGRfdHlwZS5pZCAhPT0gJ0p1ZGljaWFsVXNlcicgJiYgY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlPy5pZCAhPT0gJ0p1ZGljaWFsVXNlcicpIHtcbiAgICAgICAgY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCA9ICdISURERU4nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkQ2hpbGRyZW4oY2FzZUZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBsZXQgY2hpbGRyZW5DYXNlRmllbGRzID0gW107XG4gICAgaWYgKGNhc2VGaWVsZC5pc0NvbGxlY3Rpb24oKSkge1xuICAgICAgY2hpbGRyZW5DYXNlRmllbGRzID0gY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzIHx8IFtdO1xuICAgIH0gZWxzZSBpZiAoY2FzZUZpZWxkLmlzQ29tcGxleCgpKSB7XG4gICAgICBjaGlsZHJlbkNhc2VGaWVsZHMgPSBjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyB8fCBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuQ2FzZUZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgYWxsQ2FzZUZpZWxkc0hpZGRlbihjaGlsZHJlbjogQ2FzZUZpZWxkW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2hpbGRyZW4uZXZlcnkoZSA9PiBlLmRpc3BsYXlfY29udGV4dCA9PT0gJ0hJRERFTicpO1xuICB9XG59XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd2l6YXJkLXBhZ2UtZmllbGQtdG8tY2FzZS1maWVsZC5tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7O0FBUW5HLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDcEMsTUFBTSxDQUFDLGdCQUFtQyxFQUFFLFVBQXVCO1FBQ3hFLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sR0FBRyxDQUFDLGVBQWdDLEVBQUUsVUFBdUI7UUFDbkUsTUFBTSxTQUFTLEdBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFGLFNBQVMsQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ3hDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUV4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksZUFBZSxDQUFDLHVCQUF1QixJQUFJLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pHLGVBQWUsQ0FBQyx1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bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9kb21haW4vY29uZGl0aW9uYWwtc2hvdy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IENvbXBsZXhGaWVsZE92ZXJyaWRlIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC1wYWdlLWZpZWxkLWNvbXBsZXgtb3ZlcnJpZGUubW9kZWwnO1xuaW1wb3J0IHsgV2l6YXJkUGFnZUZpZWxkIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC1wYWdlLWZpZWxkLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZFBhZ2VGaWVsZFRvQ2FzZUZpZWxkTWFwcGVyIHtcbiAgcHVibGljIG1hcEFsbCh3aXphcmRQYWdlRmllbGRzOiBXaXphcmRQYWdlRmllbGRbXSwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIHdpemFyZFBhZ2VGaWVsZHMubWFwKHdpemFyZEZpZWxkID0+IHtcbiAgICAgIHJldHVybiB0aGlzLm1hcCh3aXphcmRGaWVsZCwgY2FzZUZpZWxkcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcCh3aXphcmRQYWdlRmllbGQ6IFdpemFyZFBhZ2VGaWVsZCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGQge1xuICAgIGNvbnN0IGNhc2VGaWVsZDogQ2FzZUZpZWxkID0gY2FzZUZpZWxkcy5maW5kKGUgPT4gZS5pZCA9PT0gd2l6YXJkUGFnZUZpZWxkLmNhc2VfZmllbGRfaWQpO1xuICAgIGNhc2VGaWVsZC53aXphcmRQcm9wcyA9IHdpemFyZFBhZ2VGaWVsZDtcbiAgICBjYXNlRmllbGQub3JkZXIgPSB3aXphcmRQYWdlRmllbGQub3JkZXI7XG5cbiAgICB0aGlzLmZpeFNob3dDb25kaXRpb25QYXRoKGNhc2VGaWVsZCwgJycpO1xuXG4gICAgaWYgKHdpemFyZFBhZ2VGaWVsZC5jb21wbGV4X2ZpZWxkX292ZXJyaWRlcyAmJiB3aXphcmRQYWdlRmllbGQuY29tcGxleF9maWVsZF9vdmVycmlkZXMubGVuZ3RoID4gMCkge1xuICAgICAgd2l6YXJkUGFnZUZpZWxkLmNvbXBsZXhfZmllbGRfb3ZlcnJpZGVzLmZvckVhY2goKG92ZXJyaWRlOiBDb21wbGV4RmllbGRPdmVycmlkZSkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NDb21wbGV4RmllbGRPdmVycmlkZShvdmVycmlkZSwgY2FzZUZpZWxkLCBjYXNlRmllbGRzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHRoaXMgd2lsbCBmaXggdGhlIENhc2VMaW5rIHR5cGUgYXMgd2UgZXhjbHVkZSBpdCBpbiBjY2RGaWVsZHNGaWx0ZXIgZGlyZWN0aXZlXG4gICAgdGhpcy5oaWRlUGFyZW50SWZBbGxDaGlsZHJlbkhpZGRlbihjYXNlRmllbGQpO1xuXG4gICAgcmV0dXJuIGNhc2VGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0NvbXBsZXhGaWVsZE92ZXJyaWRlKG92ZXJyaWRlOiBDb21wbGV4RmllbGRPdmVycmlkZSwgY2FzZUZpZWxkOiBDYXNlRmllbGQsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKSB7XG4gICAgY29uc3QgY2FzZUZpZWxkSWRzID0gb3ZlcnJpZGUuY29tcGxleF9maWVsZF9lbGVtZW50X2lkLnNwbGl0KCcuJyk7XG4gICAgbGV0IGNhc2VGaWVsZExlYWY6IENhc2VGaWVsZDtcblxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQpO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IFtfLCAuLi50YWlsXSA9IGNhc2VGaWVsZElkcztcbiAgICAgIGNhc2VGaWVsZExlYWYgPSB0aGlzLmdldENhc2VGaWVsZExlYWYodGFpbCwgY2hpbGRyZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXNlRmllbGRMZWFmID0gdGhpcy5nZXRDYXNlRmllbGRMZWFmKGNhc2VGaWVsZElkcywgY2FzZUZpZWxkcyk7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJyaWRlLmRpc3BsYXlfY29udGV4dCAhPT0gJ0hJRERFTicpIHtcbiAgICAgIGNhc2VGaWVsZExlYWYuaGlkZGVuID0gZmFsc2U7XG4gICAgICBjYXNlRmllbGRMZWFmLmRpc3BsYXlfY29udGV4dCA9IG92ZXJyaWRlLmRpc3BsYXlfY29udGV4dDtcbiAgICAgIGlmIChvdmVycmlkZS5sYWJlbCAmJiBvdmVycmlkZS5sYWJlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNhc2VGaWVsZExlYWYubGFiZWwgPSBvdmVycmlkZS5sYWJlbDtcbiAgICAgIH1cbiAgICAgIGlmIChvdmVycmlkZS5oaW50X3RleHQgJiYgb3ZlcnJpZGUuaGludF90ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FzZUZpZWxkTGVhZi5oaW50X3RleHQgPSBvdmVycmlkZS5oaW50X3RleHQ7XG4gICAgICB9XG4gICAgICBpZiAob3ZlcnJpZGUuc2hvd19jb25kaXRpb24gJiYgb3ZlcnJpZGUuc2hvd19jb25kaXRpb24ubGVuZ3RoID4gMCkge1xuICAgICAgICBjYXNlRmllbGRMZWFmLnNob3dfY29uZGl0aW9uID0gb3ZlcnJpZGUuc2hvd19jb25kaXRpb247XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhc2VGaWVsZExlYWYuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIGNhc2VGaWVsZExlYWYuZGlzcGxheV9jb250ZXh0ID0gb3ZlcnJpZGUuZGlzcGxheV9jb250ZXh0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZml4U2hvd0NvbmRpdGlvblBhdGgoY2FzZUZpZWxkOiBDYXNlRmllbGQsIHBhdGhQcmVmaXg6IHN0cmluZykge1xuICAgIGlmIChjYXNlRmllbGQuc2hvd19jb25kaXRpb24pIHtcbiAgICAgIGNhc2VGaWVsZC5zaG93X2NvbmRpdGlvbiA9IFNob3dDb25kaXRpb24uYWRkUGF0aFByZWZpeFRvQ29uZGl0aW9uKGNhc2VGaWVsZC5zaG93X2NvbmRpdGlvbiwgcGF0aFByZWZpeCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGRyZW5DYXNlRmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQpO1xuXG4gICAgY2hpbGRyZW5DYXNlRmllbGRzLmZvckVhY2goY29sbGVjdGlvbkNhc2VGaWVsZCA9PiB7XG4gICAgICB0aGlzLmZpeFNob3dDb25kaXRpb25QYXRoKGNvbGxlY3Rpb25DYXNlRmllbGQsIHRoaXMucHJlcGFyZVBhdGhQcmVmaXgocGF0aFByZWZpeCwgY2FzZUZpZWxkLmlkKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVQYXRoUHJlZml4KHBhdGhQcmVmaXg6IHN0cmluZywgY2FzZUZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcGF0aFByZWZpeC5sZW5ndGggPT09IDAgPyBjYXNlRmllbGQgOiBgJHtwYXRoUHJlZml4fS4ke2Nhc2VGaWVsZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRMZWFmKGNhc2VGaWVsZElkOiBzdHJpbmdbXSwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGQge1xuICAgIGNvbnN0IFtoZWFkLCAuLi50YWlsXSA9IGNhc2VGaWVsZElkO1xuICAgIGlmIChjYXNlRmllbGRJZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGNhc2VMZWFmID0gY2FzZUZpZWxkcy5maW5kKGUgPT4gZS5pZCA9PT0gaGVhZCk7XG4gICAgICBpZiAoIWNhc2VMZWFmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgbGVhZiBmb3IgY2FzZUZpZWxkSWQgJHtjYXNlRmllbGRJZC5qb2luKCcuJyl9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FzZUxlYWY7XG4gICAgfSBlbHNlIGlmIChjYXNlRmllbGRJZC5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBjYXNlRmllbGQgPSBjYXNlRmllbGRzLmZpbmQoZSA9PiBlLmlkID09PSBoZWFkKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDYXNlRmllbGRDaGlsZHJlbihjYXNlRmllbGQpO1xuXG4gICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZmllbGRfdHlwZSBvciBjb21wbGV4X2ZpZWxkcyBtaXNzaW5nIGZvciAke2Nhc2VGaWVsZElkLmpvaW4oJy4nKX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldENhc2VGaWVsZExlYWYodGFpbCwgY2hpbGRyZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGxlYWYgZm9yIGNhc2VGaWVsZElkICR7Y2FzZUZpZWxkSWQuam9pbignLicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZVBhcmVudElmQWxsQ2hpbGRyZW5IaWRkZW4oY2FzZUZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBjb25zdCBjaGlsZHJlbkNhc2VGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZENoaWxkcmVuKGNhc2VGaWVsZCk7XG5cbiAgICBjaGlsZHJlbkNhc2VGaWVsZHMuZm9yRWFjaChlID0+IHRoaXMuaGlkZVBhcmVudElmQWxsQ2hpbGRyZW5IaWRkZW4oZSkpO1xuXG4gICAgaWYgKGNoaWxkcmVuQ2FzZUZpZWxkcy5sZW5ndGggPiAwICYmIHRoaXMuYWxsQ2FzZUZpZWxkc0hpZGRlbihjaGlsZHJlbkNhc2VGaWVsZHMpKSB7XG4gICAgICBjYXNlRmllbGQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIC8vIG1hcmtpbmcgZGlzcGxheV9jb250ZXh0IGFzIHNwZWNpYWwgaGlkZGVuIHNvIGZpZWxkIG5vdCBiZWluZyBkZWxldGVkIGluIGV2ZW50IHN1Ym1pc3Npb25cbiAgICAgIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHQgPSAnSElEREVOX1RFTVAnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkQ2hpbGRyZW4oY2FzZUZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBsZXQgY2hpbGRyZW5DYXNlRmllbGRzID0gW107XG4gICAgaWYgKGNhc2VGaWVsZC5pc0NvbGxlY3Rpb24oKSkge1xuICAgICAgY2hpbGRyZW5DYXNlRmllbGRzID0gY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzIHx8IFtdO1xuICAgIH0gZWxzZSBpZiAoY2FzZUZpZWxkLmlzQ29tcGxleCgpKSB7XG4gICAgICBjaGlsZHJlbkNhc2VGaWVsZHMgPSBjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyB8fCBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuQ2FzZUZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgYWxsQ2FzZUZpZWxkc0hpZGRlbihjaGlsZHJlbjogQ2FzZUZpZWxkW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2hpbGRyZW4uZXZlcnkoZSA9PiBlLmRpc3BsYXlfY29udGV4dCA9PT0gJ0hJRERFTicgfHwgZS5kaXNwbGF5X2NvbnRleHQgPT09ICdISURERU5fVEVNUCcpO1xuICB9XG59XG4iXX0=
@@ -138,7 +138,10 @@ export class ReadFieldsFilterPipe {
138
138
  })
139
139
  .map(f => {
140
140
  if (!f.display_context) {
141
- f.display_context = complexField.display_context;
141
+ if (complexField.display_context === 'MANDATORY' || complexField.display_context === 'READONLY'
142
+ || complexField.display_context === 'OPTIONAL' || complexField.display_context === 'HIDDEN') {
143
+ f.display_context = complexField.display_context;
144
+ }
142
145
  }
143
146
  if (setupHidden) {
144
147
  ReadFieldsFilterPipe.evaluateConditionalShow(f, checkConditionalShowAgainst, path, formGroupAvailable, complexField.id);
@@ -167,4 +170,4 @@ ReadFieldsFilterPipe.ɵpipe = i0.ɵɵdefinePipe({ name: "ccdReadFieldsFilter", t
167
170
  name: 'ccdReadFieldsFilter'
168
171
  }]
169
172
  }], null, null); })();
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2NkLXJlYWQtZmllbGRzLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9waXBlcy9jb21wbGV4L2NjZC1yZWFkLWZpZWxkcy1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFLakUsTUFBTSxPQUFPLG9CQUFvQjtJQWdCL0I7O09BRUc7SUFDSyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsTUFBZSxFQUFFLDJCQUFvQztRQUNuRyxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztZQUM3RixPQUFPLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxNQUFN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LEVBQUU7Z0JBQ3RCLENBQUMsQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQzthQUNsRDtZQUNELElBQUksV0FBVyxFQUFFO2dCQUNmLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3pIO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixDQUFDLENBQUMsQ0FBQztJQUNoSCxDQUFDOztBQXpLdUIsaUNBQVksR0FBRztJQUNyQyxTQUFTO0lBQ1QsSUFBSTtJQUNKLEVBQUU7SUFDRixFQUFFO0NBQ0gsQ0FBQztBQUVzQix1Q0FBa0IsR0FBRyxDQUFDLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUVwRyxpQ0FBWSxHQUFHO0lBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxjQUFjO0lBQzVDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxpQkFBaUI7Q0FDbkQsQ0FBQzt3RkFkUyxvQkFBb0I7a0ZBQXBCLG9CQUFvQjt1RkFBcEIsb0JBQW9CO2NBSGhDLElBQUk7ZUFBQztnQkFDSixJQUFJLEVBQUUscUJBQXFCO2FBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHBsYWluVG9DbGFzc0Zyb21FeGlzdCB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbmRpdGlvbmFsLXNob3cvZG9tYWluL2NvbmRpdGlvbmFsLXNob3cubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdjY2RSZWFkRmllbGRzRmlsdGVyJ1xufSlcbmV4cG9ydCBjbGFzcyBSZWFkRmllbGRzRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1ZBTFVFUyA9IFtcbiAgICB1bmRlZmluZWQsXG4gICAgbnVsbCxcbiAgICAnJyxcbiAgICB7fVxuICBdO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFMV0FZU19OVUxMX0ZJRUxEUyA9IFsnQ2FzZVBheW1lbnRIaXN0b3J5Vmlld2VyJywgJ1dheXNUb1BheScsICdGbGFnTGF1bmNoZXInLCAnQ29tcG9uZW50TGF1bmNoZXInXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBORVNURURfVFlQRVMgPSB7XG4gICAgQ29tcGxleDogUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNWYWxpZENvbXBsZXgsXG4gICAgQ29sbGVjdGlvbjogUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNWYWxpZENvbGxlY3Rpb25cbiAgfTtcblxuICAvKipcbiAgICogQ29tcGxleCB0eXBlIHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uIHNpbXBsZSBmaWVsZCBkZXNjZW5kYW50IHdpdGggYSB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsaWRDb21wbGV4KGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlcz86IG9iamVjdCwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0Pzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgdmFsdWVzID0gdmFsdWVzIHx8IHt9O1xuICAgIGNvbnN0IHR5cGUgPSBmaWVsZC5maWVsZF90eXBlO1xuICAgIGNvbnN0IHZhbHVlID0gUmVhZEZpZWxkc0ZpbHRlclBpcGUuZ2V0VmFsdWUoZmllbGQsIHZhbHVlcyk7XG5cbiAgICBjb25zdCBoYXNDaGlsZHJlbldpdGhWYWx1ZSA9IHR5cGUuY29tcGxleF9maWVsZHMuZmluZChmID0+IHtcbiAgICAgIGNvbnN0IHdpbGxLZWVwID0gUmVhZEZpZWxkc0ZpbHRlclBpcGUua2VlcEZpZWxkKGYsIHZhbHVlLCB0cnVlLCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QpO1xuICAgICAgcmV0dXJuIHdpbGxLZWVwICYmIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmV2YWx1YXRlQ29uZGl0aW9uYWxTaG93KGYsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCkuaGlkZGVuICE9PSB0cnVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICEhaGFzQ2hpbGRyZW5XaXRoVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkQ29sbGVjdGlvbihmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZXM/OiBvYmplY3QsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdD86IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIC8vIGlmIGZpZWxkIGlzIGNvbGxlY3Rpb24gYW5kIGl0IGhhcyBjb21wbGV4L2NvbGxlY3Rpb24gY2hpbGQgZmllbGQ7IHBhcmVudCBmaWVsZCBkb2VzbnQgaGF2ZSB2YWx1ZSBkZWZpbmVkXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSAmJiB2YWx1ZXMgJiYgdmFsdWVzLmhhc093blByb3BlcnR5KGZpZWxkLmlkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGlzTm90RW1wdHkgPSBBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSAmJiBmaWVsZC52YWx1ZS5sZW5ndGggPiAwO1xuICAgIGlmIChpc05vdEVtcHR5ICYmIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgcmV0dXJuICEhZmllbGQudmFsdWUuZmluZChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgY29tcGxleEZpZWxkID0gcGxhaW5Ub0NsYXNzRnJvbUV4aXN0KG5ldyBDYXNlRmllbGQoKSwge1xuICAgICAgICAgIGlkOiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5pZCxcbiAgICAgICAgICBmaWVsZF90eXBlOiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSxcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcGxleChjb21wbGV4RmllbGQsIHVuZGVmaW5lZCwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXNOb3RFbXB0eTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5FTVBUWV9WQUxVRVMuaW5kZXhPZih2YWx1ZSkgIT09IC0xXG4gICAgICB8fCB2YWx1ZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0NvbXBvdW5kKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUmVhZEZpZWxkc0ZpbHRlclBpcGUuTkVTVEVEX1RZUEVTW2ZpZWxkLmZpZWxkX3R5cGUudHlwZV07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkQ29tcG91bmQoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWU/OiBvYmplY3QsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdD86IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc0NvbXBvdW5kKGZpZWxkKVxuICAgICAgICAgICAgJiYgUmVhZEZpZWxkc0ZpbHRlclBpcGUuTkVTVEVEX1RZUEVTW2ZpZWxkLmZpZWxkX3R5cGUudHlwZV0oZmllbGQsIHZhbHVlLCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMga2VlcEZpZWxkKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlPzogb2JqZWN0LCBpZ25vcmVMYWJlbHMgPSBmYWxzZSwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0Pzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgLy8gV2Ugc2hvdWxkbid0IGRpdGNoIGxhYmVscy5cbiAgICBpZiAoIWlnbm9yZUxhYmVscyAmJiBmaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdMYWJlbCcgJiYgKGZpZWxkLmxhYmVsIHx8ICcnKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gV2UgYWxzbyBzaG91bGRuJ3QgZGl0Y2ggZmllbGRzIHRoYXQgd2lsbCBhbHdheXMgY29tZSBiYWNrIHdpdGggYSBudWxsIHZhbHVlLlxuICAgIGlmICh0aGlzLkFMV0FZU19OVUxMX0ZJRUxEUy5pbmRleE9mKGZpZWxkLmZpZWxkX3R5cGUudHlwZSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHZhbHVlIHx8IHt9O1xuXG4gICAgaWYgKFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzQ29tcG91bmQoZmllbGQpKSB7XG4gICAgICByZXR1cm4gUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNWYWxpZENvbXBvdW5kKGZpZWxkLCB2YWx1ZSwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gIVJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkoZmllbGQudmFsdWUpXG4gICAgICAgICAgICAgIHx8ICFSZWFkRmllbGRzRmlsdGVyUGlwZS5pc0VtcHR5KHZhbHVlW2ZpZWxkLmlkXSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRWYWx1ZShmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZXM6IGFueSwgaW5kZXg/OiBudW1iZXIpOiBhbnkge1xuICAgIGlmIChSZWFkRmllbGRzRmlsdGVyUGlwZS5pc0VtcHR5KGZpZWxkLnZhbHVlKSkge1xuICAgICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgICBpZiAoaW5kZXggPj0gMCApIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdLnZhbHVlW2ZpZWxkLmlkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVzW2ZpZWxkLmlkXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGQudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBldmFsdWF0ZUNvbmRpdGlvbmFsU2hvdyhmaWVsZDogQ2FzZUZpZWxkLCBmb3JtVmFsdWU6IGFueSwgcGF0aD86IHN0cmluZyxcbiAgICBmb3JtR3JvdXBBdmFpbGFibGU/OiBib29sZWFuLCBmaWVsZElkPzogc3RyaW5nKTogQ2FzZUZpZWxkIHtcbiAgICBpZiAoZmllbGQuZGlzcGxheV9jb250ZXh0ID09PSAnSElEREVOJykge1xuICAgICAgZmllbGQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkLnNob3dfY29uZGl0aW9uKSB7XG4gICAgICBsZXQgY29uZDogU2hvd0NvbmRpdGlvbjtcbiAgICAgIGlmIChmaWVsZElkICYmIGZpZWxkLnNob3dfY29uZGl0aW9uLmluZGV4T2YoYCR7ZmllbGRJZH0uYCkgPiAtMSAmJiAhZm9ybUdyb3VwQXZhaWxhYmxlICYmICEhT2JqZWN0LmtleXMoZm9ybVZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gYCR7ZmllbGRJZH0uYDtcbiAgICAgICAgY29uc3Qgc2VhcmNoUmVnRXhwID0gbmV3IFJlZ0V4cChzZWFyY2gsICdnJyk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VXaXRoID0gJyc7XG4gICAgICAgIGNvbmQgPSBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKGZpZWxkLnNob3dfY29uZGl0aW9uLnJlcGxhY2Uoc2VhcmNoUmVnRXhwLCByZXBsYWNlV2l0aCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uZCA9IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UoZmllbGQuc2hvd19jb25kaXRpb24pO1xuICAgICAgfVxuICAgICAgZmllbGQuaGlkZGVuID0gIWNvbmQubWF0Y2goZm9ybVZhbHVlLCBwYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGQuaGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgb3V0IGZpZWxkcyBoYXZpbmcgbm8gZGF0YSB0byBkaXNwbGF5IGFuZCBoYXJtb25pc2UgZmllbGQgdmFsdWVzIGNvbWluZyBwYXJlbnQncyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgY29tcGxleEZpZWxkOiBDYXNlRmllbGQsIGtlZXBFbXB0eT86IGJvb2xlYW4sIGluZGV4PzogbnVtYmVyLFxuICAgIHNldHVwSGlkZGVuID0gZmFsc2UsIGZvcm1Hcm91cD86IEZvcm1Hcm91cCB8IEFic3RyYWN0Q29udHJvbCwgcGF0aD86IHN0cmluZywgaWRQcmVmaXg/OiBzdHJpbmcpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKCFjb21wbGV4RmllbGQgfHwgIWNvbXBsZXhGaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzID0gY29tcGxleEZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMgfHwgW107XG4gICAgY29uc3QgdmFsdWVzID0gY29tcGxleEZpZWxkLnZhbHVlIHx8IHt9O1xuICAgIGxldCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3Q6IGFueSA9IHZhbHVlcztcbiAgICBsZXQgZm9ybUdyb3VwQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgaWYgKGZvcm1Hcm91cCkge1xuICAgICAgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0ID0gZm9ybUdyb3VwLnZhbHVlID8gZm9ybUdyb3VwLnBhcmVudC5nZXRSYXdWYWx1ZSgpLmRhdGEgOiBmb3JtR3JvdXA7XG4gICAgICBmb3JtR3JvdXBBdmFpbGFibGUgPSB0cnVlO1xuICAgICAgaWYgKGlkUHJlZml4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGlkUHJlZml4ICE9PSAnJykge1xuICAgICAgICAgIGNvbnN0IGZpZWxkSWQgPSBpZFByZWZpeC5zdWJzdHJpbmcoMCwgaWRQcmVmaXguaW5kZXhPZignXycpKTtcbiAgICAgICAgICBpZiAoY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0W2ZpZWxkSWRdKSB7XG4gICAgICAgICAgICBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QgPSB2YWx1ZXM7XG4gICAgICAgICAgICBmb3JtR3JvdXBBdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0ID0gT2JqZWN0LmFzc2lnbihjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QsIHZhbHVlcyk7XG4gICAgICAgICAgZm9ybUdyb3VwQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGRzXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBjbG9uZSA9IEZpZWxkc1V0aWxzLmNsb25lT2JqZWN0KGYpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmdldFZhbHVlKGYsIHZhbHVlcywgaW5kZXgpO1xuICAgICAgICBpZiAoIVJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgY2xvbmUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xvbmU7XG4gICAgICB9KVxuICAgICAgLm1hcChmID0+IHtcbiAgICAgICAgaWYgKCFmLmRpc3BsYXlfY29udGV4dCkge1xuICAgICAgICAgIGYuZGlzcGxheV9jb250ZXh0ID0gY29tcGxleEZpZWxkLmRpc3BsYXlfY29udGV4dDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2V0dXBIaWRkZW4pIHtcbiAgICAgICAgICBSZWFkRmllbGRzRmlsdGVyUGlwZS5ldmFsdWF0ZUNvbmRpdGlvbmFsU2hvdyhmLCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QsIHBhdGgsIGZvcm1Hcm91cEF2YWlsYWJsZSwgY29tcGxleEZpZWxkLmlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZjtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGYgPT4ga2VlcEVtcHR5IHx8IFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmtlZXBGaWVsZChmLCB1bmRlZmluZWQsIGZhbHNlLCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QpKTtcbiAgfVxufVxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2NkLXJlYWQtZmllbGRzLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9waXBlcy9jb21wbGV4L2NjZC1yZWFkLWZpZWxkcy1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFLakUsTUFBTSxPQUFPLG9CQUFvQjtJQWdCL0I7O09BRUc7SUFDSyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsTUFBZSxFQUFFLDJCQUFvQztRQUNuRyxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztZQUM3RixPQUFPLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxNQUFN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LEVBQUU7Z0JBQ3RCLElBQUksWUFBWSxDQUFDLGVBQWUsS0FBSyxXQUFXLElBQUksWUFBWSxDQUFDLGVBQWUsS0FBSyxVQUFVO3VCQUM1RixZQUFZLENBQUMsZUFBZSxLQUFLLFVBQVUsSUFBSSxZQUFZLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRTtvQkFDM0YsQ0FBQyxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDO2lCQUNsRDthQUNGO1lBQ0QsSUFBSSxXQUFXLEVBQUU7Z0JBQ2Ysb0JBQW9CLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDekg7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQzthQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO0lBQ2hILENBQUM7O0FBNUt1QixpQ0FBWSxHQUFHO0lBQ3JDLFNBQVM7SUFDVCxJQUFJO0lBQ0osRUFBRTtJQUNGLEVBQUU7Q0FDSCxDQUFDO0FBRXNCLHVDQUFrQixHQUFHLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBRXBHLGlDQUFZLEdBQUc7SUFDckMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLGNBQWM7SUFDNUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDLGlCQUFpQjtDQUNuRCxDQUFDO3dGQWRTLG9CQUFvQjtrRkFBcEIsb0JBQW9CO3VGQUFwQixvQkFBb0I7Y0FIaEMsSUFBSTtlQUFDO2dCQUNKLElBQUksRUFBRSxxQkFBcUI7YUFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzRnJvbUV4aXN0IH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9kb21haW4vY29uZGl0aW9uYWwtc2hvdy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NjZFJlYWRGaWVsZHNGaWx0ZXInXG59KVxuZXhwb3J0IGNsYXNzIFJlYWRGaWVsZHNGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfVkFMVUVTID0gW1xuICAgIHVuZGVmaW5lZCxcbiAgICBudWxsLFxuICAgICcnLFxuICAgIHt9XG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQUxXQVlTX05VTExfRklFTERTID0gWydDYXNlUGF5bWVudEhpc3RvcnlWaWV3ZXInLCAnV2F5c1RvUGF5JywgJ0ZsYWdMYXVuY2hlcicsICdDb21wb25lbnRMYXVuY2hlciddO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE5FU1RFRF9UWVBFUyA9IHtcbiAgICBDb21wbGV4OiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcGxleCxcbiAgICBDb2xsZWN0aW9uOiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29sbGVjdGlvblxuICB9O1xuXG4gIC8qKlxuICAgKiBDb21wbGV4IHR5cGUgc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb24gc2ltcGxlIGZpZWxkIGRlc2NlbmRhbnQgd2l0aCBhIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZENvbXBsZXgoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWVzPzogb2JqZWN0LCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3Q/OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMgfHwge307XG4gICAgY29uc3QgdHlwZSA9IGZpZWxkLmZpZWxkX3R5cGU7XG4gICAgY29uc3QgdmFsdWUgPSBSZWFkRmllbGRzRmlsdGVyUGlwZS5nZXRWYWx1ZShmaWVsZCwgdmFsdWVzKTtcblxuICAgIGNvbnN0IGhhc0NoaWxkcmVuV2l0aFZhbHVlID0gdHlwZS5jb21wbGV4X2ZpZWxkcy5maW5kKGYgPT4ge1xuICAgICAgY29uc3Qgd2lsbEtlZXAgPSBSZWFkRmllbGRzRmlsdGVyUGlwZS5rZWVwRmllbGQoZiwgdmFsdWUsIHRydWUsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCk7XG4gICAgICByZXR1cm4gd2lsbEtlZXAgJiYgUmVhZEZpZWxkc0ZpbHRlclBpcGUuZXZhbHVhdGVDb25kaXRpb25hbFNob3coZiwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0KS5oaWRkZW4gIT09IHRydWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gISFoYXNDaGlsZHJlbldpdGhWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsaWRDb2xsZWN0aW9uKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlcz86IG9iamVjdCwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0Pzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgLy8gaWYgZmllbGQgaXMgY29sbGVjdGlvbiBhbmQgaXQgaGFzIGNvbXBsZXgvY29sbGVjdGlvbiBjaGlsZCBmaWVsZDsgcGFyZW50IGZpZWxkIGRvZXNudCBoYXZlIHZhbHVlIGRlZmluZWRcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmllbGQudmFsdWUpICYmIHZhbHVlcyAmJiB2YWx1ZXMuaGFzT3duUHJvcGVydHkoZmllbGQuaWQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgaXNOb3RFbXB0eSA9IEFycmF5LmlzQXJyYXkoZmllbGQudmFsdWUpICYmIGZpZWxkLnZhbHVlLmxlbmd0aCA+IDA7XG4gICAgaWYgKGlzTm90RW1wdHkgJiYgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICByZXR1cm4gISFmaWVsZC52YWx1ZS5maW5kKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBjb21wbGV4RmllbGQgPSBwbGFpblRvQ2xhc3NGcm9tRXhpc3QobmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICAgICAgaWQ6IGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmlkLFxuICAgICAgICAgIGZpZWxkX3R5cGU6IGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLFxuICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzVmFsaWRDb21wbGV4KGNvbXBsZXhGaWVsZCwgdW5kZWZpbmVkLCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpc05vdEVtcHR5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLkVNUFRZX1ZBTFVFUy5pbmRleE9mKHZhbHVlKSAhPT0gLTFcbiAgICAgIHx8IHZhbHVlLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzQ29tcG91bmQoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5ORVNURURfVFlQRVNbZmllbGQuZmllbGRfdHlwZS50eXBlXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsaWRDb21wb3VuZChmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZT86IG9iamVjdCwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0Pzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzQ29tcG91bmQoZmllbGQpXG4gICAgICAgICAgICAmJiBSZWFkRmllbGRzRmlsdGVyUGlwZS5ORVNURURfVFlQRVNbZmllbGQuZmllbGRfdHlwZS50eXBlXShmaWVsZCwgdmFsdWUsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBrZWVwRmllbGQoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWU/OiBvYmplY3QsIGlnbm9yZUxhYmVscyA9IGZhbHNlLCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3Q/OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICAvLyBXZSBzaG91bGRuJ3QgZGl0Y2ggbGFiZWxzLlxuICAgIGlmICghaWdub3JlTGFiZWxzICYmIGZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0xhYmVsJyAmJiAoZmllbGQubGFiZWwgfHwgJycpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBXZSBhbHNvIHNob3VsZG4ndCBkaXRjaCBmaWVsZHMgdGhhdCB3aWxsIGFsd2F5cyBjb21lIGJhY2sgd2l0aCBhIG51bGwgdmFsdWUuXG4gICAgaWYgKHRoaXMuQUxXQVlTX05VTExfRklFTERTLmluZGV4T2YoZmllbGQuZmllbGRfdHlwZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgfHwge307XG5cbiAgICBpZiAoUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNDb21wb3VuZChmaWVsZCkpIHtcbiAgICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcG91bmQoZmllbGQsIHZhbHVlLCBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QpO1xuICAgIH1cblxuICAgIHJldHVybiAhUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eShmaWVsZC52YWx1ZSlcbiAgICAgICAgICAgICAgfHwgIVJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkodmFsdWVbZmllbGQuaWRdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFZhbHVlKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlczogYW55LCBpbmRleD86IG51bWJlcik6IGFueSB7XG4gICAgaWYgKFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkoZmllbGQudmFsdWUpKSB7XG4gICAgICBsZXQgdmFsdWU6IGFueTtcbiAgICAgIGlmIChpbmRleCA+PSAwICkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0udmFsdWVbZmllbGQuaWRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZXNbZmllbGQuaWRdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZC52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV2YWx1YXRlQ29uZGl0aW9uYWxTaG93KGZpZWxkOiBDYXNlRmllbGQsIGZvcm1WYWx1ZTogYW55LCBwYXRoPzogc3RyaW5nLFxuICAgIGZvcm1Hcm91cEF2YWlsYWJsZT86IGJvb2xlYW4sIGZpZWxkSWQ/OiBzdHJpbmcpOiBDYXNlRmllbGQge1xuICAgIGlmIChmaWVsZC5kaXNwbGF5X2NvbnRleHQgPT09ICdISURERU4nKSB7XG4gICAgICBmaWVsZC5oaWRkZW4gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZmllbGQuc2hvd19jb25kaXRpb24pIHtcbiAgICAgIGxldCBjb25kOiBTaG93Q29uZGl0aW9uO1xuICAgICAgaWYgKGZpZWxkSWQgJiYgZmllbGQuc2hvd19jb25kaXRpb24uaW5kZXhPZihgJHtmaWVsZElkfS5gKSA+IC0xICYmICFmb3JtR3JvdXBBdmFpbGFibGUgJiYgISFPYmplY3Qua2V5cyhmb3JtVmFsdWUpLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBzZWFyY2ggPSBgJHtmaWVsZElkfS5gO1xuICAgICAgICBjb25zdCBzZWFyY2hSZWdFeHAgPSBuZXcgUmVnRXhwKHNlYXJjaCwgJ2cnKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZVdpdGggPSAnJztcbiAgICAgICAgY29uZCA9IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UoZmllbGQuc2hvd19jb25kaXRpb24ucmVwbGFjZShzZWFyY2hSZWdFeHAsIHJlcGxhY2VXaXRoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25kID0gU2hvd0NvbmRpdGlvbi5nZXRJbnN0YW5jZShmaWVsZC5zaG93X2NvbmRpdGlvbik7XG4gICAgICB9XG4gICAgICBmaWVsZC5oaWRkZW4gPSAhY29uZC5tYXRjaChmb3JtVmFsdWUsIHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZC5oaWRkZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBvdXQgZmllbGRzIGhhdmluZyBubyBkYXRhIHRvIGRpc3BsYXkgYW5kIGhhcm1vbmlzZSBmaWVsZCB2YWx1ZXMgY29taW5nIHBhcmVudCdzIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybShcbiAgICBjb21wbGV4RmllbGQ6IENhc2VGaWVsZCwga2VlcEVtcHR5PzogYm9vbGVhbiwgaW5kZXg/OiBudW1iZXIsXG4gICAgc2V0dXBIaWRkZW4gPSBmYWxzZSwgZm9ybUdyb3VwPzogRm9ybUdyb3VwIHwgQWJzdHJhY3RDb250cm9sLCBwYXRoPzogc3RyaW5nLCBpZFByZWZpeD86IHN0cmluZyk6IENhc2VGaWVsZFtdIHtcbiAgICBpZiAoIWNvbXBsZXhGaWVsZCB8fCAhY29tcGxleEZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHMgPSBjb21wbGV4RmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyB8fCBbXTtcbiAgICBjb25zdCB2YWx1ZXMgPSBjb21wbGV4RmllbGQudmFsdWUgfHwge307XG4gICAgbGV0IGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdDogYW55ID0gdmFsdWVzO1xuICAgIGxldCBmb3JtR3JvdXBBdmFpbGFibGUgPSBmYWxzZTtcbiAgICBpZiAoZm9ybUdyb3VwKSB7XG4gICAgICBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QgPSBmb3JtR3JvdXAudmFsdWUgPyBmb3JtR3JvdXAucGFyZW50LmdldFJhd1ZhbHVlKCkuZGF0YSA6IGZvcm1Hcm91cDtcbiAgICAgIGZvcm1Hcm91cEF2YWlsYWJsZSA9IHRydWU7XG4gICAgICBpZiAoaWRQcmVmaXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoaWRQcmVmaXggIT09ICcnKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRJZCA9IGlkUHJlZml4LnN1YnN0cmluZygwLCBpZFByZWZpeC5pbmRleE9mKCdfJykpO1xuICAgICAgICAgIGlmIChjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3RbZmllbGRJZF0pIHtcbiAgICAgICAgICAgIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCA9IHZhbHVlcztcbiAgICAgICAgICAgIGZvcm1Hcm91cEF2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QgPSBPYmplY3QuYXNzaWduKGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCwgdmFsdWVzKTtcbiAgICAgICAgICBmb3JtR3JvdXBBdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHNcbiAgICAgIC5tYXAoZiA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lID0gRmllbGRzVXRpbHMuY2xvbmVPYmplY3QoZik7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gUmVhZEZpZWxkc0ZpbHRlclBpcGUuZ2V0VmFsdWUoZiwgdmFsdWVzLCBpbmRleCk7XG4gICAgICAgIGlmICghUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICBjbG9uZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICAgIH0pXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBpZiAoIWYuZGlzcGxheV9jb250ZXh0KSB7XG4gICAgICAgICAgaWYgKGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQgPT09ICdNQU5EQVRPUlknIHx8IGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQgPT09ICdSRUFET05MWSdcbiAgICAgICAgICB8fCBjb21wbGV4RmllbGQuZGlzcGxheV9jb250ZXh0ID09PSAnT1BUSU9OQUwnIHx8IGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQgPT09ICdISURERU4nKSB7XG4gICAgICAgICAgICBmLmRpc3BsYXlfY29udGV4dCA9IGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR1cEhpZGRlbikge1xuICAgICAgICAgIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmV2YWx1YXRlQ29uZGl0aW9uYWxTaG93KGYsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCwgcGF0aCwgZm9ybUdyb3VwQXZhaWxhYmxlLCBjb21wbGV4RmllbGQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoZiA9PiBrZWVwRW1wdHkgfHwgUmVhZEZpZWxkc0ZpbHRlclBpcGUua2VlcEZpZWxkKGYsIHVuZGVmaW5lZCwgZmFsc2UsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCkpO1xuICB9XG59XG4iXX0=
@@ -77,7 +77,10 @@ export class FieldsFilterPipe {
77
77
  .filter(f => keepEmpty || FieldsFilterPipe.keepField(f))
78
78
  .map(f => {
79
79
  if (!f.display_context) {
80
- f.display_context = complexField.display_context;
80
+ if (complexField.display_context === 'MANDATORY' || complexField.display_context === 'READONLY'
81
+ || complexField.display_context === 'OPTIONAL' || complexField.display_context === 'HIDDEN') {
82
+ f.display_context = complexField.display_context;
83
+ }
81
84
  }
82
85
  return f;
83
86
  });
@@ -100,4 +103,4 @@ FieldsFilterPipe.ɵpipe = i0.ɵɵdefinePipe({ name: "ccdFieldsFilter", type: Fie
100
103
  name: 'ccdFieldsFilter'
101
104
  }]
102
105
  }], null, null); })();
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9waXBlcy9jb21wbGV4L2ZpZWxkcy1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFHaEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUtqRSxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLE1BQWU7UUFDN0QsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDeEQsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUM7SUFDaEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBVTtRQUMvQixPQUFPLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2VBQ3JELEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxNQUFNLENBQUMsVUFB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QkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNyQjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsQ0FBQyxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDO2FBQ2xEO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBckd1Qiw2QkFBWSxHQUFHO0lBQ3JDLFNBQVM7SUFDVCxJQUFJO0lBQ0osRUFBRTtJQUNGLEVBQUU7Q0FDSCxDQUFDO0FBRXNCLDZCQUFZLEdBQUc7SUFDckMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLGNBQWM7Q0FDekMsQ0FBQztnRkFYUyxnQkFBZ0I7MEVBQWhCLGdCQUFnQjt1RkFBaEIsZ0JBQWdCO2NBSDVCLElBQUk7ZUFBQztnQkFDSixJQUFJLEVBQUUsaUJBQWlCO2FBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9kb21haW4vY29uZGl0aW9uYWwtc2hvdy5tb2RlbCc7XG5cbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcblxuQFBpcGUoe1xuICBuYW1lOiAnY2NkRmllbGRzRmlsdGVyJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWVsZHNGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfVkFMVUVTID0gW1xuICAgIHVuZGVmaW5lZCxcbiAgICBudWxsLFxuICAgICcnLFxuICAgIHt9XG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTkVTVEVEX1RZUEVTID0ge1xuICAgIENvbXBsZXg6IEZpZWxkc0ZpbHRlclBpcGUuaXNWYWxpZENvbXBsZXhcbiAgfTtcblxuICAvKipcbiAgICogQ29tcGxleCB0eXBlIHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uIHNpbXBsZSBmaWVsZCBkZXNjZW5kYW50IHdpdGggYSB2YWx1ZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsaWRDb21wbGV4KGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlcz86IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHZhbHVlcyA9IHZhbHVlcyB8fCB7fTtcbiAgICBjb25zdCB0eXBlID0gZmllbGQuZmllbGRfdHlwZTtcbiAgICBjb25zdCB2YWx1ZSA9IEZpZWxkc0ZpbHRlclBpcGUuZ2V0VmFsdWUoZmllbGQsIHZhbHVlcyk7XG5cbiAgICBjb25zdCBoYXNDaGlsZHJlbldpdGhWYWx1ZSA9IHR5cGUuY29tcGxleF9maWVsZHMuZmluZChmID0+IHtcbiAgICAgIHJldHVybiBGaWVsZHNGaWx0ZXJQaXBlLmtlZXBGaWVsZChmLCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gISFoYXNDaGlsZHJlbldpdGhWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGaWVsZHNGaWx0ZXJQaXBlLkVNUFRZX1ZBTFVFUy5pbmRleE9mKHZhbHVlKSAhPT0gLTFcbiAgICAgIHx8IHZhbHVlLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzQ29tcG91bmQoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGaWVsZHNGaWx0ZXJQaXBlLk5FU1RFRF9UWVBFU1tmaWVsZC5maWVsZF90eXBlLnR5cGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZENvbXBvdW5kKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlPzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZpZWxkc0ZpbHRlclBpcGUuaXNDb21wb3VuZChmaWVsZClcbiAgICAgICAgICAgICYmIEZpZWxkc0ZpbHRlclBpcGUuTkVTVEVEX1RZUEVTW2ZpZWxkLmZpZWxkX3R5cGUudHlwZV0oZmllbGQsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGtlZXBGaWVsZChmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZT86IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIC8vIFdlIHNob3VsZG4ndCBkaXRjaCBsYWJlbHMuXG4gICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0xhYmVsJyAmJiAoZmllbGQubGFiZWwgfHwgJycpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgfHwge307XG5cbiAgICBpZiAoRmllbGRzRmlsdGVyUGlwZS5pc0NvbXBvdW5kKGZpZWxkKSkge1xuICAgICAgcmV0dXJuIEZpZWxkc0ZpbHRlclBpcGUuaXNWYWxpZENvbXBvdW5kKGZpZWxkLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkoZmllbGQudmFsdWUpXG4gICAgICAgICAgICAgIHx8ICFGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkodmFsdWVbZmllbGQuaWRdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFZhbHVlKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlczogYW55LCBpbmRleD86IG51bWJlcik6IGFueSB7XG4gICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgaWYgKGluZGV4ID49IDAgKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0udmFsdWVbZmllbGQuaWRdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlc1tmaWVsZC5pZF07XG4gICAgfVxuICAgIHJldHVybiBGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkoZmllbGQudmFsdWUpID8gdmFsdWUgOiBmaWVsZC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgb3V0IGZpZWxkcyBoYXZpbmcgbm8gZGF0YSB0byBkaXNwbGF5IGFuZCBoYXJtb25pc2UgZmllbGQgdmFsdWVzIGNvbWluZyBwYXJlbnQncyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0oY29tcGxleEZpZWxkOiBDYXNlRmllbGQsIGtlZXBFbXB0eT86IGJvb2xlYW4sIGluZGV4PzogbnVtYmVyLCBzdHJpcEhpZGRlbj0gZmFsc2UpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKCFjb21wbGV4RmllbGQgfHwgIWNvbXBsZXhGaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzID0gY29tcGxleEZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMgfHwgW107XG4gICAgY29uc3QgdmFsdWVzID0gY29tcGxleEZpZWxkLnZhbHVlIHx8IHt9O1xuICAgIGNvbnN0IGNoZWNrQ29uZGl0aW9uc0FnYWluc3QgPSB7IFtjb21wbGV4RmllbGQuaWRdOiB2YWx1ZXMgfTtcblxuICAgIHJldHVybiBmaWVsZHNcbiAgICAgIC5maWx0ZXIoIGYgPT4ge1xuICAgICAgICBpZiAoc3RyaXBIaWRkZW4gJiYgZi5zaG93X2NvbmRpdGlvbikge1xuICAgICAgICAgIGNvbnN0IGNvbmQgPSBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKGYuc2hvd19jb25kaXRpb24pO1xuICAgICAgICAgIHJldHVybiBjb25kLm1hdGNoKGNoZWNrQ29uZGl0aW9uc0FnYWluc3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5tYXAoZiA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lID0gRmllbGRzVXRpbHMuY2xvbmVPYmplY3QoZik7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gRmllbGRzRmlsdGVyUGlwZS5nZXRWYWx1ZShmLCB2YWx1ZXMsIGluZGV4KTtcbiAgICAgICAgaWYgKCFGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgY2xvbmUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xvbmU7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihmID0+IGtlZXBFbXB0eSB8fCBGaWVsZHNGaWx0ZXJQaXBlLmtlZXBGaWVsZChmKSlcbiAgICAgIC5tYXAoZiA9PiB7XG4gICAgICAgIGlmICghZi5kaXNwbGF5X2NvbnRleHQpIHtcbiAgICAgICAgICBmLmRpc3BsYXlfY29udGV4dCA9IGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KTtcbiAgfVxufVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9waXBlcy9jb21wbGV4L2ZpZWxkcy1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFHaEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUtqRSxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLE1BQWU7UUFDN0QsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDeEQsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUM7SUFDaEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBVTtRQUMvQixPQUFPLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2VBQ3JELEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxNQUFNLENBQUMsVUFB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QkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNyQjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsSUFBSSxZQUFZLENBQUMsZUFBZSxLQUFLLFdBQVcsSUFBSSxZQUFZLENBQUMsZUFBZSxLQUFLLFVBQVU7dUJBQzFGLFlBQVksQ0FBQyxlQUFlLEtBQUssVUFBVSxJQUFJLFlBQVksQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFO29CQUM3RixDQUFDLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUM7aUJBQ2xEO2FBQ0Y7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7QUF4R3VCLDZCQUFZLEdBQUc7SUFDckMsU0FBUztJQUNULElBQUk7SUFDSixFQUFFO0lBQ0YsRUFBRTtDQUNILENBQUM7QUFFc0IsNkJBQVksR0FBRztJQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsY0FBYztDQUN6QyxDQUFDO2dGQVhTLGdCQUFnQjswRUFBaEIsZ0JBQWdCO3VGQUFoQixnQkFBZ0I7Y0FINUIsSUFBSTtlQUFDO2dCQUNKLElBQUksRUFBRSxpQkFBaUI7YUFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25kaXRpb25hbC1zaG93L2RvbWFpbi9jb25kaXRpb25hbC1zaG93Lm1vZGVsJztcblxuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdjY2RGaWVsZHNGaWx0ZXInXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkc0ZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFTVBUWV9WQUxVRVMgPSBbXG4gICAgdW5kZWZpbmVkLFxuICAgIG51bGwsXG4gICAgJycsXG4gICAge31cbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBORVNURURfVFlQRVMgPSB7XG4gICAgQ29tcGxleDogRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcGxleFxuICB9O1xuXG4gIC8qKlxuICAgKiBDb21wbGV4IHR5cGUgc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb24gc2ltcGxlIGZpZWxkIGRlc2NlbmRhbnQgd2l0aCBhIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZENvbXBsZXgoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWVzPzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgdmFsdWVzID0gdmFsdWVzIHx8IHt9O1xuICAgIGNvbnN0IHR5cGUgPSBmaWVsZC5maWVsZF90eXBlO1xuICAgIGNvbnN0IHZhbHVlID0gRmllbGRzRmlsdGVyUGlwZS5nZXRWYWx1ZShmaWVsZCwgdmFsdWVzKTtcblxuICAgIGNvbnN0IGhhc0NoaWxkcmVuV2l0aFZhbHVlID0gdHlwZS5jb21wbGV4X2ZpZWxkcy5maW5kKGYgPT4ge1xuICAgICAgcmV0dXJuIEZpZWxkc0ZpbHRlclBpcGUua2VlcEZpZWxkKGYsIHZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAhIWhhc0NoaWxkcmVuV2l0aFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZpZWxkc0ZpbHRlclBpcGUuRU1QVFlfVkFMVUVTLmluZGV4T2YodmFsdWUpICE9PSAtMVxuICAgICAgfHwgdmFsdWUubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNDb21wb3VuZChmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZpZWxkc0ZpbHRlclBpcGUuTkVTVEVEX1RZUEVTW2ZpZWxkLmZpZWxkX3R5cGUudHlwZV07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkQ29tcG91bmQoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWU/OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmllbGRzRmlsdGVyUGlwZS5pc0NvbXBvdW5kKGZpZWxkKVxuICAgICAgICAgICAgJiYgRmllbGRzRmlsdGVyUGlwZS5ORVNURURfVFlQRVNbZmllbGQuZmllbGRfdHlwZS50eXBlXShmaWVsZCwgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMga2VlcEZpZWxkKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlPzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgLy8gV2Ugc2hvdWxkbid0IGRpdGNoIGxhYmVscy5cbiAgICBpZiAoZmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnTGFiZWwnICYmIChmaWVsZC5sYWJlbCB8fCAnJykubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2YWx1ZSB8fCB7fTtcblxuICAgIGlmIChGaWVsZHNGaWx0ZXJQaXBlLmlzQ29tcG91bmQoZmllbGQpKSB7XG4gICAgICByZXR1cm4gRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcG91bmQoZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gIUZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eShmaWVsZC52YWx1ZSlcbiAgICAgICAgICAgICAgfHwgIUZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eSh2YWx1ZVtmaWVsZC5pZF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0VmFsdWUoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWVzOiBhbnksIGluZGV4PzogbnVtYmVyKTogYW55IHtcbiAgICBsZXQgdmFsdWU6IGFueTtcbiAgICBpZiAoaW5kZXggPj0gMCApIHtcbiAgICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XS52YWx1ZVtmaWVsZC5pZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdmFsdWVzW2ZpZWxkLmlkXTtcbiAgICB9XG4gICAgcmV0dXJuIEZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eShmaWVsZC52YWx1ZSkgPyB2YWx1ZSA6IGZpZWxkLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBvdXQgZmllbGRzIGhhdmluZyBubyBkYXRhIHRvIGRpc3BsYXkgYW5kIGhhcm1vbmlzZSBmaWVsZCB2YWx1ZXMgY29taW5nIHBhcmVudCdzIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybShjb21wbGV4RmllbGQ6IENhc2VGaWVsZCwga2VlcEVtcHR5PzogYm9vbGVhbiwgaW5kZXg/OiBudW1iZXIsIHN0cmlwSGlkZGVuPSBmYWxzZSk6IENhc2VGaWVsZFtdIHtcbiAgICBpZiAoIWNvbXBsZXhGaWVsZCB8fCAhY29tcGxleEZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHMgPSBjb21wbGV4RmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyB8fCBbXTtcbiAgICBjb25zdCB2YWx1ZXMgPSBjb21wbGV4RmllbGQudmFsdWUgfHwge307XG4gICAgY29uc3QgY2hlY2tDb25kaXRpb25zQWdhaW5zdCA9IHsgW2NvbXBsZXhGaWVsZC5pZF06IHZhbHVlcyB9O1xuXG4gICAgcmV0dXJuIGZpZWxkc1xuICAgICAgLmZpbHRlciggZiA9PiB7XG4gICAgICAgIGlmIChzdHJpcEhpZGRlbiAmJiBmLnNob3dfY29uZGl0aW9uKSB7XG4gICAgICAgICAgY29uc3QgY29uZCA9IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UoZi5zaG93X2NvbmRpdGlvbik7XG4gICAgICAgICAgcmV0dXJuIGNvbmQubWF0Y2goY2hlY2tDb25kaXRpb25zQWdhaW5zdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLm1hcChmID0+IHtcbiAgICAgICAgY29uc3QgY2xvbmUgPSBGaWVsZHNVdGlscy5jbG9uZU9iamVjdChmKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBGaWVsZHNGaWx0ZXJQaXBlLmdldFZhbHVlKGYsIHZhbHVlcywgaW5kZXgpO1xuICAgICAgICBpZiAoIUZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICBjbG9uZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGYgPT4ga2VlcEVtcHR5IHx8IEZpZWxkc0ZpbHRlclBpcGUua2VlcEZpZWxkKGYpKVxuICAgICAgLm1hcChmID0+IHtcbiAgICAgICAgaWYgKCFmLmRpc3BsYXlfY29udGV4dCkge1xuICAgICAgICAgIGlmIChjb21wbGV4RmllbGQuZGlzcGxheV9jb250ZXh0ID09PSAnTUFOREFUT1JZJyB8fCBjb21wbGV4RmllbGQuZGlzcGxheV9jb250ZXh0ID09PSAnUkVBRE9OTFknXG4gICAgICAgICAgICB8fCBjb21wbGV4RmllbGQuZGlzcGxheV9jb250ZXh0ID09PSAnT1BUSU9OQUwnIHx8IGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQgPT09ICdISURERU4nKSB7XG4gICAgICAgICAgICBmLmRpc3BsYXlfY29udGV4dCA9IGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -388,7 +388,7 @@ export class FormValueService {
388
388
  // Retain anything that is readonly and not a label.
389
389
  continue;
390
390
  }
391
- if (field.hidden === true && field.display_context !== 'HIDDEN' && field.id !== 'caseLinks' && !field.retain_hidden_value) {
391
+ if (field.hidden === true && field.display_context !== 'HIDDEN' && field.display_context !== 'HIDDEN_TEMP' && field.id !== 'caseLinks' && !field.retain_hidden_value) {
392
392
  // Delete anything that is hidden (that is NOT readonly), and that
393
393
  // hasn't had its display_context overridden to make it hidden.
394
394
  delete data[field.id];
@@ -545,4 +545,4 @@ FormValueService.ɵprov = i0.ɵɵdefineInjectable({ token: FormValueService, fac
545
545
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormValueService, [{
546
546
  type: Injectable
547
547
  }], function () { return [{ type: i1.FieldTypeSanitiser }]; }, null); })();
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWx1ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc1RCxNQUFNLE9BQU8sZ0JBQWdCO0lBOEwzQixZQUE2QixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUNuRSxDQUFDO0lBOUxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtR0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUTtRQUNsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsSUFBSSxXQUFXLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkU7YUFBTSxJQUFJLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsRUFB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NEJBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDaEQ7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksd0NBQXdDLENBQUMsSUFBWSxFQUFFLFVBQXVCO1FBQ25GLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2lCQUM3RixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO29CQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7aUJBQ3RDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7O2dGQXRpQlUsZ0JBQWdCO3dEQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCO3VGQUFoQixnQkFBZ0I7Y0FENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2FzZUZpZWxkLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vZmllbGRzJztcbmltcG9ydCB7IEZpZWxkVHlwZVNhbml0aXNlciB9IGZyb20gJy4vZmllbGQtdHlwZS1zYW5pdGlzZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybVZhbHVlU2VydmljZSB7XG4gIC8qKlxuICAgKiBHZXRzIHZhbHVlIG9mIGEgZmllbGQgYmFzZWQgb24gZmllbGRLZXkgd2hpY2ggaXMgYSBkb3Qgc2VwYXJhdGVkIHJlZmVyZW5jZSB0byB2YWx1ZSBhbmQgY29sbGVjdGlvbiBpbmRleC5cbiAgICogVGhlcmUgYXJlIHR3byBleGNlcHRpb25zOlxuICAgKiAxKSBJbiBjYXNlIG9mIGEgbXVsdGlzZWxlY3QgYmVpbmcgaWRlbnRpZmllZCBhcyBhIGxlYWYgYSAnLS0tTEFCRUwnIHN1ZmZpeCBpcyBhcHBlbmRlZCB0byB0aGUga2V5IGFuZCB2YWx1ZXMgb2YgdGhhdCBrZXkgYXJlIHJldHVybmVkXG4gICAqICAgICAgZm9ybT0geyAnbGlzdCc6IFsnY29kZTEnLCAnY29kZTInXSxcbiAgICogICAgICAgICAgICAgICdsaXN0LS0tTEFCRUwnOiBbJ2xhYmVsMScsICdsYWJlbDInXSB9LFxuICAgKiAgICAgIGZpZWxkS2V5PWxpc3QsXG4gICAqICAgICAgY29sSW5kZXg9MCxcbiAgICogICAgICB2YWx1ZT1sYWJlbDEsIGxhYmVsMlxuICAgKiAyKSBJbiBjYXNlIG9mIGEgY29sbGVjdGlvbiBvZiBzaW1wbGUgZmllbGRzIGlzIGlkZW50aWZpZWQgYXMgYSBsZWFmIGFsbCB2YWx1ZXMgYXJlIGpvaW5lZCBzZXBlcmF0ZWQgYnkgYSBjb21tYVxuICAgKiAgICAgIGZvcm09IHsgJ2NvbGxlY3Rpb24nOiBbeyAndmFsdWUnOiAndmFsdWUxJyB9LCB7ICd2YWx1ZSc6ICd2YWx1ZTInIH1dIH1cbiAgICogICAgICBmaWVsZEtleT1jb2xsZWN0aW9uXG4gICAqICAgICAgY29sSW5kZXg9MVxuICAgKiAgICAgIHZhbHVlPXZhbHVlMSwgdmFsdWUyXG4gICAqXG4gICAqIE90aGVyIGV4YW1wbGVzOlxuICAgKiAxKSBzaW1wbGUgZmllbGQgcmVmZXJlbmNlOiBmb3JtPXsgJ1BlcnNvbkZpcnN0TmFtZSc6ICdKb2huJyB9LCBmaWVsZEtleT1QZXJzb25GaXJzdE5hbWUsIHZhbHVlPUpvaG5cbiAgICogMikgY29tcGxleCBmaWVsZCByZWZlcmVuY2U6XG4gICAqICAgICAgZm9ybT0geyBjb21wbGV4MSc6IHsgJ3NpbXBsZTExJzogJ3ZhbHVlMTEnLCAnc2ltcGxlMTInOiAndmFsdWUxMicsICdjb21wbGV4Mic6IHsgJ3NpbXBsZTIxJzogJ3ZhbHVlMjEnIH0gfX0sXG4gICAqICAgICAgZmllbGRLZXk9Y29tcGxleDEuY29tcGxleDIuc2ltcGxlMjFcbiAgICogICAgICBjb2xJbmRleD0wLFxuICAgKiAgICAgIHZhbHVlPXZhbHVlMjFcbiAgICogMykgY29tcGxleCBmaWVsZCB3aXRoIGNvbGxlY3Rpb24gZmllbGQgd2l0aCBjb21wbGV4IGZpZWxkIHJlZmVyZW5jZTpcbiAgICogICAgICBmb3JtPSB7ICdjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAnY29sbGVjdGlvbjEnOiBbXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4NCc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUxMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUyJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDQnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMjEnXG4gICAqICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMycsXG4gICAqICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXg0Jzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTMxJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgXX19XG4gICAqICAgICAgZmllbGRLZXk9Y29tcGxleDEuY29sbGVjdGlvbjEuY29tcGxleDIuY29tcGxleDMuY29tcGxleDQuc2ltcGxlMlxuICAgKiAgICAgIGNvbEluZGV4PTIsXG4gICAqICAgICAgdmFsdWU9dmFsdWUyMVxuICAgKiA0KSBjb2xsZWN0aW9uIG9mIGNvbXBsZXggdHlwZXNcbiAgICogICAgICBmb3JtPSB7ICdjb2xsZWN0aW9uMSc6IFtcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHsnY29tcGxleDEnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTExJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMTInXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzogeydjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMjEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUyMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgKiAgICAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7J2NvbXBsZXgxJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUzMScsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTMyJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICogICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgIF19XG4gICAqICAgICAgZmllbGRLZXk9Y29sbGVjdGlvbjEuY29tcGxleDEuY29tcGxleDIuY29tcGxleDMuc2ltcGxlMlxuICAgKiAgICAgIGNvbEluZGV4PTJcbiAgICogICAgICB2YWx1ZT12YWx1ZTMyXG4gICAqXG4gICAqIElmIGtleSBpcyBwb2ludGluZyBhdCBhIGNvbXBsZXggb3IgY29sbGVjdGlvbiBsZWFmIChub3Qgc2ltcGxlLCBjb2xsZWN0aW9uIG9mIHNpbXBsZSBvciBtdWx0aXNlbGVjdCB0eXBlcykgdGhlbiB1bmRlZmluZWQgaXMgcmV0dXJuZWQuXG4gICAqIEFsc28gbm8ga2V5IHJlZmVycmluZyBhIGxlYWYgdGhhdCBpcyBjb250YWluZWQgd2l0aGluIGNvbGxlY3Rpb24gd2lsbCBjb250YWluIGluZGV4IG51bWJlci4gVGhlIGluZGV4IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGVcbiAgICogbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRGaWVsZFZhbHVlKGZvcm0sIGZpZWxkS2V5LCBjb2xJbmRleCkge1xuICAgIGNvbnN0IGZpZWxkSWRzID0gZmllbGRLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBjdXJyZW50RmllbGRJZCA9IGZpZWxkSWRzWzBdO1xuICAgIGNvbnN0IGN1cnJlbnRGb3JtID0gZm9ybVtjdXJyZW50RmllbGRJZF07XG4gICAgaWYgKEZpZWxkc1V0aWxzLmlzTXVsdGlTZWxlY3RWYWx1ZShjdXJyZW50Rm9ybSkpIHtcbiAgICAgIHJldHVybiBmb3JtW2N1cnJlbnRGaWVsZElkICsgRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYXS5qb2luKCcsICcpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNDb2xsZWN0aW9uT2ZTaW1wbGVUeXBlcyhjdXJyZW50Rm9ybSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Rm9ybS5tYXAoZmllbGRWYWx1ZSA9PiBmaWVsZFZhbHVlWyd2YWx1ZSddKS5qb2luKCcsICcpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNDb2xsZWN0aW9uKGN1cnJlbnRGb3JtKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRWYWx1ZShjdXJyZW50Rm9ybVtjb2xJbmRleF1bJ3ZhbHVlJ10sIGZpZWxkSWRzLnNsaWNlKDEpLmpvaW4oJy4nKSwgY29sSW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChjdXJyZW50Rm9ybSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkVmFsdWUoY3VycmVudEZvcm0sIGZpZWxkSWRzLnNsaWNlKDEpLmpvaW4oJy4nKSwgY29sSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudEZvcm07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byByZW1vdmUgYW55dGhpbmcgd2l0aCBhIGAtLS1MQUJFTGAgc3VmZml4LlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byByZWN1cnNlIHRocm91Z2ggYW5kIHJlbW92ZSBNdWx0aVNlbGVjdCBsYWJlbHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEpIHtcbiAgICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGRhdGEpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgLy8gSGF2ZSB3ZSBmb3VuZCBvbmUgYSBNdWx0aVNlbGVjdCBsYWJlbD9cbiAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYKSA+IDApIHtcbiAgICAgICAgICAgIC8vIElmIHNvLCByZW1vdmUgaXQuXG4gICAgICAgICAgICBkZWxldGUgZGF0YVtrZXldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGFba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNSZWFkT25seShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLmRpc3BsYXlfY29udGV4dCA/IGZpZWxkLmRpc3BsYXlfY29udGV4dC50b1VwcGVyQ2FzZSgpID09PSAnUkVBRE9OTFknIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc09wdGlvbmFsKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuZGlzcGxheV9jb250ZXh0ID8gZmllbGQuZGlzcGxheV9jb250ZXh0LnRvVXBwZXJDYXNlKCkgPT09ICdPUFRJT05BTCcgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICByZXR1cm4gZmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnTGFiZWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNFbXB0eURhdGEoZGF0YTogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGxldCBhbGxFbXB0eSA9IHRydWU7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW3Byb3BdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAodHlwZW9mICh2YWx1ZSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBhbGxFbXB0eSA9IGFsbEVtcHR5ICYmIHRoaXMuaXNFbXB0eURhdGEodmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbGxFbXB0eSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFsbEVtcHR5O1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG91bGQgd2UgY2xlYXIgb3V0IG9wdGlvbmFsLCBlbXB0eSwgY29tcGxleCBvYmplY3RzP1xuICAgKiBAcGFyYW0gY2xlYXJFbXB0eSBGYWxzZSBwcm9wZXJ0eSBpZiB3ZSBzaW1wbHkgd2FudCB0byBza2lwIGl0LlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBhc3Nlc3MgZm9yIFwiZW1wdGluZXNzXCIuXG4gICAqIEBwYXJhbSBmaWVsZCBUaGUgQ2FzZUZpZWxkIHRoYXQgd2lsbCB0ZWxsIHVzIGlmIHRoaXMgaXMgb3B0aW9uYWwuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBjbGVhck9wdGlvbmFsRW1wdHkoY2xlYXJFbXB0eTogYm9vbGVhbiwgZGF0YTogb2JqZWN0LCBmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgaWYgKGNsZWFyRW1wdHkpIHtcbiAgICAgIHJldHVybiBGb3JtVmFsdWVTZXJ2aWNlLmlzT3B0aW9uYWwoZmllbGQpICYmIEZvcm1WYWx1ZVNlcnZpY2UuaXNFbXB0eURhdGEoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmllbGRUeXBlU2FuaXRpc2VyOiBGaWVsZFR5cGVTYW5pdGlzZXIpIHtcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGlzZShyYXdWYWx1ZTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGlzZU9iamVjdChyYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpc2VDYXNlUmVmZXJlbmNlKHJlZmVyZW5jZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBzdHJpcCBub24gZGlnaXRzXG4gICAgY29uc3Qgczogc3RyaW5nID0gcmVmZXJlbmNlLnJlcGxhY2UoL1tcXERdL2csICcnKTtcbiAgICBpZiAocy5sZW5ndGggPiAxNikge1xuICAgICAgcmV0dXJuIHMuc3Vic3RyKHMubGVuZ3RoIC0gMTYsIDE2KTtcbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyQ3VycmVudFBhZ2VGaWVsZHMoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGVkaXRGb3JtOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGNsb25lRm9ybSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWRpdEZvcm0pKTtcbiAgICBPYmplY3Qua2V5cyhjbG9uZUZvcm1bJ2RhdGEnXSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoY2FzZUZpZWxkcy5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQuaWQgPT09IGtleSkgPCAwKSB7XG4gICAgICAgIGRlbGV0ZSBjbG9uZUZvcm1bJ2RhdGEnXVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjbG9uZUZvcm07XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpc2VEeW5hbWljTGlzdHMoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGVkaXRGb3JtOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkVHlwZVNhbml0aXNlci5zYW5pdGlzZUxpc3RzKGNhc2VGaWVsZHMsIGVkaXRGb3JtLmRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGlzZU9iamVjdChyYXdPYmplY3Q6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgaWYgKCFyYXdPYmplY3QpIHtcbiAgICAgIHJldHVybiByYXdPYmplY3Q7XG4gICAgfVxuXG4gICAgbGV0IHNhbml0aXNlZE9iamVjdCA9IHt9O1xuICAgIGNvbnN0IGRvY3VtZW50RmllbGRLZXlzID0gWydkb2N1bWVudF91cmwnLCAnZG9jdW1lbnRfYmluYXJ5X3VybCcsICdkb2N1bWVudF9maWxlbmFtZSddO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHJhd09iamVjdCkge1xuICAgICAgLy8gSWYgdGhlIGtleSBpcyBvbmUgb2YgZG9jdW1lbnRGaWVsZEtleXMsIGl0IG1lYW5zIHRoZSBmaWVsZCBpcyBvZiBEb2N1bWVudCB0eXBlLiBJZiB0aGUgdmFsdWUgb2YgYW55IG9mIHRoZXNlXG4gICAgICAvLyBwcm9wZXJ0aWVzIGlzIG51bGwsIHRoZSBlbnRpcmUgc2FuaXRpc2VkIG9iamVjdCB0byBiZSByZXR1cm5lZCBzaG91bGQgYmUgbnVsbFxuICAgICAgaWYgKGRvY3VtZW50RmllbGRLZXlzLmluZGV4T2Yoa2V5KSA+IC0xICYmIHJhd09iamVjdFtrZXldID09PSBudWxsKSB7XG4gICAgICAgIHNhbml0aXNlZE9iamVjdCA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmICgnQ2FzZVJlZmVyZW5jZScgPT09IGtleSkge1xuICAgICAgICBzYW5pdGlzZWRPYmplY3Rba2V5XSA9IHRoaXMuc2FuaXRpc2VWYWx1ZSh0aGlzLnNhbml0aXNlQ2FzZVJlZmVyZW5jZShTdHJpbmcocmF3T2JqZWN0W2tleV0pKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYW5pdGlzZWRPYmplY3Rba2V5XSA9IHRoaXMuc2FuaXRpc2VWYWx1ZShyYXdPYmplY3Rba2V5XSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNhbml0aXNlZE9iamVjdFtrZXldKSkge1xuICAgICAgICAgIC8vIElmIHRoZSAnc2FuaXRpc2VkJyBhcnJheSBpcyBlbXB0eSwgd2hlcmVhcyB0aGUgb3JpZ2luYWwgYXJyYXkgaGFkIDEgb3IgbW9yZSBpdGVtc1xuICAgICAgICAgIC8vIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbSB0aGUgc2FuYXRpc2VkIG9iamVjdFxuICAgICAgICAgIGlmIChzYW5pdGlzZWRPYmplY3Rba2V5XS5sZW5ndGggPT09IDAgJiYgcmF3T2JqZWN0W2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZGVsZXRlIHNhbml0aXNlZE9iamVjdFtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2FuaXRpc2VkT2JqZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGlzZUFycmF5KHJhd0FycmF5OiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIXJhd0FycmF5KSB7XG4gICAgICByZXR1cm4gcmF3QXJyYXk7XG4gICAgfVxuXG4gICAgcmF3QXJyYXkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtICYmIGl0ZW0uaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuc2FuaXRpc2VWYWx1ZShpdGVtLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEZpbHRlciB0aGUgYXJyYXkgdG8gZW5zdXJlIG9ubHkgdHJ1dGh5IHZhbHVlcyBhcmUgcmV0dXJuZWQ7IGRvdWJsZS1iYW5nIG9wZXJhdG9yIHJldHVybnMgdGhlIGJvb2xlYW4gdHJ1ZS9mYWxzZVxuICAgIC8vIGFzc29jaWF0aW9uIG9mIGEgdmFsdWUuIEluIGFkZGl0aW9uLCBpZiB0aGUgYXJyYXkgY29udGFpbnMgaXRlbXMgd2l0aCBhIFwidmFsdWVcIiBvYmplY3QgcHJvcGVydHksIHJldHVybiBvbmx5XG4gICAgLy8gdGhvc2Ugd2hvc2UgdmFsdWUgb2JqZWN0IGNvbnRhaW5zIG5vbi1lbXB0eSB2YWx1ZXMsIGluY2x1ZGluZyBmb3IgYW55IGRlc2NlbmRhbnQgb2JqZWN0c1xuICAgIHJldHVybiByYXdBcnJheVxuICAgICAgLmZpbHRlcihpdGVtID0+ICEhaXRlbSlcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLmhhc093blByb3BlcnR5KCd2YWx1ZScpID8gRmllbGRzVXRpbHMuY29udGFpbnNOb25FbXB0eVZhbHVlcyhpdGVtLnZhbHVlKSA6IHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGlzZVZhbHVlKHJhd1ZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpc2VBcnJheShyYXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0eXBlb2YgcmF3VmFsdWUpIHtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXNlT2JqZWN0KHJhd1ZhbHVlKTtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiByYXdWYWx1ZS50cmltKCk7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHJhd1ZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByYXdWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXJOb25DYXNlRmllbGRzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFLZXkgaW4gZGF0YSkge1xuICAgICAgaWYgKCFjYXNlRmllbGRzLmZpbmQoY2YgPT4gY2YuaWQgPT09IGRhdGFLZXkpKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhW2RhdGFLZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE8gcmVmYWN0b3Igc28gdGhhdCB0aGlzIGFuZCByZW1vdmUgdW5uZWNlc3NhcnkgZmllbGRzIGhhdmUgYSBjb21tb24gaXRlcmF0b3IgdGhhdCBhcHBsaWVzIGZ1bmN0aW9ucyB0byBlYWNoIG5vZGUgdmlzaXRlZFxuICBwdWJsaWMgcmVtb3ZlTnVsbExhYmVscyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKSB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBkYXRhIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGZvcm0gdGhhdCdzIG5vdCBpbiB0aGUgY2FzZUZpZWxkc1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBjYXNlRmllbGRzKSB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0xhYmVsJzpcbiAgICAgICAgICAgICAgLy8gRGVsZXRlIGFueSBsYWJlbHMgdGhhdCBhcmUgbnVsbFxuICAgICAgICAgICAgICBpZiAoKGRhdGFbZmllbGQuaWRdID09PSBudWxsKSB8fCAoZGF0YVtmaWVsZC5pZF0gPT09ICcnKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgICAgICAvLyBSZWN1cnNlIGFuZCByZW1vdmUgYW55dGhpbmcgdW5uZWNlc3NhcnkgZnJvbSB3aXRoaW4gYSBjb21wbGV4IGZpZWxkLlxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZU51bGxMYWJlbHMoZGF0YVtmaWVsZC5pZF0sIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAvLyBHZXQgaG9sZCBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhY3R1YWxseSBoYXZlIGEgY29sbGVjdGlvbiB0byB3b3JrIHdpdGguXG4gICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICYmIEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBjb21wbGV4IG9iamVjdCwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYXIgdGhlbSBvdXQuXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBlbGVtZW50cyBhbmQgcmVtb3ZlIGFueSB1bm5lY2Vzc2FyeSBmaWVsZHMgd2l0aGluLlxuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOdWxsTGFiZWxzKGl0ZW0sIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOdWxsTGFiZWxzKGl0ZW0udmFsdWUsIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gVE9ETyByZWZhY3RvciBzbyB0aGF0IHRoaXMgYW5kIHJlbW92ZSB1bm5lY2Vzc2FyeSBmaWVsZHMgaGF2ZSBhIGNvbW1vbiBpdGVyYXRvciB0aGF0IGFwcGxpZXMgZnVuY3Rpb25zIHRvIGVhY2ggbm9kZSB2aXNpdGVkXG4gIHB1YmxpYyByZW1vdmVFbXB0eURvY3VtZW50cyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKSB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBkYXRhIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGZvcm0gdGhhdCdzIG5vdCBpbiB0aGUgY2FzZUZpZWxkc1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBjYXNlRmllbGRzKSB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgICAgICAvLyBSZWN1cnNlIGFuZCByZW1vdmUgYW55IGVtcHR5IGRvY3VtZW50cyBmcm9tIHdpdGhpbiBhIGNvbXBsZXggZmllbGQuXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlEb2N1bWVudHMoZGF0YVtmaWVsZC5pZF0sIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAvLyBHZXQgaG9sZCBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhY3R1YWxseSBoYXZlIGEgY29sbGVjdGlvbiB0byB3b3JrIHdpdGguXG4gICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICYmIEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBjb21wbGV4IG9iamVjdCwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYXIgb3V0IGVtcHR5IGRvY3VtZW50c1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgYW5kIHJlbW92ZSBhbnkgZW1wdHkgZG9jdW1lbnRzIHdpdGhpbi5cbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlEb2N1bWVudHMoaXRlbSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGl0ZW0udmFsdWUsIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEb2N1bWVudCc6XG4gICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGlzIGlzIGV4ZWN1dGVkIG9ubHkgaWYgdGhlIERvY3VtZW50IGZpZWxkIGlzIE5PVCBoaWRkZW4gYW5kIGlzIGVtcHR5IG9mIGRhdGE7IGhpZGRlbiBEb2N1bWVudFxuICAgICAgICAgICAgICAvLyBmaWVsZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGZpbHRlclJhd0Zvcm1WYWx1ZXMoKSBmdW5jdGlvbiBpbiBDYXNlRWRpdFN1Ym1pdCBjb21wb25lbnRcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLmhpZGRlbiAhPT0gdHJ1ZSAmJiBGb3JtVmFsdWVTZXJ2aWNlLmlzRW1wdHlEYXRhKGRhdGFbZmllbGQuaWRdKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ2xlYXIgb3V0IHVubmVjZXNzYXJ5IGZpZWxkcyBmcm9tIGEgZGF0YSBvYmplY3QsIGJhc2VkIG9uIGFuIGFycmF5IG9mIENhc2VGaWVsZHMuXG4gICAqIFRoaXMgbWV0aG9kIGlzIHJlY3Vyc2l2ZSBhbmQgd2lsbCBjYWxsIGl0c2VsZiBpZiBpdCBlbmNvdW50ZXJzIHBhcnRpY3VsYXIgZmllbGQgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvYmplY3QgdG8gYmUgdGlkaWVkIHVwLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgQ2FzZUZpZWxkcyB0aGF0IG5lZWQgdG8gYmUgY2xlYW5lZCB1cC5cbiAgICogQHBhcmFtIGNsZWFyRW1wdHkgV2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGNsZWFyIG91dCBlbXB0eSwgb3B0aW9uYWwsIGNvbXBsZXggb2JqZWN0cy5cbiAgICogQHBhcmFtIGNsZWFyTm9uQ2FzZSBXaGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgY2xlYXIgb3V0IG5vbi1jYXNlIGZpZWxkcyBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZVVubmVjZXNzYXJ5RmllbGRzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGNsZWFyRW1wdHkgPSBmYWxzZSwgY2xlYXJOb25DYXNlID0gZmFsc2UsXG4gICAgZnJvbVByZXZpb3VzUGFnZSA9IGZhbHNlLCBjdXJyZW50UGFnZUNhc2VGaWVsZHMgPSBbXSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZGF0YSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBmb3JtIHRoYXQncyBub3QgaW4gdGhlIGNhc2VGaWVsZHNcbiAgICAgIGlmIChjbGVhck5vbkNhc2UpIHtcbiAgICAgICAgdGhpcy5jbGVhck5vbkNhc2VGaWVsZHMoZGF0YSwgY2FzZUZpZWxkcyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGNhc2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKCFGb3JtVmFsdWVTZXJ2aWNlLmlzTGFiZWwoZmllbGQpICYmIEZvcm1WYWx1ZVNlcnZpY2UuaXNSZWFkT25seShmaWVsZCkpIHtcbiAgICAgICAgICAvLyBSZXRhaW4gYW55dGhpbmcgdGhhdCBpcyByZWFkb25seSBhbmQgbm90IGEgbGFiZWwuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmhpZGRlbiA9PT0gdHJ1ZSAmJiBmaWVsZC5kaXNwbGF5X2NvbnRleHQgIT09ICdISURERU4nICYmIGZpZWxkLmlkICE9PSAnY2FzZUxpbmtzJyAmJiAhZmllbGQucmV0YWluX2hpZGRlbl92YWx1ZSkge1xuICAgICAgICAgIC8vIERlbGV0ZSBhbnl0aGluZyB0aGF0IGlzIGhpZGRlbiAodGhhdCBpcyBOT1QgcmVhZG9ubHkpLCBhbmQgdGhhdFxuICAgICAgICAgIC8vIGhhc24ndCBoYWQgaXRzIGRpc3BsYXlfY29udGV4dCBvdmVycmlkZGVuIHRvIG1ha2UgaXQgaGlkZGVuLlxuICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0xhYmVsJzpcbiAgICAgICAgICAgICAgLy8gRGVsZXRlIGFueSBsYWJlbHMuXG4gICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEb2N1bWVudCc6XG4gICAgICAgICAgICAgIGlmIChGb3JtVmFsdWVTZXJ2aWNlLmlzRW1wdHlEYXRhKGRhdGFbZmllbGQuaWRdKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZVVubmVjZXNzYXJ5RmllbGRzKGRhdGFbZmllbGQuaWRdLCBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBjbGVhckVtcHR5KTtcbiAgICAgICAgICAgICAgLy8gQWxzbyByZW1vdmUgYW55IG9wdGlvbmFsIGNvbXBsZXggb2JqZWN0cyB0aGF0IGFyZSBjb21wbGV0ZWx5IGVtcHR5LlxuICAgICAgICAgICAgICAvLyBFVUktNDI0NDogUml0ZXNoJ3MgZml4LCBwYXNzaW5nIHRydWUgaW5zdGVhZCBvZiBjbGVhckVtcHR5LlxuICAgICAgICAgICAgICBpZiAoRm9ybVZhbHVlU2VydmljZS5jbGVhck9wdGlvbmFsRW1wdHkodHJ1ZSwgZGF0YVtmaWVsZC5pZF0sIGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZGF0YVtmaWVsZC5pZF0gJiYgRm9ybVZhbHVlU2VydmljZS5pc0VtcHR5RGF0YShkYXRhW2ZpZWxkLmlkXSkgJiYgZnJvbVByZXZpb3VzUGFnZVxuICAgICAgICAgICAgICAgICYmIGN1cnJlbnRQYWdlQ2FzZUZpZWxkcy5maW5kSW5kZXgoKGNGaWVsZDogYW55KSA9PiBjRmllbGQuaWQgPT09IGZpZWxkLmlkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHZhbGlkIGNvbGxlY3Rpb24gZGF0YVxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZUludmFsaWRDb2xsZWN0aW9uRGF0YShkYXRhLCBmaWVsZCk7XG4gICAgICAgICAgICAgIC8vIEdldCBob2xkIG9mIHRoZSBjb2xsZWN0aW9uLlxuICAgICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFjdHVhbGx5IGhhdmUgYSBjb2xsZWN0aW9uIHRvIHdvcmsgd2l0aC5cbiAgICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24gJiYgQXJyYXkuaXNBcnJheShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBjb2xsZWN0aW9uIG9mIGNvbXBsZXggb2JqZWN0LCB3ZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaFxuICAgICAgICAgICAgICAgIC8vIGFuZCBjbGVhciB0aGVtIG91dC5cbiAgICAgICAgICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGVsZW1lbnRzIGFuZCByZW1vdmUgYW55IHVubmVjZXNzYXJ5IGZpZWxkcyB3aXRoaW4uXG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVVubmVjZXNzYXJ5RmllbGRzKGl0ZW0sIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBjbGVhckVtcHR5KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhpdGVtLnZhbHVlLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsZWFyIG91dCBhbnkgTXVsdGlTZWxlY3QgbGFiZWxzLlxuICAgIEZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlTXVsdGlTZWxlY3RMYWJlbHMoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSW52YWxpZENvbGxlY3Rpb25EYXRhKGRhdGE6IG9iamVjdCwgZmllbGQ6IENhc2VGaWVsZCkge1xuICAgIGlmIChkYXRhW2ZpZWxkLmlkXSAmJiBkYXRhW2ZpZWxkLmlkXS5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IG9iakNvbGxlY3Rpb24gb2YgZGF0YVtmaWVsZC5pZF0pIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKG9iakNvbGxlY3Rpb24pLmxlbmd0aCA9PT0gMSAmJiBPYmplY3Qua2V5cyhvYmpDb2xsZWN0aW9uKS5pbmRleE9mKCdpZCcpID4gLTEpIHtcbiAgICAgICAgICBkYXRhW2ZpZWxkLmlkXSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbnkgZW1wdHkgY29sbGVjdGlvbiBmaWVsZHMgd2hlcmUgYSB2YWx1ZSBvZiBncmVhdGVyIHRoYW4gemVybyBpcyBzcGVjaWZpZWQgaW4gdGhlIGZpZWxkJ3Mge0BsaW5rIEZpZWxkVHlwZX1cbiAgICogYG1pbmAgYXR0cmlidXRlLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgb2YgZm9ybSB2YWx1ZXMgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgcmVtb3ZhbFxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgbGlzdCBvZiB1bmRlcmx5aW5nIHtAbGluayBDYXNlRmllbGR9IGRvbWFpbiBtb2RlbCBvYmplY3RzIGZvciBlYWNoIGZpZWxkXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRW1wdHlDb2xsZWN0aW9uc1dpdGhNaW5WYWxpZGF0aW9uKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBjYXNlRmllbGRzKSB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb2xsZWN0aW9uJyAmJiBmaWVsZC5maWVsZF90eXBlLm1pbiA+IDAgJiYgZGF0YVtmaWVsZC5pZF0gJiZcbiAgICAgICAgICBBcnJheS5pc0FycmF5KGRhdGFbZmllbGQuaWRdKSAmJiBkYXRhW2ZpZWxkLmlkXS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGZyb20gdGhlIHRvcCBsZXZlbCBvZiB0aGUgZm9ybSBkYXRhIGFueSBjYXNlIGZpZWxkcyBvZiBhIGdpdmVuIHR5cGUgb3IgdHlwZXMgdGhhdCBhcmUgbm90IGludGVuZGVkIHRvIGJlXG4gICAqIHBlcnNpc3RlZC4gVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byByZW1vdmUgXCJzcGVjaWFsXCIgY2FzZSBmaWVsZCB0eXBlcyBmcm9tIHRoZSBkYXRhLCBzdWNoIGFzIEZsYWdMYXVuY2hlciBvclxuICAgKiBDb21wb25lbnRMYXVuY2hlciBmaWVsZHMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvYmplY3QgdHJlZSBvZiBmb3JtIHZhbHVlcyBvbiB3aGljaCB0byBwZXJmb3JtIHRoZSByZW1vdmFsIGF0IHRoZSB0b3AgbGV2ZWwgb25seVxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgbGlzdCBvZiB1bmRlcmx5aW5nIHtAbGluayBDYXNlRmllbGR9IGRvbWFpbiBtb2RlbCBvYmplY3RzIGZvciBlYWNoIGZpZWxkXG4gICAqIEBwYXJhbSB0eXBlcyBBbiBhcnJheSBvZiBvbmUgb3IgbW9yZSBmaWVsZCB0eXBlc1xuICAgKi9cbiAgcHVibGljIHJlbW92ZUNhc2VGaWVsZHNPZlR5cGUoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgdHlwZXM6IEZpZWxkVHlwZUVudW1bXSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwICYmIHR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNhc2VGaWVsZHNUb1JlbW92ZSA9IGNhc2VGaWVsZHMuZmlsdGVyKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIHR5cGVzKSk7XG4gICAgICBmb3IgKGNvbnN0IGNhc2VGaWVsZCBvZiBjYXNlRmllbGRzVG9SZW1vdmUpIHtcbiAgICAgICAgZGVsZXRlIGRhdGFbY2FzZUZpZWxkLmlkXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmUtcG9wdWxhdGUgdGhlIGZvcm0gZGF0YSBmcm9tIHRoZSB2YWx1ZXMgaGVsZCBpbiB0aGUgY2FzZSBmaWVsZHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIHBpY2sgdXAsIGZvclxuICAgKiBlYWNoIGBGbGFnc2AgZmllbGQsIGFueSBmbGFnIGRldGFpbHMgZGF0YSBub3QgY3VycmVudGx5IHByZXNlbnQuXG4gICAqXG4gICAqIGBGbGFnc2AgZmllbGRzIG1heSBiZSBjb250YWluZWQgaW4gb3RoZXIgYENhc2VGaWVsZGAgaW5zdGFuY2VzLCBlaXRoZXIgYXMgYSBzdWItZmllbGQgb2YgYSBDb21wbGV4IGZpZWxkLCBvclxuICAgKiBmaWVsZHMgaW4gYSBjb2xsZWN0aW9uIChvciBzdWItZmllbGRzIG9mIENvbXBsZXggZmllbGRzIGluIGEgY29sbGVjdGlvbikuIFRoZXJlZm9yZSwgaXQgaXMgbmVjZXNzYXJ5IHRvXG4gICAqIGl0ZXJhdGUgdGhyb3VnaCBhbGwgYENhc2VGaWVsZGBzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgb2YgZm9ybSB2YWx1ZXMgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgZGF0YSBwb3B1bGF0aW9uXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBsaXN0IG9mIHVuZGVybHlpbmcge0BsaW5rIENhc2VGaWVsZH0gZG9tYWluIG1vZGVsIG9iamVjdHMgZm9yIGVhY2ggZmllbGRcbiAgICovXG4gIHB1YmxpYyByZXBvcHVsYXRlRm9ybURhdGFGcm9tQ2FzZUZpZWxkVmFsdWVzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCAmJlxuICAgICAgY2FzZUZpZWxkcy5maW5kSW5kZXgoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydGbGFnTGF1bmNoZXInXSkpID4gLTEpIHtcbiAgICAgIC8vIElnbm9yZSB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBiZWNhdXNlIGl0IGRvZXMgbm90IGhvbGQgYW55IHZhbHVlc1xuICAgICAgY2FzZUZpZWxkcy5maWx0ZXIoY2FzZUZpZWxkID0+ICFGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKVxuICAgICAgICAuZm9yRWFjaChjYXNlRmllbGQgPT4ge1xuICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkYXRhIG9iamVjdCBpcyBwb3B1bGF0ZWQgZm9yIGFsbCBDYXNlRmllbGQga2V5cyBpdCBjb250YWlucywgZXZlbiBpZiBmb3IgYSBnaXZlblxuICAgICAgICAgIC8vIENhc2VGaWVsZCBrZXksIHRoZSBkYXRhIG9iamVjdCBoYXMgYSBmYWxzeSB2YWx1ZSAoaGVuY2UgdGhlIHVzZSBvZiBoYXNPd25Qcm9wZXJ0eSgpIGZvciB0aGUgY2hlY2sgYmVsb3cpXG4gICAgICAgICAgLy8gU2VlIGh0dHBzOi8vdG9vbHMuaG1jdHMubmV0L2ppcmEvYnJvd3NlL0VVSS03Mzc3XG4gICAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoY2FzZUZpZWxkLmlkKSAmJiBjYXNlRmllbGQudmFsdWUpIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBuZXcgb2JqZWN0IGZvciB0aGUgQ2FzZUZpZWxkIElEIHdpdGhpbiB0aGUgZGF0YSBvYmplY3QsIGlmIG5lY2Vzc2FyeSAoaS5lLiBpZiB0aGUgY3VycmVudCB2YWx1ZVxuICAgICAgICAgICAgLy8gaXMgZmFsc3kpXG4gICAgICAgICAgICBpZiAoIWRhdGFbY2FzZUZpZWxkLmlkXSkge1xuICAgICAgICAgICAgICBkYXRhW2Nhc2VGaWVsZC5pZF0gPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENvcHkgYWxsIHZhbHVlcyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIENhc2VGaWVsZDsgdGhpcyBlbnN1cmVzIGFsbCBuZXN0ZWQgZmxhZyBkYXRhIChmb3IgZXhhbXBsZSwgYVxuICAgICAgICAgICAgLy8gRmxhZ3MgZmllbGQgd2l0aGluIGEgQ29tcGxleCBmaWVsZCBvciBhIGNvbGxlY3Rpb24gb2YgQ29tcGxleCBmaWVsZHMpIGlzIGNvcGllZCBhY3Jvc3NcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFbY2FzZUZpZWxkLmlkXSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICBpZiAoY2FzZUZpZWxkLnZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBkYXRhW2Nhc2VGaWVsZC5pZF1ba2V5XSA9IGNhc2VGaWVsZC52YWx1ZVtrZXldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQb3B1bGF0ZSB0aGUgbGlua2VkIGNhc2VzIGZyb20gdGhlIGRhdGEgaGVsZCBpbiBpdHMgY29ycmVzcG9uZGluZyBDYXNlRmllbGQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvYmplY3QgdHJlZSBvZiBmb3JtIHZhbHVlcyBvbiB3aGljaCB0byBwZXJmb3JtIHRoZSBkYXRhIHBvcHVsYXRpb25cbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGxpc3Qgb2YgdW5kZXJseWluZyB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBmb3IgZWFjaCBmaWVsZFxuICAgKi9cbiAgcHVibGljIHBvcHVsYXRlTGlua2VkQ2FzZXNEZXRhaWxzRnJvbUNhc2VGaWVsZHMoZGF0YTogb2JqZWN0LCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjYXNlRmllbGRzLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydDb21wb25lbnRMYXVuY2hlciddKSlcbiAgICAgICAgLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eSgnY2FzZUxpbmtzJykgJiYgY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhW2Nhc2VGaWVsZC5pZF0gPSBjYXNlRmllbGQudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWx1ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc1RCxNQUFNLE9BQU8sZ0JBQWdCO0lBOEwzQixZQUE2QixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUNuRSxDQUFDO0lBOUxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtR0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUTtRQUNsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsSUFBSSxXQUFXLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkU7YUFBTSxJQUFJLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsRUFB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Q0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDaEQ7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksd0NBQXdDLENBQUMsSUFBWSxFQUFFLFVBQXVCO1FBQ25GLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2lCQUM3RixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO29CQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7aUJBQ3RDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7O2dGQXRpQlUsZ0JBQWdCO3dEQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCO3VGQUFoQixnQkFBZ0I7Y0FENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2FzZUZpZWxkLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vZmllbGRzJztcbmltcG9ydCB7IEZpZWxkVHlwZVNhbml0aXNlciB9IGZyb20gJy4vZmllbGQtdHlwZS1zYW5pdGlzZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybVZhbHVlU2VydmljZSB7XG4gIC8qKlxuICAgKiBHZXRzIHZhbHVlIG9mIGEgZmllbGQgYmFzZWQgb24gZmllbGRLZXkgd2hpY2ggaXMgYSBkb3Qgc2VwYXJhdGVkIHJlZmVyZW5jZSB0byB2YWx1ZSBhbmQgY29sbGVjdGlvbiBpbmRleC5cbiAgICogVGhlcmUgYXJlIHR3byBleGNlcHRpb25zOlxuICAgKiAxKSBJbiBjYXNlIG9mIGEgbXVsdGlzZWxlY3QgYmVpbmcgaWRlbnRpZmllZCBhcyBhIGxlYWYgYSAnLS0tTEFCRUwnIHN1ZmZpeCBpcyBhcHBlbmRlZCB0byB0aGUga2V5IGFuZCB2YWx1ZXMgb2YgdGhhdCBrZXkgYXJlIHJldHVybmVkXG4gICAqICAgICAgZm9ybT0geyAnbGlzdCc6IFsnY29kZTEnLCAnY29kZTInXSxcbiAgICogICAgICAgICAgICAgICdsaXN0LS0tTEFCRUwnOiBbJ2xhYmVsMScsICdsYWJlbDInXSB9LFxuICAgKiAgICAgIGZpZWxkS2V5PWxpc3QsXG4gICAqICAgICAgY29sSW5kZXg9MCxcbiAgICogICAgICB2YWx1ZT1sYWJlbDEsIGxhYmVsMlxuICAgKiAyKSBJbiBjYXNlIG9mIGEgY29sbGVjdGlvbiBvZiBzaW1wbGUgZmllbGRzIGlzIGlkZW50aWZpZWQgYXMgYSBsZWFmIGFsbCB2YWx1ZXMgYXJlIGpvaW5lZCBzZXBlcmF0ZWQgYnkgYSBjb21tYVxuICAgKiAgICAgIGZvcm09IHsgJ2NvbGxlY3Rpb24nOiBbeyAndmFsdWUnOiAndmFsdWUxJyB9LCB7ICd2YWx1ZSc6ICd2YWx1ZTInIH1dIH1cbiAgICogICAgICBmaWVsZEtleT1jb2xsZWN0aW9uXG4gICAqICAgICAgY29sSW5kZXg9MVxuICAgKiAgICAgIHZhbHVlPXZhbHVlMSwgdmFsdWUyXG4gICAqXG4gICAqIE90aGVyIGV4YW1wbGVzOlxuICAgKiAxKSBzaW1wbGUgZmllbGQgcmVmZXJlbmNlOiBmb3JtPXsgJ1BlcnNvbkZpcnN0TmFtZSc6ICdKb2huJyB9LCBmaWVsZEtleT1QZXJzb25GaXJzdE5hbWUsIHZhbHVlPUpvaG5cbiAgICogMikgY29tcGxleCBmaWVsZCByZWZlcmVuY2U6XG4gICAqICAgICAgZm9ybT0geyBjb21wbGV4MSc6IHsgJ3NpbXBsZTExJzogJ3ZhbHVlMTEnLCAnc2ltcGxlMTInOiAndmFsdWUxMicsICdjb21wbGV4Mic6IHsgJ3NpbXBsZTIxJzogJ3ZhbHVlMjEnIH0gfX0sXG4gICAqICAgICAgZmllbGRLZXk9Y29tcGxleDEuY29tcGxleDIuc2ltcGxlMjFcbiAgICogICAgICBjb2xJbmRleD0wLFxuICAgKiAgICAgIHZhbHVlPXZhbHVlMjFcbiAgICogMykgY29tcGxleCBmaWVsZCB3aXRoIGNvbGxlY3Rpb24gZmllbGQgd2l0aCBjb21wbGV4IGZpZWxkIHJlZmVyZW5jZTpcbiAgICogICAgICBmb3JtPSB7ICdjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAnY29sbGVjdGlvbjEnOiBbXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4NCc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUxMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUyJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDQnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMjEnXG4gICAqICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMycsXG4gICAqICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXg0Jzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTMxJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgXX19XG4gICAqICAgICAgZmllbGRLZXk9Y29tcGxleDEuY29sbGVjdGlvbjEuY29tcGxleDIuY29tcGxleDMuY29tcGxleDQuc2ltcGxlMlxuICAgKiAgICAgIGNvbEluZGV4PTIsXG4gICAqICAgICAgdmFsdWU9dmFsdWUyMVxuICAgKiA0KSBjb2xsZWN0aW9uIG9mIGNvbXBsZXggdHlwZXNcbiAgICogICAgICBmb3JtPSB7ICdjb2xsZWN0aW9uMSc6IFtcbiAgICogICAgICAgICAgICAgICB7ICd2YWx1ZSc6IHsnY29tcGxleDEnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMSc6ICd2YWx1ZTExJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Mic6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgzJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUyJzogJ3ZhbHVlMTInXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICogICAgICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgICAgIHsgJ3ZhbHVlJzogeydjb21wbGV4MSc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUxJzogJ3ZhbHVlMjEnLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXgyJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDMnOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTInOiAndmFsdWUyMidcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgKiAgICAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgICAgeyAndmFsdWUnOiB7J2NvbXBsZXgxJzoge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZTEnOiAndmFsdWUzMScsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxleDInOiB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV4Myc6IHtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2ltcGxlMic6ICd2YWx1ZTMyJ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICogICAgICAgICAgICAgICB9XG4gICAqICAgICAgICAgICAgIF19XG4gICAqICAgICAgZmllbGRLZXk9Y29sbGVjdGlvbjEuY29tcGxleDEuY29tcGxleDIuY29tcGxleDMuc2ltcGxlMlxuICAgKiAgICAgIGNvbEluZGV4PTJcbiAgICogICAgICB2YWx1ZT12YWx1ZTMyXG4gICAqXG4gICAqIElmIGtleSBpcyBwb2ludGluZyBhdCBhIGNvbXBsZXggb3IgY29sbGVjdGlvbiBsZWFmIChub3Qgc2ltcGxlLCBjb2xsZWN0aW9uIG9mIHNpbXBsZSBvciBtdWx0aXNlbGVjdCB0eXBlcykgdGhlbiB1bmRlZmluZWQgaXMgcmV0dXJuZWQuXG4gICAqIEFsc28gbm8ga2V5IHJlZmVycmluZyBhIGxlYWYgdGhhdCBpcyBjb250YWluZWQgd2l0aGluIGNvbGxlY3Rpb24gd2lsbCBjb250YWluIGluZGV4IG51bWJlci4gVGhlIGluZGV4IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGVcbiAgICogbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRGaWVsZFZhbHVlKGZvcm0sIGZpZWxkS2V5LCBjb2xJbmRleCkge1xuICAgIGNvbnN0IGZpZWxkSWRzID0gZmllbGRLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBjdXJyZW50RmllbGRJZCA9IGZpZWxkSWRzWzBdO1xuICAgIGNvbnN0IGN1cnJlbnRGb3JtID0gZm9ybVtjdXJyZW50RmllbGRJZF07XG4gICAgaWYgKEZpZWxkc1V0aWxzLmlzTXVsdGlTZWxlY3RWYWx1ZShjdXJyZW50Rm9ybSkpIHtcbiAgICAgIHJldHVybiBmb3JtW2N1cnJlbnRGaWVsZElkICsgRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYXS5qb2luKCcsICcpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNDb2xsZWN0aW9uT2ZTaW1wbGVUeXBlcyhjdXJyZW50Rm9ybSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Rm9ybS5tYXAoZmllbGRWYWx1ZSA9PiBmaWVsZFZhbHVlWyd2YWx1ZSddKS5qb2luKCcsICcpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNDb2xsZWN0aW9uKGN1cnJlbnRGb3JtKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRWYWx1ZShjdXJyZW50Rm9ybVtjb2xJbmRleF1bJ3ZhbHVlJ10sIGZpZWxkSWRzLnNsaWNlKDEpLmpvaW4oJy4nKSwgY29sSW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChjdXJyZW50Rm9ybSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkVmFsdWUoY3VycmVudEZvcm0sIGZpZWxkSWRzLnNsaWNlKDEpLmpvaW4oJy4nKSwgY29sSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudEZvcm07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byByZW1vdmUgYW55dGhpbmcgd2l0aCBhIGAtLS1MQUJFTGAgc3VmZml4LlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byByZWN1cnNlIHRocm91Z2ggYW5kIHJlbW92ZSBNdWx0aVNlbGVjdCBsYWJlbHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEpIHtcbiAgICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGRhdGEpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgLy8gSGF2ZSB3ZSBmb3VuZCBvbmUgYSBNdWx0aVNlbGVjdCBsYWJlbD9cbiAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYKSA+IDApIHtcbiAgICAgICAgICAgIC8vIElmIHNvLCByZW1vdmUgaXQuXG4gICAgICAgICAgICBkZWxldGUgZGF0YVtrZXldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGFba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNSZWFkT25seShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLmRpc3BsYXlfY29udGV4dCA/IGZpZWxkLmRpc3BsYXlfY29udGV4dC50b1VwcGVyQ2FzZSgpID09PSAnUkVBRE9OTFknIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc09wdGlvbmFsKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuZGlzcGxheV9jb250ZXh0ID8gZmllbGQuZGlzcGxheV9jb250ZXh0LnRvVXBwZXJDYXNlKCkgPT09ICdPUFRJT05BTCcgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICByZXR1cm4gZmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnTGFiZWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNFbXB0eURhdGEoZGF0YTogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGxldCBhbGxFbXB0eSA9IHRydWU7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW3Byb3BdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAodHlwZW9mICh2YWx1ZSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBhbGxFbXB0eSA9IGFsbEVtcHR5ICYmIHRoaXMuaXNFbXB0eURhdGEodmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbGxFbXB0eSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFsbEVtcHR5O1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG91bGQgd2UgY2xlYXIgb3V0IG9wdGlvbmFsLCBlbXB0eSwgY29tcGxleCBvYmplY3RzP1xuICAgKiBAcGFyYW0gY2xlYXJFbXB0eSBGYWxzZSBwcm9wZXJ0eSBpZiB3ZSBzaW1wbHkgd2FudCB0byBza2lwIGl0LlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBhc3Nlc3MgZm9yIFwiZW1wdGluZXNzXCIuXG4gICAqIEBwYXJhbSBmaWVsZCBUaGUgQ2FzZUZpZWxkIHRoYXQgd2lsbCB0ZWxsIHVzIGlmIHRoaXMgaXMgb3B0aW9uYWwuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBjbGVhck9wdGlvbmFsRW1wdHkoY2xlYXJFbXB0eTogYm9vbGVhbiwgZGF0YTogb2JqZWN0LCBmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgaWYgKGNsZWFyRW1wdHkpIHtcbiAgICAgIHJldHVybiBGb3JtVmFsdWVTZXJ2aWNlLmlzT3B0aW9uYWwoZmllbGQpICYmIEZvcm1WYWx1ZVNlcnZpY2UuaXNFbXB0eURhdGEoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmllbGRUeXBlU2FuaXRpc2VyOiBGaWVsZFR5cGVTYW5pdGlzZXIpIHtcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGlzZShyYXdWYWx1ZTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGlzZU9iamVjdChyYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpc2VDYXNlUmVmZXJlbmNlKHJlZmVyZW5jZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBzdHJpcCBub24gZGlnaXRzXG4gICAgY29uc3Qgczogc3RyaW5nID0gcmVmZXJlbmNlLnJlcGxhY2UoL1tcXERdL2csICcnKTtcbiAgICBpZiAocy5sZW5ndGggPiAxNikge1xuICAgICAgcmV0dXJuIHMuc3Vic3RyKHMubGVuZ3RoIC0gMTYsIDE2KTtcbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyQ3VycmVudFBhZ2VGaWVsZHMoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGVkaXRGb3JtOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGNsb25lRm9ybSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWRpdEZvcm0pKTtcbiAgICBPYmplY3Qua2V5cyhjbG9uZUZvcm1bJ2RhdGEnXSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoY2FzZUZpZWxkcy5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQuaWQgPT09IGtleSkgPCAwKSB7XG4gICAgICAgIGRlbGV0ZSBjbG9uZUZvcm1bJ2RhdGEnXVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjbG9uZUZvcm07XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpc2VEeW5hbWljTGlzdHMoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGVkaXRGb3JtOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkVHlwZVNhbml0aXNlci5zYW5pdGlzZUxpc3RzKGNhc2VGaWVsZHMsIGVkaXRGb3JtLmRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGlzZU9iamVjdChyYXdPYmplY3Q6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgaWYgKCFyYXdPYmplY3QpIHtcbiAgICAgIHJldHVybiByYXdPYmplY3Q7XG4gICAgfVxuXG4gICAgbGV0IHNhbml0aXNlZE9iamVjdCA9IHt9O1xuICAgIGNvbnN0IGRvY3VtZW50RmllbGRLZXlzID0gWydkb2N1bWVudF91cmwnLCAnZG9jdW1lbnRfYmluYXJ5X3VybCcsICdkb2N1bWVudF9maWxlbmFtZSddO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHJhd09iamVjdCkge1xuICAgICAgLy8gSWYgdGhlIGtleSBpcyBvbmUgb2YgZG9jdW1lbnRGaWVsZEtleXMsIGl0IG1lYW5zIHRoZSBmaWVsZCBpcyBvZiBEb2N1bWVudCB0eXBlLiBJZiB0aGUgdmFsdWUgb2YgYW55IG9mIHRoZXNlXG4gICAgICAvLyBwcm9wZXJ0aWVzIGlzIG51bGwsIHRoZSBlbnRpcmUgc2FuaXRpc2VkIG9iamVjdCB0byBiZSByZXR1cm5lZCBzaG91bGQgYmUgbnVsbFxuICAgICAgaWYgKGRvY3VtZW50RmllbGRLZXlzLmluZGV4T2Yoa2V5KSA+IC0xICYmIHJhd09iamVjdFtrZXldID09PSBudWxsKSB7XG4gICAgICAgIHNhbml0aXNlZE9iamVjdCA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmICgnQ2FzZVJlZmVyZW5jZScgPT09IGtleSkge1xuICAgICAgICBzYW5pdGlzZWRPYmplY3Rba2V5XSA9IHRoaXMuc2FuaXRpc2VWYWx1ZSh0aGlzLnNhbml0aXNlQ2FzZVJlZmVyZW5jZShTdHJpbmcocmF3T2JqZWN0W2tleV0pKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYW5pdGlzZWRPYmplY3Rba2V5XSA9IHRoaXMuc2FuaXRpc2VWYWx1ZShyYXdPYmplY3Rba2V5XSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNhbml0aXNlZE9iamVjdFtrZXldKSkge1xuICAgICAgICAgIC8vIElmIHRoZSAnc2FuaXRpc2VkJyBhcnJheSBpcyBlbXB0eSwgd2hlcmVhcyB0aGUgb3JpZ2luYWwgYXJyYXkgaGFkIDEgb3IgbW9yZSBpdGVtc1xuICAgICAgICAgIC8vIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbSB0aGUgc2FuYXRpc2VkIG9iamVjdFxuICAgICAgICAgIGlmIChzYW5pdGlzZWRPYmplY3Rba2V5XS5sZW5ndGggPT09IDAgJiYgcmF3T2JqZWN0W2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZGVsZXRlIHNhbml0aXNlZE9iamVjdFtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2FuaXRpc2VkT2JqZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGlzZUFycmF5KHJhd0FycmF5OiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIXJhd0FycmF5KSB7XG4gICAgICByZXR1cm4gcmF3QXJyYXk7XG4gICAgfVxuXG4gICAgcmF3QXJyYXkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtICYmIGl0ZW0uaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcbiAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuc2FuaXRpc2VWYWx1ZShpdGVtLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEZpbHRlciB0aGUgYXJyYXkgdG8gZW5zdXJlIG9ubHkgdHJ1dGh5IHZhbHVlcyBhcmUgcmV0dXJuZWQ7IGRvdWJsZS1iYW5nIG9wZXJhdG9yIHJldHVybnMgdGhlIGJvb2xlYW4gdHJ1ZS9mYWxzZVxuICAgIC8vIGFzc29jaWF0aW9uIG9mIGEgdmFsdWUuIEluIGFkZGl0aW9uLCBpZiB0aGUgYXJyYXkgY29udGFpbnMgaXRlbXMgd2l0aCBhIFwidmFsdWVcIiBvYmplY3QgcHJvcGVydHksIHJldHVybiBvbmx5XG4gICAgLy8gdGhvc2Ugd2hvc2UgdmFsdWUgb2JqZWN0IGNvbnRhaW5zIG5vbi1lbXB0eSB2YWx1ZXMsIGluY2x1ZGluZyBmb3IgYW55IGRlc2NlbmRhbnQgb2JqZWN0c1xuICAgIHJldHVybiByYXdBcnJheVxuICAgICAgLmZpbHRlcihpdGVtID0+ICEhaXRlbSlcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLmhhc093blByb3BlcnR5KCd2YWx1ZScpID8gRmllbGRzVXRpbHMuY29udGFpbnNOb25FbXB0eVZhbHVlcyhpdGVtLnZhbHVlKSA6IHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGlzZVZhbHVlKHJhd1ZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpc2VBcnJheShyYXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0eXBlb2YgcmF3VmFsdWUpIHtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXNlT2JqZWN0KHJhd1ZhbHVlKTtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiByYXdWYWx1ZS50cmltKCk7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHJhd1ZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByYXdWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXJOb25DYXNlRmllbGRzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFLZXkgaW4gZGF0YSkge1xuICAgICAgaWYgKCFjYXNlRmllbGRzLmZpbmQoY2YgPT4gY2YuaWQgPT09IGRhdGFLZXkpKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhW2RhdGFLZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE8gcmVmYWN0b3Igc28gdGhhdCB0aGlzIGFuZCByZW1vdmUgdW5uZWNlc3NhcnkgZmllbGRzIGhhdmUgYSBjb21tb24gaXRlcmF0b3IgdGhhdCBhcHBsaWVzIGZ1bmN0aW9ucyB0byBlYWNoIG5vZGUgdmlzaXRlZFxuICBwdWJsaWMgcmVtb3ZlTnVsbExhYmVscyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKSB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBkYXRhIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGZvcm0gdGhhdCdzIG5vdCBpbiB0aGUgY2FzZUZpZWxkc1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBjYXNlRmllbGRzKSB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0xhYmVsJzpcbiAgICAgICAgICAgICAgLy8gRGVsZXRlIGFueSBsYWJlbHMgdGhhdCBhcmUgbnVsbFxuICAgICAgICAgICAgICBpZiAoKGRhdGFbZmllbGQuaWRdID09PSBudWxsKSB8fCAoZGF0YVtmaWVsZC5pZF0gPT09ICcnKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgICAgICAvLyBSZWN1cnNlIGFuZCByZW1vdmUgYW55dGhpbmcgdW5uZWNlc3NhcnkgZnJvbSB3aXRoaW4gYSBjb21wbGV4IGZpZWxkLlxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZU51bGxMYWJlbHMoZGF0YVtmaWVsZC5pZF0sIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAvLyBHZXQgaG9sZCBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhY3R1YWxseSBoYXZlIGEgY29sbGVjdGlvbiB0byB3b3JrIHdpdGguXG4gICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICYmIEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBjb21wbGV4IG9iamVjdCwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYXIgdGhlbSBvdXQuXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBlbGVtZW50cyBhbmQgcmVtb3ZlIGFueSB1bm5lY2Vzc2FyeSBmaWVsZHMgd2l0aGluLlxuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOdWxsTGFiZWxzKGl0ZW0sIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOdWxsTGFiZWxzKGl0ZW0udmFsdWUsIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gVE9ETyByZWZhY3RvciBzbyB0aGF0IHRoaXMgYW5kIHJlbW92ZSB1bm5lY2Vzc2FyeSBmaWVsZHMgaGF2ZSBhIGNvbW1vbiBpdGVyYXRvciB0aGF0IGFwcGxpZXMgZnVuY3Rpb25zIHRvIGVhY2ggbm9kZSB2aXNpdGVkXG4gIHB1YmxpYyByZW1vdmVFbXB0eURvY3VtZW50cyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKSB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBkYXRhIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGZvcm0gdGhhdCdzIG5vdCBpbiB0aGUgY2FzZUZpZWxkc1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBjYXNlRmllbGRzKSB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgICAgICAvLyBSZWN1cnNlIGFuZCByZW1vdmUgYW55IGVtcHR5IGRvY3VtZW50cyBmcm9tIHdpdGhpbiBhIGNvbXBsZXggZmllbGQuXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlEb2N1bWVudHMoZGF0YVtmaWVsZC5pZF0sIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAvLyBHZXQgaG9sZCBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhY3R1YWxseSBoYXZlIGEgY29sbGVjdGlvbiB0byB3b3JrIHdpdGguXG4gICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICYmIEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBjb21wbGV4IG9iamVjdCwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYXIgb3V0IGVtcHR5IGRvY3VtZW50c1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgYW5kIHJlbW92ZSBhbnkgZW1wdHkgZG9jdW1lbnRzIHdpdGhpbi5cbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlEb2N1bWVudHMoaXRlbSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGl0ZW0udmFsdWUsIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEb2N1bWVudCc6XG4gICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGlzIGlzIGV4ZWN1dGVkIG9ubHkgaWYgdGhlIERvY3VtZW50IGZpZWxkIGlzIE5PVCBoaWRkZW4gYW5kIGlzIGVtcHR5IG9mIGRhdGE7IGhpZGRlbiBEb2N1bWVudFxuICAgICAgICAgICAgICAvLyBmaWVsZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGZpbHRlclJhd0Zvcm1WYWx1ZXMoKSBmdW5jdGlvbiBpbiBDYXNlRWRpdFN1Ym1pdCBjb21wb25lbnRcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLmhpZGRlbiAhPT0gdHJ1ZSAmJiBGb3JtVmFsdWVTZXJ2aWNlLmlzRW1wdHlEYXRhKGRhdGFbZmllbGQuaWRdKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2ZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ2xlYXIgb3V0IHVubmVjZXNzYXJ5IGZpZWxkcyBmcm9tIGEgZGF0YSBvYmplY3QsIGJhc2VkIG9uIGFuIGFycmF5IG9mIENhc2VGaWVsZHMuXG4gICAqIFRoaXMgbWV0aG9kIGlzIHJlY3Vyc2l2ZSBhbmQgd2lsbCBjYWxsIGl0c2VsZiBpZiBpdCBlbmNvdW50ZXJzIHBhcnRpY3VsYXIgZmllbGQgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvYmplY3QgdG8gYmUgdGlkaWVkIHVwLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgQ2FzZUZpZWxkcyB0aGF0IG5lZWQgdG8gYmUgY2xlYW5lZCB1cC5cbiAgICogQHBhcmFtIGNsZWFyRW1wdHkgV2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGNsZWFyIG91dCBlbXB0eSwgb3B0aW9uYWwsIGNvbXBsZXggb2JqZWN0cy5cbiAgICogQHBhcmFtIGNsZWFyTm9uQ2FzZSBXaGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgY2xlYXIgb3V0IG5vbi1jYXNlIGZpZWxkcyBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZVVubmVjZXNzYXJ5RmllbGRzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGNsZWFyRW1wdHkgPSBmYWxzZSwgY2xlYXJOb25DYXNlID0gZmFsc2UsXG4gICAgZnJvbVByZXZpb3VzUGFnZSA9IGZhbHNlLCBjdXJyZW50UGFnZUNhc2VGaWVsZHMgPSBbXSk6IHZvaWQge1xuICAgIGlmIChkYXRhICYmIGNhc2VGaWVsZHMgJiYgY2FzZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZGF0YSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBmb3JtIHRoYXQncyBub3QgaW4gdGhlIGNhc2VGaWVsZHNcbiAgICAgIGlmIChjbGVhck5vbkNhc2UpIHtcbiAgICAgICAgdGhpcy5jbGVhck5vbkNhc2VGaWVsZHMoZGF0YSwgY2FzZUZpZWxkcyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGNhc2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKCFGb3JtVmFsdWVTZXJ2aWNlLmlzTGFiZWwoZmllbGQpICYmIEZvcm1WYWx1ZVNlcnZpY2UuaXNSZWFkT25seShmaWVsZCkpIHtcbiAgICAgICAgICAvLyBSZXRhaW4gYW55dGhpbmcgdGhhdCBpcyByZWFkb25seSBhbmQgbm90IGEgbGFiZWwuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmhpZGRlbiA9PT0gdHJ1ZSAmJiBmaWVsZC5kaXNwbGF5X2NvbnRleHQgIT09ICdISURERU4nICYmIGZpZWxkLmRpc3BsYXlfY29udGV4dCAhPT0gJ0hJRERFTl9URU1QJyAmJiBmaWVsZC5pZCAhPT0gJ2Nhc2VMaW5rcycgJiYgIWZpZWxkLnJldGFpbl9oaWRkZW5fdmFsdWUpIHtcbiAgICAgICAgICAvLyBEZWxldGUgYW55dGhpbmcgdGhhdCBpcyBoaWRkZW4gKHRoYXQgaXMgTk9UIHJlYWRvbmx5KSwgYW5kIHRoYXRcbiAgICAgICAgICAvLyBoYXNuJ3QgaGFkIGl0cyBkaXNwbGF5X2NvbnRleHQgb3ZlcnJpZGRlbiB0byBtYWtlIGl0IGhpZGRlbi5cbiAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQuZmllbGRfdHlwZSkge1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRfdHlwZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdMYWJlbCc6XG4gICAgICAgICAgICAgIC8vIERlbGV0ZSBhbnkgbGFiZWxzLlxuICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRG9jdW1lbnQnOlxuICAgICAgICAgICAgICBpZiAoRm9ybVZhbHVlU2VydmljZS5pc0VtcHR5RGF0YShkYXRhW2ZpZWxkLmlkXSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhkYXRhW2ZpZWxkLmlkXSwgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgY2xlYXJFbXB0eSk7XG4gICAgICAgICAgICAgIC8vIEFsc28gcmVtb3ZlIGFueSBvcHRpb25hbCBjb21wbGV4IG9iamVjdHMgdGhhdCBhcmUgY29tcGxldGVseSBlbXB0eS5cbiAgICAgICAgICAgICAgLy8gRVVJLTQyNDQ6IFJpdGVzaCdzIGZpeCwgcGFzc2luZyB0cnVlIGluc3RlYWQgb2YgY2xlYXJFbXB0eS5cbiAgICAgICAgICAgICAgaWYgKEZvcm1WYWx1ZVNlcnZpY2UuY2xlYXJPcHRpb25hbEVtcHR5KHRydWUsIGRhdGFbZmllbGQuaWRdLCBmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtmaWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGRhdGFbZmllbGQuaWRdICYmIEZvcm1WYWx1ZVNlcnZpY2UuaXNFbXB0eURhdGEoZGF0YVtmaWVsZC5pZF0pICYmIGZyb21QcmV2aW91c1BhZ2VcbiAgICAgICAgICAgICAgICAmJiBjdXJyZW50UGFnZUNhc2VGaWVsZHMuZmluZEluZGV4KChjRmllbGQ6IGFueSkgPT4gY0ZpZWxkLmlkID09PSBmaWVsZC5pZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgIC8vIENoZWNrIGZvciB2YWxpZCBjb2xsZWN0aW9uIGRhdGFcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVJbnZhbGlkQ29sbGVjdGlvbkRhdGEoZGF0YSwgZmllbGQpO1xuICAgICAgICAgICAgICAvLyBHZXQgaG9sZCBvZiB0aGUgY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFbZmllbGQuaWRdO1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhY3R1YWxseSBoYXZlIGEgY29sbGVjdGlvbiB0byB3b3JrIHdpdGguXG4gICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICYmIEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBjb21wbGV4IG9iamVjdCwgd2UgbmVlZCB0byBpdGVyYXRlIHRocm91Z2hcbiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYXIgdGhlbSBvdXQuXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBlbGVtZW50cyBhbmQgcmVtb3ZlIGFueSB1bm5lY2Vzc2FyeSBmaWVsZHMgd2l0aGluLlxuICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhpdGVtLCBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgY2xlYXJFbXB0eSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoaXRlbS52YWx1ZSwgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhciBvdXQgYW55IE11bHRpU2VsZWN0IGxhYmVscy5cbiAgICBGb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU11bHRpU2VsZWN0TGFiZWxzKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUludmFsaWRDb2xsZWN0aW9uRGF0YShkYXRhOiBvYmplY3QsIGZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBpZiAoZGF0YVtmaWVsZC5pZF0gJiYgZGF0YVtmaWVsZC5pZF0ubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBvYmpDb2xsZWN0aW9uIG9mIGRhdGFbZmllbGQuaWRdKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmpDb2xsZWN0aW9uKS5sZW5ndGggPT09IDEgJiYgT2JqZWN0LmtleXMob2JqQ29sbGVjdGlvbikuaW5kZXhPZignaWQnKSA+IC0xKSB7XG4gICAgICAgICAgZGF0YVtmaWVsZC5pZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW55IGVtcHR5IGNvbGxlY3Rpb24gZmllbGRzIHdoZXJlIGEgdmFsdWUgb2YgZ3JlYXRlciB0aGFuIHplcm8gaXMgc3BlY2lmaWVkIGluIHRoZSBmaWVsZCdzIHtAbGluayBGaWVsZFR5cGV9XG4gICAqIGBtaW5gIGF0dHJpYnV0ZS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIG9iamVjdCB0cmVlIG9mIGZvcm0gdmFsdWVzIG9uIHdoaWNoIHRvIHBlcmZvcm0gdGhlIHJlbW92YWxcbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGxpc3Qgb2YgdW5kZXJseWluZyB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBmb3IgZWFjaCBmaWVsZFxuICAgKi9cbiAgcHVibGljIHJlbW92ZUVtcHR5Q29sbGVjdGlvbnNXaXRoTWluVmFsaWRhdGlvbihkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogdm9pZCB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgY2FzZUZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29sbGVjdGlvbicgJiYgZmllbGQuZmllbGRfdHlwZS5taW4gPiAwICYmIGRhdGFbZmllbGQuaWRdICYmXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShkYXRhW2ZpZWxkLmlkXSkgJiYgZGF0YVtmaWVsZC5pZF0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZmllbGQuaWRdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBmcm9tIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGZvcm0gZGF0YSBhbnkgY2FzZSBmaWVsZHMgb2YgYSBnaXZlbiB0eXBlIG9yIHR5cGVzIHRoYXQgYXJlIG5vdCBpbnRlbmRlZCB0byBiZVxuICAgKiBwZXJzaXN0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIFwic3BlY2lhbFwiIGNhc2UgZmllbGQgdHlwZXMgZnJvbSB0aGUgZGF0YSwgc3VjaCBhcyBGbGFnTGF1bmNoZXIgb3JcbiAgICogQ29tcG9uZW50TGF1bmNoZXIgZmllbGRzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgb2YgZm9ybSB2YWx1ZXMgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgcmVtb3ZhbCBhdCB0aGUgdG9wIGxldmVsIG9ubHlcbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGxpc3Qgb2YgdW5kZXJseWluZyB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBmb3IgZWFjaCBmaWVsZFxuICAgKiBAcGFyYW0gdHlwZXMgQW4gYXJyYXkgb2Ygb25lIG9yIG1vcmUgZmllbGQgdHlwZXNcbiAgICovXG4gIHB1YmxpYyByZW1vdmVDYXNlRmllbGRzT2ZUeXBlKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIHR5cGVzOiBGaWVsZFR5cGVFbnVtW10pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCAmJiB0eXBlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjYXNlRmllbGRzVG9SZW1vdmUgPSBjYXNlRmllbGRzLmZpbHRlcihjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCB0eXBlcykpO1xuICAgICAgZm9yIChjb25zdCBjYXNlRmllbGQgb2YgY2FzZUZpZWxkc1RvUmVtb3ZlKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhW2Nhc2VGaWVsZC5pZF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLXBvcHVsYXRlIHRoZSBmb3JtIGRhdGEgZnJvbSB0aGUgdmFsdWVzIGhlbGQgaW4gdGhlIGNhc2UgZmllbGRzLiBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBwaWNrIHVwLCBmb3JcbiAgICogZWFjaCBgRmxhZ3NgIGZpZWxkLCBhbnkgZmxhZyBkZXRhaWxzIGRhdGEgbm90IGN1cnJlbnRseSBwcmVzZW50LlxuICAgKlxuICAgKiBgRmxhZ3NgIGZpZWxkcyBtYXkgYmUgY29udGFpbmVkIGluIG90aGVyIGBDYXNlRmllbGRgIGluc3RhbmNlcywgZWl0aGVyIGFzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCBmaWVsZCwgb3JcbiAgICogZmllbGRzIGluIGEgY29sbGVjdGlvbiAob3Igc3ViLWZpZWxkcyBvZiBDb21wbGV4IGZpZWxkcyBpbiBhIGNvbGxlY3Rpb24pLiBUaGVyZWZvcmUsIGl0IGlzIG5lY2Vzc2FyeSB0b1xuICAgKiBpdGVyYXRlIHRocm91Z2ggYWxsIGBDYXNlRmllbGRgcy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIG9iamVjdCB0cmVlIG9mIGZvcm0gdmFsdWVzIG9uIHdoaWNoIHRvIHBlcmZvcm0gdGhlIGRhdGEgcG9wdWxhdGlvblxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgbGlzdCBvZiB1bmRlcmx5aW5nIHtAbGluayBDYXNlRmllbGR9IGRvbWFpbiBtb2RlbCBvYmplY3RzIGZvciBlYWNoIGZpZWxkXG4gICAqL1xuICBwdWJsaWMgcmVwb3B1bGF0ZUZvcm1EYXRhRnJvbUNhc2VGaWVsZFZhbHVlcyhkYXRhOiBvYmplY3QsIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogdm9pZCB7XG4gICAgaWYgKGRhdGEgJiYgY2FzZUZpZWxkcyAmJiBjYXNlRmllbGRzLmxlbmd0aCA+IDAgJiZcbiAgICAgIGNhc2VGaWVsZHMuZmluZEluZGV4KGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKSA+IC0xKSB7XG4gICAgICAvLyBJZ25vcmUgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgYmVjYXVzZSBpdCBkb2VzIG5vdCBob2xkIGFueSB2YWx1ZXNcbiAgICAgIGNhc2VGaWVsZHMuZmlsdGVyKGNhc2VGaWVsZCA9PiAhRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCBbJ0ZsYWdMYXVuY2hlciddKSlcbiAgICAgICAgLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZGF0YSBvYmplY3QgaXMgcG9wdWxhdGVkIGZvciBhbGwgQ2FzZUZpZWxkIGtleXMgaXQgY29udGFpbnMsIGV2ZW4gaWYgZm9yIGEgZ2l2ZW5cbiAgICAgICAgICAvLyBDYXNlRmllbGQga2V5LCB0aGUgZGF0YSBvYmplY3QgaGFzIGEgZmFsc3kgdmFsdWUgKGhlbmNlIHRoZSB1c2Ugb2YgaGFzT3duUHJvcGVydHkoKSBmb3IgdGhlIGNoZWNrIGJlbG93KVxuICAgICAgICAgIC8vIFNlZSBodHRwczovL3Rvb2xzLmhtY3RzLm5ldC9qaXJhL2Jyb3dzZS9FVUktNzM3N1xuICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGNhc2VGaWVsZC5pZCkgJiYgY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICAvLyBDcmVhdGUgbmV3IG9iamVjdCBmb3IgdGhlIENhc2VGaWVsZCBJRCB3aXRoaW4gdGhlIGRhdGEgb2JqZWN0LCBpZiBuZWNlc3NhcnkgKGkuZS4gaWYgdGhlIGN1cnJlbnQgdmFsdWVcbiAgICAgICAgICAgIC8vIGlzIGZhbHN5KVxuICAgICAgICAgICAgaWYgKCFkYXRhW2Nhc2VGaWVsZC5pZF0pIHtcbiAgICAgICAgICAgICAgZGF0YVtjYXNlRmllbGQuaWRdID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBDb3B5IGFsbCB2YWx1ZXMgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBDYXNlRmllbGQ7IHRoaXMgZW5zdXJlcyBhbGwgbmVzdGVkIGZsYWcgZGF0YSAoZm9yIGV4YW1wbGUsIGFcbiAgICAgICAgICAgIC8vIEZsYWdzIGZpZWxkIHdpdGhpbiBhIENvbXBsZXggZmllbGQgb3IgYSBjb2xsZWN0aW9uIG9mIENvbXBsZXggZmllbGRzKSBpcyBjb3BpZWQgYWNyb3NzXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhW2Nhc2VGaWVsZC5pZF0pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNhc2VGaWVsZC52YWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgZGF0YVtjYXNlRmllbGQuaWRdW2tleV0gPSBjYXNlRmllbGQudmFsdWVba2V5XTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGUgdGhlIGxpbmtlZCBjYXNlcyBmcm9tIHRoZSBkYXRhIGhlbGQgaW4gaXRzIGNvcnJlc3BvbmRpbmcgQ2FzZUZpZWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgb2YgZm9ybSB2YWx1ZXMgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgZGF0YSBwb3B1bGF0aW9uXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBsaXN0IG9mIHVuZGVybHlpbmcge0BsaW5rIENhc2VGaWVsZH0gZG9tYWluIG1vZGVsIG9iamVjdHMgZm9yIGVhY2ggZmllbGRcbiAgICovXG4gIHB1YmxpYyBwb3B1bGF0ZUxpbmtlZENhc2VzRGV0YWlsc0Zyb21DYXNlRmllbGRzKGRhdGE6IG9iamVjdCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiB2b2lkIHtcbiAgICBpZiAoZGF0YSAmJiBjYXNlRmllbGRzICYmIGNhc2VGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgY2FzZUZpZWxkcy5maWx0ZXIoY2FzZUZpZWxkID0+ICFGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnQ29tcG9uZW50TGF1bmNoZXInXSkpXG4gICAgICAgIC5mb3JFYWNoKGNhc2VGaWVsZCA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoJ2Nhc2VMaW5rcycpICYmIGNhc2VGaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgZGF0YVtjYXNlRmllbGQuaWRdID0gY2FzZUZpZWxkLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -5576,7 +5576,7 @@ class FormValueService {
5576
5576
  // Retain anything that is readonly and not a label.
5577
5577
  continue;
5578
5578
  }
5579
- if (field.hidden === true && field.display_context !== 'HIDDEN' && field.id !== 'caseLinks' && !field.retain_hidden_value) {
5579
+ if (field.hidden === true && field.display_context !== 'HIDDEN' && field.display_context !== 'HIDDEN_TEMP' && field.id !== 'caseLinks' && !field.retain_hidden_value) {
5580
5580
  // Delete anything that is hidden (that is NOT readonly), and that
5581
5581
  // hasn't had its display_context overridden to make it hidden.
5582
5582
  delete data[field.id];
@@ -7402,15 +7402,12 @@ class WizardPageFieldToCaseFieldMapper {
7402
7402
  }
7403
7403
  }
7404
7404
  hideParentIfAllChildrenHidden(caseField) {
7405
- var _a;
7406
7405
  const childrenCaseFields = this.getCaseFieldChildren(caseField);
7407
7406
  childrenCaseFields.forEach(e => this.hideParentIfAllChildrenHidden(e));
7408
- // filter out judicialuser field to avoid issue with the field to be hide/unhide based on the selection
7409
7407
  if (childrenCaseFields.length > 0 && this.allCaseFieldsHidden(childrenCaseFields)) {
7410
7408
  caseField.hidden = true;
7411
- if (caseField.field_type.id !== 'JudicialUser' && ((_a = caseField.field_type.collection_field_type) === null || _a === void 0 ? void 0 : _a.id) !== 'JudicialUser') {
7412
- caseField.display_context = 'HIDDEN';
7413
- }
7409
+ // marking display_context as special hidden so field not being deleted in event submission
7410
+ caseField.display_context = 'HIDDEN_TEMP';
7414
7411
  }
7415
7412
  }
7416
7413
  getCaseFieldChildren(caseField) {
@@ -7424,7 +7421,7 @@ class WizardPageFieldToCaseFieldMapper {
7424
7421
  return childrenCaseFields;
7425
7422
  }
7426
7423
  allCaseFieldsHidden(children) {
7427
- return children.every(e => e.display_context === 'HIDDEN');
7424
+ return children.every(e => e.display_context === 'HIDDEN' || e.display_context === 'HIDDEN_TEMP');
7428
7425
  }
7429
7426
  }
7430
7427
  WizardPageFieldToCaseFieldMapper.ɵfac = function WizardPageFieldToCaseFieldMapper_Factory(t) { return new (t || WizardPageFieldToCaseFieldMapper)(); };
@@ -10319,7 +10316,10 @@ class FieldsFilterPipe {
10319
10316
  .filter(f => keepEmpty || FieldsFilterPipe.keepField(f))
10320
10317
  .map(f => {
10321
10318
  if (!f.display_context) {
10322
- f.display_context = complexField.display_context;
10319
+ if (complexField.display_context === 'MANDATORY' || complexField.display_context === 'READONLY'
10320
+ || complexField.display_context === 'OPTIONAL' || complexField.display_context === 'HIDDEN') {
10321
+ f.display_context = complexField.display_context;
10322
+ }
10323
10323
  }
10324
10324
  return f;
10325
10325
  });
@@ -23122,7 +23122,10 @@ class ReadFieldsFilterPipe {
23122
23122
  })
23123
23123
  .map(f => {
23124
23124
  if (!f.display_context) {
23125
- f.display_context = complexField.display_context;
23125
+ if (complexField.display_context === 'MANDATORY' || complexField.display_context === 'READONLY'
23126
+ || complexField.display_context === 'OPTIONAL' || complexField.display_context === 'HIDDEN') {
23127
+ f.display_context = complexField.display_context;
23128
+ }
23126
23129
  }
23127
23130
  if (setupHidden) {
23128
23131
  ReadFieldsFilterPipe.evaluateConditionalShow(f, checkConditionalShowAgainst, path, formGroupAvailable, complexField.id);