vcomply-workflow-engine 2.6.116 → 2.6.117

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.
@@ -92,48 +92,49 @@ export class ProgramsService {
92
92
  return this.http.post(this.env.programEndpoint + '/category/?isBusinessCycle=true', payload, { headers });
93
93
  }
94
94
  buildPayload(formData, instance) {
95
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
95
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
96
96
  const form = formData === null || formData === void 0 ? void 0 : formData.value;
97
97
  const option = instance.additionalOption;
98
+ const hasProgramFullPermission = (_a = instance === null || instance === void 0 ? void 0 : instance.orgDetails) === null || _a === void 0 ? void 0 : _a.hasProgramFullPermission;
98
99
  const payload = {
99
100
  mode: 'program',
100
- name: (_a = form === null || form === void 0 ? void 0 : form.program_name.trim()) !== null && _a !== void 0 ? _a : '',
101
- description: { text: (_b = form === null || form === void 0 ? void 0 : form.program_description) !== null && _b !== void 0 ? _b : '', attachments: (_c = form === null || form === void 0 ? void 0 : form.program_description_attachments) !== null && _c !== void 0 ? _c : [] },
102
- program_objective: { text: (_d = form === null || form === void 0 ? void 0 : form.program_objective) !== null && _d !== void 0 ? _d : '', attachments: (_e = form === null || form === void 0 ? void 0 : form.objective_attachment) !== null && _e !== void 0 ? _e : [] },
101
+ name: (_b = form === null || form === void 0 ? void 0 : form.program_name.trim()) !== null && _b !== void 0 ? _b : '',
102
+ description: { text: (_c = form === null || form === void 0 ? void 0 : form.program_description) !== null && _c !== void 0 ? _c : '', attachments: (_d = form === null || form === void 0 ? void 0 : form.program_description_attachments) !== null && _d !== void 0 ? _d : [] },
103
+ program_objective: { text: (_e = form === null || form === void 0 ? void 0 : form.program_objective) !== null && _e !== void 0 ? _e : '', attachments: (_f = form === null || form === void 0 ? void 0 : form.objective_attachment) !== null && _f !== void 0 ? _f : [] },
103
104
  roles: form.program_roles.map((ele) => { return { roleId: ele === null || ele === void 0 ? void 0 : ele._id, roleName: ele === null || ele === void 0 ? void 0 : ele.roleName, licenseType: ele === null || ele === void 0 ? void 0 : ele.licenseType }; }),
104
- owners: (_f = this.listToId(form === null || form === void 0 ? void 0 : form.program_owners, 'member_id')) !== null && _f !== void 0 ? _f : [],
105
- owners_group: (option === null || option === void 0 ? void 0 : option.ROLES) ? (_g = this.listToId(form === null || form === void 0 ? void 0 : form.program_owners_group, 'group_id')) !== null && _g !== void 0 ? _g : [] : [],
106
- all_user_in_role: (option === null || option === void 0 ? void 0 : option.ROLES) ? (_h = form === null || form === void 0 ? void 0 : form.all_user_in_role) !== null && _h !== void 0 ? _h : false : false,
107
- programType: (_j = form === null || form === void 0 ? void 0 : form.program_type) !== null && _j !== void 0 ? _j : 0,
105
+ owners: (_g = this.listToId(form === null || form === void 0 ? void 0 : form.program_owners, 'member_id')) !== null && _g !== void 0 ? _g : [],
106
+ owners_group: (option === null || option === void 0 ? void 0 : option.ROLES) ? (_h = this.listToId(form === null || form === void 0 ? void 0 : form.program_owners_group, 'group_id')) !== null && _h !== void 0 ? _h : [] : [],
107
+ all_user_in_role: (option === null || option === void 0 ? void 0 : option.ROLES) ? (_j = form === null || form === void 0 ? void 0 : form.all_user_in_role) !== null && _j !== void 0 ? _j : false : false,
108
+ programType: (_k = form === null || form === void 0 ? void 0 : form.program_type) !== null && _k !== void 0 ? _k : 0,
108
109
  // state:0,
109
- state: (_k = form === null || form === void 0 ? void 0 : form.program_state) !== null && _k !== void 0 ? _k : 0,
110
- approvers: (option === null || option === void 0 ? void 0 : option.APPROVER) ? (_l = this.listToId(form === null || form === void 0 ? void 0 : form.program_approver, 'member_id')) !== null && _l !== void 0 ? _l : [] : [],
111
- calculate_past_upcoming_event: (_m = form === null || form === void 0 ? void 0 : form.performance_calculation) !== null && _m !== void 0 ? _m : '',
112
- program_frequency: option.PROGRAM_FREQUENCY ? ((form === null || form === void 0 ? void 0 : form.recurring_frequency) ? 1 : 0) : 1,
113
- lock_scope: option.SCOPE_CHANGES ? ((form === null || form === void 0 ? void 0 : form.lock_scope_change) ? 1 : 0) : 0,
114
- rc_ids: option.RC ? this.listToId(form === null || form === void 0 ? void 0 : form.rc, 'item_id') : [],
115
- assignee_ids: option.ASSIGNEES ? this.listToId(form === null || form === void 0 ? void 0 : form.program_assignee, 'member_id') : [],
116
- assignee_group_ids: option.ASSIGNEES ? this.listToId(form === null || form === void 0 ? void 0 : form.program_assignee_group, 'group_id') : [],
117
- default_assignee_ids: option.ASSIGNEES ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_assignee, 'member_id') : [],
118
- default_assignee_group_ids: option.ASSIGNEES ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_assignee_group, 'group_id') : [],
119
- default_assignee_type: option.ASSIGNEES ? form === null || form === void 0 ? void 0 : form.assignee_completion_criteria : 'ALL',
120
- reviewers: option.REVIEWER ? this.listToId(form === null || form === void 0 ? void 0 : form.program_reviewer, 'member_id') : [],
121
- reviewer_group_ids: option.REVIEWER ? this.listToId(form === null || form === void 0 ? void 0 : form.program_reviewer_group, 'group_id') : [],
122
- default_reviewers: option.REVIEWER ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_reviewer, 'member_id') : [],
123
- default_reviewer_group_ids: option.REVIEWER ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_reviewer_group, 'group_id') : [],
110
+ state: (_l = form === null || form === void 0 ? void 0 : form.program_state) !== null && _l !== void 0 ? _l : 0,
111
+ approvers: ((option === null || option === void 0 ? void 0 : option.APPROVER) || !hasProgramFullPermission) ? (_m = this.listToId(form === null || form === void 0 ? void 0 : form.program_approver, 'member_id')) !== null && _m !== void 0 ? _m : [] : [],
112
+ calculate_past_upcoming_event: (_o = form === null || form === void 0 ? void 0 : form.performance_calculation) !== null && _o !== void 0 ? _o : '',
113
+ program_frequency: (option.PROGRAM_FREQUENCY || !hasProgramFullPermission) ? ((form === null || form === void 0 ? void 0 : form.recurring_frequency) ? 1 : 0) : 1,
114
+ lock_scope: (option.SCOPE_CHANGES || !hasProgramFullPermission) ? ((form === null || form === void 0 ? void 0 : form.lock_scope_change) ? 1 : 0) : 0,
115
+ rc_ids: (option.RC || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.rc, 'item_id') : [],
116
+ assignee_ids: (option.ASSIGNEES || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_assignee, 'member_id') : [],
117
+ assignee_group_ids: (option.ASSIGNEES || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_assignee_group, 'group_id') : [],
118
+ default_assignee_ids: (option.ASSIGNEES || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_assignee, 'member_id') : [],
119
+ default_assignee_group_ids: (option.ASSIGNEES || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_assignee_group, 'group_id') : [],
120
+ default_assignee_type: (option.ASSIGNEES || !hasProgramFullPermission) ? form === null || form === void 0 ? void 0 : form.assignee_completion_criteria : 'ALL',
121
+ reviewers: (option.REVIEWER || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_reviewer, 'member_id') : [],
122
+ reviewer_group_ids: (option.REVIEWER || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_reviewer_group, 'group_id') : [],
123
+ default_reviewers: (option.REVIEWER || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_reviewer, 'member_id') : [],
124
+ default_reviewer_group_ids: (option.REVIEWER || !hasProgramFullPermission) ? this.listToId(form === null || form === void 0 ? void 0 : form.program_default_reviewer_group, 'group_id') : [],
124
125
  default_reviewers_type: form === null || form === void 0 ? void 0 : form.reviewer_completion_criteria,
125
- overseers: option.OVERSEER ? { cc_email: this.listToId(form === null || form === void 0 ? void 0 : form.program_overseer, 'member_id'), cc_email_groups: this.listToId(form === null || form === void 0 ? void 0 : form.program_overseer_group, 'group_id'), failure_cc_email: [], failure_cc_email_groups: [] } : { cc_email: [], cc_email_groups: [],
126
+ overseers: (option.OVERSEER || !hasProgramFullPermission) ? { cc_email: this.listToId(form === null || form === void 0 ? void 0 : form.program_overseer, 'member_id'), cc_email_groups: this.listToId(form === null || form === void 0 ? void 0 : form.program_overseer_group, 'group_id'), failure_cc_email: [], failure_cc_email_groups: [] } : { cc_email: [], cc_email_groups: [],
126
127
  failure_cc_email: [], failure_cc_email_groups: [] },
127
- default_overseers: option.OVERSEER ? { cc_email: this.listToId(form === null || form === void 0 ? void 0 : form.program_default_overseer, 'member_id'),
128
+ default_overseers: (option.OVERSEER || !hasProgramFullPermission) ? { cc_email: this.listToId(form === null || form === void 0 ? void 0 : form.program_default_overseer, 'member_id'),
128
129
  cc_email_groups: this.listToId(form === null || form === void 0 ? void 0 : form.program_default_overseer_group, 'group_id'),
129
130
  failure_cc_email: this.listToId(form === null || form === void 0 ? void 0 : form.program_default_failed_overseer, 'member_id'),
130
131
  failure_cc_email_groups: this.listToId(form === null || form === void 0 ? void 0 : form.program_default_failed_overseer_group, 'group_id') } :
131
132
  { cc_email: [], cc_email_groups: [], failure_cc_email: [], failure_cc_email_groups: [] },
132
- assessment: (option === null || option === void 0 ? void 0 : option.ASSESSMENT) ? this.generateAssessment(form.program_assessments) : [],
133
- evidence_upload_flag: (option === null || option === void 0 ? void 0 : option.FORMATE_EVIDENCE) ? (form === null || form === void 0 ? void 0 : form.evidence_required) ? 1 : 0 : 0,
133
+ assessment: ((option === null || option === void 0 ? void 0 : option.ASSESSMENT) || !hasProgramFullPermission) ? this.generateAssessment(form.program_assessments) : [],
134
+ evidence_upload_flag: ((option === null || option === void 0 ? void 0 : option.FORMATE_EVIDENCE) || !hasProgramFullPermission) ? (form === null || form === void 0 ? void 0 : form.evidence_required) ? 1 : 0 : 0,
134
135
  is_key_evidence: form === null || form === void 0 ? void 0 : form.allow_any_file_key_evidence,
135
- custom_fields: (option === null || option === void 0 ? void 0 : option.CUSTOM_FIELDS) ? (_o = form === null || form === void 0 ? void 0 : form.custom_fields) !== null && _o !== void 0 ? _o : [] : [],
136
- framework: (_p = this.getFramework(form === null || form === void 0 ? void 0 : form.framework)) !== null && _p !== void 0 ? _p : [],
136
+ custom_fields: (option === null || option === void 0 ? void 0 : option.CUSTOM_FIELDS) ? (_p = form === null || form === void 0 ? void 0 : form.custom_fields) !== null && _p !== void 0 ? _p : [] : [],
137
+ framework: (_q = this.getFramework(form === null || form === void 0 ? void 0 : form.framework)) !== null && _q !== void 0 ? _q : [],
137
138
  _id: instance.mode === 'EDIT' ? instance.programId : undefined,
138
139
  };
139
140
  console.log("payload", payload);
@@ -209,4 +210,4 @@ ProgramsService.ctorParameters = () => [
209
210
  { type: AuthService },
210
211
  { type: Configurations, decorators: [{ type: Optional }] }
211
212
  ];
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBSzdDLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0IsRUFBYyxNQUF1QjtRQUF2RixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDcEUsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FFN0I7SUFDSCxDQUFDO0lBRUQsUUFBUTs7UUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDekYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLEdBQUcsMENBQUUsZUFBZSxJQUFHLGlEQUFpRCxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsT0FBWSxFQUFFLElBQVM7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QUMsZ0JBQWdCLEdBQUcsNkNBQTZDLEVBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNySixDQUFDOzs7O1lBek1BLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUlEsVUFBVTtZQUlWLFdBQVc7WUFEWCxjQUFjLHVCQVNvRCxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHJldHJ5IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2dyYW1zU2VydmljZSB7XHJcblxyXG4gIGVudiAhOiBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnMpIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJvbGVzKCl7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArICdyb2xlcy9nZXRQcm9ncmFtUm9sZXMmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScse2hlYWRlcnN9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwbG9hZHMgdGhlIGdpdmVuIGZpbGUgdG8gc2VydmVyXHJcbiAgICogQHBhcmFtIHBheWxvYWQgcGF5bG9hZCBGaWxlIGRhdGEgdG8gYmUgdXBsb2FkZWRcclxuICAgKiBAcGFyYW0gcGF0aCBwYXRoIFBhdGggb2YgZmlsZSB0byBiZSB1cGxvYWRlZFxyXG4gICAqIEByZXR1cm5zIHJlc3BvbnNlIGFmdGVyIHVwbG9hZGluZyBhIGZpbGVcclxuICAgKi9cclxuICB1cGxvYWRGaWxlcyhwYXlsb2FkOiBhbnksIHBhdGg6IGFueSkge1xyXG4gICAgLy8ge1xyXG4gICAgLy8gICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgIC8vICAgb2JzZXJ2ZTogJ2V2ZW50cyd9XHJcbiAgICBjb25zdCBPUkdfUEFUSCA9IGBvLyR7cGF0aH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZW52LmZpbGVVcGxvYWRFbmRQb2ludCArIE9SR19QQVRIICArICcmbmdzdy1ieXBhc3M9dHJ1ZScsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPih0aGlzLmVudj8uY29tcGxpYW5jZUdldCArICdyZXNwb25zaWJpbGl0eUNlbnRlclRyZWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsIHtcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICB9KS5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG5cclxuICBmZXRjaFJvbGVVc2Vycyhyb2xlczphbnkscGFnZT86YW55LCBzZWFyY2hLZXk/OmFueSl7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XHJcbiAgICBpZihwYWdlKXsgcXVlcnlTdHJpbmcgKz0gYCZwYWdlPSR7cGFnZX1gfTtcclxuICAgIGlmKHNlYXJjaEtleSl7fVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICsgJ3JvbGVzL2dldFVzZXJEZXRhaWxzJmxpbWl0PTMwJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnK3F1ZXJ5U3RyaW5nLHsgcm9sZV9pZHMgOnJvbGVzID8/IFtdfSwge2hlYWRlcnN9KS5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGZldGNoQWxsUm9sZVVzZXJzKHJvbGVzOmFueSl7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPih0aGlzLmVudj8ub3JnYW5pemF0aW9uUG9zdCArICdyb2xlcy9nZXRVc2VyRGV0YWlscyZ0eXBlPWFsbCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyx7IHJvbGVfaWRzIDpyb2xlcyA/PyBbXX0sIHtoZWFkZXJzfSkucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaEFsbFJvbGVHcm91cHMocm9sZXM6YW55KXtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgKyAncm9sZXMvZ2V0R3JvdXBEZXRhaWxzJnR5cGU9YWxsJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLHsgcm9sZV9pZHMgOnJvbGVzID8/IFtdfSwge2hlYWRlcnN9KS5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcbiAgZmV0Y2hBbGxPcmdVc2VyKCl7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gICAgLy9odHRwczovL2RldmFwaS52LWNvbXBseS5jb20vb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCZwYWdpbmF0aW9uVHlwZT1zbWFsbCZhZG1pbj0xXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArICdvcmdhbmlzYXRpb25Vc2Vyc0xpc3QmcGFnaW5hdGlvblR5cGU9c21hbGwmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsIHtoZWFkZXJzfSkucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG4gIGZldGNoQ29tcGxpYW5jZUdyb3Vwcygpe1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcclxuICAgIC8vaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL29yZ2FuaXphdGlvbi8/bW9kZT1ncm91cHNMaXN0JnN0YXR1cz0xJnR5cGU9Y29tcGxpYW5jZVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAnZ3JvdXBzTGlzdCZzdGF0dXM9MSZ0eXBlPWNvbXBsaWFuY2UmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsIHtoZWFkZXJzfSkucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXNpbmVzc0N5Y2xlKCl7XHJcbiAgICBjb25zdCBidXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzQ3ljbGVcIikgPz8gJ3t9Jyk7XHJcbiAgIHJldHVybiB7XHJcbiAgICAgIHNlbGVjdGVkX2N5Y2xlOiBidXNpbmVzc0N5Y2xlXHJcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlICtcclxuICAgICAgICBcIi1cIiArXHJcbiAgICAgICAgYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGVcclxuICAgICAgICA6IFwiXCIsXHJcbiAgICAgIHN0YXJ0X2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlIDogXCJcIixcclxuICAgICAgZW5kX2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZSA6IFwiXCIsXHJcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogYnVzaW5lc3NDeWNsZVxyXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzYXZlUHJvZ3JhbShwYXlsb2FkOmFueSl7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpLnNldCgneC1idXNpbmVzcy1jeWNsZScsICBKU09OLnN0cmluZ2lmeSgodGhpcy5nZXRCdXNpbmVzc0N5Y2xlKCkpKSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KHRoaXMuZW52LnByb2dyYW1FbmRwb2ludCArICcvY2F0ZWdvcnkvP2lzQnVzaW5lc3NDeWNsZT10cnVlJyxwYXlsb2FkLCB7aGVhZGVyc30pO1xyXG4gIH1cclxuXHJcblxyXG4gYnVpbGRQYXlsb2FkKGZvcm1EYXRhOmFueSxpbnN0YW5jZTphbnkpe1xyXG5jb25zdCBmb3JtID0gZm9ybURhdGE/LnZhbHVlO1xyXG5jb25zdCBvcHRpb24gPSBpbnN0YW5jZS5hZGRpdGlvbmFsT3B0aW9uO1xyXG5jb25zdCBwYXlsb2FkID0ge1xyXG4gIG1vZGU6ICdwcm9ncmFtJyxcclxuICBuYW1lOmZvcm0/LnByb2dyYW1fbmFtZS50cmltKCkgPz8gJycsXHJcbiAgZGVzY3JpcHRpb246e3RleHQ6Zm9ybT8ucHJvZ3JhbV9kZXNjcmlwdGlvbiA/PyAnJyxhdHRhY2htZW50czpmb3JtPy5wcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzID8/IFtdfSxcclxuICBwcm9ncmFtX29iamVjdGl2ZSA6IHt0ZXh0OmZvcm0/LnByb2dyYW1fb2JqZWN0aXZlID8/ICcnLGF0dGFjaG1lbnRzOmZvcm0/Lm9iamVjdGl2ZV9hdHRhY2htZW50ID8/IFtdfSxcclxuICByb2xlczogICBmb3JtLnByb2dyYW1fcm9sZXMubWFwKChlbGU6YW55KSA9PiB7cmV0dXJuIHtyb2xlSWQ6ZWxlPy5faWQscm9sZU5hbWU6ZWxlPy5yb2xlTmFtZSwgbGljZW5zZVR5cGU6ZWxlPy5saWNlbnNlVHlwZX19KSxcclxuICBvd25lcnM6dGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX293bmVycywnbWVtYmVyX2lkJykgPz8gW10sXHJcbiAgb3duZXJzX2dyb3VwOiBvcHRpb24/LlJPTEVTID8gdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX293bmVyc19ncm91cCwnZ3JvdXBfaWQnKSA/PyBbXSA6IFtdLFxyXG4gIGFsbF91c2VyX2luX3JvbGU6IG9wdGlvbj8uUk9MRVMgICA/IGZvcm0/LmFsbF91c2VyX2luX3JvbGUgPz8gZmFsc2U6IGZhbHNlLFxyXG4gIHByb2dyYW1UeXBlOmZvcm0/LnByb2dyYW1fdHlwZSA/PyAwLFxyXG4gIC8vIHN0YXRlOjAsXHJcbiAgc3RhdGU6IGZvcm0/LnByb2dyYW1fc3RhdGUgPz8gMCxcclxuICBhcHByb3ZlcnM6IG9wdGlvbj8uQVBQUk9WRVIgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fYXBwcm92ZXIsJ21lbWJlcl9pZCcpID8/IFtdIDogW10sXHJcbiAgY2FsY3VsYXRlX3Bhc3RfdXBjb21pbmdfZXZlbnQ6IGZvcm0/LnBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uID8/ICcnLFxyXG4gIHByb2dyYW1fZnJlcXVlbmN5IDogb3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZICA/IChmb3JtPy5yZWN1cnJpbmdfZnJlcXVlbmN5ID8gMSA6IDAgKTogMSxcclxuICBsb2NrX3Njb3BlOiBvcHRpb24uU0NPUEVfQ0hBTkdFUyA/IChmb3JtPy5sb2NrX3Njb3BlX2NoYW5nZSA/IDEgOjAgKTogMCAsXHJcbiAgcmNfaWRzOiBvcHRpb24uUkMgPyAgdGhpcy5saXN0VG9JZChmb3JtPy5yYywnaXRlbV9pZCcpOltdLFxyXG4gIGFzc2lnbmVlX2lkczogb3B0aW9uLkFTU0lHTkVFUyA/ICB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fYXNzaWduZWUsJ21lbWJlcl9pZCcpIDpbXSxcclxuICBhc3NpZ25lZV9ncm91cF9pZHM6b3B0aW9uLkFTU0lHTkVFUyA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cCwnZ3JvdXBfaWQnKTpbXSxcclxuICBkZWZhdWx0X2Fzc2lnbmVlX2lkcyA6IG9wdGlvbi5BU1NJR05FRVMgPyAgdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUsJ21lbWJlcl9pZCcpOltdLFxyXG4gIGRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzOm9wdGlvbi5BU1NJR05FRVMgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCwnZ3JvdXBfaWQnKTpbXSxcclxuICBkZWZhdWx0X2Fzc2lnbmVlX3R5cGU6b3B0aW9uLkFTU0lHTkVFUyA/ICBmb3JtPy5hc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOidBTEwnLFxyXG4gIHJldmlld2Vyczogb3B0aW9uLlJFVklFV0VSID8gIHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9yZXZpZXdlciwnbWVtYmVyX2lkJykgOltdLFxyXG4gIHJldmlld2VyX2dyb3VwX2lkczogIG9wdGlvbi5SRVZJRVdFUiA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cCwnZ3JvdXBfaWQnKTpbXSxcclxuICBkZWZhdWx0X3Jldmlld2Vyczogb3B0aW9uLlJFVklFV0VSID90aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlciwnbWVtYmVyX2lkJyk6W10sXHJcbiAgZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHM6ICBvcHRpb24uUkVWSUVXRVIgP3RoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwLCdncm91cF9pZCcpOltdLFxyXG4gIGRlZmF1bHRfcmV2aWV3ZXJzX3R5cGU6Zm9ybT8ucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYSxcclxuICBvdmVyc2VlcnM6b3B0aW9uLk9WRVJTRUVSID8gIHtjY19lbWFpbDogdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX292ZXJzZWVyLCdtZW1iZXJfaWQnKSxjY19lbWFpbF9ncm91cHM6dGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwLCdncm91cF9pZCcpLFxyXG4gIGZhaWx1cmVfY2NfZW1haWw6IFtdLGZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzOltdfSA6IHtjY19lbWFpbDpbXSxjY19lbWFpbF9ncm91cHM6W10sXHJcbiAgZmFpbHVyZV9jY19lbWFpbDogW10sZmFpbHVyZV9jY19lbWFpbF9ncm91cHM6W119LFxyXG5cclxuICBkZWZhdWx0X292ZXJzZWVyczogb3B0aW9uLk9WRVJTRUVSID8ge2NjX2VtYWlsOiB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2VlciwnbWVtYmVyX2lkJyksXHJcbiAgY2NfZW1haWxfZ3JvdXBzOnRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwLCdncm91cF9pZCcpLFxyXG4gIGZhaWx1cmVfY2NfZW1haWw6IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlciwnbWVtYmVyX2lkJyksXHJcbiAgZmFpbHVyZV9jY19lbWFpbF9ncm91cHM6dGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwLCdncm91cF9pZCcpfSA6XHJcbiAge2NjX2VtYWlsOiBbXSxjY19lbWFpbF9ncm91cHM6W10sZmFpbHVyZV9jY19lbWFpbDogW10sZmFpbHVyZV9jY19lbWFpbF9ncm91cHM6W119LFxyXG5cclxuICBhc3Nlc3NtZW50OiBvcHRpb24/LkFTU0VTU01FTlQgPyAgdGhpcy5nZW5lcmF0ZUFzc2Vzc21lbnQoZm9ybS5wcm9ncmFtX2Fzc2Vzc21lbnRzKSA6IFtdLFxyXG4gIGV2aWRlbmNlX3VwbG9hZF9mbGFnOiBvcHRpb24/LkZPUk1BVEVfRVZJREVOQ0UgPyAgZm9ybT8uZXZpZGVuY2VfcmVxdWlyZWQgPyAxIDogMCA6IDAsXHJcbiAgaXNfa2V5X2V2aWRlbmNlOiBmb3JtPy5hbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UsXHJcbiAgY3VzdG9tX2ZpZWxkczogb3B0aW9uPy5DVVNUT01fRklFTERTID8gZm9ybT8uY3VzdG9tX2ZpZWxkcyA/PyBbXSA6IFtdLFxyXG4gIGZyYW1ld29yazp0aGlzLmdldEZyYW1ld29yayhmb3JtPy5mcmFtZXdvcmspID8/IFtdLFxyXG4gIF9pZDogaW5zdGFuY2UubW9kZSA9PT0gJ0VESVQnID8gaW5zdGFuY2UucHJvZ3JhbUlkIDogdW5kZWZpbmVkLFxyXG59XHJcbmNvbnNvbGUubG9nKFwicGF5bG9hZFwiLHBheWxvYWQpXHJcbnJldHVybiBwYXlsb2FkO1xyXG4gfVxyXG4gZ2VuZXJhdGVBc3Nlc3NtZW50KGFzc2Vzc21lbnQ6YW55KXtcclxuICAgaWYoYXNzZXNzbWVudCAmJiBhc3Nlc3NtZW50Py5sZW5ndGgpe1xyXG4gICAgcmV0dXJuIGFzc2Vzc21lbnQubWFwKChjYXQ6YW55KSA9PiB7cmV0dXJuIHsuLi5jYXQsYXNzZXNzbWVudElkcyA6IGNhdC5hc3Nlc3NtZW50SWRzPy5tYXAoKGFzc2VzczphbnkpID0+IGFzc2Vzcy5pZCl9fSlcclxuICAgfWVsc2V7XHJcbiAgICAgcmV0dXJuIFtdO1xyXG4gICB9XHJcbiB9XHJcbiBnZXRGcmFtZXdvcmsoaW5wdXQ6YW55KXtcclxuICAgaWYoaW5wdXQpe1xyXG4gICAgcmV0dXJuIFt7XHJcbiAgICAgIF9pZDppbnB1dD8uX2lkLFxyXG4gICAgICBmcmFtZXdvcmtfbmFtZTppbnB1dD8ubmFtZSxcclxuICAgICAgdHlwZTogaW5wdXQ/LnR5cGUsXHJcbiAgICAgIGluX3Njb3BlOiBpbnB1dD8uaW5fc2NvcGUgPyB0aGlzLmxpc3RUb0lkKGlucHV0Py5pbl9zY29wZSwnX2lkJyk6ICBbXSxcclxuICAgICAgb3V0X3Njb3BlOiBpbnB1dD8ub3V0X3Njb3BlID8gdGhpcy5saXN0VG9JZChpbnB1dD8ub3V0X3Njb3BlLCdfaWQnKTogW11cclxuICAgIH1dXHJcbiAgIH1lbHNle1xyXG4gICAgIHJldHVybiBbXVxyXG4gICB9XHJcblxyXG4gfVxyXG5cclxuIGxpc3RUb0lkKGxpc3Q6YW55LGtleTpzdHJpbmcpe1xyXG4gICBpZihsaXN0ICYmIGxpc3Q/Lmxlbmd0aCl7XHJcbiAgICByZXR1cm4gbGlzdC5tYXAoKGVsZTphbnkpID0+IGVsZVtrZXldKTtcclxuICAgfWVsc2V7XHJcbiAgICAgcmV0dXJuIFtdO1xyXG4gICB9XHJcblxyXG4gfVxyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBpZCA6IHByb2dyYW0gb2JqZWN0IGlkXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG4gZ2V0UHJvZ3JhbShpZDphbnkpe1xyXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSkuc2V0KCd4LWJ1c2luZXNzLWN5Y2xlJywgIEpTT04uc3RyaW5naWZ5KCh0aGlzLmdldEJ1c2luZXNzQ3ljbGUoKSkpKTtcclxuICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvJyArIGlkICsnP2lzQnVzaW5lc3NDeWNsZT10cnVlJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLCB7aGVhZGVyc30pO1xyXG59XHJcblxyXG4vKipcclxuICpcclxuICogQHBhcmFtIHBheWxvYWQgcGF5bG9hZCB3aGljaCBuZWVkIHRvIGJlIHVwZGF0ZWRcclxuICogQHBhcmFtIGlkIHByb2dyYW0gb2JqZWN0IGlkXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG51cGRhdGVQcm9ncmFtKHBheWxvYWQ6YW55LCBpZDogc3RyaW5nKXtcclxuICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpLnNldCgneC1idXNpbmVzcy1jeWNsZScsICBKU09OLnN0cmluZ2lmeSgodGhpcy5nZXRCdXNpbmVzc0N5Y2xlKCkpKSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPih0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2NhdGVnb3J5L2VkaXRDYXRlZ29yeS8nKyBpZCAgKyAnP2lzQnVzaW5lc3NDeWNsZT10cnVlJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLHBheWxvYWQsIHtoZWFkZXJzfSk7XHJcbn1cclxuXHJcblxyXG5nZXRNZW1lYmVyQnlJZHMoaWRzOmFueSl7XHJcbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgKyAnbWVtYmVyRGV0YWlsc2J5SWRzJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLHttZW1iZXJfaWQ6IGlkc30sIHtoZWFkZXJzfSkucGlwZShyZXRyeSgyKSk7XHJcbn1cclxuXHJcbmdldE1lbWJlckJ5R3JvdXBzKGlkczphbnkpe1xyXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICsgJ2dyb3VwRGV0YWlsc2J5SWRzJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLHtncm91cF9pZHM6IGlkc30sIHtoZWFkZXJzfSkucGlwZShyZXRyeSgyKSk7XHJcbn1cclxuXHJcbn1cclxuIl19
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBSzdDLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0IsRUFBYyxNQUF1QjtRQUF2RixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDcEUsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FFN0I7SUFDSCxDQUFDO0lBRUQsUUFBUTs7UUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDekYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLEdBQUcsMENBQUUsZUFBZSxJQUFHLGlEQUFpRCxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsT0FBWSxFQUFFLElBQVM7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QU8sRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDakssQ0FBQztJQUdELGVBQWUsQ0FBQyxHQUFPO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsOENBQThDLEVBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0SixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBTztRQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDekYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBUSxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLDZDQUE2QyxFQUFDLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckosQ0FBQzs7OztZQTFNQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVJRLFVBQVU7WUFJVixXQUFXO1lBRFgsY0FBYyx1QkFTb0QsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmFtc1NlcnZpY2Uge1xyXG5cclxuICBlbnYgITogYW55O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zKSB7XHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSb2xlcygpe1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAncm9sZXMvZ2V0UHJvZ3JhbVJvbGVzJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLHtoZWFkZXJzfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGxvYWRzIHRoZSBnaXZlbiBmaWxlIHRvIHNlcnZlclxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIHBheWxvYWQgRmlsZSBkYXRhIHRvIGJlIHVwbG9hZGVkXHJcbiAgICogQHBhcmFtIHBhdGggcGF0aCBQYXRoIG9mIGZpbGUgdG8gYmUgdXBsb2FkZWRcclxuICAgKiBAcmV0dXJucyByZXNwb25zZSBhZnRlciB1cGxvYWRpbmcgYSBmaWxlXHJcbiAgICovXHJcbiAgdXBsb2FkRmlsZXMocGF5bG9hZDogYW55LCBwYXRoOiBhbnkpIHtcclxuICAgIC8vIHtcclxuICAgIC8vICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAvLyAgIG9ic2VydmU6ICdldmVudHMnfVxyXG4gICAgY29uc3QgT1JHX1BBVEggPSBgby8ke3BhdGh9YDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5maWxlVXBsb2FkRW5kUG9pbnQgKyBPUkdfUEFUSCAgKyAnJm5nc3ctYnlwYXNzPXRydWUnLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIGdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgKyAncmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLCB7XHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgfSkucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmV0Y2hSb2xlVXNlcnMocm9sZXM6YW55LHBhZ2U/OmFueSwgc2VhcmNoS2V5Pzphbnkpe1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcclxuICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xyXG4gICAgaWYocGFnZSl7IHF1ZXJ5U3RyaW5nICs9IGAmcGFnZT0ke3BhZ2V9YH07XHJcbiAgICBpZihzZWFyY2hLZXkpe31cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4odGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArICdyb2xlcy9nZXRVc2VyRGV0YWlscyZsaW1pdD0zMCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJytxdWVyeVN0cmluZyx7IHJvbGVfaWRzIDpyb2xlcyA/PyBbXX0sIHtoZWFkZXJzfSkucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaEFsbFJvbGVVc2Vycyhyb2xlczphbnkpe1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4odGhpcy5lbnY/Lm9yZ2FuaXphdGlvblBvc3QgKyAncm9sZXMvZ2V0VXNlckRldGFpbHMmdHlwZT1hbGwmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScseyByb2xlX2lkcyA6cm9sZXMgPz8gW119LCB7aGVhZGVyc30pLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hBbGxSb2xlR3JvdXBzKHJvbGVzOmFueSl7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICsgJ3JvbGVzL2dldEdyb3VwRGV0YWlscyZ0eXBlPWFsbCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyx7IHJvbGVfaWRzIDpyb2xlcyA/PyBbXX0sIHtoZWFkZXJzfSkucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG4gIGZldGNoQWxsT3JnVXNlcigpe1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcclxuICAgIC8vaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL29yZ2FuaXphdGlvbi8/bW9kZT1vcmdhbmlzYXRpb25Vc2Vyc0xpc3QmcGFnaW5hdGlvblR5cGU9c21hbGwmYWRtaW49MVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAnb3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLCB7aGVhZGVyc30pLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuICBmZXRjaENvbXBsaWFuY2VHcm91cHMoKXtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XHJcbiAgICAvL2h0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9vcmdhbml6YXRpb24vP21vZGU9Z3JvdXBzTGlzdCZzdGF0dXM9MSZ0eXBlPWNvbXBsaWFuY2VcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPih0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ2dyb3Vwc0xpc3Qmc3RhdHVzPTEmdHlwZT1jb21wbGlhbmNlJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLCB7aGVhZGVyc30pLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnVzaW5lc3NDeWNsZSgpe1xyXG4gICAgY29uc3QgYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0N5Y2xlXCIpID8/ICd7fScpO1xyXG4gICByZXR1cm4ge1xyXG4gICAgICBzZWxlY3RlZF9jeWNsZTogYnVzaW5lc3NDeWNsZVxyXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSArXHJcbiAgICAgICAgXCItXCIgK1xyXG4gICAgICAgIGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlXHJcbiAgICAgICAgOiBcIlwiLFxyXG4gICAgICBzdGFydF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSA6IFwiXCIsXHJcbiAgICAgIGVuZF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGUgOiBcIlwiLFxyXG4gICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IGJ1c2luZXNzQ3ljbGVcclxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FyclxyXG4gICAgICAgIDogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2F2ZVByb2dyYW0ocGF5bG9hZDphbnkpe1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKS5zZXQoJ3gtYnVzaW5lc3MtY3ljbGUnLCAgSlNPTi5zdHJpbmdpZnkoKHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpKSkpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPih0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2NhdGVnb3J5Lz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZScscGF5bG9hZCwge2hlYWRlcnN9KTtcclxuICB9XHJcblxyXG5cclxuIGJ1aWxkUGF5bG9hZChmb3JtRGF0YTphbnksaW5zdGFuY2U6YW55KXtcclxuY29uc3QgZm9ybSA9IGZvcm1EYXRhPy52YWx1ZTtcclxuY29uc3Qgb3B0aW9uID0gaW5zdGFuY2UuYWRkaXRpb25hbE9wdGlvbjtcclxuY29uc3QgaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uID0gaW5zdGFuY2U/Lm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbjtcclxuY29uc3QgcGF5bG9hZCA9IHtcclxuICBtb2RlOiAncHJvZ3JhbScsXHJcbiAgbmFtZTpmb3JtPy5wcm9ncmFtX25hbWUudHJpbSgpID8/ICcnLFxyXG4gIGRlc2NyaXB0aW9uOnt0ZXh0OmZvcm0/LnByb2dyYW1fZGVzY3JpcHRpb24gPz8gJycsYXR0YWNobWVudHM6Zm9ybT8ucHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cyA/PyBbXX0sXHJcbiAgcHJvZ3JhbV9vYmplY3RpdmUgOiB7dGV4dDpmb3JtPy5wcm9ncmFtX29iamVjdGl2ZSA/PyAnJyxhdHRhY2htZW50czpmb3JtPy5vYmplY3RpdmVfYXR0YWNobWVudCA/PyBbXX0sXHJcbiAgcm9sZXM6ICAgZm9ybS5wcm9ncmFtX3JvbGVzLm1hcCgoZWxlOmFueSkgPT4ge3JldHVybiB7cm9sZUlkOmVsZT8uX2lkLHJvbGVOYW1lOmVsZT8ucm9sZU5hbWUsIGxpY2Vuc2VUeXBlOmVsZT8ubGljZW5zZVR5cGV9fSksXHJcbiAgb3duZXJzOnRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9vd25lcnMsJ21lbWJlcl9pZCcpID8/IFtdLFxyXG4gIG93bmVyc19ncm91cDogb3B0aW9uPy5ST0xFUyA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9vd25lcnNfZ3JvdXAsJ2dyb3VwX2lkJykgPz8gW10gOiBbXSxcclxuICBhbGxfdXNlcl9pbl9yb2xlOiBvcHRpb24/LlJPTEVTICAgPyBmb3JtPy5hbGxfdXNlcl9pbl9yb2xlID8/IGZhbHNlOiBmYWxzZSxcclxuICBwcm9ncmFtVHlwZTpmb3JtPy5wcm9ncmFtX3R5cGUgPz8gMCxcclxuICAvLyBzdGF0ZTowLFxyXG4gIHN0YXRlOiBmb3JtPy5wcm9ncmFtX3N0YXRlID8/IDAsXHJcbiAgYXBwcm92ZXJzOiAob3B0aW9uPy5BUFBST1ZFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9hcHByb3ZlciwnbWVtYmVyX2lkJykgPz8gW10gOiBbXSxcclxuICBjYWxjdWxhdGVfcGFzdF91cGNvbWluZ19ldmVudDogZm9ybT8ucGVyZm9ybWFuY2VfY2FsY3VsYXRpb24gPz8gJycsXHJcbiAgcHJvZ3JhbV9mcmVxdWVuY3kgOiAob3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZIHx8ICFoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pICA/IChmb3JtPy5yZWN1cnJpbmdfZnJlcXVlbmN5ID8gMSA6IDAgKTogMSxcclxuICBsb2NrX3Njb3BlOiAob3B0aW9uLlNDT1BFX0NIQU5HRVMgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikgPyAoZm9ybT8ubG9ja19zY29wZV9jaGFuZ2UgPyAxIDowICk6IDAgLFxyXG4gIHJjX2lkczogKG9wdGlvbi5SQyB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/ICB0aGlzLmxpc3RUb0lkKGZvcm0/LnJjLCdpdGVtX2lkJyk6W10sXHJcbiAgYXNzaWduZWVfaWRzOiAob3B0aW9uLkFTU0lHTkVFUyB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/ICB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fYXNzaWduZWUsJ21lbWJlcl9pZCcpIDpbXSxcclxuICBhc3NpZ25lZV9ncm91cF9pZHM6KG9wdGlvbi5BU1NJR05FRVMgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXAsJ2dyb3VwX2lkJyk6W10sXHJcbiAgZGVmYXVsdF9hc3NpZ25lZV9pZHMgOiAob3B0aW9uLkFTU0lHTkVFUyB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/ICB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZSwnbWVtYmVyX2lkJyk6W10sXHJcbiAgZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM6KG9wdGlvbi5BU1NJR05FRVMgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCwnZ3JvdXBfaWQnKTpbXSxcclxuICBkZWZhdWx0X2Fzc2lnbmVlX3R5cGU6KG9wdGlvbi5BU1NJR05FRVMgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikgPyAgZm9ybT8uYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTonQUxMJyxcclxuICByZXZpZXdlcnM6IChvcHRpb24uUkVWSUVXRVIgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikgPyAgdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX3Jldmlld2VyLCdtZW1iZXJfaWQnKSA6W10sXHJcbiAgcmV2aWV3ZXJfZ3JvdXBfaWRzOiAgKG9wdGlvbi5SRVZJRVdFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cCwnZ3JvdXBfaWQnKTpbXSxcclxuICBkZWZhdWx0X3Jldmlld2VyczogKG9wdGlvbi5SRVZJRVdFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/dGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXIsJ21lbWJlcl9pZCcpOltdLFxyXG4gIGRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzOiAgKG9wdGlvbi5SRVZJRVdFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/dGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAsJ2dyb3VwX2lkJyk6W10sXHJcbiAgZGVmYXVsdF9yZXZpZXdlcnNfdHlwZTpmb3JtPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhLFxyXG4gIG92ZXJzZWVyczoob3B0aW9uLk9WRVJTRUVSIHx8ICFoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pID8gIHtjY19lbWFpbDogdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX292ZXJzZWVyLCdtZW1iZXJfaWQnKSxjY19lbWFpbF9ncm91cHM6dGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwLCdncm91cF9pZCcpLFxyXG4gIGZhaWx1cmVfY2NfZW1haWw6IFtdLGZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzOltdfSA6IHtjY19lbWFpbDpbXSxjY19lbWFpbF9ncm91cHM6W10sXHJcbiAgZmFpbHVyZV9jY19lbWFpbDogW10sZmFpbHVyZV9jY19lbWFpbF9ncm91cHM6W119LFxyXG5cclxuICBkZWZhdWx0X292ZXJzZWVyczogKG9wdGlvbi5PVkVSU0VFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/IHtjY19lbWFpbDogdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXIsJ21lbWJlcl9pZCcpLFxyXG4gIGNjX2VtYWlsX2dyb3Vwczp0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCwnZ3JvdXBfaWQnKSxcclxuICBmYWlsdXJlX2NjX2VtYWlsOiB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXIsJ21lbWJlcl9pZCcpLFxyXG4gIGZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzOnRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCwnZ3JvdXBfaWQnKX0gOlxyXG4gIHtjY19lbWFpbDogW10sY2NfZW1haWxfZ3JvdXBzOltdLGZhaWx1cmVfY2NfZW1haWw6IFtdLGZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzOltdfSxcclxuXHJcbiAgYXNzZXNzbWVudDogKG9wdGlvbj8uQVNTRVNTTUVOVCB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSA/ICB0aGlzLmdlbmVyYXRlQXNzZXNzbWVudChmb3JtLnByb2dyYW1fYXNzZXNzbWVudHMpIDogW10sXHJcbiAgZXZpZGVuY2VfdXBsb2FkX2ZsYWc6IChvcHRpb24/LkZPUk1BVEVfRVZJREVOQ0UgIHx8ICFoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pID8gIGZvcm0/LmV2aWRlbmNlX3JlcXVpcmVkID8gMSA6IDAgOiAwLFxyXG4gIGlzX2tleV9ldmlkZW5jZTogZm9ybT8uYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlLFxyXG4gIGN1c3RvbV9maWVsZHM6IG9wdGlvbj8uQ1VTVE9NX0ZJRUxEUyA/IGZvcm0/LmN1c3RvbV9maWVsZHMgPz8gW10gOiBbXSxcclxuICBmcmFtZXdvcms6dGhpcy5nZXRGcmFtZXdvcmsoZm9ybT8uZnJhbWV3b3JrKSA/PyBbXSxcclxuICBfaWQ6IGluc3RhbmNlLm1vZGUgPT09ICdFRElUJyA/IGluc3RhbmNlLnByb2dyYW1JZCA6IHVuZGVmaW5lZCxcclxufVxyXG5jb25zb2xlLmxvZyhcInBheWxvYWRcIixwYXlsb2FkKVxyXG5yZXR1cm4gcGF5bG9hZDtcclxuIH1cclxuIGdlbmVyYXRlQXNzZXNzbWVudChhc3Nlc3NtZW50OmFueSl7XHJcbiAgIGlmKGFzc2Vzc21lbnQgJiYgYXNzZXNzbWVudD8ubGVuZ3RoKXtcclxuICAgIHJldHVybiBhc3Nlc3NtZW50Lm1hcCgoY2F0OmFueSkgPT4ge3JldHVybiB7Li4uY2F0LGFzc2Vzc21lbnRJZHMgOiBjYXQuYXNzZXNzbWVudElkcz8ubWFwKChhc3Nlc3M6YW55KSA9PiBhc3Nlc3MuaWQpfX0pXHJcbiAgIH1lbHNle1xyXG4gICAgIHJldHVybiBbXTtcclxuICAgfVxyXG4gfVxyXG4gZ2V0RnJhbWV3b3JrKGlucHV0OmFueSl7XHJcbiAgIGlmKGlucHV0KXtcclxuICAgIHJldHVybiBbe1xyXG4gICAgICBfaWQ6aW5wdXQ/Ll9pZCxcclxuICAgICAgZnJhbWV3b3JrX25hbWU6aW5wdXQ/Lm5hbWUsXHJcbiAgICAgIHR5cGU6IGlucHV0Py50eXBlLFxyXG4gICAgICBpbl9zY29wZTogaW5wdXQ/LmluX3Njb3BlID8gdGhpcy5saXN0VG9JZChpbnB1dD8uaW5fc2NvcGUsJ19pZCcpOiAgW10sXHJcbiAgICAgIG91dF9zY29wZTogaW5wdXQ/Lm91dF9zY29wZSA/IHRoaXMubGlzdFRvSWQoaW5wdXQ/Lm91dF9zY29wZSwnX2lkJyk6IFtdXHJcbiAgICB9XVxyXG4gICB9ZWxzZXtcclxuICAgICByZXR1cm4gW11cclxuICAgfVxyXG5cclxuIH1cclxuXHJcbiBsaXN0VG9JZChsaXN0OmFueSxrZXk6c3RyaW5nKXtcclxuICAgaWYobGlzdCAmJiBsaXN0Py5sZW5ndGgpe1xyXG4gICAgcmV0dXJuIGxpc3QubWFwKChlbGU6YW55KSA9PiBlbGVba2V5XSk7XHJcbiAgIH1lbHNle1xyXG4gICAgIHJldHVybiBbXTtcclxuICAgfVxyXG5cclxuIH1cclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gaWQgOiBwcm9ncmFtIG9iamVjdCBpZFxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuIGdldFByb2dyYW0oaWQ6YW55KXtcclxuICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpLnNldCgneC1idXNpbmVzcy1jeWNsZScsICBKU09OLnN0cmluZ2lmeSgodGhpcy5nZXRCdXNpbmVzc0N5Y2xlKCkpKSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgKyAnLycgKyBpZCArJz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJywge2hlYWRlcnN9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBwYXlsb2FkIHBheWxvYWQgd2hpY2ggbmVlZCB0byBiZSB1cGRhdGVkXHJcbiAqIEBwYXJhbSBpZCBwcm9ncmFtIG9iamVjdCBpZFxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxudXBkYXRlUHJvZ3JhbShwYXlsb2FkOmFueSwgaWQ6IHN0cmluZyl7XHJcbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKS5zZXQoJ3gtYnVzaW5lc3MtY3ljbGUnLCAgSlNPTi5zdHJpbmdpZnkoKHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpKSkpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4odGhpcy5lbnYucHJvZ3JhbUVuZHBvaW50ICsgJy9jYXRlZ29yeS9lZGl0Q2F0ZWdvcnkvJysgaWQgICsgJz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxwYXlsb2FkLCB7aGVhZGVyc30pO1xyXG59XHJcblxyXG5cclxuZ2V0TWVtZWJlckJ5SWRzKGlkczphbnkpe1xyXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICsgJ21lbWJlckRldGFpbHNieUlkcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyx7bWVtYmVyX2lkOiBpZHN9LCB7aGVhZGVyc30pLnBpcGUocmV0cnkoMikpO1xyXG59XHJcblxyXG5nZXRNZW1iZXJCeUdyb3VwcyhpZHM6YW55KXtcclxuICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4odGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArICdncm91cERldGFpbHNieUlkcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyx7Z3JvdXBfaWRzOiBpZHN9LCB7aGVhZGVyc30pLnBpcGUocmV0cnkoMikpO1xyXG59XHJcblxyXG59XHJcbiJdfQ==