vcomply-workflow-engine 3.4.62 → 3.4.63

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.
@@ -2135,10 +2135,8 @@ export class WorkflowComplianceComponent {
2135
2135
  groupOverseerIds = [...new Set(groupOverseerIds)];
2136
2136
  this.assignorsList = behalfUsers.filter((user) => !overseerIds?.includes(user.member_id));
2137
2137
  this.assigneesList = allUsers;
2138
- this.reviewersList = allUsers.filter((user) => !(overseerIds?.includes(user?.my_member_id) ||
2139
- assigneeIds?.includes(user?.my_member_id)));
2140
- this.overseersList = allUsers.filter((user) => !(assignorAndAssigneesIds?.includes(user?.my_member_id) ||
2141
- reviewersIds?.includes(user?.my_member_id)));
2138
+ this.reviewersList = allUsers;
2139
+ this.overseersList = allUsers;
2142
2140
  this.disableList(allUsers, assignorAndAssigneesIds, assigneeIds, reviewersIds, overseerIds);
2143
2141
  if (this.featureFlag_groups) {
2144
2142
  this.groupAssigneeList = allGroups.filter((group) => !(groupReviewerIds?.includes(group?.group_id) ||
@@ -2252,10 +2250,8 @@ export class WorkflowComplianceComponent {
2252
2250
  this.overseerIds = [...new Set(this.overseerIds)];
2253
2251
  this.assignorsList = behalfUsers.filter((user) => !overseerIds?.includes(user.member_id));
2254
2252
  this.assigneesList = this.programPeopleList?.assigneesList;
2255
- this.reviewersList = this.programPeopleList?.reviewersList.filter((user) => !(overseerIds?.includes(user?.my_member_id) ||
2256
- assigneeIds?.includes(user?.my_member_id)));
2257
- this.overseersList = this.programPeopleList?.overseersList.filter((user) => !(assignorAndAssigneesIds?.includes(user?.my_member_id) ||
2258
- reviewersIds?.includes(user?.my_member_id)));
2253
+ this.reviewersList = this.programPeopleList?.reviewersList;
2254
+ this.overseersList = this.programPeopleList?.overseersList;
2259
2255
  if (this.featureFlag_groups) {
2260
2256
  this.groupAssigneeList =
2261
2257
  this.selectedProgram &&
@@ -3908,4 +3904,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3908
3904
  type: ViewChild,
3909
3905
  args: ['what']
3910
3906
  }] } });
3911
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctY29tcGxpYW5jZS93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBR25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEQsT0FBTyxFQUNMLGNBQWMsRUFDZCxjQUFjLEdBQ2YsTUFBTSxpREFBaUQsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXpFLE1BQU0sT0FBTywyQkFBMkI7SUFvV3RDLFlBQ1UsV0FBd0IsRUFDeEIscUJBQTRDLEVBQzVDLGdCQUFrQyxFQUNsQyxZQUEwQixFQUMxQixRQUF5QixFQUN6QixVQUF1QixFQUN2QixjQUErQixFQUMvQixVQUFzQjtRQVB0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FB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QUMvRCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxLQUFLLEVBQUUsR0FBRyxDQUN0QyxDQUFDO0lBQ0osQ0FBQzs7d0hBem1KVSwyQkFBMkI7NEdBQTNCLDJCQUEyQiw4K0JDakN4Qyx1NG9JQWt5R0E7MkZEandHYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UseUJBQXlCOytTQU8xQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBc0NtQixVQUFVO3NCQUFsQyxLQUFLO3VCQUFDLFlBQVk7Z0JBS1YsVUFBVTtzQkFBbEIsS0FBSztnQkFJSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csMkJBQTJCO3NCQUFwQyxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUt3QixrQkFBa0I7c0JBQS9DLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVdkLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFnUlksU0FBUztzQkFBM0IsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUHJvZ3JhbXNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcHJvZ3JhbXMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgR1JDX1RZUEVfQVJSQVksXHJcbiAgT1RIRVJfR1JDX0NBUkQsXHJcbn0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL2NvbnN0YW50cy9ncmNPYmplY3QuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgREVGQVVMVF8yNEhSLCBERUZBVUxUX1RJTUUgfSBmcm9tICcuLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctY29tcGxpYW5jZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxyXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dDb21wbGlhbmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKiBEZWZpbmluZyB0aGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgdGhlIGNvbXBvbmVudC4gKi9cclxuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XHJcbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdHlJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIGZyYW1ld29ya0RldGFpbHM6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSBpc0VudHJ1c3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcclxuICBASW5wdXQoKSBhc3Nlc3NtZW50RGV0YWlsczogYW55O1xyXG5cclxuICBhbGxHcm91cEFzc2lnbmVlOiBib29sZWFuID0gdHJ1ZTtcclxuICBhc3NpZ25vcklkOiBhbnlbXSA9IFtdO1xyXG4gIGFzc2lnbmVlSWRzOiBhbnlbXSA9IFtdO1xyXG4gIHJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xyXG4gIG92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xyXG4gIGRpc2FibGVSYWRpb0Fzc2lnbmVlOiBhbnlbXSA9IFtdO1xyXG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0gJyc7XHJcbiAgcmVjZW50UmVzcG9uc2liaWxpdHlVcmw6IGFueSA9IHtcclxuICAgIGJ5UmVzcG9uc2liaWxpdGllczogeyB0eXBlOiBbJ3JlY2VudF9yZXNwb25zaWJpbGl0aWVzJ10sIHN1YlR5cGU6IFsnQ0MnXSB9LFxyXG4gICAgYnlTdGF0dXM6IHsgdHlwZTogW10sIHN1YlR5cGU6IFtdIH0sXHJcbiAgICBmaWx0ZXJPYmplY3Q6IHtcclxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxyXG4gICAgICBlbnRydXN0ZWRCeTogW10sXHJcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcclxuICAgICAgcmlza0lkczogW10sXHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxyXG4gICAgfSxcclxuICAgIHRpbWVQZXJpb2REZXRhaWxzOiB7IHR5cGU6ICcnLCBzZWxlY3RlZFBlcmlvZDogJycsIHNlbGVjdGVkWWVhcjogJycgfSxcclxuICAgIHN0YXR1czogJycsXHJcbiAgfTtcclxuICBpc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyY0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcclxuICBncmNMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvdGhlckdSQ0NhcmQ6IGFueSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcclxuICBzZWxlY3RlZEdSQ1RhYjogbnVtYmVyID0gMDtcclxuICBncmNUYWJMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncmNTZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xyXG4gIEdSQ19UWVBFX0FSUkFZID0gR1JDX1RZUEVfQVJSQVk7XHJcbiAgZ3JjRGF0YVdpdGhUeXBlczogYW55ID0ge1xyXG4gICAgYXNzZXRzOiBbXSxcclxuICAgIHByb2Nlc3NlczogW10sXHJcbiAgICB2ZW5kb3JzOiBbXSxcclxuICAgIGludmVudG9yeTogW10sXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCdjbG9zZU9uRXNjJykgc2V0IGNsb3NlT25Fc2MoZXNjYXBlQ29uZGl0aW9uOiBib29sZWFuKSB7XHJcbiAgICBpZiAoZXNjYXBlQ29uZGl0aW9uKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XHJcblxyXG4gIHVybCA9XHJcbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlc2V0Rm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoZWNrcG9pbnRDb3VudFVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJjU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgb3BlbmVkRnJvbSE6IGFueTsgLy93aGVuIG9wZW5lZCBmcm9tIHJpc2sgdHJlYXRtZW50IGl0IHdpbGwgYmUgJ1JJU0tfVFJFQVRNRU5UJ1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUkM6IG51bWJlciA9IDA7IC8vIDQtNSBkaWdpdCBpZCBvZiBzZWxlY3RlZCByYyBieSBkZWZhdWx0IHdoZW4gb3BlbmVkIGZyb20gcmlzayB0cmVhdG1lbnRcclxuICAvLyBASW5wdXQoKSBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XHJcbiAgZmVhdHVyZUZsYWdfZ3JvdXBzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRQcm9ncmFtOiBhbnkgPSBudWxsO1xyXG4gIHNlbGVjdGVkUmV2aWV3ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgnc2VsZWN0ZWRQcm9ncmFtJykgc2V0IHNldFNlbGVjdGVkUHJvZ3JhbShwcm9ncmFtOiBhbnkpIHtcclxuICAgIGlmIChwcm9ncmFtICYmIE9iamVjdC5rZXlzKHByb2dyYW0pPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gPSBwcm9ncmFtO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmxpbmtlZFByb2dyYW0gPSBbXTtcclxuICAgICAgLy8gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbS5wdXNoKHByb2dyYW0pO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saW5rZWRQcm9ncmFtLnB1c2gocHJvZ3JhbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiBDcmVhdGluZyBhbiBldmVudCBlbWl0dGVyLiAqL1xyXG4gIEBPdXRwdXQoKSBvblJlbW92aW5nQ2hlY2twb2ludDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlzQXNzZXNzbWVudERpc2FibGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhc3NpZ25lZVR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIGl0IHdpbGwgZW1pdCB3aGVuIGFzc2lnbmVlIHR5cGUgY2hhbmdlXHJcbiAgQE91dHB1dCgpIG9uUmV2aWV3ZXJUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyBpdCB3aWxsIGVtaXQgd2hlbiByZXZpZXdlciB0eXBlIGNoYW5nZVxyXG5cclxuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHknLFxyXG4gIH07XHJcbiAgcHJvZ3JhbVBlb3BsZUxpc3Q6IGFueSA9IHtcclxuICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgcmV2aWV3ZXJzTGlzdDogW10sXHJcbiAgICBvdmVyc2VlcnNMaXN0OiBbXSxcclxuICB9O1xyXG4gIGxvYWRlciA9IGZhbHNlO1xyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIGVkaXREZXRhaWxzITogYW55O1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgRG9uZSFgO1xyXG4gIGFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvblRleHQ6ICdFbnRydXN0IE1vcmUgUmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgIGNsYXNzOiAnd2hpdGUtYnRuJyxcclxuICAgICAgaWQ6ICdhZGRNb3JlJyxcclxuICAgIH0sXHJcbiAgICB7IGJ1dHRvblRleHQ6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3JyB9LFxyXG4gIF07XHJcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIG1lbWJlcklkID0gMDtcclxuICBvcmdhbml6YXRpb25JZCA9IDA7XHJcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgYXNzaWdub3JzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGFzc2lnbmVlc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjYXRlZ29yaWVzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGdyb3Vwc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBhc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBzZWxlY3RlZEZyYW1ld29ya1ZhbHVlcyE6IGFueTtcclxuICBoYXNSZXZpZXdlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyB1c2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgYXNzaWdub3JzTGlzdDogYW55W10gPSBbXTtcclxuICBhc3NpZ25lZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHJldmlld2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgZGlzYWJsZUFzc2lnbmVlSWRzOiBhbnlbXSA9IFtdO1xyXG4gIGRpc2FibGVSZXZpZXdlcklkczogYW55W10gPSBbXTtcclxuICBkaXNhYmxlT3ZlcnNlZXJJZHM6IGFueVtdID0gW107XHJcbiAgcmV2aWV3ZXJNZW1iZXJJZHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwT3ZlcnNlZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwUmV2aWV3ZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwQXNzaWduZWVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG92ZXJzZWVyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgYWxsVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGJlaGFsZk9mVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGFzc2lnbmVlVXNlckxpc3Q6IGFueVtdID0gW107XHJcbiAgcmV2aWV3ZXJVc2VyTGlzdDogYW55W10gPSBbXTtcclxuICBvdmVyc2VlclVzZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG92ZXJzZWVyVXNlck5vdGlmeUxpc3Q6IGFueVtdID0gW107XHJcbiAgYWxsQ2F0ZWdvcmllczogYW55W10gPSBbXTtcclxuICBhc3N1cmFuY2VDYXRlZ29yaWVzTGlzdDogYW55W10gPSBbXTtcclxuICBhc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdDogYW55W10gPSBbXTtcclxuICBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIE9yZ0dyb3VwOiBhbnlbXSA9IFtdO1xyXG4gIGFkbWluc0xpc3Q6IGFueVtdID0gW107XHJcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdDogYW55W10gPSBbXTtcclxuICBjYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XHJcbiAgbm9uUmVtb3ZhYmxlVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZTogTnVtYmVyID0gMDtcclxuXHJcbiAgcmVzcG9uc2liaWxpdHlGb3JtOiBhbnkgPSB7XHJcbiAgICBhc3NpZ25vcnM6IHtcclxuICAgICAgZW5hYmxlOiBmYWxzZSxcclxuICAgICAgbGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgcmVzcG9uc2liaWxpdHk6IHtcclxuICAgICAgbmFtZTogJycsXHJcbiAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiBmYWxzZSxcclxuICAgIH0sXHJcbiAgICBhc3NpZ25lZUdyb3Vwczoge1xyXG4gICAgICB3aG9DYW5Db21wbGV0ZTogJ0FOWU9ORScsXHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIGFzc2lnbmVlczoge1xyXG4gICAgICB3aG9DYW5Db21wbGV0ZTogJ0FMTCcsXHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIGZyZXF1ZW5jeTogJycsXHJcbiAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICBvYmplY3RpdmU6ICcnLFxyXG4gICAgcmM6IFtdLFxyXG4gICAgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlOiAwLFxyXG4gICAgY2F0ZWdvcnk6IFtdLFxyXG4gICAgcHJvZ3JhbTogW10sXHJcbiAgICBwcm9ncmFtX3NlbGVjdGVkX2lkczogW10sXHJcbiAgICBjaGVja3BvaW50SW5zdHJ1Y3Rpb246ICcnLFxyXG4gICAgY3VzdG9tVGFnczogW10sXHJcbiAgICBjaGVja3BvaW50czogW10sXHJcbiAgICByZXZpZXdlcnM6IHtcclxuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OiB0cnVlLFxyXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcclxuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXHJcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogMixcclxuICAgICAgfSxcclxuICAgICAgbGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgZ3JvdXBSZXZpZXdlcnM6IHtcclxuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OiB0cnVlLFxyXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcclxuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXHJcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogMixcclxuICAgICAgfSxcclxuICAgICAgbGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgb3ZlcnNlZXJzOiB7XHJcbiAgICAgIG5vdGlmeUxpc3Q6IFtdLFxyXG4gICAgICBsaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgICBvdmVyc2VlcnNHcm91cHM6IHtcclxuICAgICAgbm90aWZ5TGlzdDogW10sXHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIGZvcm1hdEFuZEV2aWRlbmNlOiB7XHJcbiAgICAgIGZvcm1hdFJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgICBmb3JtYXRMaW5rczogW10sXHJcbiAgICAgIGV2aWRlbmNlUmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgfSxcclxuICAgIGFzc3VyYW5jZUxpc3Q6IFtdLFxyXG4gICAgcmVxdWlyZXNBdWRpdExpc3Q6IFtdLFxyXG4gICAgcmlza0NsYXNzOiAxLFxyXG4gICAgcmlza01hdHJpeDogJzAsMCwwLDAsMCwwJyxcclxuICAgIGF1ZGl0X2NhdGVnb3J5X2RldGFpbHM6IHtcclxuICAgICAgY2F0ZWdvcnlfaWQ6IDAsXHJcbiAgICAgIHNhbXBsZTogNSxcclxuICAgICAgcGVyY2VudGFnZTogMzAsXHJcbiAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnMX4wfjN+MScsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBERUZBVUxUXzI0SFIsXHJcbiAgICB9LFxyXG4gICAgYXNzZXNzbWVudDoge1xyXG4gICAgICBjYXRlZ29yeV9pZDogJycsXHJcbiAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxyXG4gICAgfSxcclxuICAgIG5ld19jaGVja3BvaW50czoge30sXHJcbiAgICBsaW5rZWRQcm9ncmFtOiBbXSxcclxuICAgIHNlbGVjdGVkR1JDT2JqZWN0czogW10sXHJcbiAgfTtcclxuICBtb3JlT3B0aW9uczogYW55ID0ge1xyXG4gICAgT0JKRUNUSVZFOiBmYWxzZSxcclxuICAgIFJDOiBmYWxzZSxcclxuICAgIENBVEVHT1JZOiBmYWxzZSxcclxuICAgIFBST0dSQU06IGZhbHNlLFxyXG4gICAgRk9STUFURV9FVklERU5DRTogZmFsc2UsXHJcbiAgICBDSEVDS1BPSU5UUzogZmFsc2UsXHJcbiAgICBBU1NFU1NNRU5UOiBmYWxzZSxcclxuICAgIFJJU0tfQ0xBU1NJRklDQVRJT046IGZhbHNlLFxyXG4gICAgUkVWSUVXRVI6IGZhbHNlLFxyXG4gICAgT1ZFUlNFRVI6IGZhbHNlLFxyXG4gICAgQVNTVVJBTkNFOiBmYWxzZSxcclxuICAgIEFQUFM6IGZhbHNlLFxyXG4gICAgUkVRVUlSRVNfQVVESVQ6IGZhbHNlLFxyXG4gICAgQ0hFQ0tQT0lOVFNfTkVXOiBmYWxzZSxcclxuICAgIEdSQ19PQkpFQ1RTOiBmYWxzZSxcclxuICB9O1xyXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFtcclxuICAgICdhc3N1cmFuY2UnLFxyXG4gICAgJ2ZyYW1ld29yaycsXHJcbiAgICAnYXNzaWdub3JzJyxcclxuICAgICdhc3NpZ25lZXMnLFxyXG4gICAgJ2NhdGVnb3J5JyxcclxuICAgICdwcm9ncmFtJyxcclxuICAgICdyYycsXHJcbiAgICAnY2hlY2twb2ludHMnLFxyXG4gICAgJ2ZyZXF1ZW5jeScsXHJcbiAgICAncmV2aWV3ZXInLFxyXG4gICAgJ3Jldmlld2VyRnJlcXVlbmN5JyxcclxuICAgICdvdmVyc2VlcicsXHJcbiAgICAnb3ZlcnNlZXJOb3RpZnknLFxyXG4gICAgJ3Jpc2tDYWxjdWxhdG9yJyxcclxuICAgICdpc0Fzc2Vzc21lbnQnLFxyXG4gICAgJ3JlcXVpcmVzX2F1ZGl0JyxcclxuICAgICdjaGVja3BvaW50cy1uZXcnLFxyXG4gICAgJ0dSQ19PQkpFQ1RTJyxcclxuICBdO1xyXG5cclxuICBmb2N1cyA9IHtcclxuICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogZmFsc2UsXHJcbiAgICBkZXNjcmlwdGlvbjogZmFsc2UsXHJcbiAgICBvYmplY3RpdmU6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIGNhdGVnb3JpZXM6IGFueSA9IHtcclxuICAgIHJlZ3VsYXRpb25zOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIHN0YW5kYXJkczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgICBpbnRlcm5hbENvbnRyb2xzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIG90aGVyczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgYWxsUHJvZ3JhbXM6IGFueVtdID0gW107XHJcblxyXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcclxuICAgIHsgbmFtZTogJ0xvdycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ0xvdy1NZWRpdW0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxyXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcclxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogNCwgY2xhc3M6ICdoaWdoJyB9LFxyXG4gIF07XHJcblxyXG4gIGFzc2lnbm9yTW9kZSA9ICdjaGVja2JveCc7XHJcbiAgcmNNb2RlID0gJ2NoZWNrYm94JztcclxuICBpbnZhbGlkVHlwZSA9ICcnO1xyXG4gIHJlc3BvbnNpYmlsaXR5UGF5bG9hZCE6IGFueTtcclxuICBhc3NpZ25lZVJhZGlvU2VsZWN0ID0gZmFsc2U7XHJcbiAgcHJvZ3JhbXNMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyBmcmVxdWVuY3kgdmFyaWFibGUgZGVjbGFyYXRpb25cclxuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgcGF0dGVybjogJycsXHJcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIGZhaWxlZDogMCxcclxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcclxuICAgIGZhaWxlZFRpbWU6ICcnLFxyXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgIG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM6IHt9LFxyXG4gIH07XHJcbiAgZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnSG93IG9mdGVuIGRvZXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9jY3VyPyc7XHJcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIGlzRWRpdFdoYXQ6IEJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRnJhbWV3b3JrQXZhaWxhYmxlID0gMTtcclxuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xyXG5cclxuICBhc3N1cmFuY2VGbGFnITogYW55O1xyXG4gIHJpc2tDbGFzc2lmaWNhdGlvbkZsYWchOiBhbnk7XHJcbiAgaGlkZGVuTGlzdDogYW55W10gPSBbXTtcclxuICBzdWJzY3JpcHRpb25EZXRhaWxzITogYW55O1xyXG4gIGlzUmlza0VuYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNEdXBsaWNhdGVFbnRydXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXVkaXRUaW1lOiBzdHJpbmcgPSBERUZBVUxUX1RJTUU7XHJcbiAgc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWU6IG51bWJlciA9IDI7XHJcbiAgc2FtcGxlVmFsdWU6IGFueTtcclxuICBzYW1wbGVQZXJjZW50YWdlOiBhbnk7XHJcbiAgc2VsZWN0ZWRTYW1wbGUhOiBudW1iZXI7XHJcbiAgaXNTYW1wbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZW1wQ2hlY2tWYWx1ZTogbnVtYmVyID0gLTE7XHJcbiAgaXNBc3Nlc3NtZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFuYWdlUGVybWlzc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNoZWNrcG9pbnRDb3VudDogbnVtYmVyID0gMDtcclxuICByb2xlQmFzZWRQZXJtaXNzaW9ucyE6IGFueTtcclxuICBpc0dyb3VwQXNzaWduZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZXNwb25zaWJpbGl0eURhdGEhOiBhbnk7XHJcbiAgb3JpZ2luYWxBc3NpZ25lZSE6IGFueTtcclxuICB1c2VyTGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFzc2lnbm9yc0xpc3RMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByYXdSZXNwb25zaWJpbGl0eTogYW55O1xyXG4gIG90aGVyR1JDU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBAVmlld0NoaWxkKCd3aGF0Jykgd2hhdElucHV0ITogRWxlbWVudFJlZjtcclxuICB1blN1YnNjcmliZVByb2dyYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgcGVybWlzc2lvbjogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBsaWFuY2VTdWJtb2R1bGUgPVxyXG4gICAgICAgIHJlcy5yb2xlQWN0aW9uc1tcclxuICAgICAgICAgIHJlcy5yb2xlQWN0aW9ucy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLm1vZHVsZU5hbWUgPT0gJ2NvbXBsaWFuY2UnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXS5zdWJNb2R1bGU7XHJcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25zID1cclxuICAgICAgICBjb21wbGlhbmNlU3VibW9kdWxlW1xyXG4gICAgICAgICAgY29tcGxpYW5jZVN1Ym1vZHVsZS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLnN1Yk1vZHVsZU5hbWUgPT0gJ1Byb2dyYW1zJ1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIF0ucGVybWlzc2lvbnM7XHJcbiAgICAgIHRoaXMubWFuYWdlUGVybWlzc2lvbiA9IHBlcm1pc3Npb25zW1xyXG4gICAgICAgIHBlcm1pc3Npb25zLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5uYW1lID09ICdtYW5hZ2UgcHJvZ3JhbXMnKVxyXG4gICAgICBdLmVuYWJsZVxyXG4gICAgICAgID8gdHJ1ZVxyXG4gICAgICAgIDogZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLm1hbmFnZVBlcm1pc3Npb24pIHtcclxuICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0FURUdPUlknKTtcclxuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUFJPR1JBTScpO1xyXG4gICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxyXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfZ3JvdXBzJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX3Jlc3BvbnNpYmlsaXR5X3NpbXBsaWZpY2F0aW9uJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX3Jlc3BvbnNpYmlsaXR5X3JjX2xpbmsnXHJcbiAgICApO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgLy8gICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lID0gXCJhYmNkZWZcIlxyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0FTU0VTU01FTlQnKTtcclxuICAgIHRoaXMuZ2V0UkNMaXN0KCk7XHJcbiAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0QXNzaWduZWVzTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRBc3N1cmFuY2UoKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRBc3N1cmFuY2VGb3JSZXF1aXJlc0F1ZGl0KCk7XHJcbiAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICB0aGlzLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKTtcclxuICAgIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcclxuICAgIHRoaXMuc2hvcnRNb250aCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5tb250aEFycmF5Lm1hcCgobW9udGgpID0+XHJcbiAgICAgIG1vbnRoLnN1YnN0cmluZygwLCAzKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XHJcbiAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDSEVDS1BPSU5UUycpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzUmlza0VuYWJsZSA9IHJlcy5lbmFibGVfcmlza2NsYXNzID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICBpZiAoIXJlcy5lbmFibGVfcmlza2NsYXNzKSB7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ1JJU0tfQ0xBU1NJRklDQVRJT04nKTtcclxuICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRTdWJzY3JpcHRpb25EZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHMgPSByZXM7XHJcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHNbMF0uYXNzZXNzbWVudF9mbGFnKSB7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5MaXN0ID0gdGhpcy5oaWRkZW5MaXN0LmZpbHRlcigoZWxlKSA9PiBlbGUgIT09ICdBU1NFU1NNRU5UJyk7XHJcbiAgICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGRlbkxpc3QpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0UmVzcG9uc2liaWxpdHlOYW1lKCk7XHJcbiAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZVNlbGVjdG9yKHR5cGU6IGFueSwgZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcclxuICAgIGlmICh0eXBlID09PSAnY2hlY2twb2ludHMtbmV3JykgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChldmVudCk7XHJcbiAgICBpZiAodGhpcy5zaWRlU2VsZWN0b3JFbGVtZW50cz8uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UmVzcG9uc2liaWxpdHlOYW1lKCkge1xyXG4gICAgaWYgKHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSA9PT0gJ2NvbXBsaWFuY2VfYXVkaXQnKSB7XHJcbiAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xyXG4gICAgICAgIHRhcmdldDoge1xyXG4gICAgICAgICAgdmFsdWU6ICdBdWRpdDogJyArIHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgIGFzc2Vzc21lbnRfaWQ6IHRoaXMuYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcclxuICAgICAgICBjYXRlZ29yeV9pZDogdGhpcy5hc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeVswXT8uX2lkLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5zZXRBc3Nlc3NtZW50RGF0YShbdGhpcy5hc3Nlc3NtZW50RGV0YWlsc10sIHBheWxvYWQsICdhc3Nlc3NtZW50Jyk7XHJcblxyXG4gICAgICB0aGlzLndoYXRDaGFuZ2VkKGFzc2Vzc21lbnREYXRhKTtcclxuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTJyk7XHJcbiAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDSEVDS1BPSU5UU19ORVcnKTtcclxuICAgICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGRlbkxpc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd2hhdENoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCkgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMuaXNFZGl0V2hhdCA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLmludmFsaWRUeXBlID09PSAnd2hhdCcpIHtcclxuICAgICAgICB0aGlzLmludmFsaWRUeXBlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNFZGl0V2hhdCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZlRGVzZWxlY3RvcigpIHtcclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdhZGQgTW9yZSBpbmZvJywgZXZlbnQpO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnICYmXHJcbiAgICAgIGV2ZW50LmNoZWNrcG9pbnRfbmV3ICYmXHJcbiAgICAgIHRoaXMuY2hlY2twb2ludENvdW50XHJcbiAgICApIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNbZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SY1R5cGVDaGFuZ2Uoc2VsZWN0ZWRUeXBlOiBOdW1iZXIpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID0gc2VsZWN0ZWRUeXBlID8/IDA7XHJcbiAgfVxyXG5cclxuICBnZXRSQ0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2U/LmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdChwYXJhbXMpLnN1YnNjcmliZShcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IHJlcztcclxuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjLCAnaXRlbV9pZCcpO1xyXG4gICAgICAgIGNvbnN0IFJDID0gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgaWRzPy5pbmNsdWRlcyhlbGVtZW50Lml0ZW1faWQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoUkM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSBSQztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXHJcbiAgICAgICAgICAgIFt0aGlzLnNlbGVjdGVkUkNdLFxyXG4gICAgICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlJDID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGJ1dHRvblRleHQ6ICdHbyB0byByaXNrIHRyZWF0bWVudCcsXHJcbiAgICAgICAgICAgICAgY2xhc3M6ICdibHVlLWJ0bicsXHJcbiAgICAgICAgICAgICAgaWQ6ICd2aWV3JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICAvLyBQcmV2aW91c2x5IHRoZXJlIHdhcyBvbmx5IFJDIHdhcyBlbWl0dGluZyB3aGljaCBtYWRlIHRoZSBjaGVja2VkIG9wdGlvbnMgdG8gZGUgY2hlY2sgbm93IGNoZWNraW5nIHRoZSBjb25kaXRpb24gYW5kIHNlbmRpbmcgYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXHJcbiAgICAgICAgICBsZXQgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vcmVPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcclxuICAgICAgICAgICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaChrZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICBpZiAodGhpcy5hY3Rpb25CdXR0b25zPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckluZm8oKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXMubm90aWZpY2F0aW9uX3BlbmRpbmdfZmxhZztcclxuICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNbMV0uYnV0dG9uVGV4dCA9IHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nXHJcbiAgICAgICAgICA/ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMgaW4gUXVldWUnXHJcbiAgICAgICAgICA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFzc3VyYW5jZSgpIHtcclxuICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldEFzc3VyYW5jZSgpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yaWVzTGlzdCA9IHJlcztcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAodGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzICYmXHJcbiAgICAgICAgICAgICF0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHNbMF0uYXNzdXJhbmNlX2ZsYWcpIHx8XHJcbiAgICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0Py5sZW5ndGggPT0gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0FTU1VSQU5DRScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XHJcbiAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFzc3VyYW5jZUZvclJlcXVpcmVzQXVkaXQoKSB7XHJcbiAgICAvLyB0aGlzLmFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRBc3N1cmFuY2VGb3JSZXF1aXJlc0F1ZGl0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFzc3VyYW5jZVJlcXVpcmVzQXVkaXRMaXN0ID0gcmVzO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICh0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHMgJiZcclxuICAgICAgICAgICAgIXRoaXMuc3Vic2NyaXB0aW9uRGV0YWlsc1swXS5hdWRpdF9mbGFnKSB8fFxyXG4gICAgICAgICAgdGhpcy5hc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoID09IDBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdSRVFVSVJFU19BVURJVCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XHJcbiAgICAgICAgLy8gdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIC8vIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldE9yZ2FuaXphdGlvbkRldGFpbHMoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaXNGcmFtZXdvcmtBdmFpbGFibGUgPSByZXM/LmVuYWJsZV9yZXNwb25zaWJpbGl0eV9mcmFtZXdvcms7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcztcclxuICAgICAgICB0aGlzLmFsbENhdGVnb3JpZXMgPSBjbG9uZURlZXAocmVzKTtcclxuICAgICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMub3RoZXJzLmxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLnJlZ3VsYXRpb25zLmxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLnN0YW5kYXJkcy5saXN0LnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5pbnRlcm5hbENvbnRyb2xzLmxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMudW5TdWJzY3JpYmVQcm9ncmFtLm5leHQoKTtcclxuICAgIHRoaXMudW5TdWJzY3JpYmVQcm9ncmFtLmNvbXBsZXRlKCk7XHJcbiAgICBpZiAocHJvZ3JhbV9pZCAmJiB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikge1xyXG4gICAgICB0aGlzLmdldFBlb3BsZUxpc3RBZ2FpbnN0UElEKHByb2dyYW1faWQpO1xyXG4gICAgICB0aGlzLmdldFJDTGlzdChwcm9ncmFtX2lkKTtcclxuICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KHByb2dyYW1faWQpO1xyXG4gICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldEFzc2lnbmVlc0xpc3QoKTtcclxuICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XHJcbiAgICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZ3JhbURldGFpbHMocHJvZ3JhbUlkPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFByb2dyYW0ocHJvZ3JhbUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICByZXM/LmFzc2Vzc21lbnQgJiZcclxuICAgICAgICByZXM/LmFzc2Vzc21lbnQ/Lmxlbmd0aCAmJlxyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50KT8ubGVuZ3RoXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5QXNzZXNzbWVudCA9IHJlcz8uYXNzZXNzbWVudC5maWx0ZXIoXHJcbiAgICAgICAgICAoYXNzZXNzbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWQgPT09XHJcbiAgICAgICAgICAgIGFzc2Vzc21lbnQ/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjYXRlZ29yeUFzc2Vzc21lbnQ/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgY2F0ZWdvcnlBc3Nlc3NtZW50WzBdPy5hc3Nlc3NtZW50SWRzPy5sZW5ndGhcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbnN0IGlzRXhpc3QgPSBjYXRlZ29yeUFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnRJZHM/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmICghaXNFeGlzdCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xyXG4gICAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnJyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IHtcclxuICAgICAgICAgICAgYXNzZXNzbWVudF9pZDogJycsXHJcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnJyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKHByb2dyYW1faWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5nZXRQZW9wbGVMaXN0QWdhaW5zdFBJRChwcm9ncmFtX2lkKTtcclxuICAgIHRoaXMuZ2V0UkNMaXN0KHByb2dyYW1faWQpO1xyXG4gICAgdGhpcy5nZXRHcm91cHNMaXN0KHByb2dyYW1faWQpO1xyXG4gICAgdGhpcy5nZXRBc3NpZ25vcnNMaXN0KHByb2dyYW1faWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXNzaWdub3JzTGlzdChwcm9ncmFtX2lkPzogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGlmIChwcm9ncmFtX2lkKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0QXNzaWdub3JzTGlzdChwYXJhbXMpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5iZWhhbGZPZlVzZXJzTGlzdCA9IHJlcztcclxuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuYXNzaWdub3JzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFzc2lnbmVlc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyTGlzdExvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRPcmdhbml6YXRpb25QZW9wbGUocGFyYW1zKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0ID0gcmVzLm1hcCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xyXG4gICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHByb2dyYW1faWQpIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBlb3BsZUxpc3RBZ2FpbnN0UElEKHByb2dyYW1faWQ6IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xyXG4gICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblBlb3BsZShwYXJhbXMpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0ID0gcmVzLmFzc2lnbmVlLm1hcCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xyXG4gICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gcmVzLm92ZXJzZWVyLm1hcCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xyXG4gICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5yZXZpZXdlcnNMaXN0ID0gcmVzLnJldmlld2VyLm1hcCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xyXG4gICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdCA9IHtcclxuICAgICAgICAgIGFzc2lnbmVlc0xpc3Q6IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWduZWVzTGlzdCldLFxyXG4gICAgICAgICAgcmV2aWV3ZXJzTGlzdDogWy4uLm5ldyBTZXQodGhpcy5yZXZpZXdlcnNMaXN0KV0sXHJcbiAgICAgICAgICBvdmVyc2VlcnNMaXN0OiBbLi4ubmV3IFNldCh0aGlzLm92ZXJzZWVyc0xpc3QpXSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyB8fFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QsXHJcbiAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgYWxsSWRzID0gW1xyXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcclxuICAgICAgICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfaWRzXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY29uc3QgYXNzaWdub3JzID0gdGhpcy5hc3NpZ25lZXNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/Lm15X21lbWJlcl9pZFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGFzc2lnbm9ycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbUFzc2lnbmVlR3JvdXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VycyB8fFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIHx8XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0LFxyXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGFsbElkcyA9IFtcclxuICAgICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9yZXZpZXdlcnMpLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIGNvbnN0IHJldmlld2VycyA9IHRoaXMucmV2aWV3ZXJzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgLy8gY29uc3QgcmV2aWV3ZXJzID0gdGhpcy5yZXZpZXdlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfcmV2aWV3ZXJzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgcmV2aWV3ZXJzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gcmV2aWV3ZXJzO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHJldmlld2VycztcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVZJRVdFUiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9ncmFtUmV2aWV3ZXJHcm91cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzIHx8XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggfHxcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QsXHJcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDSWRzID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDID0gdGhpcy5vdmVyc2VlcnNMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgYWxsRGVmYXVsdENDSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgLy8gY29uc3Qgb3ZlcnNlZXJzID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzLmNjX2VtYWlsLmluY2x1ZGVzKGVsZW1lbnQubXlfbWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICBjb25zdCBub3RpZnlMaXN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0LFxyXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0ZhaWx1cmVJZHMgPSBbXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQobm90aWZ5TGlzdElkcyksXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NGYWlsdXJlID0gdGhpcy5vdmVyc2VlcnNMaXN0Py5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgYWxsRGVmYXVsdENDRmFpbHVyZUlkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IHRoaXMub3ZlcnNlZXJzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT4gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X292ZXJzZWVycy5mYWlsdXJlX2NjX2VtYWlsLmluY2x1ZGVzKGVsZW1lbnQubXlfbWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAvLyBpZiAob3ZlcnNlZXJzPy5sZW5ndGgpIHtcclxuICAgICAgICAgIC8vICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBvdmVyc2VlcnM7XHJcbiAgICAgICAgICAvLyAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gaWYgKG5vdGlmeU92ZXJzZWVycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gbm90aWZ5T3ZlcnNlZXJzO1xyXG4gICAgICAgICAgLy8gICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICBpZiAob3ZlcnNlZXJzQ0M/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IG92ZXJzZWVyc0NDO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3RcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChvdmVyc2VlcnNDQ0ZhaWx1cmU/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IG92ZXJzZWVyc0NDRmFpbHVyZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVByb2dyYW1PdmVyc2Vlckdyb3VwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMubW9yZU9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcclxuICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goa2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcclxuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRHcm91cHNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgaWYgKHByb2dyYW1faWQpIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXHJcbiAgICAgIC5nZXRPcmdhbml6YXRpb25Hcm91cHMocGFyYW1zKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51blN1YnNjcmliZVByb2dyYW0pKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyA/PyBbXTtcclxuICAgICAgICAgIGlmICghcHJvZ3JhbV9pZCkge1xyXG4gICAgICAgICAgICB0aGlzLk9yZ0dyb3VwID0gZGF0YTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGdyb3VwczogYW55ID0gW107XHJcbiAgICAgICAgICBpZiAoZGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogZWxlbWVudC5ncm91cF9uYW1lLFxyXG4gICAgICAgICAgICAgICAgdXNlcklkczogZWxlbWVudC5tZW1iZXJfaWRzLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgZ3JvdXBzLnB1c2gob2JqKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBncm91cHM7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyAmJlxyXG4gICAgICAgICAgICB0aGlzLk9yZ0dyb3VwPy5sZW5ndGggJiZcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbT8ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIHByb2dyYW1faWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgJiZcclxuICAgICAgICAgICAgcHJvZ3JhbV9pZFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZGF0YS5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuZ3JvdXBfaWRcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChncm91cHM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIGxldCBtZW1iZXJJZHM6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cHMuZm9yRWFjaCgoZWFjaEdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlYWNoR3JvdXA/Lm1lbWJlcl9pZHM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICBtZW1iZXJJZHMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ubmV3IFNldChtZW1iZXJJZHMuY29uY2F0KGVhY2hHcm91cD8ubWVtYmVyX2lkcykpLFxyXG4gICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWxsSWRzID0gWy4uLm5ldyBTZXQoaWRzKSwgLi4ubmV3IFNldChtZW1iZXJJZHMpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9ycyA9IHRoaXMuYXNzaWduZWVzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFzc2lnbm9ycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gYXNzaWdub3JzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgIG1lbWJlcklkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFJlc3BvbnNpYmlsaXR5RGV0YWlscyhpZDogYW55KSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5lZGl0UmVzcG9uc2liaWxpdHkoaWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc0R1cGxpY2F0ZUVudHJ1c3QgPSB0cnVlO1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5yYXdSZXNwb25zaWJpbGl0eSA9IHJlcztcclxuICAgICAgICB0aGlzLm9yaWdpbmFsQXNzaWduZWUgPSBbTnVtYmVyKHJlcy5hc3NpZ25lZF90byldO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpPy51c2VyO1xyXG4gICAgICAgIHRoaXMuaXNHcm91cEFzc2lnbmVkID0gcmVzPy5pc0dyb3VwQXNzaWduVG8gPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgY29uc3QgY3VycmVudHNVZXJJbmZvID0ge1xyXG4gICAgICAgICAgbWVtYmVyX2VtYWlsOiBjdXJyZW50VXNlcj8uZW1haWwsXHJcbiAgICAgICAgICBtZW1iZXJfaWQ6IGN1cnJlbnRVc2VyLmlkLFxyXG4gICAgICAgICAgbWVtYmVyX25hbWU6IGN1cnJlbnRVc2VyLm5hbWUsXHJcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IGN1cnJlbnRVc2VyLm9yZ2FuaXNhdGlvbl9pZCxcclxuICAgICAgICAgIF9pZDogdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLl9pZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHRlc3RQbGFuQ2F0ZWdvcnkgPVxyXG4gICAgICAgICAgdHlwZW9mIHJlcz8udGVzdHBsYW5fY2F0ZWdvcnlfaWQgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgID8gW11cclxuICAgICAgICAgICAgOiByZXM/LnRlc3RwbGFuX2NhdGVnb3J5X2lkO1xyXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkQXVkaXRDYXRlZ29yeUlkID0gcmVzPy5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzPy5jYXRlZ29yeV9pZFxyXG4gICAgICAgICAgPyBbcmVzPy5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzPy5jYXRlZ29yeV9pZF1cclxuICAgICAgICAgIDogW107XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJEZXRhaWxzID0gT2JqZWN0LmtleXMocmVzPy5yZXZpZXdlcl9hcnIpO1xyXG4gICAgICAgIHRoaXMuaGFzUmV2aWV3ZXIgPSByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDA7XHJcbiAgICAgICAgdGhpcy5hc3NpZ25lZVJhZGlvU2VsZWN0ID1cclxuICAgICAgICAgIHJlcz8uYXNzaWduZWRfdG9fbWVtYmVyX2lkPy5sZW5ndGggPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRW50cnVzdCA9IHJlcy5pc0dyb3VwQXNzaWduVG8gPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgbGV0IGxpbmthZ2UgPSByZXM/LmxpbmtlZFByb2dyYW1EZXRhaWxzO1xyXG4gICAgICAgIGxpbmthZ2UucHVzaChyZXM/LnByb2dyYW1EZXRhaWxzKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSA9IHtcclxuICAgICAgICAgIGFzc2lnbm9yczoge1xyXG4gICAgICAgICAgICBlbmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBsaXN0OlxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0TGlzdCh0aGlzLmFzc2lnbm9yc0xpc3QsIFtyZXMubWVtYmVyX2lkXSwgJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgICAgICAgICA/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWdub3JzTGlzdCwgW3Jlcy5tZW1iZXJfaWRdLCAnbWVtYmVyX2lkJylcclxuICAgICAgICAgICAgICAgIDogW2N1cnJlbnRzVWVySW5mb10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHk6IHtcclxuICAgICAgICAgICAgbmFtZTogcmVzPy5yZXBvcnRfbmFtZSxcclxuICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcz8ua2V5X2NvbXBsaWFuY2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYXNzaWduZWVzOiB7XHJcbiAgICAgICAgICAgIHdob0NhbkNvbXBsZXRlOiByZXMuaXNHcm91cEFzc2lnblRvID8gJ0FOWV9PTkUnIDogJ0FMTCcsXHJcbiAgICAgICAgICAgIGxpc3Q6XHJcbiAgICAgICAgICAgICAgcmVzLmFzc2lnbmVkX3RvX21lbWJlcl9pZD8ubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICBbTnVtYmVyKHJlcy5hc3NpZ25lZF90byldLFxyXG4gICAgICAgICAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5hc3NpZ25lZF90b19tZW1iZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmcmVxdWVuY3k6IHJlcz8uZnJlcXVlbmN5X2RldGFpbHMsXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzPy5yZW1hcmtzLFxyXG4gICAgICAgICAgb2JqZWN0aXZlOiByZXM/Lm9iamVjdGl2ZSxcclxuICAgICAgICAgIHJjOiB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcclxuICAgICAgICAgICAgW051bWJlcihyZXM/LnJjX2lkKV0sXHJcbiAgICAgICAgICAgICdyY19pZCdcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlclR5cGU6XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiYgcmVzPy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGVcclxuICAgICAgICAgICAgICA/IHBhcnNlSW50KHJlcz8ucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlKVxyXG4gICAgICAgICAgICAgIDogMCxcclxuICAgICAgICAgIGNhdGVnb3J5OiByZXM/LnByb2dyYW1fY2F0X2lkcz8ubGVuZ3RoXHJcbiAgICAgICAgICAgID8gcmVzPy5jYXRlZ29yeV9pZHNfYXJyYXkuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGVsZTogYW55KSA9PiAhcmVzLnByb2dyYW1fY2F0X2lkcz8uaW5jbHVkZXMoZWxlKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiByZXM/LmNhdGVnb3J5X2lkc19hcnJheSxcclxuICAgICAgICAgIHByb2dyYW1fc2VsZWN0ZWRfaWRzOiByZXM/LmNhdGVnb3J5X2lkLnNwbGl0KCcsJykgPz8gW10sXHJcbiAgICAgICAgICBjYXRlZ29yeV9pZDogcmVzPy5jYXRlZ29yeV9pZCA/PyAnJyxcclxuXHJcbiAgICAgICAgICBsaW5rZWRQcm9ncmFtOiBsaW5rYWdlID8/IHJlcz8ubGlua2VkUHJvZ3JhbURldGFpbHMsXHJcbiAgICAgICAgICBwcm9ncmFtOiByZXM/LnByb2dyYW1EZXRhaWxzPy5jYXRlZ29yeV9pZFxyXG4gICAgICAgICAgICA/IFtyZXM/LnByb2dyYW1EZXRhaWxzXVxyXG4gICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgY2hlY2twb2ludEluc3RydWN0aW9uOiByZXM/LmNoZWNrcG9pbnRfZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICBjdXN0b21UYWdzOiByZXM/LmN1c3RvbV90YWdzID8gSlNPTi5wYXJzZShyZXM/LmN1c3RvbV90YWdzKSA6ICcnLFxyXG4gICAgICAgICAgY2hlY2twb2ludHM6IHJlcz8uY2hlY2twb2ludF9kZXRhaWxzXHJcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShyZXM/LmNoZWNrcG9pbnRfZGV0YWlscylcclxuICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgIHJldmlld2Vyczoge1xyXG4gICAgICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XHJcbiAgICAgICAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZSA9PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xyXG4gICAgICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czpcclxuICAgICAgICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2FmdGVyX2RheXMgOiAyLFxyXG4gICAgICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6XHJcbiAgICAgICAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19mYWlsZWRfYWZ0ZXJfZGF5cyA6IDIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFjY2VwdGVkRGF0YTpcclxuICAgICAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgID8gcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8ucmV2aWV3ZXJzXHJcbiAgICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICBsaXN0OlxyXG4gICAgICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNldFJldmlld2VyUGF5bG9hZChcclxuICAgICAgICAgICAgICAgICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgJ29iamVjdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICBvdmVyc2VlcnM6IHtcclxuICAgICAgICAgICAgbGlzdDogcmVzPy5jY19lbWFpbFxyXG4gICAgICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXHJcbiAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcz8uY2NfZW1haWwpLm1hcChOdW1iZXIpLFxyXG4gICAgICAgICAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgbm90aWZ5TGlzdDogcmVzPy5mYWlsdXJlX2NjX2VtYWlsXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzPy5mYWlsdXJlX2NjX2VtYWlsKS5tYXAoTnVtYmVyKSxcclxuICAgICAgICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZm9ybWF0QW5kRXZpZGVuY2U6IHtcclxuICAgICAgICAgICAgZm9ybWF0UmVxdWlyZWQ6XHJcbiAgICAgICAgICAgICAgcmVzPy5yZXBvcnRfZm9ybWF0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgcmVzPy5saW5rX2Zvcl9kZXRhaWxzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICAgIDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZvcm1hdEZpbGVzOiByZXM/LnJlcG9ydF9mb3JtYXQsXHJcbiAgICAgICAgICAgIGZvcm1hdExpbmtzOiByZXM/LmxpbmtfZm9yX2RldGFpbHMsXHJcbiAgICAgICAgICAgIGV2aWRlbmNlUmVxdWlyZWQ6IHJlcz8ucmVwb3J0X3VwbG9hZF9mbGFnID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGFzc3VyYW5jZUxpc3Q6IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yaWVzTGlzdCxcclxuICAgICAgICAgICAgdGVzdFBsYW5DYXRlZ29yeSxcclxuICAgICAgICAgICAgJ2NhdGVnb3J5X2lkJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHJlcXVpcmVzQXVkaXRMaXN0OiB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMuYXNzdXJhbmNlUmVxdWlyZXNBdWRpdExpc3QsXHJcbiAgICAgICAgICAgIHJlcXVpcmVkQXVkaXRDYXRlZ29yeUlkLFxyXG4gICAgICAgICAgICAnY2F0ZWdvcnlfaWQnXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgcmlza0NsYXNzOiByZXM/LnJpc2tfY2xhc3MsXHJcbiAgICAgICAgICByaXNrTWF0cml4OiByZXM/LnJpc2tfbWF0cml4X2RhdGEsXHJcbiAgICAgICAgICBzZWxlY3RlZEdSQ09iamVjdHM6IHJlcz8ubGlua2VkR3JjRGV0YWlscyA/PyBbXSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChyZXM/LmxpbmtlZEdyY0RldGFpbHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlQXNzaWduZWVEYXRhKHJlcyk7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3ZlcnNlZXJEYXRhKHJlcyk7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUmV2aWV3ZXJEYXRhKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID1cclxuICAgICAgICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiYgcmVzPy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGVcclxuICAgICAgICAgICAgPyBwYXJzZUludChyZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSlcclxuICAgICAgICAgICAgOiAwO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSA9IHJlcz8ucHJvZ3JhbURldGFpbHM/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICA/IHJlcy5wcm9ncmFtRGV0YWlsc1xyXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/Ll9pZCAmJlxyXG4gICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZ2V0TGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0odGhpcy5zZWxlY3RlZFByb2dyYW0/Ll9pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nID0gcmVzLm5vdGlmaWNhdGlvbl9wZW5kaW5nO1xyXG4gICAgICAgIGlmICh0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZykge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zWzFdLmJ1dHRvblRleHQgPSAnVmlldyBSZXNwb25zaWJpbGl0aWVzIGluIFF1ZXVlJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zWzFdLmJ1dHRvblRleHQgPSAnVmlldyBSZXNwb25zaWJpbGl0aWVzJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gNX4wfjB+MCB0aGlzIGlzIGZvciBvdGhlciBmcmVxdWVuY3lcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByZXMuZnJlcXVlbmN5X2RldGFpbHMgIT09ICcnICYmXHJcbiAgICAgICAgICByZXMuZnJlcXVlbmN5X2RldGFpbHMgIT09ICc1fjB+MH4wJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihyZXMpO1xyXG4gICAgICAgICAgdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihyZXMpO1xyXG4gICAgICAgICAgcmVzLnBsYWNlaG9sZGVyID0gdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlcjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc0VudHJ1c3QgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XHJcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlUmFkaW9TZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgICAgICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICAgICghdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgfHxcclxuICAgICAgICAgICAgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcy5saXN0Py5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcykpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmlzRW50cnVzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcclxuICAgICAgICAgIHRoaXMuYXNzaWduZWVSYWRpb1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmVuYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICAgICAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL1xyXG4gICAgICAgIGlmIChyZXMuZnJlcXVlbmN5X2RldGFpbHMuc3BsaXQoJ34nKVswXSAhPT0gNikge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzPy5yY19pZCA+IDApIHtcclxuICAgICAgICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXHJcbiAgICAgICAgICByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyQXJyPy5sZW5ndGggJiZcclxuICAgICAgICAgIHJlcz8ucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICAgICByZXMucmVzcG9uc2liaWxpdHlDZW50ZXJBcnIsXHJcbiAgICAgICAgICAgICdyY19pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnJjU2VsZWN0ZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcz8uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscykge1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZUFzc3VyYW5jZUxpc3QocmVzPy5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IDAsXHJcbiAgICAgICAgICAgIHNhbXBsZTogMCxcclxuICAgICAgICAgICAgcGVyY2VudGFnZTogMCxcclxuICAgICAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm46ICcnLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QXNzZXNzbWVudERldGFpbHMocmVzLmFzc2Vzc21lbnQsIHJlcy5xdWVzdGlvbm5haXJlX3R5cGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cykge1xyXG4gICAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTJyk7XHJcbiAgICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNBc3Nlc3NtZW50RGlzYWJsZWQuZW1pdCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuICAgICAgICB0aGlzLmdldEVkaXRNb3JlT3B0aW9ucyhyZXMpO1xyXG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnLCB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGlkcz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsaXN0XHJcbiAgICAgID8ubWFwKChlbGUpID0+IHtcclxuICAgICAgICBpZiAoZWxlW2tleV0pIHtcclxuICAgICAgICAgIHJldHVybiBlbGVba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoKGVsZSkgPT4gZWxlKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlUHJvZ3JhbUFzc2lnbmVlR3JvdXAoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LFxyXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgYWxsSWRzID0gW1xyXG4gICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxyXG4gICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cHMgPSB0aGlzLmdyb3VwQXNzaWduZWVMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoYXNzaWduZWVHcm91cHM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IGFzc2lnbmVlR3JvdXBzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlR3JvdXBzID0gdGhpcy5ncm91cEFzc2lnbmVlTGlzdD8uZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICBlbGVtZW50Py5ncm91cF9pZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGFzc2lnbmVlR3JvdXBzPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBhc3NpZ25lZUdyb3VwcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvcHVsYXRlUHJvZ3JhbU92ZXJzZWVyR3JvdXAoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzXHJcbiAgICAgICAgPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwc1xyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXHJcbiAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhbGxEZWZhdWx0Q0NHcm91cElkcyA9IFtcclxuICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcclxuICAgICAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGFsbERlZmF1bHRDQ0dyb3VwSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IG5vdGlmeUxpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0LFxyXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDRmFpbHVyZUdyb3VwSWRzID0gW1xyXG4gICAgICAgICAgLi4ubmV3IFNldChub3RpZnlMaXN0SWRzKSxcclxuICAgICAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHNcclxuICAgICAgICAgICksXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgIGFsbERlZmF1bHRDQ0ZhaWx1cmVHcm91cElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAob3ZlcnNlZXJzQ0NHcm91cD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IG92ZXJzZWVyc0NDR3JvdXA7XHJcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLmxpc3QgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID1cclxuICAgICAgICAgICAgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXA7XHJcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICBlbGVtZW50Py5ncm91cF9pZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgIGVsZW1lbnQ/Lmdyb3VwX2lkXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0dyb3VwPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0ID0gb3ZlcnNlZXJzQ0NHcm91cDtcclxuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXAubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCA9XHJcbiAgICAgICAgICAgIG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwO1xyXG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVQcm9ncmFtUmV2aWV3ZXJHcm91cCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0LFxyXG4gICAgICAgICdncm91cF9pZCdcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgYWxsSWRzID0gW1xyXG4gICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcclxuICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXT8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHNcclxuICAgICAgICApLFxyXG4gICAgICBdO1xyXG4gICAgICBjb25zdCByZXZpZXdlcnNHcm91cCA9IHRoaXMuZ3JvdXBSZXZpZXdlckxpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcclxuICAgICAgKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHJldmlld2Vyc0dyb3VwPy5sZW5ndGggfHxcclxuICAgICAgICAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IHJldmlld2Vyc0dyb3VwO1xyXG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVPdmVyc2VlckRhdGEocmVzOiBhbnkpIHtcclxuICAgIGxldCBvdmVyc2VlclVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xyXG4gICAgbGV0IG92ZXJzZWVyVXNlck5vdGlmeUxpc3Q6IG51bWJlcltdID0gW107XHJcbiAgICBsZXQgb3ZlcnNlZXJFbXBsb3llZXNMaXN0ID0gcmVzPy5jY19lbWFpbFxyXG4gICAgICA/IE9iamVjdC5rZXlzKHJlcz8uY2NfZW1haWwpLm1hcChOdW1iZXIpXHJcbiAgICAgIDogW107XHJcbiAgICBvdmVyc2VlclVzZXJMaXN0ID1cclxuICAgICAgb3ZlcnNlZXJFbXBsb3llZXNMaXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5jY0VtYWlsR3JvdXBJZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IG92ZXJzZWVyRW1wbG95ZWVzTGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XHJcbiAgICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5jY0VtYWlsRW1wSWRzPy5pbmNsdWRlcyhlbXBsb3llZUlkcylcclxuICAgICAgICAgIClcclxuICAgICAgICA6IFsuLi5vdmVyc2VlckVtcGxveWVlc0xpc3RdO1xyXG4gICAgbGV0IG92ZXJzZWVyRW1wbG95ZWVOb3RpZnlMaXN0ID0gcmVzPy5mYWlsdXJlX2NjX2VtYWlsXHJcbiAgICAgID8gT2JqZWN0LmtleXMocmVzPy5mYWlsdXJlX2NjX2VtYWlsKS5tYXAoTnVtYmVyKVxyXG4gICAgICA6IFtdO1xyXG4gICAgb3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCA9XHJcbiAgICAgIG92ZXJzZWVyRW1wbG95ZWVOb3RpZnlMaXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyBvdmVyc2VlckVtcGxveWVlTm90aWZ5TGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XHJcbiAgICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5mYWlsdXJlQ0NFbWFpbEVtcElkcz8uaW5jbHVkZXMoZW1wbG95ZWVJZHMpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgOiBbLi4ub3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3RdO1xyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydvdmVyc2VlcnMnXSA9IHtcclxuICAgICAgbGlzdDogcmVzPy5jY19lbWFpbFxyXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJzTGlzdCwgb3ZlcnNlZXJVc2VyTGlzdCwgJ2VtcGxveWVlX2lkJylcclxuICAgICAgICA6IFtdLFxyXG4gICAgICBub3RpZnlMaXN0OiByZXM/LmZhaWx1cmVfY2NfZW1haWxcclxuICAgICAgICA/IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgICAgICBvdmVyc2VlclVzZXJOb3RpZnlMaXN0LFxyXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ292ZXJzZWVyc0dyb3VwcyddID0ge1xyXG4gICAgICBsaXN0OiByZXM/LnVzZXJHcm91cElkcz8uY2NFbWFpbEdyb3VwSWRzXHJcbiAgICAgICAgPyB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXHJcbiAgICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5jY0VtYWlsR3JvdXBJZHMsXHJcbiAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgIClcclxuICAgICAgICA6IFtdLFxyXG4gICAgICBub3RpZnlMaXN0OiByZXM/LnVzZXJHcm91cElkcz8uZmFpbHVyZUNDRW1haWxHcm91cElkc1xyXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxyXG4gICAgICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uZmFpbHVyZUNDRW1haWxHcm91cElkcyxcclxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVSZXZpZXdlckRhdGEocmVzOiBhbnkpIHtcclxuICAgIGNvbnN0IHJldmlld2VyRGV0YWlscyA9IE9iamVjdC5rZXlzKHJlcz8ucmV2aWV3ZXJfYXJyKTtcclxuICAgIHRoaXMuaGFzUmV2aWV3ZXIgPSByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDA7XHJcbiAgICBjb25zdCBncm91cFJldmlld2VyRGV0YWlscyA9IHJlcz8udXNlckdyb3VwSWRzPy5yZXZpZXdlckdyb3VwSWRzPy5sZW5ndGhcclxuICAgICAgPyBPYmplY3QuYXNzaWduKHJlcz8udXNlckdyb3VwSWRzPy5yZXZpZXdlckdyb3VwSWRzKVxyXG4gICAgICA6IFtdO1xyXG4gICAgbGV0IHJldmlld2VyX3VzZXJzOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV2aWV3ZXJfdXNlcnMgPVxyXG4gICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2Vycy5maWx0ZXIoKG1lbWJlcklkOiBhbnkpID0+XHJcbiAgICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5yZXZpZXdlcklkcz8uaW5jbHVkZXMobWVtYmVySWQ/Lm1lbWJlcl9pZClcclxuICAgICAgICAgIClcclxuICAgICAgICA6IHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2VycztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydyZXZpZXdlcnMnXSA9IHtcclxuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OlxyXG4gICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnR5cGUgPT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcclxuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6XHJcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19hZnRlcl9kYXlzIDogMixcclxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOlxyXG4gICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmVzPy5yZXZpZXdfZmFpbGVkX2FmdGVyX2RheXMgOiAyLFxyXG4gICAgICB9LFxyXG4gICAgICBhY2NlcHRlZERhdGE6IHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJldmlld2VyX3VzZXJzIDogW10sXHJcbiAgICAgIGxpc3Q6XHJcbiAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuc2V0UmV2aWV3ZXJQYXlsb2FkKFxyXG4gICAgICAgICAgICAgIHJldmlld2VyX3VzZXJzLFxyXG4gICAgICAgICAgICAgICdvYmplY3QnLFxyXG4gICAgICAgICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnR5cGVcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnZ3JvdXBSZXZpZXdlcnMnXSA9IHtcclxuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OlxyXG4gICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnR5cGUgPT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcclxuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6XHJcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19hZnRlcl9kYXlzIDogMixcclxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOlxyXG4gICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmVzPy5yZXZpZXdfZmFpbGVkX2FmdGVyX2RheXMgOiAyLFxyXG4gICAgICB9LFxyXG4gICAgICBsaXN0OlxyXG4gICAgICAgIGdyb3VwUmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLk9yZ0dyb3VwLCBncm91cFJldmlld2VyRGV0YWlscywgJ2dyb3VwX2lkJylcclxuICAgICAgICAgIDogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVBc3NpZ25lZURhdGEocmVzOiBhbnkpIHtcclxuICAgIGxldCBBc3NpZ25lZUFueVVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xyXG4gICAgbGV0IEFzc2lnbmVlQWxsVXNlckxpc3Q6IG51bWJlcltdID0gW107XHJcbiAgICBsZXQgYXNzaWduZWVBbnlPbmVMaXN0ID1cclxuICAgICAgcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWQgJiYgdGhpcy5pc0VudHJ1c3RcclxuICAgICAgICA/IHJlcz8uYXNzaWduZWRfdG9fbWVtYmVyX2lkXHJcbiAgICAgICAgOiBbXTtcclxuICAgIEFzc2lnbmVlQW55VXNlckxpc3QgPVxyXG4gICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgID8gYXNzaWduZWVBbnlPbmVMaXN0LmZpbHRlcigoZW1wbG95ZWVJZHM6IG51bWJlcikgPT5cclxuICAgICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmFzc2lnbmVlQW55b25lSWRzPy5pbmNsdWRlcyhlbXBsb3llZUlkcylcclxuICAgICAgICAgIClcclxuICAgICAgICA6IFsuLi5hc3NpZ25lZUFueU9uZUxpc3RdO1xyXG5cclxuICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPVxyXG4gICAgICByZXM/LmFzc2lnbmVkX3RvICYmICF0aGlzLmlzRW50cnVzdCA/IHJlcz8uYXNzaWduZWRfdG8gOiBbXTtcclxuICAgIGNvbnN0IGFzc2lnbmVkVG9Vc2VyRGV0YWlscyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxyXG4gICAgICBbTnVtYmVyKHJlcz8uYXNzaWduZWRfdG8pXSxcclxuICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgKTtcclxuICAgIGlmIChhc3NpZ25lZFRvVXNlckRldGFpbHM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBtZW1iZXJfaWQgPSBhc3NpZ25lZFRvVXNlckRldGFpbHNbMF0/Lm15X21lbWJlcl9pZDtcclxuICAgICAgaWYgKHJlcz8uZXhpc3RpbmdVc2VySWRzPy5hc3NpZ25lZUFsbElkcz8uaW5jbHVkZXMobWVtYmVyX2lkKSkge1xyXG4gICAgICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPSByZXM/LmFzc2lnbmVkX3RvO1xyXG4gICAgICAgIHJlcy51c2VyR3JvdXBJZHNbJ2Fzc2lnbmVlQWxsR3JvdXBJZHMnXSA9IFtdO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgQXNzaWduZWVBbGxVc2VyTGlzdCA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnYXNzaWduZWVzJ10gPSB7XHJcbiAgICAgIHdob0NhbkNvbXBsZXRlOiByZXMuaXNHcm91cEFzc2lnblRvID8gJ0FOWV9PTkUnIDogJ0FMTCcsXHJcbiAgICAgIGxpc3Q6XHJcbiAgICAgICAgcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWQ/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICAgICAgW051bWJlcihBc3NpZ25lZUFsbFVzZXJMaXN0KV0sXHJcbiAgICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICA6IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICAgICAgQXNzaWduZWVBbnlVc2VyTGlzdCxcclxuICAgICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICApLFxyXG4gICAgfTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhc3NpZ25lZUdyb3VwcyddID0ge1xyXG4gICAgICB3aG9DYW5Db21wbGV0ZTogcmVzPy5pc0dyb3VwQXNzaWduVG8gPyAnQU5ZX09ORScgOiAnQUxMJyxcclxuICAgICAgbGlzdDpcclxuICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcz8ubGVuZ3RoID09IDBcclxuICAgICAgICAgID8gcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQWxsR3JvdXBJZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgPyB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxyXG4gICAgICAgICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQWxsR3JvdXBJZHMsXHJcbiAgICAgICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IFtdXHJcbiAgICAgICAgICA6IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxyXG4gICAgICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFueW9uZUdyb3VwSWRzLFxyXG4gICAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgICAgKSxcclxuICAgIH07XHJcbiAgICB0aGlzLmFsbEdyb3VwQXNzaWduZWUgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgIXRoaXMuaXNFbnRydXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdGhpcyBmdW5jdGlvbiBpcyBmb3IgZ2V0dGluZyB0aGUgdXNlcnMgZGF0YSBiYXNlZCBvbiBtZW1iZXJfaWQgb2YgdXNlcnMgb2Ygc2VsZWN0ZWQgVXNlciBHcm91cFxyXG4gICAqIEBwYXJhbSB1c2VybGlzdCBjb250YWlucyB1c2VycyBkYXRhXHJcbiAgICogQHBhcmFtIHNlbGVjdGVkZ3JvdXBzIGNvbnRhaW5zIHNlbGVjdGVkIFVzZXIgR3JvdXAgZGF0YVxyXG4gICAqIEByZXR1cm5zIHVzZXIgZGF0YSBvZiBTZWxlY3RlZCB1c2VyIGdyb3VwLlxyXG4gICAqL1xyXG4gIGdldEdyb3Vwc1VzZXJFbXBsb3llZXNJZCh1c2VyTGlzdDogYW55LCBzZWxlY3RlZEdyb3VwczogYW55KSB7XHJcbiAgICBsZXQgZ3JvdXBNZW1iZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGdyb3VwVXNlckVtcGxveWVlOiBhbnkgPSBbXTtcclxuICAgIHNlbGVjdGVkR3JvdXBzPy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGdyb3VwTWVtYmVySWRzID0gWy4uLm5ldyBTZXQoWy4uLmdyb3VwTWVtYmVySWRzLCAuLi5ncm91cD8ubWVtYmVyX2lkc10pXTtcclxuICAgIH0pO1xyXG4gICAgdXNlckxpc3Q/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChncm91cE1lbWJlcklkcz8uaW5jbHVkZXMoZWxlPy5teV9tZW1iZXJfaWQpKSB7XHJcbiAgICAgICAgZ3JvdXBVc2VyRW1wbG95ZWUucHVzaChlbGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBncm91cFVzZXJFbXBsb3llZTtcclxuICB9XHJcblxyXG4gIHNldFJldmlld2VyUGF5bG9hZChcclxuICAgIGlkczogYW55W10sXHJcbiAgICB0eXBlOiBzdHJpbmcsXHJcbiAgICBhY2NlcHRlZERhdGE/OiBBcnJheTxhbnk+LFxyXG4gICAgcmV2aWV3ZXJUeXBlPzogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgY29uc3QgaWRPYmpBcnJheSA9IHRoaXMucmV0dXJuSWRzKGlkcywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICByZXR1cm4gdGhpcy5zZXRMaXN0KHRoaXMuYWxsVXNlcnNMaXN0LCBpZE9iakFycmF5LCAnbXlfbWVtYmVyX2lkJyk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xyXG4gICAgICBjb25zdCBwYXlMb2FkOiBhbnkgPSBbXTtcclxuICAgICAgY29uc3QgaWRzTGlzdCA9IHRoaXMucmV0dXJuSWRzKGlkcywgJ215X21lbWJlcl9pZCcpO1xyXG4gICAgICBpZHNMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xyXG4gICAgICAgIGlmICgoYWNjZXB0ZWREYXRhID8/IFtdKT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaW5kZXggPVxyXG4gICAgICAgICAgICBhY2NlcHRlZERhdGE/LmZpbmRJbmRleCgoZWxlKSA9PiBlbGUubWVtYmVyX2lkID09PSBlbGVtZW50KSA/PyAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFjY2VwdFN0YXR1cyA9XHJcbiAgICAgICAgICBpbmRleCA+IC0xICYmIGFjY2VwdGVkRGF0YSA/IGFjY2VwdGVkRGF0YVtpbmRleF0ucmV2aWV3ZXJfYWNjZXB0IDogMDtcclxuICAgICAgICBpZiAoYWNjZXB0U3RhdHVzID09PSAwICYmIHJldmlld2VyVHlwZSA9PT0gJ0FOWU9ORScpIHtcclxuICAgICAgICAgIGFjY2VwdFN0YXR1cyA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBheUxvYWQucHVzaCh7IG1lbWJlcl9pZDogZWxlbWVudCwgcmV2aWV3ZXJfYWNjZXB0OiBhY2NlcHRTdGF0dXMgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcGF5TG9hZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJjTGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLmFzc2lnbmVlc0xpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuZnJhbWV3b3JrRGV0YWlscz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuYXNzaWduRnJvbUZyYW1ld29yayh0aGlzLmZyYW1ld29ya0RldGFpbHNbMF0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmdldEVkaXRSZXNwb25zaWJpbGl0eURldGFpbHModGhpcy5yZXNwb25zaWJpbGl0eUlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvZ3JhbSkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbS5wdXNoKHRoaXMuc2VsZWN0ZWRQcm9ncmFtKTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1fc2VsZWN0ZWRfaWRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtLmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY2F0ZWdvcnlfaWQ/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZGVmYXVsdF9hc3NpZ25lZV90eXBlID09ICdBTllPTkUnXHJcbiAgICAgICAgICAgICAgICA/ICdBTllfT05FJ1xyXG4gICAgICAgICAgICAgICAgOiAnQUxMJztcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmRlZmF1bHRfcmV2aWV3ZXJzX3R5cGUgPT0gJ1NFUVVFTlRJQUwnXHJcbiAgICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPSB0aGlzXHJcbiAgICAgICAgICAgICAgLnNlbGVjdGVkUHJvZ3JhbT8uZXZpZGVuY2VfdXBsb2FkX2ZsYWdcclxuICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY3VzdG9tX3RhZ3NcclxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRQcm9ncmFtLmN1c3RvbV90YWdzKVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3MuZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFnRGF0YSA9IEpTT04ucGFyc2UodGFnKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvbnN0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5QUk9HUkFNID0gdHJ1ZTtcclxuICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdQUk9HUkFNJyk7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZyAmJlxyXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdGT1JNQVRFX0VWSURFTkNFJyk7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5faWQpO1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnYXNzaWdub3JzJzpcclxuICAgICAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3dob20nKSB7XHJcbiAgICAgICAgICB0aGlzLmludmFsaWRUeXBlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0LFxyXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSxcclxuICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxyXG4gICAgICAgIGlmICh0aGlzLmludmFsaWRUeXBlID09PSAnd2hvJykge1xyXG4gICAgICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAhdGhpcy5pc0VudHJ1c3QgJiZcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxyXG4gICAgICAgICAgICBbc2VsZWN0ZWRJdGVtcy5lbXBsb3llZV9pZF0sXHJcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlR3JvdXBBc3NpZ25lZURhdGEoc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPiAwKTtcclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhdWRpdF9jYXRlZ29yeV9kZXRhaWxzJ11bJ2NhdGVnb3J5X2lkJ10gPSAwO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnLCB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiIH0pO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICBzZWxlY3RlZEl0ZW1zLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFnID1cclxuICAgICAgICAgICAgZWxlbWVudC5jdXN0b21fdGFncyAhPT0gJycgJiZcclxuICAgICAgICAgICAgZWxlbWVudC5jdXN0b21fdGFncyAhPT0gJ251bGwnICYmXHJcbiAgICAgICAgICAgIGVsZW1lbnQuY3VzdG9tX3RhZ3MgIT0gJ1tdJ1xyXG4gICAgICAgICAgICAgID8gSlNPTi5wYXJzZShlbGVtZW50LmN1c3RvbV90YWdzKVxyXG4gICAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBpZiAodGFnPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwcm9ncmFtJzpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saW5rZWRQcm9ncmFtID0gc2VsZWN0ZWRJdGVtcz8ubGlua2VkUHJvZ3JhbTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJlxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5wcm9ncmFtVHlwZSA9PT0gMCAmJlxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndW5jYXRlZ29yaXplZCcpIHx8XHJcbiAgICAgICAgICAgICF0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxyXG4gICAgICAgICAgKSAmJlxyXG4gICAgICAgICAgIXRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcclxuICAgICAgICAgICAgPyBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIGxldCBjYXRlZ29yeUlkID0gc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8udG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkICsgJywnICsgY2F0ZWdvcnlJZDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5X2lkID1cclxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZD8udG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1fc2VsZWN0ZWRfaWRzID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXMpLFxyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFtzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZF0pLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIGNvbnN0IHByb2dyYW1DdXN0b21UYWdzID0gc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY3VzdG9tX3RhZ3NcclxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmN1c3RvbV90YWdzKVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3M/LmZvckVhY2goKHRhZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UodGFnKSA6IHRhZztcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50KSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50KT8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmdldFByb2dyYW1EZXRhaWxzKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0uX2lkKVxyXG4gICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXHJcbiAgICAgICAgICAgID8gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMgPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBzZWxlY3RlZEl0ZW1zLnByb2dyYW1cclxuICAgICAgICAgICAgPyBbc2VsZWN0ZWRJdGVtcy5wcm9ncmFtXVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgbGV0IGNhdGVnb3J5SWQgPSBzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWQgKyAnLCcgKyBjYXRlZ29yeUlkO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMgPSBbXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcyksXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoW3NlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXSksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFnc1xyXG4gICAgICAgICAgICA/IEpTT04ucGFyc2Uoc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY3VzdG9tX3RhZ3MpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBwcm9ncmFtQ3VzdG9tVGFncz8uZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFnRGF0YSA9IHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSh0YWcpIDogdGFnO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uZGVmYXVsdF9hc3NpZ25lZV90eXBlID09ICdBTllPTkUnXHJcbiAgICAgICAgICAgICAgICA/ICdBTllfT05FJ1xyXG4gICAgICAgICAgICAgICAgOiAnQUxMJztcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSA9PSAnU0VRVUVOVElBTCdcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICEoXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICd1bmNhdGVnb3JpemVkJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/Ll9pZCAmJlxyXG4gICAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0oc2VsZWN0ZWRJdGVtcy5wcm9ncmFtLl9pZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxyXG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICAgICAgdGhpcy5zYXZlR3JvdXBSZXZpZXdlckRhdGEoc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLnJldmlld2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlcic6XHJcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVPdmVyc2VlckRhdGEoc2VsZWN0ZWRJdGVtcywgJ292ZXJzZWVyTGlzdCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlck5vdGlmeSc6XHJcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVPdmVyc2VlckRhdGEoc2VsZWN0ZWRJdGVtcywgJ292ZXJzZWVyTm90aWZ5TGlzdCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3N1cmFuY2UnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0LFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXF1aXJlc19hdWRpdCc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmFzc3VyYW5jZVJlcXVpcmVzQXVkaXRMaXN0LFxyXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXM/LmNhdGVnb3J5X2lkXSxcclxuICAgICAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhdWRpdF9jYXRlZ29yeV9kZXRhaWxzJ11bJ2NhdGVnb3J5X2lkJ10gPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcnlfaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzJzpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cyA9IHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbiA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50SW5zdHJ1Y3Rpb247XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhbGN1bGF0ZWRyaXNrJzpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3MgPSBzZWxlY3RlZEl0ZW1zPy5yaXNrQ2xhc3M7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmlza01hdHJpeCA9IHNlbGVjdGVkSXRlbXM/LnJpc2tNYXRyaXg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Zvcm1hdGVfZXZpZGVuY2UnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmlzRm9ybWF0ZVVwbG9hZGVkID8/IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZpbGVzID8/IFtdO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uaXNFdmlkZW5jZVJlcXVpcmVkID8/IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXZpZXdGcmVxdWVuY3knOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kgPSB7XHJcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IHNlbGVjdGVkSXRlbXMuY29tcGxldGVEYXlzLFxyXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogc2VsZWN0ZWRJdGVtcy5ub3RDb21wbGV0ZWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnR1JDX09CSkVDVFMnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9IHNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgcHJvZ3JhbSBpcyBzZWxlY3RlZCBhbmQgdGhlIHVzZXIgaGFzIGZ1bGwgcGVybWlzc2lvbiwgcmVmcmVzaCB0aGUgbGlzdHMgd2hpbGUgdGhlIHByb2dyYW1cclxuICAgKiBpcyBzZWxlY3RlZC4gT3RoZXJ3aXNlLCByZWZyZXNoIGFsbCBsaXN0cy5cclxuICAgKiA8L2NvZGU+XHJcbiAgICovXHJcbiAgY2FsbFJlZnJlc2hMaXN0KCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtPy5sZW5ndGggJiZcclxuICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cclxuICAgICkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKHR5cGU6IGFueSwgZXZlbnQ/OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgY29uc3QgcmNJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjLmZpbmRJbmRleChcclxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMuc3BsaWNlKHJjSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPiAwKTtcclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhdWRpdF9jYXRlZ29yeV9kZXRhaWxzJ11bJ2NhdGVnb3J5X2lkJ10gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xyXG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJywgdHlwZTogdGhpcy5zZWxlY3RlZEdSQ1RhYiB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWdub3JzJzpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XHJcbiAgICAgICAgY29uc3QgZW50cnVzdEluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0LnNwbGljZShlbnRydXN0SW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdncm91cGFzc2lnbmVlcyc6XHJcbiAgICAgICAgY29uc3QgZ3JvdXBJbmRleCA9XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXAuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdC5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3Quc3BsaWNlKHJldmlld2VySW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdncm91cFJldmlld2VyJzpcclxuICAgICAgICBjb25zdCBncm91cFJldmlld2VySW5kZXggPVxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0LmZpbmRJbmRleChcclxuICAgICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3Quc3BsaWNlKFxyXG4gICAgICAgICAgZ3JvdXBSZXZpZXdlckluZGV4LFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb3ZlcnNlZXInOlxyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVySW5kZXggPVxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdC5zcGxpY2Uob3ZlcnNlZXJJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyR3JvdXAnOlxyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXBJbmRleCA9XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0LmZpbmRJbmRleChcclxuICAgICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0LnNwbGljZShcclxuICAgICAgICAgIG92ZXJzZWVyR3JvdXBJbmRleCxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyTm90aWZ5TGlzdCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJOb3RpZnlJbmRleCA9XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgICAgKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3Quc3BsaWNlKFxyXG4gICAgICAgICAgb3ZlcnNlZXJOb3RpZnlJbmRleCxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cE5vdGlmeUluZGV4ID1cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAob3ZlcnNlZXJOOiBhbnkpID0+IG92ZXJzZWVyTi5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdC5zcGxpY2UoXHJcbiAgICAgICAgICBvdmVyc2Vlckdyb3VwTm90aWZ5SW5kZXgsXHJcbiAgICAgICAgICAxXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeSc6XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LmZpbmRJbmRleChcclxuICAgICAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5jYXRlZ29yeV9pZCA9PSBldmVudC5jYXRlZ29yeV9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IEpTT04ucGFyc2UoZXZlbnQuY3VzdG9tX3RhZ3MpO1xyXG4gICAgICAgIGlmICh0YWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhDVCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhDVCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFnID0gSlNPTi5wYXJzZShlbGVtZW50LmN1c3RvbV90YWdzKTtcclxuICAgICAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncHJvZ3JhbSc6XHJcbiAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRQcm9ncmFtT25SZW1vdmUoZXZlbnQpO1xyXG4gICAgICAgIC8vIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gW107XHJcbiAgICAgICAgLy8gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbSA9IFtdO1xyXG5cclxuICAgICAgICAvLyB0aGlzLmZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3JlcXVpcmVzX2F1ZGl0JzpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMgPSB7XHJcbiAgICAgICAgICBjYXRlZ29yeV9pZDogMCxcclxuICAgICAgICAgIHNhbXBsZTogMCxcclxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXHJcbiAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogJycsXHJcbiAgICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzdXJhbmNlJzpcclxuICAgICAgICBjb25zdCBhc3N1cmFuY2VJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKGFzc3VyYW5jZTogYW55KSA9PiBhc3N1cmFuY2UuY2F0ZWdvcnlfaWQgPT0gYXNzdXJhbmNlLmNhdGVnb3J5X2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3N1cmFuY2VMaXN0LnNwbGljZShhc3N1cmFuY2VJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnQnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzLnNwbGljZShldmVudCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2Vzc21lbnQnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSB7XHJcbiAgICAgICAgICBjYXRlZ29yeV9pZDogJycsXHJcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiAnJyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICduZXctY2hlY2twb2ludHMnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm5ld19jaGVja3BvaW50cyA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2hlY2twb2ludENvdW50ID0gMDtcclxuICAgICAgICB0aGlzLmNoZWNrcG9pbnRDb3VudFVwZGF0ZWQuZW1pdCh0aGlzLmNoZWNrcG9pbnRDb3VudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0dSQ19PQkpFQ1RTJzpcclxuICAgICAgICB0aGlzLnJlbW92ZU90aGVyR1JDT2JqZWN0cyhldmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlR3JvdXBBc3NpZ25lZURhdGEoc2VsZWN0ZWRJdGVtczogYW55KSB7XHJcbiAgICBsZXQgdXNlck9iajogYW55O1xyXG4gICAgdXNlck9iaiA9IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA/IHNlbGVjdGVkSXRlbXMgOiBzZWxlY3RlZEl0ZW1zPy51c2VycztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgIHVzZXJPYmosXHJcbiAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5PcmdHcm91cCxcclxuICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLFxyXG4gICAgICAnZ3JvdXBfaWQnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUdyb3VwUmV2aWV3ZXJEYXRhKHNlbGVjdGVkSXRlbXM6IGFueSkge1xyXG4gICAgbGV0IHVzZXJPYmo6IGFueSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRJdGVtcy51c2Vycy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICB1c2VyT2JqLnB1c2goZWxlLmVtcGxveWVlX2lkKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgIHRoaXMucmV2aWV3ZXJzTGlzdCxcclxuICAgICAgdXNlck9iaixcclxuICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgKTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzID0ge1xyXG4gICAgICBsaXN0OiBzZWxlY3RlZEl0ZW1zPy5ncm91cHM/Lmxlbmd0aCA+IDAgPyBzZWxlY3RlZEl0ZW1zPy5ncm91cHMgOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdztcclxuICB9XHJcblxyXG4gIHNhdmVPdmVyc2VlckRhdGEoc2VsZWN0ZWRJdGVtczogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdvdmVyc2Vlckxpc3QnOlxyXG4gICAgICAgIGxldCBvdmVyc2VlcnNlbGVjdGVkbGlzdCA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy51c2VycyxcclxuICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgICAgb3ZlcnNlZXJzZWxlY3RlZGxpc3QsXHJcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHNbJ2xpc3QnXSA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHM/Lmxlbmd0aCA+IDAgPyBzZWxlY3RlZEl0ZW1zPy5ncm91cHMgOiBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb3ZlcnNlZXJOb3RpZnlMaXN0JzpcclxuICAgICAgICBsZXQgb3ZlcnNlZXJzZWxlY3RlZE5vdGlmeWxpc3QgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMudXNlcnMsXHJcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICAgIG92ZXJzZWVyc2VsZWN0ZWROb3RpZnlsaXN0LFxyXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzWydub3RpZnlMaXN0J10gPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzPy5sZW5ndGggPiAwID8gc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzIDogW107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGVudHJ1c3RGcmFtZXdvcmsoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcblxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkgPSB7XHJcbiAgICAgIG5hbWU6IGV2ZW50LnJlcG9ydF9uYW1lLFxyXG4gICAgICBrZXlSZXNwb25zaWJpbGl0eTogZXZlbnQua2V5X2NvbXBsaWFuY2UgPyB0cnVlIDogZmFsc2UsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbmV3U3RhcnREYXRlID1cclxuICAgICAgZXZlbnQuc3RhcnRfZGF0ZSB8fCBldmVudC5zdGFydF9kYXRlICE9IG51bGwgfHwgZXZlbnQuc3RhcnRfZGF0ZSAhPT0gJydcclxuICAgICAgICA/IG5ldyBEYXRlKGV2ZW50LnN0YXJ0X2RhdGUgKiAxMDAwKVxyXG4gICAgICAgIDogbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IHB2dFRlbXBsYXRlID1cclxuICAgICAgZXZlbnQuZnJlcXVlbmN5X3RlbXBsYXRlICYmIGV2ZW50LmZyZXF1ZW5jeV90ZW1wbGF0ZSAhPT0gJydcclxuICAgICAgICA/IGV2ZW50LmZyZXF1ZW5jeV90ZW1wbGF0ZVxyXG4gICAgICAgIDogZXZlbnQuZnJlcXVlbmN5O1xyXG4gICAgY29uc3QgZnJlcXVlbmN5RGV0YWlsc09iamVjdDogYW55ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxyXG4gICAgICBwdnRUZW1wbGF0ZSxcclxuICAgICAgbmV3U3RhcnREYXRlLmdldERhdGUoKSxcclxuICAgICAgbmV3U3RhcnREYXRlLmdldE1vbnRoKCksXHJcbiAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpXHJcbiAgICApO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X2RldGFpbHMgPSBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0Py5wYXR0ZXJuO1xyXG4gICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xyXG4gICAgZXZlbnQucmVtaW5kZXJfYmVmb3JlX2RheXMgPSBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGVcclxuICAgICAgPyBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGVcclxuICAgICAgOiAyO1xyXG4gICAgZXZlbnQuZmFpbGVkX2FmdGVyX2RheXMgPSBldmVudC5tYXJrX2ZhaWxlZF9hZnRlclxyXG4gICAgICA/IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXHJcbiAgICAgIDogMjtcclxuICAgIGV2ZW50LmxpZmVjeWNsZV9kZXRhaWxzID0gJzAwMDAtMDAtMDB+fjAnO1xyXG4gICAgZXZlbnQuc3RhcnRfb2ZfZGF5X3V0YyA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5mcmFtZXdvcmtTdGFydERhdGUoZXZlbnQpO1xyXG4gICAgZXZlbnQub25fY29tcGxldGlvbl9vZiA9IFtdO1xyXG4gICAgZXZlbnQuZG9tX3V0YyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyA9XHJcbiAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcclxuXHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPVxyXG4gICAgICBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPyBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgOiAyO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZmFpbGVkX2FmdGVyX2RheXMgPSBldmVudC5tYXJrX2ZhaWxlZF9hZnRlclxyXG4gICAgICA/IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXHJcbiAgICAgIDogMjtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmxpZmVjeWNsZURldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydF9vZl9kYXlfdXRjID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlXHJcbiAgICAgIC5mcmFtZXdvcmtTdGFydERhdGUoZXZlbnQpXHJcbiAgICAgIC50b0ZpeGVkKClcclxuICAgICAgLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vbl9jb21wbGV0aW9uX29mID0gW107XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kb21fdXRjID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9XHJcbiAgICAgIGV2ZW50LnJlbWFya3MudHJpbSgpICE9ICcnID8gZXZlbnQucmVtYXJrcyA6ICcnO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyA9XHJcbiAgICAgIGV2ZW50LmN1c3RvbV90YWdzICYmXHJcbiAgICAgIGV2ZW50LmN1c3RvbV90YWdzICE9PSBudWxsICYmXHJcbiAgICAgIGV2ZW50LmN1c3RvbV90YWdzICE9PSAnbnVsbCcgJiZcclxuICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09ICcnXHJcbiAgICAgICAgPyBKU09OLnBhcnNlKGV2ZW50LmN1c3RvbV90YWdzKVxyXG4gICAgICAgIDogW107XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgPSBldmVudC5jb250cm9sX29iamVjdGl2ZVxyXG4gICAgICA/IGV2ZW50LmNvbnRyb2xfb2JqZWN0aXZlXHJcbiAgICAgIDogJyc7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5hbGxDYXRlZ29yaWVzLFxyXG4gICAgICBbZXZlbnQuY2F0ZWdvcnlfaWRdLFxyXG4gICAgICAnY2F0ZWdvcnlfaWQnXHJcbiAgICApOyAvL1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXMgPSAyO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzID0gMjtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbmQoXHJcbiAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PT0gZXZlbnQuZW50aXR5X2lkXHJcbiAgICApXHJcbiAgICAgID8gW1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbmQoXHJcbiAgICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PT0gZXZlbnQuZW50aXR5X2lkXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIF1cclxuICAgICAgOiBbXTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJpc2tDbGFzcyA9IHRoaXMuaXNSaXNrRW5hYmxlID8gMSA6IDI7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcml2YXRlX2xpYnJhcnlfaWQgPSBldmVudC5yZXBvcnRfaWQ7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNsYXNzaWZpY2F0aW9uID0gdGhpcy5pc1Jpc2tFbmFibGUgPyAxIDogMjtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxyXG4gICAgICBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydERhdGUgPVxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZnJhbWV3b3JrU3RhcnREYXRlKGV2ZW50KTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlID0ge1xyXG4gICAgICBldmlkZW5jZVJlcXVpcmVkOiBldmVudC5yZXBvcnRfdXBsb2FkX2ZsYWcgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgIGZvcm1hdEZpbGVzOiBldmVudC5yZXBvcnRfZm9ybWF0LFxyXG4gICAgICBmb3JtYXRMaW5rczpcclxuICAgICAgICAhZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rIHx8IGV2ZW50LnJlcG9ydF9mb3JtYXRfbGluayA9PSAnJ1xyXG4gICAgICAgICAgPyBbXVxyXG4gICAgICAgICAgOiBbZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rXSxcclxuICAgICAgZm9ybWF0UmVxdWlyZWQ6XHJcbiAgICAgICAgZXZlbnQucmVwb3J0X2Zvcm1hdD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgIChldmVudC5yZXBvcnRfZm9ybWF0X2xpbmsgJiYgZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rICE9ICcnKVxyXG4gICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICA6IGZhbHNlLFxyXG4gICAgfTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMgPSB7XHJcbiAgICAgIGNhdGVnb3J5X2lkOiAwLFxyXG4gICAgICBzYW1wbGU6IDUsXHJcbiAgICAgIHBlcmNlbnRhZ2U6IDMwLFxyXG4gICAgICBmcmVxdWVuY3lfcGF0dGVybjogJzF+MH4zfjEnLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogREVGQVVMVF8yNEhSLFxyXG4gICAgfTtcclxuXHJcbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfVElNRTtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgIT09ICcnICYmXHJcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV9kZXRhaWxzICE9PSAnNX4wfjB+MCdcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUXzI0SFI7XHJcbiAgICBldmVudC5wbGFjZWhvbGRlciA9IHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZXZlbnQpO1xyXG4gICAgY29uc3QgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XHJcblxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSAhPT0gJycpIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09CSkVDVElWRScpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLk9CSkVDVElWRSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xyXG4gICAgdGhpcy5tb3JlT3B0aW9ucy5SSVNLX0NMQVNTSUZJQ0FUSU9OID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0FURUdPUlknKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5DQVRFR09SWSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2U/LmV2aWRlbmNlUmVxdWlyZWQgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmZvcm1hdEFuZEV2aWRlbmNlPy5mb3JtYXRSZXF1aXJlZFxyXG4gICAgKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdGT1JNQVRFX0VWSURFTkNFJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuZW50aXR5X2lkID4gMCkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XHJcbiAgICAvLyAgZXZlbnQucGxhY2Vob2xkZXJcclxuICB9XHJcblxyXG4gIGFzc2lnbkZyb21GcmFtZXdvcmsoZnJlcU9iajogYW55KSB7XHJcbiAgICBpZiAoZnJlcU9iai5kYXRhKSB7XHJcbiAgICAgIC8vIHRoaXMucmVzZXQoKTtcclxuICAgICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICAgIGNvbnN0IG5ld1N0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0OiBhbnkgPVxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChcclxuICAgICAgICAgIGZyZXFPYmouZGF0YS5mcmVxdWVuY3ksXHJcbiAgICAgICAgICBuZXdTdGFydERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgICAgbmV3U3RhcnREYXRlLmdldE1vbnRoKCksXHJcbiAgICAgICAgICBuZXdTdGFydERhdGUuZ2V0RnVsbFllYXIoKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBsZXQgZXZlbnQ6IGFueSA9IHt9O1xyXG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm47XHJcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xyXG4gICAgICBldmVudC5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IDI7XHJcbiAgICAgIGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzID0gMjtcclxuICAgICAgZXZlbnQubGlmZWN5Y2xlX2RldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XHJcbiAgICAgIGV2ZW50LnN0YXJ0X29mX2RheV91dGMgPSBEYXRlLm5vdygpIC8gMTAwMDtcclxuICAgICAgZXZlbnQub25fY29tcGxldGlvbl9vZiA9IFtdO1xyXG4gICAgICBldmVudC5kb21fdXRjID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxyXG4gICAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcclxuICAgICAgdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihldmVudCk7XHJcbiAgICAgIGV2ZW50LnBsYWNlaG9sZGVyID0gdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlcjtcclxuICAgICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUX1RJTUU7XHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudCk7XHJcblxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lID0gZnJlcU9iai5kYXRhLm5hbWUgPz8gJyc7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGZyZXFPYmouZGF0YS5vYmplY3RpdmVzID8/ICcnO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0Py5wYXR0ZXJuID8/ICcnO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydERhdGUgPSBldmVudC5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cclxuICAgICAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJhbWV3b3JrVmFsdWVzID0gZnJlcU9iai5zZWxlY3RlZEZyYW1ld29ya0RhdGEgPz8gdW5kZWZpbmVkO1xyXG4gICAgICBpZiAoZnJlcU9iaj8uZGF0YT8uZGVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9IGZyZXFPYmo/LmRhdGE/LmRlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmcmVxT2JqPy5kYXRhPy5vYmplY3RpdmVzKSB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gZnJlcU9iai5kYXRhLm9iamVjdGl2ZXMgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vcmVPcHRpb25zKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5tb3JlT3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGxpc3QgdXNlcmxpc3QgZm9yIGxpc3RpbmcgdXNlcnNcclxuICAgKiBAcmV0dXJucyBhc3NpZ24gdXNlcidzIG15X21lbWJlcl9pZCAgdG8gbWVtYmVyX2lkIGRhdGFcclxuICAgKi9cclxuICBhc3NpZ25Vc2VyTWVtYmVySWQobGlzdDogYW55KSB7XHJcbiAgICBjb25zdCB1c2VyT2JqID0gWy4uLmxpc3RdO1xyXG4gICAgdXNlck9iaj8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlcj8ubXlfbWVtYmVyX2lkO1xyXG4gICAgfSk7XHJcbiAgICBsaXN0ID0gWy4uLnVzZXJPYmpdO1xyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoQWxsTGlzdHMoKSB7XHJcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGFsbFVzZXJzSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBhc3NpZ25lZUdyb3VwSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCByZXZpZXdlcnNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBhc3NpZ25lZUlkczogYW55ID0gW107XHJcbiAgICBsZXQgZ3JvdXBSZXZpZXdlcklkczogYW55ID0gW107XHJcbiAgICBsZXQgZ3JvdXBPdmVyc2VlcklkczogYW55ID0gW107XHJcbiAgICB0aGlzLnJldmlld2VySWRzID0gW107XHJcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbXTtcclxuICAgIHRoaXMub3ZlcnNlZXJJZHMgPSBbXTtcclxuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbXTtcclxuXHJcbiAgICBjb25zdCBhbGxVc2VycyA9IGNsb25lRGVlcCh0aGlzLmFsbFVzZXJzTGlzdCk7XHJcbiAgICBjb25zdCBhbGxHcm91cHMgPSBjbG9uZURlZXAodGhpcy5PcmdHcm91cCk7XHJcbiAgICBjb25zdCBiZWhhbGZVc2VycyA9IGNsb25lRGVlcCh0aGlzLmJlaGFsZk9mVXNlcnNMaXN0KTtcclxuXHJcbiAgICBjb25zdCBhc3NpZ25vcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdCk7XHJcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCk7XHJcblxyXG4gICAgY29uc3QgYXNzaWduZWVHcm91cExpc3QgPSBjbG9uZURlZXAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFxyXG4gICAgKTtcclxuICAgIGNvbnN0IHJldmlld2VycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCk7XHJcbiAgICBjb25zdCBncm91cFJldmlld2Vyc0xpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xyXG4gICAgICA/IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QpXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCk7XHJcbiAgICBjb25zdCBncm91cE92ZXJzZWVyTGlzdCA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXHJcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QpXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSBjbG9uZURlZXAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcclxuICAgICk7XHJcbiAgICBjb25zdCBncm91cE5vdGlmeU92ZXJzZWVycyA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXHJcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QpXHJcbiAgICAgIDogW107XHJcbiAgICBhc3NpZ25vcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXIubWVtYmVyX2lkKTtcclxuICAgICAgdGhpcy5hc3NpZ25vcklkLnB1c2godXNlci5tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICAgIGFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgICAgdGhpcy5hc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdD8ubGVuZ3RoID09IDApIHtcclxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh0aGlzLm1lbWJlcklkKTtcclxuICAgICAgdGhpcy5hc3NpZ25vcklkLnB1c2godGhpcy5tZW1iZXJJZCk7XHJcbiAgICB9XHJcbiAgICBhbGxVc2Vycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIGFsbFVzZXJzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgYXNzaWduZWVHcm91cExpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgYXNzaWduZWVHcm91cElkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXZpZXdlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICByZXZpZXdlcnNJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgICB0aGlzLnJldmlld2VySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgZ3JvdXBSZXZpZXdlcnNMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGdyb3VwUmV2aWV3ZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cE92ZXJzZWVyTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xyXG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcclxuICAgIH0pO1xyXG4gICAgZ3JvdXBOb3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgZ3JvdXBPdmVyc2Vlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuICAgIG92ZXJzZWVyTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzKV07XHJcbiAgICBhbGxVc2Vyc0lkcyA9IFsuLi5uZXcgU2V0KGFsbFVzZXJzSWRzKV07XHJcbiAgICBhc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlSWRzKV07XHJcbiAgICByZXZpZXdlcnNJZHMgPSBbLi4ubmV3IFNldChyZXZpZXdlcnNJZHMpXTtcclxuICAgIG92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQob3ZlcnNlZXJJZHMpXTtcclxuICAgIHRoaXMuYXNzaWdub3JJZCA9IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWdub3JJZCldO1xyXG4gICAgdGhpcy5hc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWduZWVJZHMpXTtcclxuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnJldmlld2VySWRzKV07XHJcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQodGhpcy5vdmVyc2VlcklkcyldO1xyXG5cclxuICAgIGFzc2lnbmVlR3JvdXBJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUdyb3VwSWRzKV07XHJcbiAgICBncm91cFJldmlld2VySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBSZXZpZXdlcklkcyldO1xyXG4gICAgZ3JvdXBPdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwT3ZlcnNlZXJJZHMpXTtcclxuICAgIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIW92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSBhbGxVc2VycztcclxuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAhKFxyXG4gICAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAhKFxyXG4gICAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxyXG4gICAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5kaXNhYmxlTGlzdChcclxuICAgICAgYWxsVXNlcnMsXHJcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLFxyXG4gICAgICBhc3NpZ25lZUlkcyxcclxuICAgICAgcmV2aWV3ZXJzSWRzLFxyXG4gICAgICBvdmVyc2Vlcklkc1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICB0aGlzLmdyb3VwQXNzaWduZWVMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcclxuICAgICAgICAoZ3JvdXA6IGFueSkgPT5cclxuICAgICAgICAgICEoXHJcbiAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcclxuICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJldmlld2VyTWVtYmVySWRzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKHRoaXMuYWxsVXNlcnNMaXN0KTtcclxuICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQodGhpcy5hbGxVc2Vyc0xpc3QpO1xyXG4gICAgICB0aGlzLmdyb3VwUmV2aWV3ZXJMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcclxuICAgICAgICAoZ3JvdXA6IGFueSkgPT5cclxuICAgICAgICAgICEoXHJcbiAgICAgICAgICAgIGdyb3VwT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcclxuICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcclxuICAgICAgICAoZ3JvdXA6IGFueSkgPT5cclxuICAgICAgICAgICEoXHJcbiAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcclxuICAgICAgICAgICAgZ3JvdXBSZXZpZXdlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUxpc3QoXHJcbiAgICBhbGxVc2VyczogYW55LFxyXG4gICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSxcclxuICAgIGFzc2lnbmVlSWRzOiBhbnksXHJcbiAgICByZXZpZXdlcnNJZHM6IGFueSxcclxuICAgIG92ZXJzZWVySWRzOiBhbnlcclxuICApIHtcclxuICAgIGxldCBkaXNhYmxlQXNzaWduZWVMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxyXG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5kaXNhYmxlQXNzaWduZWVJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcclxuICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVSYWRpb0Fzc2lnbmVlID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgIGRpc2FibGVBc3NpZ25lZUxpc3QsXHJcbiAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICk7XHJcbiAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICBvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxyXG4gICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcclxuICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgKTtcclxuICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgZGlzYWJsZU92ZXJzZWVyTGlzdCxcclxuICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVJldmlld2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBsZXQgZGlzYWJsZU92ZXJzZWVyc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICBkaXNhYmxlT3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKSB7XHJcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGFzc2lnbmVlSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBhc3NpZ25lZUdyb3VwSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBncm91cFJldmlld2VySWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBncm91cE92ZXJzZWVySWRzOiBhbnkgPSBbXTtcclxuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbXTtcclxuICAgIHRoaXMuYXNzaWdub3JJZCA9IFtdO1xyXG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFtdO1xyXG4gICAgdGhpcy5hc3NpZ25lZUlkcyA9IFtdO1xyXG4gICAgY29uc3QgYmVoYWxmVXNlcnMgPSBjbG9uZURlZXAodGhpcy5iZWhhbGZPZlVzZXJzTGlzdCk7XHJcbiAgICBjb25zdCBhbGxHcm91cHMgPSBjbG9uZURlZXAodGhpcy5PcmdHcm91cCk7XHJcbiAgICBjb25zdCBhc3NpZ25vcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QpO1xyXG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QpO1xyXG4gICAgY29uc3QgYXNzaWduZWVHcm91cExpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xyXG4gICAgICA/IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QpXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCByZXZpZXdlcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdCk7XHJcbiAgICBjb25zdCBncm91cFJldmlld2Vyc0xpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xyXG4gICAgICA/IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QpXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCk7XHJcbiAgICBjb25zdCBncm91cE92ZXJzZWVyTGlzdCA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXHJcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QpXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSBjbG9uZURlZXAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcclxuICAgICk7XHJcbiAgICBjb25zdCBncm91cE5vdGlmeU92ZXJzZWVycyA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXHJcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QpXHJcbiAgICAgIDogW107XHJcbiAgICBhc3NpZ25vcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmFzc2lnbm9ySWQucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xyXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgICAgYXNzaWduZWVJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgICB0aGlzLmFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godGhpcy5tZW1iZXJJZCk7XHJcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHRoaXMubWVtYmVySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzc2lnbmVlR3JvdXBMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGFzc2lnbmVlR3JvdXBJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xyXG4gICAgfSk7XHJcbiAgICByZXZpZXdlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICByZXZpZXdlcnNJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgICB0aGlzLnJldmlld2VySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgZ3JvdXBSZXZpZXdlcnNMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGdyb3VwUmV2aWV3ZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBvdmVyc2Vlckxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBub3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cE92ZXJzZWVyTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xyXG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcclxuICAgIH0pO1xyXG4gICAgZ3JvdXBOb3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgZ3JvdXBPdmVyc2Vlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzID0gWy4uLm5ldyBTZXQoYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMpXTtcclxuICAgIGFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQoYXNzaWduZWVJZHMpXTtcclxuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xyXG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xyXG4gICAgYXNzaWduZWVHcm91cElkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlR3JvdXBJZHMpXTtcclxuICAgIGdyb3VwUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldChncm91cFJldmlld2VySWRzKV07XHJcbiAgICBncm91cE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBPdmVyc2VlcklkcyldO1xyXG4gICAgdGhpcy5hc3NpZ25vcklkID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25vcklkKV07XHJcbiAgICB0aGlzLmFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25lZUlkcyldO1xyXG4gICAgdGhpcy5yZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJJZHMpXTtcclxuICAgIHRoaXMub3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLm92ZXJzZWVySWRzKV07XHJcblxyXG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PiAhb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LmFzc2lnbmVlc0xpc3Q7XHJcbiAgICB0aGlzLnJldmlld2Vyc0xpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5yZXZpZXdlcnNMaXN0LmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAhKFxyXG4gICAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/Lm92ZXJzZWVyc0xpc3QuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgICEoXHJcbiAgICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxyXG4gICAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgdGhpcy5ncm91cEFzc2lnbmVlTGlzdCA9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMucHJvZ3JhbUdyb3VwTGlzdChcclxuICAgICAgICAgICAgICBhbGxHcm91cHMsXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAgICAgICBncm91cFJldmlld2VySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgIGdyb3VwT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgdGhpcy5yZXZpZXdlck1lbWJlcklkc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcclxuICAgICAgICB0aGlzLnByb2dyYW1QZW9wbGVMaXN0LnJldmlld2Vyc0xpc3RcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5ncm91cFJldmlld2VyTGlzdCA9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ucmV2aWV3ZXJfZ3JvdXBfaWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMucHJvZ3JhbUdyb3VwTGlzdChcclxuICAgICAgICAgICAgICBhbGxHcm91cHMsXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnJldmlld2VyX2dyb3VwX2lkc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAgICAgICBncm91cE92ZXJzZWVySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXHJcbiAgICAgICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdC5vdmVyc2VlcnNMaXN0XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3QgPVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMucHJvZ3JhbUdyb3VwTGlzdChcclxuICAgICAgICAgICAgICBhbGxHcm91cHMsXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIDogYWxsR3JvdXBzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICEoXHJcbiAgICAgICAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcclxuICAgICAgICAgICAgICAgICAgZ3JvdXBSZXZpZXdlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaXNhYmxlUHJvZ3JhbUxpc3QoXHJcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLFxyXG4gICAgICBhc3NpZ25lZUlkcyxcclxuICAgICAgcmV2aWV3ZXJzSWRzLFxyXG4gICAgICBvdmVyc2Vlcklkc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb2dyYW1Hcm91cExpc3QoYWxsR3JvdXBzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAvLyBhcmdzWzBdXHJcbiAgICBsZXQgYXNzaWduZWVQcm9ncmFtOiBhbnkgPSBbXTtcclxuICAgIGxldCBncm91cElkcyA9IGFyZ3NbMF07XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW0gJiYgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkcykge1xyXG4gICAgICBhc3NpZ25lZVByb2dyYW0gPSBhbGxHcm91cHMuZmlsdGVyKChncm91cDogYW55KSA9PlxyXG4gICAgICAgIGdyb3VwSWRzLmluY2x1ZGVzKGdyb3VwLmdyb3VwX2lkKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFzc2lnbmVlUHJvZ3JhbTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVQcm9ncmFtTGlzdChcclxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzOiBhbnksXHJcbiAgICBhc3NpZ25lZUlkczogYW55LFxyXG4gICAgcmV2aWV3ZXJzSWRzOiBhbnksXHJcbiAgICBvdmVyc2VlcklkczogYW55XHJcbiAgKSB7XHJcbiAgICBsZXQgZGlzYWJsZUFzc2lnbmVlTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LmFzc2lnbmVlc0xpc3QuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxyXG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5kaXNhYmxlQXNzaWduZWVJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcclxuICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVSYWRpb0Fzc2lnbmVlID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgIGRpc2FibGVBc3NpZ25lZUxpc3QsXHJcbiAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICk7XHJcbiAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LnJldmlld2Vyc0xpc3QuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxyXG4gICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICApO1xyXG4gICAgbGV0IGRpc2FibGVPdmVyc2Vlckxpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5vdmVyc2VlcnNMaXN0LmZpbHRlcihcclxuICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxyXG4gICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgIGRpc2FibGVPdmVyc2Vlckxpc3QsXHJcbiAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSB0aGlzLnJldmlld2VyTWVtYmVySWRzTGlzdC5maWx0ZXIoXHJcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgICBhc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgIGRpc2FibGVSZXZpZXdlckxpc3QsXHJcbiAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgKTtcclxuICAgICAgbGV0IGRpc2FibGVPdmVyc2Vlckxpc3QgPSB0aGlzLm92ZXJzZWVyc0xpc3QuZmlsdGVyKFxyXG4gICAgICAgICh1c2VyOiBhbnkpID0+XHJcbiAgICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxyXG4gICAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgZGlzYWJsZU92ZXJzZWVyTGlzdCxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGZvcm0gaXMgdmFsaWQsIHRoZW4gaWYgdGhlIG1vZGUgaXMgRURJVCwgdGhlbiBzZXQgdGhlIG9yZ2FuaXphdGlvbklkIGFuZCBtZW1iZXJJZCB0byB0aGVcclxuICAgKiBhdXRoU2VydmljZSB2YWx1ZXMsIGFuZCB0aGVuIGNhbGwgdGhlIGVudHJ1c3RSZXNwb25zaWJpbGl0eSBmdW5jdGlvbiB3aXRoIHRoZSByZXNwb25zaWJpbGl0eUZvcm0gYXNcclxuICAgKiBhIHBhcmFtZXRlci5cclxuICAgKlxyXG4gICAqIElmIHRoZSBtb2RlIGlzIG5vdCBFRElULCB0aGVuIGNhbGwgdGhlIGVudHJ1c3RSZXNwb25zaWJpbGl0eSBmdW5jdGlvbiB3aXRoIHRoZSByZXNwb25zaWJpbGl0eUZvcm1cclxuICAgKiBhcyBhIHBhcmFtZXRlci5cclxuICAgKiBAcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUuXHJcbiAgICovXHJcbiAgc3VibWl0UmVzcG9uc2liaWxpdHkoKSB7XHJcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVSZXNwb25zaWJpbGl0eSgpO1xyXG4gICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgICAgdGhpcy5lbnRydXN0UmVzcG9uc2liaWxpdHkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0pO1xyXG4gICAgICAvLyBlZGl0IGNvbmRpdGlvbnNcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW50cnVzdFJlc3BvbnNpYmlsaXR5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSByZXNwb25zaWJpbGl0eSBuYW1lIGlzIGVtcHR5LCBvciB0aGUgZnJlcXVlbmN5IGlzIGVtcHR5LCBvciB0aGUgYXNzaWduZWVzIGxpc3QgaXMgZW1wdHksXHJcbiAgICogdGhlbiByZXR1cm4gZmFsc2UuIE90aGVyd2lzZSwgcmV0dXJuIHRydWUuXHJcbiAgICovXHJcbiAgdmFsaWRhdGVSZXNwb25zaWJpbGl0eSgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmVuYWJsZSAmJlxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdD8ubGVuZ3RoID09PSAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICd3aG9tJztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lLnRyaW0oKSA9PSAnJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hhdCc7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8fFxyXG4gICAgICAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAoIXRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XHJcbiAgICAgICAgICAoKCF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QgfHxcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCkgJiZcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpKSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJ3dobyc7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5IHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PSAnJyB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPT09ICcnIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PT0gJzV+MH4wfjAnXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICd3aGVuJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUudHJpbSgpID09ICcnIHx8XHJcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnJyB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPT09ICc1fjB+MH4wJyB8fFxyXG4gICAgICAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgKCF0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyB8fFxyXG4gICAgICAgICAgKCghdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCB8fFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0Py5sZW5ndGggPT0gMCkgJiZcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpKSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVudHJ1c3RSZXNwb25zaWJpbGl0eShlbnRydXN0Rm9ybTogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgICBsZXQgc3RhcnREYXRlID0gbW9tZW50KHBhcnNlSW50KGVudHJ1c3RGb3JtLnN0YXJ0RGF0ZSkgKiAxMDAwKS5mb3JtYXQoXHJcbiAgICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xyXG4gICAgKTtcclxuICAgIHN0YXJ0RGF0ZSA9IG1vbWVudChzdGFydERhdGUuc3BsaXQoJyAnKVswXSArICcgMDA6MDA6MDAnKS5mb3JtYXQoXHJcbiAgICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xyXG4gICAgKTtcclxuICAgIGNvbnN0IHJjRGV0YWlscyA9XHJcbiAgICAgIGVudHJ1c3RGb3JtLnJjPy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yYy5tYXAoKHJjOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmMpIHtcclxuICAgICAgICAgICAgICBjb25zdCByY0RldGFpbHNBcnIgPSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByYy5wYXJlbnRfcmNfaWRzLFxyXG4gICAgICAgICAgICAgICAgcmNfaWQ6IHJjLnJjX2lkLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRfcmNfaWRzOiByYz8uaXRlbV9jaGlsZF9pZHMsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmNEZXRhaWxzQXJyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIDogW107XHJcbiAgICBjb25zdCByY0RldGFpbHNJZEFyciA9XHJcbiAgICAgIGVudHJ1c3RGb3JtLnJjPy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yYy5tYXAoKHJjOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmMpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmMucmNfaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBtb3JlT3B0aW9ucyA9IHRoaXMubW9yZU9wdGlvbnM7XHJcblxyXG4gICAgY29uc3QgY2hlY2tDb250aW51b3VzRmFpbGVkVmFsdWUgPSAoZGV0YWlsczogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGUgPSBwYXJzZUludChkZXRhaWxzLnNwbGl0KCd+JylbMF0pO1xyXG4gICAgICBpZiAoZnJlcXVlbmN5VHlwZSA9PT0gMSB8fCBmcmVxdWVuY3lUeXBlID09PSAyIHx8IGZyZXF1ZW5jeVR5cGUgPT09IDMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgbGV0IGxpbmtlZFByb2dyYW1JZHM6IGFueVtdID0gW107XHJcbiAgICBsZXQgbGlua2VkQ2F0ZWdvcnlJZHM6IGFueVtdID0gW107XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbT8uZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZCAhPT0gZWxlPy5jYXRlZ29yeV9pZFxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBwcm9ncmFtID0ge1xyXG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGU/LmNhdGVnb3J5X2lkLFxyXG4gICAgICAgICAgcHJvZ3JhbU9iamVjdElkOiBlbGU/Ll9pZCxcclxuICAgICAgICAgIHN1YlByb2dyYW1JZHM6IGVsZT8uY2hpbGRfaWQ/LmZpbHRlcigoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnk/LmluY2x1ZGVzKGVsKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGlua2VkUHJvZ3JhbUlkcz8ucHVzaChwcm9ncmFtKTtcclxuICAgICAgICBsaW5rZWRDYXRlZ29yeUlkcz8ucHVzaChlbGU/LmNhdGVnb3J5X2lkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGNhdGVnb3J5SWRzRXhjZXB0RGVmYXVsdDogYW55ID0gW107XHJcbiAgICBjYXRlZ29yeUlkc0V4Y2VwdERlZmF1bHQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnk/LmZpbHRlcihcclxuICAgICAgKGVsOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgZWwgIT09IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZCAmJlxyXG4gICAgICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5jaGlsZF9pZD8uaW5jbHVkZXMoZWwpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuY29tYmluZVVzZXJBbmRVc2VyR3JvdXBNZW1iZXJzKFxyXG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FMTCcgJiZcclxuICAgICAgICB0aGlzLnJhd1Jlc3BvbnNpYmlsaXR5Py51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQWxsR3JvdXBJZHM/Lmxlbmd0aFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCByZW1hcmtzID1cclxuICAgICAgZW50cnVzdEZvcm0uZGVzY3JpcHRpb24ucmVwbGFjZSgvXFwmbmJzcDsvZywgJycpLnRyaW0oKSAhPT0gJydcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLmRlc2NyaXB0aW9uXHJcbiAgICAgICAgOiAnJztcclxuICAgIGNvbnN0IG9iamVjdGl2ZSA9XHJcbiAgICAgIGVudHJ1c3RGb3JtLm9iamVjdGl2ZS5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJykudHJpbSgpICE9PSAnJ1xyXG4gICAgICAgID8gZW50cnVzdEZvcm0ub2JqZWN0aXZlXHJcbiAgICAgICAgOiAnJztcclxuICAgIGxldCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGFwcF9hc3NvY2lhdGlvbjogW10sXHJcbiAgICAgIGFzc2lnbmVkX3RvOiB0aGlzLnJldHVybklkcyhcclxuICAgICAgICB0aGlzLmFzc2lnbmVlVXNlckxpc3QsXHJcbiAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICApLnRvU3RyaW5nKCksXHJcbiAgICAgIHByb2dyYW1fY2F0X2lkczogbW9yZU9wdGlvbnM/LlBST0dSQU1cclxuICAgICAgICA/IGVudHJ1c3RGb3JtPy5wcm9ncmFtPy5sZW5ndGhcclxuICAgICAgICAgID8gW2VudHJ1c3RGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZF1cclxuICAgICAgICAgIDogW11cclxuICAgICAgICA6IFtdLFxyXG4gICAgICBsaW5rZWRfcHJvZ3JhbV9pZHM6IGxpbmtlZFByb2dyYW1JZHMsXHJcbiAgICAgIGxpbmtlZF9jYXRlZ29yeV9pZHM6IHRoaXMuZ2V0VW5pcXVlSWRzKFtcclxuICAgICAgICAuLi5jYXRlZ29yeUlkc0V4Y2VwdERlZmF1bHQsXHJcbiAgICAgICAgLi4ubGlua2VkQ2F0ZWdvcnlJZHMsXHJcbiAgICAgIF0pLFxyXG4gICAgICAvLyBjYXRlZ29yeV9pZDogKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtX3NlbGVjdGVkX2lkcz8ubGVuZ3RoID4gMCkgPyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnlfaWQgOiAnJyxcclxuICAgICAgY2F0ZWdvcnlfaWQ6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1fc2VsZWN0ZWRfaWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuZ2V0VW5pcXVlSWRzKFtcclxuICAgICAgICAgICAgICAuLi50aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnksXHJcbiAgICAgICAgICAgICAgLi4ubGlua2VkQ2F0ZWdvcnlJZHMsXHJcbiAgICAgICAgICAgICAgLi4uW2VudHJ1c3RGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZF0sXHJcbiAgICAgICAgICAgIF0pPy50b1N0cmluZygpXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICBjY19lbWFpbDogbW9yZU9wdGlvbnMuT1ZFUlNFRVJcclxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHRoaXMub3ZlcnNlZXJVc2VyTGlzdCwgJ2VtcGxveWVlX2lkJykudG9TdHJpbmcoKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGNoZWNrcG9pbnRfZGVzY3JpcHRpb246IG1vcmVPcHRpb25zLkNIRUNLUE9JTlRTXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5jaGVja3BvaW50SW5zdHJ1Y3Rpb25cclxuICAgICAgICA6ICcnLFxyXG4gICAgICBjaGVja3BvaW50X2RldGFpbHM6IG1vcmVPcHRpb25zLkNIRUNLUE9JTlRTXHJcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeSh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cylcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBjaGVja3BvaW50X2ZsYWc6IDAsXHJcbiAgICAgIGNvbGxhYm9yYXRvcl9tYXJrX2RvbmU6IDAsXHJcbiAgICAgIGNvbW1lbnQ6ICcnLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBjaGVja0NvbnRpbnVvdXNGYWlsZWRWYWx1ZShlbnRydXN0Rm9ybS5mcmVxdWVuY3kpXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzXHJcbiAgICAgICAgOiAwLFxyXG4gICAgICBjb3N0X29mX2NvbXBsaWFuY2U6ICcnLFxyXG4gICAgICBjcmVhdGVkX2J5OiBlbnRydXN0Rm9ybS5hc3NpZ25vcnMubGlzdD8ubGVuZ3RoIDwgMSA/IDAgOiB0aGlzLm1lbWJlcklkLFxyXG4gICAgICBjcmVhdGlvbl93aW5kb3c6IDAsXHJcbiAgICAgIGN1c3RvbV90YWdzOiBKU09OLnN0cmluZ2lmeShlbnRydXN0Rm9ybS5jdXN0b21UYWdzKSxcclxuICAgICAgZW50aXR5X3RyZWU6IG1vcmVPcHRpb25zLlJDXHJcbiAgICAgICAgPyB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PSAxXHJcbiAgICAgICAgICA/IFtdXHJcbiAgICAgICAgICA6IHJjRGV0YWlsc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGVudHJ1c3RfZnJvbV9yaXNrOiB0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBlbnRydXN0Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyxcclxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiBlbnRydXN0Rm9ybS5mYWlsZWRfdGltZV91dGMsXHJcbiAgICAgIGZhaWx1cmVfY2NfZW1haWw6IG1vcmVPcHRpb25zLk9WRVJTRUVSXHJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyh0aGlzLm92ZXJzZWVyVXNlck5vdGlmeUxpc3QsICdlbXBsb3llZV9pZCcpLnRvU3RyaW5nKClcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZW50cnVzdEZvcm0uZnJlcXVlbmN5LFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogZW50cnVzdEZvcm0udGltZUluMjRIciA/PyBERUZBVUxUXzI0SFIsXHJcbiAgICAgIGdyY19vYmplY3RfaWQ6IDAsXHJcbiAgICAgIGdyY19yZWxhdGlvbnNoaXA6ICcnLFxyXG4gICAgICBpZl90ZXN0cGxhbl9mYWlsZWQ6IDAsXHJcbiAgICAgIGltcGFjdDogJycsXHJcbiAgICAgIGlzR3JvdXBBc3NpZ25UbzpcclxuICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnID8gMSA6IDAsXHJcbiAgICAgIGlzX2tleV9jb21wbGlhbmNlOiBlbnRydXN0Rm9ybS5yZXNwb25zaWJpbGl0eS5rZXlSZXNwb25zaWJpbGl0eSA/IDEgOiAwLFxyXG4gICAgICBsaWJyYXJ5X3JlcG9ydF9pZDogMCxcclxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGVudHJ1c3RGb3JtLmxpZmVjeWNsZURldGFpbHMgPz8gJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgICBsaW5rX2Zvcl9kZXRhaWxzOiBtb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRMaW5rc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGxpbmthZ2VzOiB7IGNvbXBsaWFuY2U6IFtdIH0sXHJcbiAgICAgIG1lbWJlcl9pZDpcclxuICAgICAgICB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybS5hc3NpZ25vcnMubGlzdCwgJ21lbWJlcl9pZCcpPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LCAnbWVtYmVyX2lkJylbMF1cclxuICAgICAgICAgIDogdGhpcy5tZW1iZXJJZCxcclxuICAgICAgb2JqZWN0aXZlOiBtb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPyBvYmplY3RpdmUgOiAnJyxcclxuICAgICAgb25fY29tcGxldGlvbl9vZjogZW50cnVzdEZvcm0ucmVwb3J0SWQgPyBbZW50cnVzdEZvcm0ucmVwb3J0SWRdIDogW10sXHJcbiAgICAgIG9uX2NvbXBsZXRpb25fb2ZfdHlwZTogMSxcclxuICAgICAgb3JnYW5pc2F0aW9uX2lkOiB0aGlzLm9yZ2FuaXphdGlvbklkLFxyXG4gICAgICBvdmVycmlkZV93ZWVrbHk6IDAsXHJcbiAgICAgIHBhcmVudF9pZDogMCxcclxuICAgICAgcGVuYWx0eTogJycsXHJcbiAgICAgIHByaXZhdGVfbGlicmFyeV9pZDogMCxcclxuICAgICAgcmVtYXJrczogcmVtYXJrcyxcclxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGVudHJ1c3RGb3JtLnJlbWluZGVyX2JlZm9yZV9kYXlzLFxyXG4gICAgICByZXBvcnRfZm9ybWF0OiBtb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIHJlcG9ydF9mb3JtYXRfbGluazogJycsXHJcbiAgICAgIHJlcG9ydF9uYW1lOiBlbnRydXN0Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lLFxyXG4gICAgICByZXBvcnRfdXBsb2FkX2ZsYWc6IGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWRcclxuICAgICAgICA/IDFcclxuICAgICAgICA6IDAsXHJcbiAgICAgIHJldmlld19hZnRlcl9kYXlzOiBtb3JlT3B0aW9ucy5SRVZJRVdFUlxyXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXMgPT09ICcnXHJcbiAgICAgICAgICA/IDBcclxuICAgICAgICAgIDogTnVtYmVyKGVudHJ1c3RGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Q29tcGxldGVEYXlzKVxyXG4gICAgICAgIDogMCxcclxuICAgICAgcmV2aWV3X2ZhaWxlZF9hZnRlcl9kYXlzOiBtb3JlT3B0aW9ucy5SRVZJRVdFUlxyXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzID09PSAnJ1xyXG4gICAgICAgICAgPyAwXHJcbiAgICAgICAgICA6IE51bWJlcihlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMpXHJcbiAgICAgICAgOiAwLFxyXG4gICAgICByZXZpZXdlcl9hcnI6IG1vcmVPcHRpb25zLlJFVklFV0VSXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGxldmVsMToge1xyXG4gICAgICAgICAgICAgIHJldmlld2VyczogdGhpcy5zZXRSZXZpZXdlclBheWxvYWQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJldmlld2VyVXNlckxpc3QsXHJcbiAgICAgICAgICAgICAgICAnbGlzdCcsXHJcbiAgICAgICAgICAgICAgICBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuYWNjZXB0ZWREYXRhLFxyXG4gICAgICAgICAgICAgICAgZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1xyXG4gICAgICAgICAgICAgICAgICA/ICdTRVFVRU5USUFMJ1xyXG4gICAgICAgICAgICAgICAgICA6ICdBTllPTkUnXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICB0eXBlOiBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93XHJcbiAgICAgICAgICAgICAgICA/ICdTRVFVRU5USUFMJ1xyXG4gICAgICAgICAgICAgICAgOiAnQU5ZT05FJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9LFxyXG4gICAgICB1c2VyR3JvdXBJZHM6IHtcclxuICAgICAgICBhc3NpZ25lZUFsbEdyb3VwSWRzOlxyXG4gICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcclxuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsICdncm91cF9pZCcpXHJcbiAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgYXNzaWduZWVBbnlvbmVHcm91cElkczpcclxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXHJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LCAnZ3JvdXBfaWQnKVxyXG4gICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgIGNjRW1haWxHcm91cElkczpcclxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0LFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApID8/IFtdLFxyXG4gICAgICAgIGZhaWx1cmVDQ0VtYWlsR3JvdXBJZHM6XHJcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdCxcclxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICAgKSA/PyBbXSxcclxuICAgICAgICByZXZpZXdlckdyb3VwSWRzOlxyXG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdCxcclxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICAgKSA/PyBbXSxcclxuICAgICAgfSxcclxuICAgICAgZXhpc3RpbmdVc2VySWRzOiB7XHJcbiAgICAgICAgYXNzaWduZWVBbGxJZHM6XHJcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgIT09ICdBTllfT05FJ1xyXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZXM/Lmxpc3QsICdteV9tZW1iZXJfaWQnKVxyXG4gICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgIGFzc2lnbmVlQW55b25lSWRzOlxyXG4gICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09PSAnQU5ZX09ORSdcclxuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVzPy5saXN0LCAnbXlfbWVtYmVyX2lkJylcclxuICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICBjY0VtYWlsRW1wSWRzOlxyXG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/Lm92ZXJzZWVycz8ubGlzdCwgJ2VtcGxveWVlX2lkJykgPz8gW10sXHJcbiAgICAgICAgZmFpbHVyZUNDRW1haWxFbXBJZHM6XHJcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0LCAnZW1wbG95ZWVfaWQnKSA/P1xyXG4gICAgICAgICAgW10sXHJcbiAgICAgICAgcmV2aWV3ZXJJZHM6XHJcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdCxcclxuICAgICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICAgICkgPz8gW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIHJldmlld2VyX2NoZWNrcG9pbnRzOiBbeyBjaGVja3BvaW50czogW10sIGluc3RydWN0aW9uOiAnJyB9XSxcclxuICAgICAgcmV2aWV3ZXJfaWQ6IDAsXHJcbiAgICAgIHJpc2tfY2xhc3M6IHRoaXMuaXNSaXNrRW5hYmxlID8gZW50cnVzdEZvcm0ucmlza0NsYXNzIDogMixcclxuICAgICAgcmlza19pZHM6ICcnLFxyXG4gICAgICByaXNrX21hdHJpeF9kYXRhOiBtb3JlT3B0aW9ucy5SSVNLX0NMQVNTSUZJQ0FUSU9OXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yaXNrTWF0cml4XHJcbiAgICAgICAgOiAnMCwwLDAsMCwwLDAnLFxyXG4gICAgICBzYW1wbGVfc2l6ZTogMCxcclxuICAgICAgc3RhcnRfZGF0ZV91dGM6IHN0YXJ0RGF0ZSxcclxuICAgICAgc3RhdHV0b3J5X2RheTogMCxcclxuICAgICAgdGVzdF9yZXF1aXJlZF9mbGFnOiBtb3JlT3B0aW9ucy5BU1NVUkFOQ0VcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gMVxyXG4gICAgICAgICAgOiAwXHJcbiAgICAgICAgOiAwLFxyXG4gICAgICB0ZXN0cGxhbl9jYXRlZ29yeV9pZDogbW9yZU9wdGlvbnMuQVNTVVJBTkNFXHJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybS5hc3N1cmFuY2VMaXN0LCAnY2F0ZWdvcnlfaWQnKVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIHRlc3RwbGFuX2NhdGVnb3J5X21hbmFnZXI6ICcnLFxyXG4gICAgICBhdWRpdF9jYXRlZ29yeV9kZXRhaWxzOlxyXG4gICAgICAgIG1vcmVPcHRpb25zLlJFUVVJUkVTX0FVRElUICYmXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmF1ZGl0X2NhdGVnb3J5X2RldGFpbHM/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeV9pZDpcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMuY2F0ZWdvcnlfaWQsXHJcbiAgICAgICAgICAgICAgc2FtcGxlOiB0aGlzLnNlbGVjdGVkU2FtcGxlID09PSAwID8gdGhpcy5zYW1wbGVWYWx1ZSA6IDAsXHJcbiAgICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy5zZWxlY3RlZFNhbXBsZSA9PT0gMSA/IHRoaXMuc2FtcGxlUGVyY2VudGFnZSA6IDAsXHJcbiAgICAgICAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm46IGAxfjB+JHt0aGlzLnNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlfX4xYCxcclxuICAgICAgICAgICAgICBmcmVxdWVuY3lfdGltZTogbW9tZW50KHRoaXMuYXVkaXRUaW1lLCAnSEg6bW0gYScpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgICdISDptbTpzcydcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogMCxcclxuICAgICAgICAgICAgICBzYW1wbGU6IDAsXHJcbiAgICAgICAgICAgICAgcGVyY2VudGFnZTogMCxcclxuICAgICAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogYGAsXHJcbiAgICAgICAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICBhc3Nlc3NtZW50OiB7XHJcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IG1vcmVPcHRpb25zLkFTU0VTU01FTlRcclxuICAgICAgICAgID8gZW50cnVzdEZvcm0/LmFzc2Vzc21lbnQ/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIGFzc2Vzc21lbnRfaWQ6IG1vcmVPcHRpb25zLkFTU0VTU01FTlRcclxuICAgICAgICAgID8gZW50cnVzdEZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWRcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFzc2Vzc21lbnRfY2hlY2twb2ludDogbW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXXHJcbiAgICAgICAgPyBPYmplY3Qua2V5cyhlbnRydXN0Rm9ybT8ubmV3X2NoZWNrcG9pbnRzKT8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8ubmV3X2NoZWNrcG9pbnRzXHJcbiAgICAgICAgICA6IHt9XHJcbiAgICAgICAgOiB7fSxcclxuICAgICAgcXVlc3Rpb25uYWlyZV90eXBlOiBtb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVdcclxuICAgICAgICA/IE9iamVjdC5rZXlzKGVudHJ1c3RGb3JtPy5uZXdfY2hlY2twb2ludHMpPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/ICdhc3Nlc3NtZW50X2NoZWNrcG9pbnQnXHJcbiAgICAgICAgICA6IG1vcmVPcHRpb25zLkFTU0VTU01FTlQgJiYgZW50cnVzdEZvcm0/LmFzc2Vzc21lbnQ/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICA/ICdhc3Nlc3NtZW50J1xyXG4gICAgICAgICAgOiBKU09OLnN0cmluZ2lmeSh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cykgIT0gJycgJiZcclxuICAgICAgICAgICAgbW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNcclxuICAgICAgICAgID8gJ2NoZWNrcG9pbnQnXHJcbiAgICAgICAgICA6ICcnXHJcbiAgICAgICAgOiAnJyxcclxuXHJcbiAgICAgIGxpbmtlZF9HUkNfaWRzOiBtb3JlT3B0aW9ucy5HUkNfT0JKRUNUU1xyXG4gICAgICAgID8gZW50cnVzdEZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzLm1hcCgoZ3JjOiBhbnkpID0+IGdyYy5faWQpXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCkge1xyXG4gICAgICBwYXlsb2FkWydyZXNwb25zaWJpbGl0eUNlbnRlclR5cGUnXSA9XHJcbiAgICAgICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJiBtb3JlT3B0aW9ucy5SQ1xyXG4gICAgICAgICAgPyB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZVxyXG4gICAgICAgICAgOiAwO1xyXG4gICAgICBwYXlsb2FkWydyZXNwb25zaWJpbGl0eUNlbnRlckFyciddID1cclxuICAgICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmIG1vcmVPcHRpb25zLlJDXHJcbiAgICAgICAgICA/IHJjRGV0YWlsc0lkQXJyXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQgPSBwYXlsb2FkO1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnQ1JFQVRFJyAmJiAhdGhpcy5pc0R1cGxpY2F0ZUVudHJ1c3QpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2Uuc3VibWl0RW50cnVzdChwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0gcmVzO1xyXG5cclxuICAgICAgICAgIGlmIChyZXMubWVzc2FnZSAmJiByZXMubWVzc2FnZS50b0xvd2VyQ2FzZSgpID09PSAnYnVsayBlbnRydXN0Jykge1xyXG4gICAgICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgWW91IGhhdmUgZW50cnVzdGVkICR7cmVzLmNhbGN1bGF0ZV9ub19vZl9yZXNwb25zaWJpaXRpZXN9IHJlc3BvbnNpYmlsaXRpZXMuIFRoZXNlIHdvdWxkIGJlIHJlZmxlY3RlZCB3aXRoaW4geW91ciBhY2NvdW50IGluIHNvbWV0aW1lLmA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgJiYgcGF5bG9hZC5jcmVhdGVkX2J5ID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID1cclxuICAgICAgICAgICAgICAnVGhpcyByZXNwb25zaWJpbGl0eSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgbm90aWZpY2F0aW9uIHF1ZXVlLic7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGF5bG9hZC5jcmVhdGVkX2J5ID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uc1sxXS5idXR0b25UZXh0ID0gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gYFlvdSBqdXN0IGNyZWF0ZWQgYSByZXNwb25zaWJpbGl0eSBvbiBiZWhhbGYgJHtcclxuICAgICAgICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgIChtZW1iZXI6IGFueSkgPT4gbWVtYmVyLm1lbWJlcl9pZCA9PT0gcGF5bG9hZC5tZW1iZXJfaWRcclxuICAgICAgICAgICAgICAgICkubWVtYmVyX25hbWVcclxuICAgICAgICAgICAgICB9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnIHx8IHRoaXMuaXNEdXBsaWNhdGVFbnRydXN0KSB7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgcmVzcG9uc2liaWxpdHkgaGFzIGJlZW4gbW9kaWZpZWQuYDtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcclxuICAgICAgICAudXBkYXRlRW50cnVzdChwYXlsb2FkLCB0aGlzLnJlc3BvbnNpYmlsaXR5SWQsIHRydWUpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSA9IHJlcztcclxuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEdXBsaWNhdGVFbnRydXN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bmlxdWVJZFVzZXJHcm91cHMoXHJcbiAgICB0b3RhbFVzZXJMaXN0OiBhbnksXHJcbiAgICBzZWxlY3RlZEdyb3VwOiBhbnksXHJcbiAgICBzZWxlY3RlZFVzZXJzOiBhbnlcclxuICApIHtcclxuICAgIGxldCBncm91cFVzZXJMaXN0ID0gdGhpcy5nZXRHcm91cHNVc2VyRW1wbG95ZWVzSWQoXHJcbiAgICAgIHRvdGFsVXNlckxpc3QsXHJcbiAgICAgIHNlbGVjdGVkR3JvdXBcclxuICAgICk7XHJcbiAgICBsZXQgaWRzID0gbmV3IFNldChzZWxlY3RlZFVzZXJzLm1hcCgodXNlcjogYW55KSA9PiB1c2VyPy5teV9tZW1iZXJfaWQpKTtcclxuICAgIGxldCB1c2VyTGlzdCA9IFtcclxuICAgICAgLi4uc2VsZWN0ZWRVc2VycyxcclxuICAgICAgLi4uZ3JvdXBVc2VyTGlzdC5maWx0ZXIoXHJcbiAgICAgICAgKGdyb3VwVXNlcjogYW55KSA9PiAhaWRzLmhhcyhncm91cFVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICAgKSxcclxuICAgIF07XHJcbiAgICByZXR1cm4gdXNlckxpc3Q7XHJcbiAgfVxyXG5cclxuICBjb21iaW5lVXNlckFuZFVzZXJHcm91cE1lbWJlcnMoaXNHcm91cD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIHRoaXMuYXNzaWduZWVVc2VyTGlzdCA9IGlzR3JvdXBcclxuICAgICAgICA/IFt7IGVtcGxveWVlX2lkOiB0aGlzLnJhd1Jlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZF90byB9XVxyXG4gICAgICAgIDogdGhpcy51bmlxdWVJZFVzZXJHcm91cHMoXHJcbiAgICAgICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RcclxuICAgICAgICAgICk7XHJcbiAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxyXG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdCxcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxyXG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLm92ZXJzZWVyVXNlck5vdGlmeUxpc3QgPSB0aGlzLnVuaXF1ZUlkVXNlckdyb3VwcyhcclxuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0LFxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXNzaWduZWVVc2VyTGlzdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q7XHJcbiAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTGlzdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCA9XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHJlc2V0cyB0aGUgZm9ybS5cclxuICAgKi9cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0gPSB7XHJcbiAgICAgIGFzc2lnbm9yczoge1xyXG4gICAgICAgIGVuYWJsZTogZmFsc2UsXHJcbiAgICAgICAgbGlzdDogW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5OiB7XHJcbiAgICAgICAgbmFtZTogJycsXHJcbiAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICBhc3NpZ25lZUdyb3Vwczoge1xyXG4gICAgICAgIHdob0NhbkNvbXBsZXRlOiAnQUxMJyxcclxuICAgICAgICBsaXN0OiBbXSxcclxuICAgICAgfSxcclxuICAgICAgYXNzaWduZWVzOiB7XHJcbiAgICAgICAgd2hvQ2FuQ29tcGxldGU6ICdBTEwnLFxyXG4gICAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBmcmVxdWVuY3k6ICcnLFxyXG4gICAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIG9iamVjdGl2ZTogJycsXHJcbiAgICAgIHJjOiBbXSxcclxuICAgICAgY2F0ZWdvcnk6IFtdLFxyXG4gICAgICBjaGVja3BvaW50SW5zdHJ1Y3Rpb246ICcnLFxyXG4gICAgICBjdXN0b21UYWdzOiBbXSxcclxuICAgICAgY2hlY2twb2ludHM6IFtdLFxyXG4gICAgICByZXZpZXdlcnM6IHtcclxuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXHJcbiAgICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XHJcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXHJcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGlzdDogW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIGdyb3VwUmV2aWV3ZXJzOiB7XHJcbiAgICAgICAgc2VxdWVudGlhbFdvcmtmbG93OiB0cnVlLFxyXG4gICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xyXG4gICAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOiAyLFxyXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogMixcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBvdmVyc2VlcnM6IHtcclxuICAgICAgICBub3RpZnlMaXN0OiBbXSxcclxuICAgICAgICBsaXN0OiBbXSxcclxuICAgICAgfSxcclxuICAgICAgb3ZlcnNlZXJzR3JvdXBzOiB7XHJcbiAgICAgICAgbm90aWZ5TGlzdDogW10sXHJcbiAgICAgICAgbGlzdDogW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIGZvcm1hdEFuZEV2aWRlbmNlOiB7XHJcbiAgICAgICAgZm9ybWF0UmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgIGZvcm1hdEZpbGVzOiBbXSxcclxuICAgICAgICBmb3JtYXRMaW5rczogW10sXHJcbiAgICAgICAgZXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFzc3VyYW5jZUxpc3Q6IFtdLFxyXG4gICAgICByZXF1aXJlc0F1ZGl0TGlzdDogW10sXHJcbiAgICAgIHJpc2tDbGFzczogMSxcclxuICAgICAgcmlza01hdHJpeDogJzAsMCwwLDAsMCwwJyxcclxuICAgICAgcHJvZ3JhbTogW10sXHJcbiAgICAgIHByb2dyYW1fc2VsZWN0ZWRfaWRzOiBbXSxcclxuICAgIH07XHJcbiAgICB0aGlzLm1vcmVPcHRpb25zID0ge1xyXG4gICAgICBPQkpFQ1RJVkU6IGZhbHNlLFxyXG4gICAgICBSQzogZmFsc2UsXHJcbiAgICAgIENBVEVHT1JZOiBmYWxzZSxcclxuICAgICAgRk9STUFURV9FVklERU5DRTogZmFsc2UsXHJcbiAgICAgIENIRUNLUE9JTlRTOiBmYWxzZSxcclxuICAgICAgUklTS19DTEFTU0lGSUNBVElPTjogZmFsc2UsXHJcbiAgICAgIFJFVklFV0VSOiBmYWxzZSxcclxuICAgICAgT1ZFUlNFRVI6IGZhbHNlLFxyXG4gICAgICBBU1NVUkFOQ0U6IGZhbHNlLFxyXG4gICAgICBBUFBTOiBmYWxzZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ0hvdyBvZnRlbiBkb2VzIHRoZSByZXNwb25zaWJpbGl0eSBvY2N1cj8nO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzID0ge1xyXG4gICAgICBwYXR0ZXJuOiAnJyxcclxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHdpbmRvdzogMCxcclxuICAgICAgZmFpbGVkOiAwLFxyXG4gICAgICB0aW1lOiBERUZBVUxUX1RJTUUsXHJcbiAgICAgIGZhaWxlZFRpbWU6ICcnLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxyXG4gICAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiB7fSxcclxuICAgIH07XHJcbiAgICB0aGlzLnNhbXBsZVZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zYW1wbGVQZXJjZW50YWdlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IC0xO1xyXG4gICAgdGhpcy5zZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZSA9IDI7XHJcbiAgICB0aGlzLmF1ZGl0VGltZSA9IERFRkFVTFRfVElNRTtcclxuICAgIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xyXG4gICAgdGhpcy5pc0VudHJ1c3QgPSB0cnVlO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50RGV0YWlscyA9IG51bGw7XHJcbiAgICB0aGlzLnJlc2V0Rm9ybS5lbWl0KHRydWUpO1xyXG4gIH1cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJykge1xyXG4gICAgICB0aGlzLmNsb3NlU21pbGV5KCdkcycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlldyc6XHJcbiAgICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdGllcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICB2aWV3UmVzcG9uc2liaWxpdGllcygpOiB2b2lkIHtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGxldCB1cmxTdWJzdHJpbmcgPSAnJztcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nICYmXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLmNyZWF0ZWRfYnkgPT0gMFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkKSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXR5PycgKyB0aGlzLnVybDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPVxyXG4gICAgICAgICAgJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMvcmVzcG9uc2liaWxpdGllcy1xdWV1ZSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkKSB7XHJcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtID0gSlNPTj8uc3RyaW5naWZ5KHRoaXMucmVjZW50UmVzcG9uc2liaWxpdHlVcmwpO1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT9xPScgKyB0aGlzLnF1ZXJ5UGFyYW07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnLyMvJyArIHVybFN1YnN0cmluZztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvY29tcGxpYW5jZS8jLycgKyB1cmxTdWJzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZSAhPT0gJ0VESVQnKSB7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZVNtaWxleSgnZHMnKTtcclxuICAgIHRoaXMucmVzZXQoKTtcclxuICB9XHJcbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSk7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmcmVxdWVuY3lEYXRhID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzPy5zcGxpdCgnficpO1xyXG4gICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURhdGFbMF0pID09IDYpIHtcclxuICAgICAgcmV0dXJuIGV2ZW50Py5vbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgZWRpdCByZXNwb25zaWJpbGl0eVxyXG4gIGZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnkgPSB7XHJcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscyxcclxuICAgICAgd2luZG93OiBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXMsXHJcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8uZmFpbGVkX2FmdGVyX2RheXMsXHJcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogZXZlbnQuZmFpbGVkX3RpbWVfdXRjLFxyXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHMsXHJcbiAgICAgIHN0YXJ0RnJvbTogTnVtYmVyKGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjKSxcclxuICAgICAgdGltZUluMjRIcjogZXZlbnQuZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICAgIHN0YXJ0RGF0ZTogTnVtYmVyKGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjKSxcclxuICAgICAgcmVwb3J0SWQ6IGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDAsXHJcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcclxuICAgICAgICBldmVudC5mcmVxdWVuY3lfdGltZSAhPSAnJyA/IGV2ZW50LmZyZXF1ZW5jeV90aW1lIDogREVGQVVMVF8yNEhSXHJcbiAgICAgICksXHJcbiAgICB9O1xyXG4gICAgbGV0IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPSB0aGlzLmdldE9uQ29tcGxldGlvblJlcG9ydERldGFpbHMoZXZlbnQpO1xyXG4gICAgaWYgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgIT0gbnVsbCkge1xyXG4gICAgICBkYXRhLm9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPSBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID0gZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxyXG4gICAgICBldmVudD8uY29udGludW91c19mYWlsZWRfZGF5cztcclxuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXI7XHJcblxyXG4gICAgbGV0IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPSB0aGlzLmdldE9uQ29tcGxldGlvblJlcG9ydERldGFpbHMoZXZlbnQpO1xyXG4gICAgaWYgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9XHJcbiAgICAgICAgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aGVuJykge1xyXG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSBldmVudC5wYXR0ZXJuO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPVxyXG4gICAgICBldmVudC5jYXNlID09PSAnZGFpbHknID8gMCA6IGV2ZW50LndpbmRvdztcclxuICAgIC8vdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPSBldmVudC53aW5kb3c7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50LmZhaWxlZEFmdGVyO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZmFpbGVkX3RpbWVfdXRjID0gZXZlbnQuZmFpbGVkX3RpbWVfdXRjO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlmZWN5Y2xlRGV0YWlscyA9IGV2ZW50LmxpZmVjeWNsZURldGFpbHM7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXBvcnRJZCA9IGV2ZW50LnJlcG9ydElkID8/IDA7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydERhdGUgPSBldmVudC5zdGFydEZyb207XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS50aW1lSW4yNEhyID0gZXZlbnQudGltZUluMjRIcjtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxyXG4gICAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCBmYWxzZSk7XHJcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZXZlbnQucGF0dGVybixcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXHJcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXHJcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudC5mYWlsZWRBZnRlcixcclxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXHJcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcclxuICAgICAgb25fY29tcGxldGlvbl9vZjogW2V2ZW50LnJlcG9ydElkXSxcclxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5wbGFjZWhvbGRlcixcclxuICAgIH07XHJcblxyXG4gICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xyXG4gICAgbGV0IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPSB0aGlzLmdldE9uQ29tcGxldGlvblJlcG9ydERldGFpbHMoZXZlbnQpO1xyXG4gICAgaWYgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgIT0gbnVsbCkge1xyXG4gICAgICBwYXlsb2FkLm9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPSBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIGNoZWNrQmxhbmsoZGF0YTogc3RyaW5nKSB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICBsZXQgdGV4dCA9IGRhdGE7XHJcbiAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1xcJm5ic3A7L2csICcnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGEgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSB7YW55fSByZXMgLSBhbnkgPSB7XHJcbiAgICovXHJcbiAgZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIocmVzOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChyZXMuZnJlcXVlbmN5X2RldGFpbHMpIHtcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gcmVzPy5mcmVxdWVuY3lfZGV0YWlscy5zcGxpdCgnficpO1xyXG4gICAgICAgIGNvbnN0IGZyZXF1ZW5jeVRpbWUgPVxyXG4gICAgICAgICAgcmVzPy5mcmVxdWVuY3lfdGltZSA9PT0gJzAwOjAwOjAwJ1xyXG4gICAgICAgICAgICA/ICcxMjowMCBhbSdcclxuICAgICAgICAgICAgOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIocmVzPy5mcmVxdWVuY3lfdGltZSk7XHJcbiAgICAgICAgc3dpdGNoIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzBdKSkge1xyXG4gICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICB0aGlzLmdldERhaWx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICB0aGlzLmdldFdlZWtseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgdGhpcy5nZXRNb250aGx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA3OlxyXG4gICAgICAgICAgICB0aGlzLmdldFF1YXJ0ZXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgOTpcclxuICAgICAgICAgICAgdGhpcy5nZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgdGhpcy5nZXRZZWFybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb25zdCBkYXRlT2JqZWN0ID0gbmV3IERhdGUoXHJcbiAgICAgICAgICAgICAgICBtb21lbnQoXHJcbiAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbMV0gK1xyXG4gICAgICAgICAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1syXSArXHJcbiAgICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcclxuICAgICAgICAgICAgICAgICAgICAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgICAgICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXHJcbiAgICAgICAgICAgICAgICApLnVuaXgoKSAqIDEwMDBcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICAgICAnT25lIFRpbWUgJyArXHJcbiAgICAgICAgICAgICAgICBkYXRlT2JqZWN0LmdldERhdGUoKSArXHJcbiAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW2RhdGVPYmplY3QuZ2V0TW9udGgoKV0gK1xyXG4gICAgICAgICAgICAgICAgJyAnICtcclxuICAgICAgICAgICAgICAgIGRhdGVPYmplY3QuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgODpcclxuICAgICAgICAgICAgdGhpcy5nZXRSYW5kb21QbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAxMDpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAgICAgJ1lvdSBoYXZlIHNlbGVjdGVkIGFuIG9uZ29pbmcgZnJlcXVlbmN5Lic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0T25Db21wbGV0aW9uT2YoXHJcbiAgICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlscyxcclxuICAgICAgICAgICAgICByZXM/Lm9uX2NvbXBsZXRpb25fb2ZbMF0sXHJcbiAgICAgICAgICAgICAgcmVzLm9uQ29tcGxldGlvblJlcG9ydERldGFpbHNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEl0IGdldHMgdGhlIGZyZXF1ZW5jeSBkZXRhaWxzIGFuZCByZXBvcnQgaWQsIHRoZW4gaXQgc2V0cyB0aGUgZnJlcXVlbmN5IHBsYWNlaG9sZGVyIHRvIHRoZSBmcmVxdWVuY3lcclxuICAgKiBkZXRhaWxzIGFuZCB0aGVuIGl0IGdldHMgdGhlIG9uIGNvbXBsZXRpb24gb2YgcmVzcG9uc2liaWxpdHkgYW5kIHNldHMgdGhlIGZyZXF1ZW5jeSBwbGFjZWhvbGRlciB0b1xyXG4gICAqIHRoZSBmcmVxdWVuY3kgZGV0YWlscyBhbmQgdGhlIHJlcG9ydCBuYW1lLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gWzBdID0mZ3Q7IFwiMVwiXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlcG9ydElkIC0gbnVtYmVyXHJcbiAgICovXHJcbiAgZ2V0T25Db21wbGV0aW9uT2YoXHJcbiAgICBmcmVxdWVuY3lEZXRhaWxzOiBhbnksXHJcbiAgICByZXBvcnRJZDogbnVtYmVyLFxyXG4gICAgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlsczogYW55XHJcbiAgKSB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA+IDEgPyAnZGF5cycgOiAnZGF5JykgK1xyXG4gICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJztcclxuICAgIGlmIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzKSB7XHJcbiAgICAgIGlmIChyZXBvcnRJZCA9PT0gb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscy5SZXBvcnRJZCkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMSA/ICdkYXlzJyA6ICdkYXknKSArXHJcbiAgICAgICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJyArXHJcbiAgICAgICAgICAob25Db21wbGV0aW9uUmVwb3J0RGV0YWlsc1xyXG4gICAgICAgICAgICA/IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMucmVwb3J0X25hbWVcclxuICAgICAgICAgICAgOiAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXCJJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1szXSBpcyAxLCB0aGVuIHNldCB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gJ0RhaWx5IGJ5ICcgKyBmcmVxdWVuY3lUaW1lLFxyXG4gICAqIG90aGVyd2lzZSBpZiBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIGdyZWF0ZXIgdGhhbiAxLCB0aGVuIHNldCB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gJ0V2ZXJ5ICcgK1xyXG4gICAqIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pICsgJyBkYXlzIGJ5ICcgKyBmcmVxdWVuY3lUaW1lLlwiXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbMCwgMCwgMCwgMV1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTI6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldERhaWx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgZnJlcXVlbmN5RGV0YWlscyA9IGZyZXF1ZW5jeURldGFpbHMubWFwKE51bWJlcik7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSArXHJcbiAgICAgICAgICAnIGRheXMgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycyBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgd29yZHMuXHJcbiAgICpcclxuICAgKiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMsIGxpa2UgdGhpczpcclxuICAgKlxyXG4gICAqIGdldFdlZWtseVBsYWNlaG9sZGVyKFtcIjFcIixcIjIsMyw0LDUsNiw3XCIsXCIxXCIsXCIxXCJdLCBcIjEwOjAwIEFNXCIpXHJcbiAgICpcclxuICAgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgd29yZHMsIGxpa2UgdGhpczpcclxuICAgKlxyXG4gICAqIFwiRXZlcnkgTW9uZGF5LFR1ZXNkYXksV2VkbmVzZGF5LFRodXJzZGF5LEZyaWRheSxTYXR1cmRheSBieSAxMDowMCBBTVwiPC9jb2RlPlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjEsMiwzLDQsNVwiLCBcIlwiLCBcIjFcIiwgXCJcIl1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldFdlZWtseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF5ID0gZnJlcXVlbmN5RGV0YWlsc1sxXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmRheU5hbWVbcGFyc2VJbnQoZWxlKSAtIDFdO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5ICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5IGFsdGVybmF0ZSAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPT09IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICdFdmVyeSAzcmQgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5ICcgK1xyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3RoICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWREYXkuam9pbigpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycywgY29udmVydHMgdGhlbSB0byBtb250aCBuYW1lcywgYW5kIHRoZW4gYWRkcyB0aGVtIHRvIGFcclxuICAgKiBzZW50ZW5jZS5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIDEsIDIsIDMsIDIxLCAyMiwgMjMsIG9yIGdyZWF0ZXIgdGhhbiAzLCB0aGVuIHNldCB0aGVcclxuICAgKiBmcmVxdWVuY3lQbGFjZWhvbGRlciB0byBhIHN0cmluZyB0aGF0IGluY2x1ZGVzIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGFuZCB0aGUgZnJlcXVlbmN5RGV0YWlsc1syXVxyXG4gICAqIGFuZCB0aGUgZnJlcXVlbmN5VGltZS5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjNcIiwgXCIxXCIsIFwiMSwyLDNcIl1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldFF1YXJ0ZXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHF1YXJ0ZXJseSA9IFtcclxuICAgICAgICAnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLFxyXG4gICAgICAgICdGZWJydWFyeSwgTWF5LCBBdWd1c3QsIE5vdmVtYmVyJyxcclxuICAgICAgICAnIE1hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBtb250aCBuYW1lcy5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxyXG4gICAqL1xyXG4gIGdldEJpYW5udWFsUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRNb250aCA9IGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChlbGUpIC0gMV07XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBsZXNzIHRoYW4gMiwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsIDJuZCxcclxuICAgKiAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCBieSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gaXMgZ3JlYXRlciB0aGFuIDEsIHRoZW4gdGhlIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIGlzIHNldCB0byB0aGUgMXN0LCAybmQsXHJcbiAgICogM3JkLCBvciBudGggb2YgZXZlcnkgbW9udGgsIEludGVydmFsOiBldmVyeSB5ZWFyU2VxdWVuY2UgeWVhcnMgYnkgZnJlcXVlbmN5VGltZS5cclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIlllYXJseVwiLCBcIjFcIiwgXCIxXCIsIFwiMVwiXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3QgeWVhclNlcXVlbmNlID1cclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA+IDAgPyBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA6IDE7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA8IDIpIHtcclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzNyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAxKSB7XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3QgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnM3JkICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICd0aCBvZiAgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzEgfHxcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgZnJlcXVlbmN5RGV0YWlscyBhcnJheSBhbmQgYSBmcmVxdWVuY3lUaW1lIGFycmF5IGFuZCByZXR1cm5zIGEgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gWzQsMSwxLDFdXHJcbiAgICovXHJcbiAgZ2V0UmFuZG9tUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIGNvbnN0IHF1YXJ0ZXJseSA9IFtcclxuICAgICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcclxuICAgICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxyXG4gICAgICAnIE1hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcclxuICAgIF07XHJcbiAgICB7XHJcbiAgICAgIHN3aXRjaCAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJ0V2ZXJ5IHdlZWsgZm9yICcgKyBmcmVxdWVuY3lEZXRhaWxzWzNdICsgJyByYW5kb20gaW5zdGFuY2VzJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnIEV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xyXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYWxpZ25cclxuICAgICAgICAgICAgfSkgK1xyXG4gICAgICAgICAgICAnIGZvciAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXHJcbiAgICAgICAgICAgICcgcmFuZG9tIGluc3RhbmNlcyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJ0V2ZXJ5ICcgK1xyXG4gICAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBmb3IgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gK1xyXG4gICAgICAgICAgICAnIHJhbmRvbSBpbnN0YW5jZXMnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICdFdmVyeSB5ZWFyIGZvciAnICsgZnJlcXVlbmN5RGV0YWlsc1szXSArICcgcmFuZG9tIGluc3RhbmNlcyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFwiV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGVkaXQgYnV0dG9uLCB0aGUgZWRpdCBidXR0b24gaXMgaGlkZGVuIGFuZCB0aGUgaW5wdXQgZmllbGQgaXMgc2hvd24uXHJcbiAgICogV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGlucHV0IGZpZWxkLCB0aGUgaW5wdXQgZmllbGQgaXMgaGlkZGVuIGFuZCB0aGUgZWRpdCBidXR0b24gaXMgc2hvd24uXCJcclxuICAgKiBAcGFyYW0ge2FueX0gZXZlbnQgLSBhbnkgLSB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgb25FZGl0V2hhdChldmVudDogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gdGhpcyB3aWxsIG1ha2UgdGhlIGV4ZWN1dGlvbiBhZnRlciB0aGUgYWJvdmUgYm9vbGVhbiBoYXMgY2hhbmdlZFxyXG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSBmYWxzZTtcclxuICAgICAgdGhpcy53aGF0SW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgcGFyYW1ldGVyIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MuXHJcbiAgICogQHBhcmFtIHthbnl9IFtyZXNdIC0gaXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldEVkaXRNb3JlT3B0aW9ucyhyZXM/OiBhbnkpIHtcclxuICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgIT09ICcnKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdPQkpFQ1RJVkUnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JJU0tfQ0xBU1NJRklDQVRJT04nKTtcclxuICAgIHRoaXMubW9yZU9wdGlvbnMuUklTS19DTEFTU0lGSUNBVElPTiA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1BST0dSQU0nKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5QUk9HUkFNID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRSZXF1aXJlZFxyXG4gICAgKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdGT1JNQVRFX0VWSURFTkNFJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JDJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXHJcbiAgICAgIHJlcz8ucmVzcG9uc2liaWxpdHlDZW50ZXJBcnIgJiZcclxuICAgICAgcmVzPy5yZXNwb25zaWJpbGl0eUNlbnRlckFycj8ubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JDJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UUyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnR1JDX09CSkVDVFMnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5HUkNfT0JKRUNUUyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2VyPy5saXN0Py5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JFVklFV0VSJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdPVkVSU0VFUicpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0FTU1VSQU5DRScpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkFTU1VSQU5DRSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSRVFVSVJFU19BVURJVCcpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLlJFUVVJUkVTX0FVRElUID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzLnF1ZXN0aW9ubmFpcmVfdHlwZSA9PT0gJ2Fzc2Vzc21lbnQnKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdBU1NFU1NNRU5UJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTRVNTTUVOVCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlcy5xdWVzdGlvbm5haXJlX3R5cGUgPT09ICdhc3Nlc3NtZW50X2NoZWNrcG9pbnQnKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UU19ORVcnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gRm9ybWF0ICYgRXZpZGVuY2VcclxuICB0ZXN0RnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUudHJpbSgpICE9PSAnJyAmJlxyXG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPT09IGZhbHNlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9PSAnPGJyPicpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb24gPSAnJztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgPT0gJzxicj4nKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2aWV3ZXJUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3cgPVxyXG4gICAgICBldmVudCA9PT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRTYW1wbGVEYXRhKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSBldmVudDtcclxuICAgIHRoaXMudGVtcENoZWNrVmFsdWUgPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHBvcHVsYXRlcyBhIGxpc3Qgb2YgYXNzdXJhbmNlIGNhdGVnb3JpZXMgYmFzZWQgb24gdGhlIHRlc3QgcGxhbiBjYXRlZ29yeSBzZWxlY3RlZC5cclxuICAgKiBAcGFyYW0ge2FueX0gdGVzdFBsYW5DYXRlZ29yeSAtIGFueVxyXG4gICAqL1xyXG4gIHBvcHVsYXRlQXNzdXJhbmNlTGlzdCh0ZXN0UGxhbkNhdGVnb3J5OiBhbnkpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZSA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yaWVzTGlzdCxcclxuICAgICAgW3Rlc3RQbGFuQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXSxcclxuICAgICAgJ2NhdGVnb3J5X2lkJ1xyXG4gICAgKTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMgPSB0ZXN0UGxhbkNhdGVnb3J5O1xyXG4gICAgaWYgKHRlc3RQbGFuQ2F0ZWdvcnkuc2FtcGxlKSB7XHJcbiAgICAgIHRoaXMuaXNTYW1wbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNhbXBsZVZhbHVlID0gdGVzdFBsYW5DYXRlZ29yeS5zYW1wbGU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0ZXN0UGxhbkNhdGVnb3J5LnBlcmNlbnRhZ2UpIHtcclxuICAgICAgdGhpcy5pc1NhbXBsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2FtcGxlUGVyY2VudGFnZSA9IHRlc3RQbGFuQ2F0ZWdvcnkucGVyY2VudGFnZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRlbXBDaGVja1ZhbHVlID0gdGhpcy5zZWxlY3RlZFNhbXBsZTtcclxuICAgIHRoaXMuc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LmZyZXF1ZW5jeV9wYXR0ZXJuXHJcbiAgICAgID8gcGFyc2VJbnQodGVzdFBsYW5DYXRlZ29yeS5mcmVxdWVuY3lfcGF0dGVybi5zcGxpdCgnficpWzJdKVxyXG4gICAgICA6IDI7XHJcbiAgICB0aGlzLmF1ZGl0VGltZSA9IG1vbWVudChcclxuICAgICAgdGVzdFBsYW5DYXRlZ29yeT8uZnJlcXVlbmN5X3RpbWUsXHJcbiAgICAgICdISDptbTpzcydcclxuICAgICkuZm9ybWF0KCdISDptbSBhJyk7XHJcbiAgfVxyXG5cclxuICAvL29uIHNhbXBsZSB0b2dnbGUgb24vb2ZmXHJcbiAgY2hlY2tJbnB1dFZhbHVlKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBrZXkgPSBldmVudC5jaGFyQ29kZTsgLy8gICAgICAgICBrZXkgPSBldmVudC5rZXlDb2RlOyAgKEJvdGggY2FuIGJlIHVzZWQpXHJcbiAgICByZXR1cm4gKGtleSA+IDQ3ICYmIGtleSA8IDU4KSB8fCBrZXkgPT0gNDU7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hFbmFibGUoZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gdGhpcy50ZW1wQ2hlY2tWYWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAtMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRPRE86ICBzZWxlY3QgQXNzZXNzbWVudCBsaXN0IGFuZCBzZXQgaWQgdG8gcGF5bG9hZFxyXG4gIG9uQXNzZXNzbWVudFNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmlzQXNzZXNzbWVudCA9IGZhbHNlO1xyXG4gICAgY29uc29sZS5sb2coJ2V2ZW50ID09PT4gMScsIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtKTtcclxuXHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0gZXZlbnQ7XHJcbiAgICBjb25zb2xlLmxvZygnZXZlbnQgPT09PicsIGV2ZW50LCB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSk7XHJcbiAgfVxyXG4gIC8vIFRPRE86IFBvcHVsYXRlIGFzc2Vzc21lbnQgZGF0YSBmcm9tIGFscmVhZHkgc2VsZWN0ZWQgZGF0YVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGFzc2Vzc21lbnREZXRhaWxzIDogc2VsZWN0ZWQgYXNzZXNzbWVudCBkZXRhaWxzIGxpa2UgaXQncyBvYmplY3QgaWQgYW5kIGNhdGVnb3J5X2lkXHJcbiAgICovXHJcbiAgZ2V0QXNzZXNzbWVudERldGFpbHMoYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcclxuICAgICAgLmdldEFzc2Vzc21lbnREZXRhaWxzQnlJRChhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0QXNzZXNzbWVudERhdGEocmVzLCBhc3Nlc3NtZW50RGV0YWlscywgdHlwZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0QXNzZXNzbWVudERhdGEocmVzOiBhbnksIGFzc2Vzc21lbnREZXRhaWxzOiBhbnksIHR5cGU/OiBzdHJpbmcpIHtcclxuICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHR5cGUgPT09ICdhc3Nlc3NtZW50Jykge1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5RGV0YWlscyA9IHJlc1swXS5jYXRlZ29yeS5maW5kKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuX2lkID09IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm1vcmVPcHRpb25zLkFTU0VTU01FTlQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xyXG4gICAgICAgICAgY2F0ZWdvcnlfaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkLFxyXG4gICAgICAgICAgYXNzZXNzbWVudF9pZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcclxuICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB7XHJcbiAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxyXG4gICAgICAgICAgICBhc3Nlc3NtZW50X25hbWU6IHJlc1swXS5hc3Nlc3NtZW50X25hbWUsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uczogcmVzWzBdLnF1ZXN0aW9uc0NvdW50LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNhdGVnb3J5X2RldGFpbHM6IGNhdGVnb3J5RGV0YWlscyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYXNzZXNzbWVudERhdGEpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTX05FVyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudCh7IGFzc2Vzc21lbnREZXRhaWxzOiByZXNbMF0ucXVlc3Rpb25zIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUNoZWNrcG9pbnRzKHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5vblJlbW92aW5nQ2hlY2twb2ludC5lbWl0KHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hlY2twb2ludCgpIHtcclxuICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFMgPSBmYWxzZTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzID0gW107XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBldmVudCBBc3Nlc3NtZW50IGRldGFpbHNcclxuICAgKi9cclxuICBwb3N0QXNzZXNzbWVudChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5uZXdfY2hlY2twb2ludHMgPSBldmVudC5hc3Nlc3NtZW50RGV0YWlscztcclxuICAgIHRoaXMuY2hlY2twb2ludENvdW50ID0gZXZlbnQuYXNzZXNzbWVudERldGFpbHMuZWxlbWVudHM/Lmxlbmd0aDtcclxuICAgIHRoaXMuY2hlY2twb2ludENvdW50VXBkYXRlZC5lbWl0KHRoaXMuY2hlY2twb2ludENvdW50KTtcclxuICAgIHRoaXMuc2V0SXNVcGxvYWRlZChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZXRJc1VwbG9hZGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghZXZlbnQpIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0RlZmF1bHRQcm9ncmFtT25SZW1vdmUocHJvZ3JhbTogYW55KSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5maW5kSW5kZXgoXHJcbiAgICAgIChlbDogYW55KSA9PiBlbD8uY2F0ZWdvcnlfaWQgPT09IHByb2dyYW0/LmNhdGVnb3J5X2lkXHJcbiAgICApO1xyXG4gICAgY29uc3QgcHJvZ3JhbUluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/LmZpbmRJbmRleChcclxuICAgICAgKGVsOiBhbnkpID0+IGVsPy5jYXRlZ29yeV9pZCA9PT0gcHJvZ3JhbT8uY2F0ZWdvcnlfaWRcclxuICAgICk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICBjb25zdCB1cGRhdGVkQ2F0ZWdvcmllcyA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeT8uZmlsdGVyKFxyXG4gICAgICAgIChlbDogYW55KSA9PlxyXG4gICAgICAgICAgIShlbCA9PT0gcHJvZ3JhbT8uY2F0ZWdvcnlfaWQgfHwgcHJvZ3JhbT8uY2hpbGRfaWQ/LmluY2x1ZGVzKGVsKSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSB1cGRhdGVkQ2F0ZWdvcmllcztcclxuICAgIH1cclxuICAgIGlmIChwcm9ncmFtSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBbXTtcclxuICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbS5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW1bMF1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhbiBhcnJheSBvZiBudW1iZXJzIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHVuaXF1ZSBudW1iZXJzLlxyXG4gICAqIEBwYXJhbSB7YW55fSBhcnJheSAtIFRoZSBhcnJheSB5b3Ugd2FudCB0byBnZXQgdGhlIHVuaXF1ZSB2YWx1ZXMgZnJvbS5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLlxyXG4gICAqL1xyXG4gIGdldFVuaXF1ZUlkcyhhcnJheTogYW55KSB7XHJcbiAgICBjb25zdCB1bmlxdWUgPSBbLi4ubmV3IFNldChhcnJheSldO1xyXG4gICAgcmV0dXJuIHVuaXF1ZTtcclxuICB9XHJcblxyXG4gIG9wZW5Bc3NpZ25lZUNoYW5nZUNvbmZpcm1hdGlvbihldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJ0FOWV9PTkUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJyc7XHJcbiAgICAgIHRoaXMuYXNzaWduZWVUeXBlQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgbW9kZSBpcyBFRElULCBlbWl0IHRoZSBldmVudC5cclxuICAgKiBAcGFyYW0ge2FueX0gZXZlbnQgLSBhbnkgLSB0aGUgZXZlbnQgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgcmFkaW8gYnV0dG9uXHJcbiAgICovXHJcbiAgb25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3cgPVxyXG4gICAgICBldmVudCA9PT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnICYmIHRoaXMuaGFzUmV2aWV3ZXIpIHtcclxuICAgICAgdGhpcy5vblJldmlld2VyVHlwZUNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFldmVudCkge1xyXG4gICAgICBldmVudCA9IHtcclxuICAgICAgICByY19pZHM6ICcnLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIsXHJcbiAgICAgICAgc3RhdGU6IDEsXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChldmVudD8uc2VhcmNoU3RyaW5nICYmIHRoaXMuZ3JjU2VhcmNoU3RyaW5nICE9PSBldmVudD8uc2VhcmNoU3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuZ3JjU2VhcmNoU3RyaW5nID0gZXZlbnQ/LnNlYXJjaFN0cmluZztcclxuICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHtcclxuICAgICAgICByY19pZHM6ICcnLFxyXG4gICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5ncmNTZWFyY2hTdHJpbmcsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncmNMb2FkZXIgPSB0cnVlO1xyXG4gICAgZXZlbnRbJ3JjX2lkcyddID0gdGhpcy5nZXRBbGxSQ0lkcyh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyk7XHJcbiAgICBldmVudFsnZ3JjVHlwZSddID0gdGhpcy5zZWxlY3RlZEdSQ1RhYjtcclxuICAgIHRoaXMub3RoZXJHUkNTdWJzY3JpcHRpb24gPSB0aGlzLmdyY1NlcnZpY2VcclxuICAgICAgLmdldEdSQ0xpc3QoZXZlbnQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ3JjTGlzdCA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5ncmNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZnVuY3Rpb24gYGdldE90aGVyR1JDVGFiQ291bnRgIHJldHJpZXZlcyB0aGUgY291bnQgb2YgZGlmZmVyZW50IHR5cGVzIG9mIGl0ZW1zIChhc3NldHMsXHJcbiAgICogcHJvY2Vzc2VzLCB2ZW5kb3JzLCBpbnZlbnRvcnkpIGFuZCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIHRhYnMgd2l0aCB0aGUgY291bnQuXHJcbiAgICogQHBhcmFtIHthbnl9IFtldmVudF0gLSBUaGUgXCJldmVudFwiIHBhcmFtZXRlciBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZVxyXG4gICAqIFwiZ2V0T3RoZXJHUkNUYWJDb3VudFwiIGZ1bmN0aW9uLiBJdCBpcyBvZiB0eXBlIFwiYW55XCIsIHdoaWNoIG1lYW5zIGl0IGNhbiBhY2NlcHQgYW55IGRhdGEgdHlwZS5cclxuICAgKi9cclxuICBnZXRPdGhlckdSQ1RhYkNvdW50KGV2ZW50PzogYW55KSB7XHJcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcclxuICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRHUkNUYWJzQ291bnQoZXZlbnQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkLmZvckVhY2goKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgT0JKRUNUX0xBQkVMOiBhbnkgPSB7XHJcbiAgICAgICAgICBBU1NFVDogJ0Fzc2V0cycsXHJcbiAgICAgICAgICBQUk9DRVNTOiAnUHJvY2Vzc2VzJyxcclxuICAgICAgICAgIFZFTkRPUjogJ1ZlbmRvcnMnLFxyXG4gICAgICAgICAgSU5WRU5UT1JZOiAnSW52ZW50b3J5JyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZ3JjVGFiTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgVEFCX05BTUUgPSBPQkpFQ1RfTEFCRUxbdGFiPy50aXRsZT8udG9VcHBlckNhc2UoKV07XHJcbiAgICAgICAgaWYgKFRBQl9OQU1FKSB7XHJcbiAgICAgICAgICB0YWIudGl0bGUgPSBUQUJfTkFNRTtcclxuICAgICAgICAgIHRhYi52YWx1ZSA9IGluZGV4O1xyXG4gICAgICAgICAgdGFiLnNlbGVjdGVkQ291bnQgPSAwO1xyXG4gICAgICAgICAgdGFiLmtleSA9IFRBQl9OQU1FPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBrZXkgPSBgJHt0YWIua2V5fV90eXBlX2NvdW50YDtcclxuICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICB0YWIuY291bnQgPSBkYXRhW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUkNJZHMocmNJZHM6IGFueSkge1xyXG4gICAgY29uc3QgYWxsSWRzOiBudW1iZXJbXSA9IHJjSWRzLmZsYXRNYXAoKHJjOiBhbnkpID0+IFtcclxuICAgICAgLi4ucmMuaXRlbV9wYXJlbnRfaWRzLm1hcChOdW1iZXIpLFxyXG4gICAgICAuLi5yYy5pdGVtX2NoaWxkX2lkcy5tYXAoTnVtYmVyKSxcclxuICAgICAgTnVtYmVyKHJjLnJjX2lkKSxcclxuICAgIF0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcclxuICAgICAgLmZpbHRlcigocmM6IGFueSkgPT4gYWxsSWRzLmluY2x1ZGVzKHJjPy5yY19pZCkpXHJcbiAgICAgIC5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKVxyXG4gICAgICAuam9pbignLCcpO1xyXG4gIH1cclxuXHJcbiAgc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKSB7XHJcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xyXG4gICAgdGhpcy5yZXNldEdSQ0RhdGFXaXRoVHlwZXMoKTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1tncmNUeXBlc1tpdGVtPy50eXBlXV0/LnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRHUkNEYXRhV2l0aFR5cGVzKCkge1xyXG4gICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzID0ge1xyXG4gICAgICBhc3NldHM6IFtdLFxyXG4gICAgICBwcm9jZXNzZXM6IFtdLFxyXG4gICAgICB2ZW5kb3JzOiBbXSxcclxuICAgICAgaW52ZW50b3J5OiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZW1vdmVPdGhlckdSQ09iamVjdHMoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHMuZmlsdGVyKFxyXG4gICAgICAgIChncmM6IGFueSkgPT4gZ3JjPy5faWQgIT09IGV2ZW50Py5faWRcclxuICAgICAgKTtcclxuICAgIHRoaXMuZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50LCBncmNUeXBlc1tldmVudD8udHlwZV0pO1xyXG4gICAgdGhpcy5vdGhlckdSQ0NhcmRbMF0uc2VsZWN0ZWRDb3VudFxyXG4gICAgICA/ICh0aGlzLm90aGVyR1JDQ2FyZFtldmVudD8udHlwZV0uc2VsZWN0ZWRDb3VudCAtPSAxKVxyXG4gICAgICA6IDA7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJPdGhlckdSQ0RhdGEoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbdHlwZV0gPSB0aGlzLmdyY0RhdGFXaXRoVHlwZXNbdHlwZV0/LmZpbHRlcihcclxuICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbHctY29tcGxpYW5jZVwiICpuZ0lmPVwiIXNob3dTbWlsZXlcIj5cclxuICA8IS0tIEJlaGFsZiAtLT5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cIm1vZGUgIT09ICdFRElUJ1wiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvaW0tY3JlYXRpbmcuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPkkgYW0gY3JlYXRpbmcgdGhpcyByZXNwb25zaWJpbGl0eSBvbiBiZWhhbGYgb2Ygc29tZW9uZSBlbHNlXHJcbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxyXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmVuYWJsZVwiXHJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlID0gJGV2ZW50O1xyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IFtdXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWdub3JzJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWdub3JzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhpcyByZXNwb25zaWJpbGl0eT9cIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5lbmFibGVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWdub3JzJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgwLCAxKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWdub3JzJywgYl91c2VyKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImJfdXNlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBiX3VzZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImJlaGFsZi5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBiX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWdub3JzJyxiX3VzZXIpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tiX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJiZWhhbGYucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWdub3JzJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWdub3JzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjYmVoYWxmIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBiX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3QgfCBzbGljZSA6IDI7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWdub3JzJywgYl91c2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgYl91c2VyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hvbSdcIlxyXG4gICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGlzIHJlc3BvbnNpYmlsaXR5LlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBXaGF0IC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyYW1ld29yaydcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5TmFtZScgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgICAgIWZvY3VzLnJlc3BvbnNpYmlsaXR5TmFtZVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doYXQuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpID09PSAnJyB8fFxyXG4gICAgICAgICAgZm9jdXMucmVzcG9uc2liaWxpdHlOYW1lXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpICE9PSAnJyAmJlxyXG4gICAgICAgICAgIWZvY3VzLnJlc3BvbnNpYmlsaXR5TmFtZVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgV2hhdD8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgaXNGcmFtZXdvcmtBdmFpbGFibGUgJiZcclxuICAgICAgICAgICAgICBtb2RlICE9PSAnRURJVCcgJiZcclxuICAgICAgICAgICAgICBvcGVuZWRGcm9tICE9PSAnUklTS19UUkVBVE1FTlQnICYmXHJcbiAgICAgICAgICAgICAgYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmFtZXdvcmsnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgU2VsZWN0IEZyb20gQSBmcmFtZXdvcmtcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ua2V5UmVzcG9uc2liaWxpdHlcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpbmRpY2F0b3JcIlxyXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1RoaXMgcmVzcG9uc2liaWxpdHkgaXMgbWFya2VkIGFzIGtleSByZXNwb25zaWJpbGl0eS4nXCJcclxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlYTcwOzwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSA9PSAnJyB8fCAhaXNFZGl0V2hhdFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIFtuZ01vZGVsXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBpcyB0aGUgcmVzcG9uc2liaWxpdHk/XCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwid2hhdENoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXNwb25zaWJpbGl0eU5hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICAgICAgICAgIChjbGlja091dHNpZGUpPVwidGVzdEZ1bmN0aW9uKClcIlxyXG4gICAgICAgICAgI3doYXRcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgIT0gJycgJiYgaXNFZGl0V2hhdFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Py5uYW1lXHJcbiAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRXaGF0KCRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hhdCdcIlxyXG4gICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgUGxlYXNlIGVudGVyIGEgbmFtZSBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1yb3cgYWxpZ24tcmlnaHRcIj5cclxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eT8ua2V5UmVzcG9uc2liaWxpdHlcIlxyXG4gICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkua2V5UmVzcG9uc2liaWxpdHkgPSAkZXZlbnRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPktleSBSZXNwb25zaWJpbGl0eVxyXG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFdobyAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hvLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWduZWVzJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5XaG8/IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcclxuICAgICAgICA+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAoIWZlYXR1cmVGbGFnX2dyb3VwcyB8fFxyXG4gICAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKSlcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbmVlcycsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gaXMgcmVzcG9uc2libGUgZm9yIGNvbXBsZXRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5P1wiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XHJcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwKSAmJlxyXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgZV91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgwLCAxKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWduZWVzJywgZV91c2VyKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImVfdXNlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBlX3VzZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuYmdcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXNzaWduZWVzLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdhc3NpZ25lZXMnLCByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+Jjwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFhbGxHcm91cEFzc2lnbmVlIHx8IG1vZGUgIT09ICdFRElUJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcclxuICAgICAgICAgICAgICAgICAgICAnZ3JvdXBhc3NpZ25lZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdPy5ncm91cF9uYW1lXHJcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxlbmd0aD4yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgZV91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgwLDIpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsZV91c2VyKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZV91c2VyLm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzaWduZWVzLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJ1c2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj4gK3t7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiKCFhbGxHcm91cEFzc2lnbmVlIHx8IG1vZGUgIT09ICdFRElUJylcIiBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cGFzc2lnbmVlcycscmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWduZWVzJyAmJlxyXG4gICAgICAgICAgICAgICghZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZUZsYWdfZ3JvdXBzICYmICghYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCcpKSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25lZXMnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBlX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QgfCBzbGljZSA6IDFcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWduZWVzJywgZV91c2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZV91c2VyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmZWF0dXJlRmxhZ19ncm91cHMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIWFsbEdyb3VwQXNzaWduZWUgfHwgbW9kZSAhPT0gJ0VESVQnKSlcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwYXNzaWduZWVzJywgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cC5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgKm5nSWY9XCJpbnZhbGlkVHlwZSA9PT0gJ3dobydcIlxyXG4gICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoaXNcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5LlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBBc3NpZ25lZFwiPlxyXG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAqbmdJZj1cIm1vZGUgIT09ICdFRElUJ1wiXHJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTEwnXCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PSAnQUxMJ1wiXHJcbiAgICAgICAgICAgIFtuYW1lXT1cIid3aGF0J1wiXHJcbiAgICAgICAgICAgID5BTEwgU0VMRUNURUQgUEVSU09OUyBORUVEIFRPIENPTVBMRVRFIFRISVM8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBwZXJzb24uJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAqbmdJZj1cIm1vZGUgIT09ICdFRElUJ1wiXHJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwiXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTllfT05FJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09ICdBTllfT05FJ1wiXHJcbiAgICAgICAgICAgIFtuYW1lXT1cIid3aGF0J1wiXHJcbiAgICAgICAgICAgID5BTlkgU0VMRUNURUQgUEVSU09OIENBTiBDT01QTEVURSBUSElTXHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIG9ubHkgb25lIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgY3JlYXRlZC4nXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInN3aXRjaC1yb3cgYWxpZ24tcmlnaHRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIG1vZGUgPT0gJ0VESVQnICYmXHJcbiAgICAgICAgICAgICAgKCFmZWF0dXJlRmxhZ19ncm91cHMgfHxcclxuICAgICAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxyXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cIm9wZW5Bc3NpZ25lZUNoYW5nZUNvbmZpcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVNcclxuICAgICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNhc3NpZ25lZXMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBlX3VzZXIubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gV2hlbj8gLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcclxuICAgICAgICAhcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hlbi5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cIiFyZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT0gJycgJiZcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9ICc1fjB+MH4wJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+V2hlbj8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSA9PSAnJyB8fFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSA9PSAnNX4wfjB+MCdcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZnJlcXVlbmN5UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICBTZXQgQSBmcmVxdWVuY3lcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9ICcnICYmXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9PSAnNX4wfjB+MCdcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIGJ1dHRvbi1zZWNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcFwiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgID57eyBmcmVxdWVuY3lQbGFjZWhvbGRlciB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aGVuJ1wiXHJcbiAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBmcmVxdWVuY3kgb2Ygb2NjdXJyZW5jZSBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gTm90ZXMgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnbm90ZXMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdub3RlcycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/LmRlc2NyaXB0aW9uKS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgICAgIWZvY3VzLmRlc2NyaXB0aW9uXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvbm90ZXMuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5kZXNjcmlwdGlvbikudHJpbSgpID09PSAnJyB8fFxyXG4gICAgICAgICAgZm9jdXMuZGVzY3JpcHRpb25cclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/LmRlc2NyaXB0aW9uKS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgICAgICAhZm9jdXMuZGVzY3JpcHRpb25cclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5Ob3RlczwvbGFiZWw+XHJcbiAgICAgICAgPHZjb21wbHktZWRpdG9yXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cIntcclxuICAgICAgICAgICAgbW9kZTogJ3ByaW1lJyxcclxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgICAgICAgICBsaW5rOiB0cnVlLFxyXG4gICAgICAgICAgICBpZDogJ25vdGVzJyxcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6XHJcbiAgICAgICAgICAgICAgJ0FkZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNvbXBsZXRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5J1xyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gT2JqZWN0aXZlIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5PQkpFQ1RJVkVcIlxyXG4gICAgW2F0dHIuaWRdPVwiJ09CSkVDVElWRSdcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ29iamVjdGl2ZSdcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ29iamVjdGl2ZScgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/Lm9iamVjdGl2ZSkudHJpbSgpICE9PSAnJyAmJlxyXG4gICAgICAgICFmb2N1cy5vYmplY3RpdmVcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9vYmplY3RpdmVzLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub2JqZWN0aXZlKS50cmltKCkgPT09ICcnIHx8XHJcbiAgICAgICAgICBmb2N1cy5vYmplY3RpdmVcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/Lm9iamVjdGl2ZSkudHJpbSgpICE9PSAnJyAmJlxyXG4gICAgICAgICAgIWZvY3VzLm9iamVjdGl2ZVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9iamVjdGl2ZTwvbGFiZWw+XHJcbiAgICAgICAgPHZjb21wbHktZWRpdG9yXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmVcIlxyXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJ7XHJcbiAgICAgICAgICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICAgICAgICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgICAgICAgICAgaWQ6ICdvYmplY3RpdmUnLFxyXG4gICAgICAgICAgICBsaW5rOiB0cnVlLFxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjpcclxuICAgICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSBhbiBvYmplY3RpdmUgZm9yIHRoZSByZXNwb25zaWJpbGl0eS4nXHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJDXCJcclxuICAgIFthdHRyLmlkXT1cIidSQydcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yZXNwb25zaWJpbGl0eS1jZW50ZXIuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXNwb25zaWJpbGl0eSBDZW50ZXIgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSByZXNwb25zaWJpbGl0eSBjZW50ZXIgb3IgdGhlIHJlc3BvbnNpYmlsaXR5IGNlbnRlcnMgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkuXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJyx0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKVwiIHJlYWRvbmx5PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgW2NsYXNzLnJlYWRPbmx5XT1cIm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJjIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByYylcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwib3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiXHJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmM/Lml0ZW1fbmFtZVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgPnt7IHJjPy5pdGVtX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmNQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGg+MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHJjIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLHJjKVwiICpuZ0lmPVwib3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiPiYjeGU5MGQ7PC9pPnt7cmM/Lml0ZW1fbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJjLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmMnICYmIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcmNQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCByYyBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJjIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcmMuaXRlbV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBpc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJlxyXG4gICAgICAgICAgICAobW9kZSAhPSAnRURJVCcgfHwgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoIDw9IDEpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gPGFwcC1jcy1yYWRpbz48ZGl2IFthcHBUb29sdGlwXT1cIidDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyBmb3IgZWFjaCByZXNwb25zaWJpbGl0eSBjZW50ZXInXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+Q1JFQVRFIFNFUEFSQVRFIFJFU1BPTlNJQklMSVRJRVMgRk9SIEVBQ0ggUkVTUE9OU0lCSUxJVFkgQ0VO4oCmPC9kaXY+PGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+PC9hcHAtY3MtcmFkaW8+IC0tPlxyXG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxICYmXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT09IDBcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCInZmZfcmVzcG9uc2liaWxpdHlfcmNfbGluaydcIlxyXG4gICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmNUeXBlQ2hhbmdlKDApXCJcclxuICAgICAgICAgICAgPjxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInJjLXJhZGlvLXRleHRcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ0NyZWF0ZSBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIGZvciBlYWNoIHJlc3BvbnNpYmlsaXR5IGNlbnRlcnMnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQ1JFQVRFIFNFUEFSQVRFIFJFU1BPTlNJQklMSVRJRVMgRk9SIEVBQ0ggUkVTUE9OU0lCSUxJVFkgQ0VO4oCmXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICAgID48L2FwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxICYmXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT09IDFcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCInZmZfcmVzcG9uc2liaWxpdHlfcmNfbGluaydcIlxyXG4gICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmNUeXBlQ2hhbmdlKDEpXCJcclxuICAgICAgICAgICAgPkRJU1BMQVkgVEhFIFNBTUUgUkVTUE9OU0lCSUxJVFkgSU4gQUxMIFJFU1BPTlNJQklMSVRZIENFTlRFUlM8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCB0aGUgc2FtZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIGxpbmtlZCB0byBlYWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlci4nXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgICAgPjwvYXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUHJvZ3JhbSAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUFJPR1JBTVwiXHJcbiAgICBbYXR0ci5pZF09XCInUFJPR1JBTSdcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Byb2dyYW0nXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcclxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdwcm9ncmFtJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncHJvZ3JhbSdcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5Qcm9ncmFtPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Byb2dyYW0nLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIGFyaWEtcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIFByb2dyYW0gb3IgUHJvZ3JhbSBDYXRlZ29yaWVzIHRoYXQgdGhpcyByZXNwb25zaWJpbGl0eSByZWxhdGVzIHRvLlwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwcm9ncmFtJyx0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJlc3BvbnNpYmlsaXR5IHByb2dyYW0ocylcIiByZWFkb25seT4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb2dyYW0gb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtXCI+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFoaWRkZW5MaXN0Py5pbmNsdWRlcygnUFJPR1JBTScpICYmXHJcbiAgICAgICAgICAgICAgICAgICFwcm9ncmFtPy5pc1ZpZXdPbmx5UHJvZ3JhbVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Byb2dyYW0nLCBwcm9ncmFtKVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInByb2dyYW0/Lm5hbWUgPz8gJy0tJ1wiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBwcm9ncmFtPy5uYW1lID8/IFwiLS1cIiB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJvZ3JhbS5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbT8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoPjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHByb2dyYW0gb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtXCI+PGkgY2xhc3M9XCJpY29uc1wiICpuZ0lmPVwiZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiIChjbGljayk9XCJyZW1vdmUoJ3Byb2dyYW0nLHByb2dyYW0pXCI+JiN4ZTkwZDs8L2k+IHt7cHJvZ3JhbT8ubmFtZT8/Jy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0gLSA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGggPiAyXCIgY2xhc3M9XCJjb3VudFwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+KyB7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj4gLSAtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+KyB7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nICYmICFoaWRkZW5MaXN0LmluY2x1ZGVzKCdQUk9HUkFNJylcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwcm9ncmFtJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI3Byb2dyYW0gW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibXVsdGlwbGUtcHJvZ3JhbVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeS1sYWJlbFwiPlBSSU1BUlk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBwcm9ncmFtIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXZhdGFyLWNhcmRcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHByb2dyYW0/LmNhdGVnb3J5X2lkICE9PVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwcm9ncmFtPy5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIWhpZGRlbkxpc3Q/LmluY2x1ZGVzKCdQUk9HUkFNJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXByb2dyYW0/LmlzVmlld09ubHlQcm9ncmFtXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJywgcHJvZ3JhbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2dyYW0/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY3VzdG9tVGFncz8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uY3VzdG9tVGFnc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFnPy50YWdfbmFtZT8udHJpbSgpXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC0yXCI+e3tcclxuICAgICAgICAgICAgICAgIHRhZz8udGFnX25hbWVcclxuICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHRhZz8udGFnX25hbWUgfX1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRm9ybWF0ICYgRXZpZGVuY2UgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LkZPUk1BVEVfRVZJREVOQ0VcIlxyXG4gICAgW2F0dHIuaWRdPVwiJ0ZPUk1BVEVfRVZJREVOQ0UnXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmb3JtYXRlX2V2aWRlbmNlJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZm9ybWF0ZV9ldmlkZW5jZScgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkID09IGZhbHNlICYmXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlcy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3M/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgXCJcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvZm9ybWF0LWV2aWRlbmNlLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkIHx8XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlcy5sZW5ndGggfHxcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzPy5sZW5ndGhcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGFwcC1mb3JtYXQtYW5kLWV2aWRlbmNlXHJcbiAgICAgICAgKHVwZGF0ZUZpbGVzKT1cInNhdmVTZWxlY3RlZExpc3QoJ2Zvcm1hdGVfZXZpZGVuY2UnLCAkZXZlbnQpXCJcclxuICAgICAgICBbbW9kZV09XCIncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2VcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvYXBwLWZvcm1hdC1hbmQtZXZpZGVuY2U+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBBc3Nlc3NtZW50IC0tPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LkFTU0VTU01FTlRcIlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFthdHRyLmlkXT1cIidBU1NFU1NNRU5UJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICAqbmdJZj1cIiFyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Fzc2Vzc21lbnRzLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWRcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QVNTRVNTTUVOVFM8L2xhYmVsPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgdHJ1ZSk7IGlzQXNzZXNzbWVudCA9IHRydWVcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYW4gYXNzZXNzbWVudCBmb3IgdGhpcyByZXNwb25zaWJpbGl0eVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAqbmdJZj1cImFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGUgIT09ICdjb21wbGlhbmNlX2F1ZGl0J1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2Fzc2Vzc21lbnQnLCBjYXRlZ29yeSlcIlxyXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXHJcbiAgICAgICAgICAgICAgICAgID8uYXNzZXNzbWVudF9uYW1lXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgICA/LmFzc2Vzc21lbnRfbmFtZVxyXG4gICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbWwtMSB2eC10ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyByZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LnF1ZXN0aW9ucyB9fVxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LnF1ZXN0aW9ucyA+IDFcclxuICAgICAgICAgICAgICAgICAgPyBcIlF1ZXN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgIDogXCJRdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIHRydWUpOyBpc0Fzc2Vzc21lbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIENoZWNrcG9pbnRzIC0tPlxyXG4gIDwhLS0gKm5nSWY9XCJtb3JlT3B0aW9ucy5jaGVja3BvaW50c1wiIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU1wiXHJcbiAgICBbYXR0ci5pZF09XCInQ0hFQ0tQT0lOVFMnXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cydcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jaGVja3BvaW50cy5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XHJcbiAgICAgICAgICA8IS0tIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzfGpzb259fVxyXG4gICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludEluc3RydWN0aW9ufX0gLS0+XHJcblxyXG4gICAgICAgICAgQ2hlY2twb2ludHNcclxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsdHJ1ZSlcIj4rIEFkZCBDaGVja3BvaW50czwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0IGJ1dHRvbi1zZWNcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWRkIGNoZWNrcG9pbnRzIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBBZGQgQ2hlY2twb2ludHNcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBjaGVja3BvaW50IG9mIHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNoZWNrcG9pbnQ/LmxhYmVsXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IGNoZWNrcG9pbnQ/LmxhYmVsIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjaGVja3BvaW50LnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciBjaGVja3BvaW50c1wiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGg+MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5zbGljZSgwLDEpXCI+e3tjaGVja3BvaW50Py5sYWJlbH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDFcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiY2hlY2twb2ludC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJ0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCJcclxuICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dFwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImljb25zIGFsZXJ0LWljb25cIj4mI3hlOTMwOzwvaT5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgPllvdSBjYW4gbm93IHVzZSB0aGUgbmV3IDxzdHJvbmc+Q2hlY2twb2ludHMgPC9zdHJvbmc+b3JcclxuICAgICAgICAgIDxzdHJvbmc+QXNzZXNzbWVudHM8L3N0cm9uZz4gZmVhdHVyZSBpbnN0ZWFkIG9mIHRoZSBvbGQgY2hlY2twb2ludHNcclxuICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgdG8gY3JlYXRlIGFuYWx5dGljYWwgcXVlc3Rpb25zLlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInJlbW92ZS1idG5cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVDaGVja3BvaW50cygnY2hlY2twb2ludCcpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgUmVtb3ZlIENoZWNrcG9pbnRzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIHRvIGNvbnRpbnVlLjwvc3BhblxyXG4gICAgICAgID5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBjaGVja3BvaW50IG9mIHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cyB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnQ/LmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gTmV3ICBDaGVja3BvaW50cyAtLT5cclxuICA8IS0tICpuZ0lmPVwibW9yZU9wdGlvbnMuY2hlY2twb2ludHNcIiAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNfTkVXXCJcclxuICAgIFthdHRyLmlkXT1cIidDSEVDS1BPSU5UUy1ORVcnXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cy1uZXcnXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NoZWNrcG9pbnRzLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cydcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAqbmdJZj1cImNoZWNrcG9pbnRDb3VudCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cclxuICAgICAgICAgIDwhLS0ge3tyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHN8anNvbn19XHJcbiAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50SW5zdHJ1Y3Rpb259fSAtLT5cclxuXHJcbiAgICAgICAgICBDaGVja3BvaW50c1xyXG4gICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNoZWNrcG9pbnQtdmVyc2lvblwiPiBWMi4wPC9zcGFuPiAtLT5cclxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzLW5ldycsdHJ1ZSlcIj4rIEFkZCBDaGVja3BvaW50czwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID09PSAwXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFkZCBjaGVja3BvaW50cyBmb3IgdGhpcyByZXNwb25zaWJpbGl0eVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgQWRkIENoZWNrcG9pbnRzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNoZWNrcG9pbnRDb3VudCA+IDBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCduZXctY2hlY2twb2ludHMnKVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgID57eyBjaGVja3BvaW50Q291bnQgfX1cclxuICAgICAgICAgICAgICB7eyBjaGVja3BvaW50Q291bnQgPiAxID8gXCJRdWVzdGlvbnNcIiA6IFwiUXVlc3Rpb25cIiB9fTwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciBjaGVja3BvaW50c1wiIFtjbGFzcy5tb3JlLW9uZV09XCJjaGVja3BvaW50Q291bnQgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cIm9uUmVtb3ZlQ2hlY2twb2ludHMoJ25ldy1jaGVja3BvaW50cycpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjaGVja3BvaW50Q291bnR9fSB7e2NoZWNrcG9pbnRDb3VudCA+IDEgPyAnUXVlc3Rpb25zJzogJ1F1ZXN0aW9uJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMtbmV3J1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1wb3BvdmVyICNjaGVja3BvaW50IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSaXNrIENsYXNzaWZpY2F0aW9uIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5SSVNLX0NMQVNTSUZJQ0FUSU9OXCJcclxuICAgIFthdHRyLmlkXT1cIidSSVNLX0NMQVNTSUZJQ0FUSU9OJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmlza0NhbGN1bGF0b3InXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyaXNrQ2FsY3VsYXRvcicgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmlza3Muc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cclxuICAgICAgICAgIFJpc2sgQ2xhc3NpZmljYXRpb25cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jpc2tDYWxjdWxhdG9yJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgICsgUmlzayBDYWxjdWxhdG9yXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xhc3NpZmljYXRpb25cIj5cclxuICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICBjbGFzcz1cImxvd1wiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCByaXNrIG9mIHJpc2tDbGFzc2lmaWNhdGlvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltyaXNrLmNsYXNzXVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNsYXNzaWZpY2F0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3NcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyaXNrPy52YWx1ZVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IHJpc2s/Lm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJldmlld2VyIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5SRVZJRVdFUlwiXHJcbiAgICBbYXR0ci5pZF09XCInUkVWSUVXRVInXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jldmlld2VyLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXZpZXdlcjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXZpZXdlclwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcclxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDApICYmXHJcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXIubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmlld2VyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoPjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aD4yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLHJldmlld2VyKVwiPiYjeGU5MGQ7PC9pPiB7e3Jldmlld2VyLm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ3Jldmlld2VyJywgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICZcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcclxuICAgICAgICAgICAgICAgICAgICAnZ3JvdXBSZXZpZXdlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicscmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0pXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFwiPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwIFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cFJldmlld2VyJyxyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1wiXHJcbiAgICAgICAgICBbbmFtZV09XCIncmV2aWV3ZXInXCJcclxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdzZXF1ZW50aWFsJylcIlxyXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIFNFUVVFTlRJQUw8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1RoZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHNlbnQgZm9yIHJldmlldyBvbmUgYXQgYSB0aW1lIGluIHRoZSBzZXF1ZW5jZSBkZWZpbmVkIGJ5IHlvdS4nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcIlxyXG4gICAgICAgICAgW25hbWVdPVwiJ3Jldmlld2VyJ1wiXHJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmV2aWV3ZXJXb3JrZmxvd0NoYW5nZSgnYW55UmV2aWV3ZXInKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQ8aVxyXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgJ1RoZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHNlbnQgZm9yIHJldmlldyB0byBhbGwgcmV2aWV3ZXJzIGF0IHRoZSBzYW1lIHRpbWUuIElmIGFueW9uZSBvZiB0aGUgcmV2aWV3ZXIgcmV2aWV3cyB0aGUgcmVzcG9uc2liaWxpdHksIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBhcyByZXZpZXdlZC4nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI3Jldmlld2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJywgcmV2aWV3ZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyByZXZpZXdlci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0XHJcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLCByZXZpZXdlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJldmlld2VyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cFJldmlld2VyJywgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cC5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIE92ZXJzZWVyIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5PVkVSU0VFUlwiXHJcbiAgICBbYXR0ci5pZF09XCInT1ZFUlNFRVInXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAhWydvdmVyc2Vlck5vdGlmeScsICdvdmVyc2Vlck5vdGlmeSddLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKSAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L292ZXJzaWdodC5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwKSB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwKSAmJlxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcclxuICAgICAgICAgIClcclxuICAgICAgICBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5PdmVyc2lnaHQ8L2xhYmVsPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxyXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBoYXZlIG92ZXJzaWdodCBvZiB0aGUgcmVzcG9uc2liaWxpdHk/XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxyXG4gICAgICAgICAgICAoKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDApICYmXHJcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3ZlcnNlZXIubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgb3ZlcnNlZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgwLDIpXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJyxvdmVyc2VlcilcIj4mI3hlOTBkOzwvaT4ge3tvdmVyc2Vlci5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZSgnb3ZlcnNlZXInLCByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFswXSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJVc2VyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+Jjwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxyXG4gICAgICAgICAgICAgICAgICAgICdvdmVyc2Vlckdyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdLmdyb3VwX25hbWVcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDBcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyVXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+ICt7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwIFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwJyxyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIiAgPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggLTF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ292ZXJzZWVyJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxyXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignb3ZlcnNlZXJOb3RpZnknLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcmVzcG9uc2liaWxpdHkgaXMgbm90IGNvbXBsZXQuLi5cIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcmVzcG9uc2liaWxpdHkgaXMgbm90IGNvbXBsZXRlZD8nXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XHJcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCkgJiZcclxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5zbGljZShcclxuICAgICAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0Jywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3ZlcnNlZXIubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgb3ZlcnNlZXIubWVtYmVyX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5vdGlmeS5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aD4yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0JyxvdmVyc2VlcilcIj4mI3hlOTBkOzwvaT4ge3tvdmVyc2Vlci5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyTm90aWZ5TGlzdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0/LmVtcGxveWVlX25hbWVcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJub3RpZnlVc2VyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+Jjwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyR3JvdXBOb3RpZnlMaXN0JyxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0/Lmdyb3VwX25hbWVcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJub3RpZnlHcm91cC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdC5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0JyxyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXT8uZW1wbG95ZWVfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXT8uZW1wbG95ZWVfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnlVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj4gK3t7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwIFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCcscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiICA+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwibm90aWZ5R3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXJOb3RpZnknXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2Vlck5vdGlmeScsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVycyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG92ZXJzZWVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJVc2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlcnMgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG92ZXJzZWVycylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVycz8ubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2Vlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXAnLCBvdmVyc2VlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVyPy5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjbm90aWZ5IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0Jywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNub3RpZnlVc2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0Jywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNub3RpZnlHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXBOb3RpZnlMaXN0JywgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBBc3N1cmFuY2UgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LkFTU1VSQU5DRVwiXHJcbiAgICBbYXR0ci5pZF09XCInQVNTVVJBTkNFJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jldmlld2VyLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3N1cmFuY2UnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc3VyYW5jZSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXNzdXJhbmNlPC9sYWJlbD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20taW5wdXRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzdXJhbmNlJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSB0ZXN0IHBsYW4gY2F0ZWdvcmllcyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGFkZCB0aGlzIHJlc3BvbnNpYmlsaXR5IHRvLlwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGFzc3VyYW5jZSBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3N1cmFuY2UnLCBhc3N1cmFuY2UpXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzdXJhbmNlLmNhdGVnb3J5X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgYXNzdXJhbmNlLmNhdGVnb3J5X25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc3VyYW5jZS5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdhc3N1cmFuY2UnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3N1cmFuY2UnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNhc3N1cmFuY2UgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGFzc3VyYW5jZSBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3RcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3N1cmFuY2UnLCBhc3N1cmFuY2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZXF1aXJlcyBBdWRpdCAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkVRVUlSRVNfQVVESVQgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIlxyXG4gICAgW2F0dHIuaWRdPVwiJ1JFUVVJUkVTX0FVRElUJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXF1aXJlc19hdWRpdCcgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hdWRpdC5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3JlcXVpcmVzX2F1ZGl0J1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmVxdWlyZXNfYXVkaXQnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJFUVVJUkVTIEFVRElUPzwvbGFiZWw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJJZiB5ZXMsIHNlbGVjdCBhbiBBdWRpdCBDYXRlZ29yeS5cIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmVxdWlyZXNfYXVkaXQnLCB0cnVlKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPiAwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyZXF1aXJlc19hdWRpdCcsIG92ZXJzZWVyKVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0WzBdPy5jYXRlZ29yeV9uYW1lXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3RbMF0/LmNhdGVnb3J5X25hbWVcclxuICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmVxdWlyZXNfYXVkaXQnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBjOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8IS0tIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIEVkaXQ8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC04XCI+XHJcbiAgICAgICAgICAgIFNBTVBMRSBTSVpFXHJcbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJpc1NhbXBsZVwiXHJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic3dpdGNoRW5hYmxlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYW1wbGUtcGFydFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNTYW1wbGVcIj5cclxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgIHZhbHVlPVwiMFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYW1wbGUtcmFkaW9cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFNhbXBsZURhdGEoMClcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkU2FtcGxlID09PSAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+Q09VTlQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCItLVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tJbnB1dFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzYW1wbGVWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvclwiPk9SPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2FtcGxlLXJhZGlvXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRTYW1wbGVEYXRhKDEpXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFNhbXBsZSA9PT0gMVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPlBFUkNFTlRBR0U8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImNoZWNrSW5wdXRWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2FtcGxlUGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi0tXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC04XCJcclxuICAgICAgICAgICAgPlNFVCBBIFJFTUlOREVSIElGIFRIRSBBVURJVCBQTEFOIElTIE5PVCBDUkVBVEVELjwvbGFiZWxcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1pbmRlci1wYXJ0XCI+XHJcbiAgICAgICAgICAgIFNlbmQgcmVtaW5kZXIgZXZlcnlcclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCIyXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgRGF5IGJ5XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGltZVwiXHJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiMTJociBmb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdWRpdFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgW25neFRpbWVwaWNrZXJdPVwiZGFpbHlUaW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiYXVkaXRUaW1lLnRvVXBwZXJDYXNlKClcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgW21pbl09XCJjdXJyZW50VGltZVwiXHJcbiAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5NTU7PC9pPlxyXG4gICAgICAgICAgICAgIDxuZ3gtbWF0ZXJpYWwtdGltZXBpY2tlciAjZGFpbHlUaW1lIFtkZWZhdWx0VGltZV09XCJhdWRpdFRpbWVcIj5cclxuICAgICAgICAgICAgICA8L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIExpbmsgb2YgR1JDIG9iamVjdHMgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LkdSQ19PQkpFQ1RTICYmIHJlc3BvbnNpYmlsaXR5Rm9ybS5yYy5sZW5ndGggPiAwXCJcclxuICAgIFthdHRyLmlkXT1cIidHUkNfT0JKRUNUUydcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQ19PQkpFQ1RTJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDX09CSkVDVFMnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvYXVkaXQuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnR1JDX09CSkVDVFMnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDX09CSkVDVFMnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkxJTksgR1JDIE9CSkVDVChTKTwvbGFiZWw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID09PSAwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBHUkMgb2JqZWN0KHMpIHRvIGxpbmsgd2l0aCB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ0dSQ19PQkpFQ1RTJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWRHUkMgb2YgR1JDX1RZUEVfQVJSQVk7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXT8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkIHZ4LW1iLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBncmMgb2YgZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10/LnNsaWNlKDAsIDEpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnR1JDX09CSkVDVFMnLCBncmMsIDApXCJcclxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkR1JDIHwgdGl0bGVjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZ3JjPy5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgZ3JjPy5uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9wb3ZlckdSQy5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXT8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICt7eyBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXS5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEdSQ1RhYiA9IGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdWzBdPy50eXBlO1xyXG4gICAgICAgICAgICAgICAgICBnZXRPdGhlckdSQ09iamVjdHMoKTtcclxuICAgICAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignR1JDX09CSkVDVFMnLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9wb3ZlckdSQyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBncmMgb2YgZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10gfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ0dSQ19PQkpFQ1RTJywgZ3JjLCBqICsgMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyYy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGFwcC11c2Vycy1yYWRpby1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYXNzaWdub3JzTGlzdFwiXHJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0XCJcclxuICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcclxuICBbdXNlcklkS2V5XT1cIidtZW1iZXJfaWQnXCJcclxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXHJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWdub3JzJywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbj5cclxuPC9hcHAtdXNlcnMtcmFkaW8tbGlzdD5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcIj5cclxuICA8YXBwLWdyb3VwLXVzZXJzLWxpc3RcclxuICAgICpuZ0lmPVwiXHJcbiAgICAgIGlzRW50cnVzdCB8fCByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ud2hvQ2FuQ29tcGxldGUgPT09ICdBTllfT05FJ1xyXG4gICAgXCJcclxuICAgIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxyXG4gICAgW3VzZXJzTGlzdF09XCJhc3NpZ25lZXNMaXN0XCJcclxuICAgIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXHJcbiAgICBbZ3JvdXBzTGlzdF09XCJncm91cHNMaXN0XCJcclxuICAgIFthc3NpZ25lZUdyb3Vwc0xpc3RdPVwiZ3JvdXBBc3NpZ25lZUxpc3RcIlxyXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RcIlxyXG4gICAgW3NlbGVjdGVkR3JvdXBzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RcIlxyXG4gICAgW3VzZXJJZEtleV09XCInbXlfbWVtYmVyX2lkJ1wiXHJcbiAgICBbZ3JvdXBJZEtleV09XCInZ3JvdXBfaWQnXCJcclxuICAgIFtsb2FkZXJdPVwidXNlckxpc3RMb2FkZXIgfHwgYXNzaWdub3JzTGlzdExvYWRlclwiXHJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25lZXMnLCAkZXZlbnQpXCJcclxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gICAgW2dyb3Vwc0VuYWJsZWRdPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICA+XHJcbiAgPC9hcHAtZ3JvdXAtdXNlcnMtbGlzdD5cclxuICA8YXBwLXVzZXJzLXJhZGlvLWxpc3RcclxuICAgICpuZ0lmPVwiXHJcbiAgICAgICFpc0VudHJ1c3QgJiYgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXHJcbiAgICBcIlxyXG4gICAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcclxuICAgIFt1c2Vyc0xpc3RdPVwiYXNzaWduZWVzTGlzdFwiXHJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3RcIlxyXG4gICAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcclxuICAgIFtpdGVtTmFtZUtleV09XCInZW1wbG95ZWVfbmFtZSdcIlxyXG4gICAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInQXNzaWduZWUnXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbmVlcycsICRldmVudClcIlxyXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbiAgPlxyXG4gIDwvYXBwLXVzZXJzLXJhZGlvLWxpc3Q+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGFwcC1jaGVja3BvaW50c1xyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cydcIlxyXG4gIFtjaGVja3BvaW50SW5zdHJ1Y3Rpb25dPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50SW5zdHJ1Y3Rpb25cIlxyXG4gIFtjaGVja3BvaW50RGF0YV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzXCJcclxuICAoc2F2ZUNoZWNrUG9pbnQpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2hlY2twb2ludHMnLCAkZXZlbnQpXCJcclxuICAoY2xvc2VDaGVja1BvaW50KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbj48L2FwcC1jaGVja3BvaW50cz5cclxuPGFwcC1mcmVxdWVuY3ktY29udGFpbmVyXHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gIFtmcmVxdWVuY3lEZXRhaWxzXT1cImZyZXF1ZW5jeURldGFpbHNcIlxyXG4gIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxyXG4gIChzZWxlY3RlZEZyZXF1ZW5jeSk9XCJmcmVxdWVuY3lEYXRhKCRldmVudClcIlxyXG4gIFttb2RlXT1cIidyZXNwb25zaWJpbGl0eSdcIlxyXG4gIChjbG9zZUZyZXF1ZW5jeSk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4+XHJcbjwvYXBwLWZyZXF1ZW5jeS1jb250YWluZXI+XHJcblxyXG48YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxyXG4gIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cInJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcIlxyXG4gIFtyYWRpb1NlbGVjdGlvbl09XCJcclxuICAgIG1vZGUgPT0gJ0VESVQnICYmIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMCA/IHRydWUgOiBmYWxzZVxyXG4gIFwiXHJcbiAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yY1wiXHJcbiAgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyYycsICRldmVudClcIlxyXG4gIChjbG9zZVJjTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4+XHJcbjwvYXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdD5cclxuXHJcbjxhcHAtY2F0ZWdvcnktbXVsdGktc2VsZWN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXHJcbiAgW2NhdGVnb3J5TGlzdF09XCJjYXRlZ29yaWVzXCJcclxuICBbYWxsQ2F0ZWdvcmllc109XCJhbGxDYXRlZ29yaWVzXCJcclxuICBbY2F0ZWdvcnlJZEtleV09XCInY2F0ZWdvcnlfaWQnXCJcclxuICBbc2VsZWN0ZWRDYXRlZ29yaWVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeVwiXHJcbiAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlQ2F0ZWdvcmllc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuPlxyXG48L2FwcC1jYXRlZ29yeS1tdWx0aS1zZWxlY3Q+XHJcblxyXG48IS0tIFtoaWRlUHJvZ3JhbXNMaXN0XT1cIihzZWxlY3RlZFByb2dyYW0gICYmICEodGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndW5jYXRlZ29yaXplZCcgKSkgPyB0cnVlIDogZmFsc2VcIiAtLT5cclxuPGFwcC1wcm9ncmFtLWxpc3RpbmdcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncHJvZ3JhbSdcIlxyXG4gIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxyXG4gIFtwcm9ncmFtc0xpc3RdPVwicHJvZ3JhbXNMaXN0XCJcclxuICBbc2VsZWN0ZWRDYXRlZ29yaWVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSB8IHJlZkRpc2Nvbm5lY3RcIlxyXG4gIFtzZWxlY3RlZFByb2dyYW1dPVwicmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gfCByZWZEaXNjb25uZWN0XCJcclxuICAoc2F2ZVNlbGVjdGVkUHJvZ3JhbSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdwcm9ncmFtJywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlRXZlbnQpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbbGlua2VkUHJvZ3JhbV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW1cIlxyXG4gIFttb2RlXT1cIlxyXG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmXHJcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3VuY2F0ZWdvcml6ZWQnXHJcbiAgICAgID8gJydcclxuICAgICAgOiBtb2RlXHJcbiAgXCJcclxuICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcclxuICBbcmVzcG9uc2liaWxpdHlJZF09XCJyZXNwb25zaWJpbGl0eUlkXCJcclxuPjwvYXBwLXByb2dyYW0tbGlzdGluZz5cclxuXHJcbjxhcHAtb3duZXItbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgYSBSZXZpZXdlcidcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcclxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuICBbdXNlcnNMaXN0XT1cImFsbFVzZXJzTGlzdFwiXHJcbiAgW3Nob3dXb3JrZmxvd109XCJ0cnVlXCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3RcIlxyXG4gIFt1c2VySWRLZXldPVwiJ2VtcGxveWVlX2lkJ1wiXHJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcclxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXHJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwiXHJcbiAgICBzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdlcicsICRldmVudCk7XHJcbiAgICBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXHJcbiAgXCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbbW9kZV09XCJtb2RlXCJcclxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidSZXZpZXdlcidcIlxyXG4gIFtyZXZpZXdlcldvcmtmbG93VHlwZV09XCJcclxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5zZXF1ZW50aWFsV29ya2Zsb3dcclxuICAgICAgPyAnU0VRVUVOVElBTCdcclxuICAgICAgOiAnQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQnXHJcbiAgXCJcclxuICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxyXG4+XHJcbjwvYXBwLW93bmVyLWxpc3Q+XHJcbjx1c2VyLWdyb3VwLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInICYmIGZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgW3NlbGVjdGVkUmV2aWV3ZXJdPVwidHJ1ZVwiXHJcbiAgW3VzZXJsaXN0XT1cInJldmlld2VyTWVtYmVySWRzTGlzdFwiXHJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcclxuICBbZ3JvdXBMaXN0XT1cImdyb3VwUmV2aWV3ZXJMaXN0XCJcclxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFwiXHJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RcIlxyXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICAoc2F2ZSk9XCJcclxuICAgIHNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld2VyJywgJGV2ZW50KTtcclxuICAgIGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcclxuICBcIlxyXG4gIFttb2RlXT1cIm1vZGVcIlxyXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXHJcbiAgW2xvYWRpbmddPVwidXNlckxpc3RMb2FkZXIgfHwgYXNzaWdub3JzTGlzdExvYWRlclwiXHJcbiAgKHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlKT1cInJldmlld2VyVHlwZUNoYW5nZSgkZXZlbnQpXCJcclxuICBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwiXHJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8uc2VxdWVudGlhbFdvcmtmbG93XHJcbiAgICAgID8gJ1NFUVVFTlRJQUwnXHJcbiAgICAgIDogJ0FOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEJ1xyXG4gIFwiXHJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcbjxhcHAtb3duZXItbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcicgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3RcIlxyXG4gIFt1c2VySWRLZXldPVwiJ2VtcGxveWVlX2lkJ1wiXHJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcclxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXHJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3ZlcnNlZXInLCAkZXZlbnQpXCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxyXG4+XHJcbjwvYXBwLW93bmVyLWxpc3Q+XHJcbjx1c2VyLWdyb3VwLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInICYmIGZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcclxuICBbZ3JvdXBMaXN0XT1cImdyb3VwT3ZlcnNlZXJMaXN0XCJcclxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RcIlxyXG4gIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3RcIlxyXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXHJcbiAgW2xvYWRpbmddPVwidXNlckxpc3RMb2FkZXIgfHwgYXNzaWdub3JzTGlzdExvYWRlclwiXHJcbiAgKHNhdmUpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3ZlcnNlZXInLCAkZXZlbnQpXCJcclxuICAoY2FuY2VsKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG48YXBwLW93bmVyLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknICYmICFmZWF0dXJlRmxhZ19ncm91cHNcIlxyXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcclxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuICBbdXNlcnNMaXN0XT1cImFsbFVzZXJzTGlzdFwiXHJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3RcIlxyXG4gIFt1c2VySWRLZXldPVwiJ2VtcGxveWVlX2lkJ1wiXHJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ292ZXJzZWVyTm90aWZ5JywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcclxuPjwvYXBwLW93bmVyLWxpc3Q+XHJcbjx1c2VyLWdyb3VwLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknICYmIGZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgW2dyb3VwTGlzdF09XCJncm91cE92ZXJzZWVyTGlzdFwiXHJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3RcIlxyXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXHJcbiAgW2xvYWRpbmddPVwidXNlckxpc3RMb2FkZXIgfHwgYXNzaWdub3JzTGlzdExvYWRlclwiXHJcbiAgKHNhdmUpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3ZlcnNlZXJOb3RpZnknLCAkZXZlbnQpXCJcclxuICAoY2FuY2VsKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbj5cclxuPC91c2VyLWdyb3VwLWxpc3Q+XHJcblxyXG48YXBwLW93bmVyLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVGVzdCBDYXRlZ29yeSBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidUZXN0IENhdGVnb3JpZXMgc2VsZWN0ZWQnXCJcclxuICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBUZXN0IENhdGVnb3J5Li4uJ1wiXHJcbiAgW2xpc3RIZWFkaW5nXT1cIidTZWxlY3QgVGVzdCBDYXRlZ29yaWVzJ1wiXHJcbiAgW3VzZXJzTGlzdF09XCJhc3N1cmFuY2VDYXRlZ29yaWVzTGlzdFwiXHJcbiAgW25vRGF0YVRleHRdPVwiJ05vIFRlc3QgQ2F0ZWdvcmllcyBGb3VuZCdcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3N1cmFuY2VMaXN0XCJcclxuICBbdXNlcklkS2V5XT1cIidjYXRlZ29yeV9pZCdcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ2NhdGVnb3J5X25hbWUnXCJcclxuICBbaXRlbU5hbWVLZXldPVwiJ2NhdGVnb3J5X25hbWUnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3N1cmFuY2UnLCAkZXZlbnQpXCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBDYXRlZ29yeSdcIlxyXG4+XHJcbjwvYXBwLW93bmVyLWxpc3Q+XHJcblxyXG48YXBwLWF1ZGl0LWNhdGVnb3J5LWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXCJcclxuICAoY2xvc2VMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbiAgW2F1ZGl0Q2F0ZWdvcnldPVwiYXNzdXJhbmNlUmVxdWlyZXNBdWRpdExpc3RcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JlcXVpcmVzX2F1ZGl0JywgJGV2ZW50KVwiXHJcbiAgW3NlbGVjdGVkRGF0YV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0WzBdXCJcclxuPjwvYXBwLWF1ZGl0LWNhdGVnb3J5LWxpc3Q+XHJcblxyXG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG48YXBwLWZyYW1ld29yay1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyYW1ld29yaydcIlxyXG4gIChhc3NpZ25Db250cm9sKT1cImFzc2lnbkZyb21GcmFtZXdvcmsoJGV2ZW50KVwiXHJcbiAgW3ByZXZpb3VzU2VsZWN0ZWRWYWx1ZXNdPVwic2VsZWN0ZWRGcmFtZXdvcmtWYWx1ZXNcIlxyXG4gIChjbG9zZUZyYW1ld29yayk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gIChlbnRydXN0RnJhbWV3b3JrKT1cImVudHJ1c3RGcmFtZXdvcmsoJGV2ZW50KVwiXHJcbj48L2FwcC1mcmFtZXdvcmstbGlzdD5cclxuXHJcbjwhLS0gcmlzay1jYWxjdWxhdG9yIGhlcmUgLS0+XHJcbjxhcHAtcmlzay1jbGFzc2lmaWNhdGlvblxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2FsY3VsYXRvcidcIlxyXG4gIFtjdXJyZW50Umlza1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3NcIlxyXG4gIChzYXZlTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjYWxjdWxhdGVkcmlzaycsICRldmVudClcIlxyXG4gIChjbG9zZUxpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuPlxyXG48L2FwcC1yaXNrLWNsYXNzaWZpY2F0aW9uPlxyXG5cclxuPGFwcC1yZXZpZXctZnJlcXVlbmN5XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXHJcbiAgW3Jldmlld0NvbXBsZXRlRGF5c109XCJcclxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5c1xyXG4gIFwiXHJcbiAgW3Jldmlld05PdENvbXBsZXRlZERheXNdPVwiXHJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzXHJcbiAgXCJcclxuICAoc2F2ZVJldmlld0ZyZXF1ZW5jeSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdGcmVxdWVuY3knLCAkZXZlbnQpXCJcclxuICAoY2xvc2VSZXZpZXdGcmVxdWVuY3kpPVwiXHJcbiAgICBhY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIGZhbHNlKTtcclxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IFtdO1xyXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSBbXVxyXG4gIFwiXHJcbiAgKGJhY2tUb1VzZXJMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKTsgYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXHJcbj5cclxuPC9hcHAtcmV2aWV3LWZyZXF1ZW5jeT5cclxuXHJcbjxhcHAtYXNzZXNzbWVudC1saXN0XHJcbiAgKm5nSWY9XCJpc0Fzc2Vzc21lbnRcIlxyXG4gIFtwcm9ncmFtX2lkc109XCJyZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXT8uX2lkXCJcclxuICAoY2FuY2VsQXNzZXNzbWVudCk9XCJcclxuICAgIGlzQXNzZXNzbWVudCA9IGZhbHNlOyBhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCBmYWxzZSlcclxuICBcIlxyXG4gIFtpc0VkaXRdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkID8gdHJ1ZSA6IGZhbHNlXCJcclxuICBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudFwiXHJcbiAgKG9uQXNzZXNzbWVudFNlbGVjdCk9XCJcclxuICAgIG9uQXNzZXNzbWVudFNlbGVjdCgkZXZlbnQpOyBhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCBmYWxzZSlcclxuICBcIlxyXG4+PC9hcHAtYXNzZXNzbWVudC1saXN0PlxyXG5cclxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxyXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXHJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXHJcbiAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxyXG4+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XHJcblxyXG48ZGl2IGNsYXNzPVwiaW1wb3J0XCIgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzLW5ldydcIj5cclxuICA8YXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lclxyXG4gICAgI2VkaXRvclxyXG4gICAgW29wZW5Qb3J0YWxdPVwiJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXCJcclxuICAgIChwb3N0QXNzZXNzbWVudCk9XCJwb3N0QXNzZXNzbWVudCgkZXZlbnQpXCJcclxuICAgIChzZXRJc1VwbG9hZGVkKT1cInNldElzVXBsb2FkZWQoJGV2ZW50KVwiXHJcbiAgICBbY2hlY2twb2ludEpTT05dPVwicmVzcG9uc2liaWxpdHlGb3JtLm5ld19jaGVja3BvaW50c1wiXHJcbiAgPlxyXG4gIDwvYXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48YXBwLWdyYy1vYmplY3QtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkNfT0JKRUNUUydcIlxyXG4gIFtncmNPYmplY3RdPVwiZ3JjTGlzdFwiXHJcbiAgW3NlbGVjdGVkR1JDXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgfCByZWZEaXNjb25uZWN0XCJcclxuICBbbG9hZGVyXT1cImdyY0xvYWRlclwiXHJcbiAgW3RhYmxlQ2FyZF09XCJvdGhlckdSQ0NhcmRcIlxyXG4gIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZEdSQ1RhYlwiXHJcbiAgW2NhcmRMb2FkZXJdPVwiZ3JjVGFiTG9hZGVyXCJcclxuICAoZ2V0T3RoZXJHUkNPYmplY3RzKT1cImdldE90aGVyR1JDT2JqZWN0cygkZXZlbnQpXCJcclxuICAoc2F2ZU90aGVyR1JDKT1cInNhdmVTZWxlY3RlZExpc3QoJ0dSQ19PQkpFQ1RTJywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlT3RoZXJHUkMpPVwiYWN0aXZhdGVTZWxlY3RvcignR1JDX09CSkVDVFMnLCBmYWxzZSlcIlxyXG4+PC9hcHAtZ3JjLW9iamVjdC1saXN0PlxyXG4iXX0=
3907
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctY29tcGxpYW5jZS93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBR25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEQsT0FBTyxFQUNMLGNBQWMsRUFDZCxjQUFjLEdBQ2YsTUFBTSxpREFBaUQsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXpFLE1BQU0sT0FBTywyQkFBMkI7SUFvV3RDLFlBQ1UsV0FBd0IsRUFDeEIscUJBQTRDLEVBQzVDLGdCQUFrQyxFQUNsQyxZQUEwQixFQUMxQixRQUF5QixFQUN6QixVQUF1QixFQUN2QixjQUErQixFQUMvQixVQUFzQjtRQVB0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FB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QUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS3dCLGtCQUFrQjtzQkFBL0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBV2Qsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQWdSWSxTQUFTO3NCQUEzQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQcm9ncmFtc1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wcm9ncmFtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBHUkNfVFlQRV9BUlJBWSxcclxuICBPVEhFUl9HUkNfQ0FSRCxcclxufSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XHJcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBERUZBVUxUXzI0SFIsIERFRkFVTFRfVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1jb21wbGlhbmNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8qIERlZmluaW5nIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciB0aGUgY29tcG9uZW50LiAqL1xyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcclxuICBASW5wdXQoKSByZXNwb25zaWJpbGl0eUlkID0gJyc7XHJcbiAgQElucHV0KCkgZnJhbWV3b3JrRGV0YWlsczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGlzRW50cnVzdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xyXG4gIEBJbnB1dCgpIGFzc2Vzc21lbnREZXRhaWxzOiBhbnk7XHJcblxyXG4gIGFsbEdyb3VwQXNzaWduZWU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFzc2lnbm9ySWQ6IGFueVtdID0gW107XHJcbiAgYXNzaWduZWVJZHM6IGFueVtdID0gW107XHJcbiAgcmV2aWV3ZXJJZHM6IGFueVtdID0gW107XHJcbiAgb3ZlcnNlZXJJZHM6IGFueVtdID0gW107XHJcbiAgZGlzYWJsZVJhZGlvQXNzaWduZWU6IGFueVtdID0gW107XHJcbiAgaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxdWVyeVBhcmFtOiBzdHJpbmcgPSAnJztcclxuICByZWNlbnRSZXNwb25zaWJpbGl0eVVybDogYW55ID0ge1xyXG4gICAgYnlSZXNwb25zaWJpbGl0aWVzOiB7IHR5cGU6IFsncmVjZW50X3Jlc3BvbnNpYmlsaXRpZXMnXSwgc3ViVHlwZTogWydDQyddIH0sXHJcbiAgICBieVN0YXR1czogeyB0eXBlOiBbXSwgc3ViVHlwZTogW10gfSxcclxuICAgIGZpbHRlck9iamVjdDoge1xyXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogW10sXHJcbiAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcclxuICAgICAgZW50cnVzdGVkVG86IFtdLFxyXG4gICAgICByaXNrSWRzOiBbXSxcclxuICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXHJcbiAgICB9LFxyXG4gICAgdGltZVBlcmlvZERldGFpbHM6IHsgdHlwZTogJycsIHNlbGVjdGVkUGVyaW9kOiAnJywgc2VsZWN0ZWRZZWFyOiAnJyB9LFxyXG4gICAgc3RhdHVzOiAnJyxcclxuICB9O1xyXG4gIGlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ3JjTGlzdDogQXJyYXk8YW55PiA9IFtdO1xyXG4gIGdyY0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG90aGVyR1JDQ2FyZDogYW55ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShPVEhFUl9HUkNfQ0FSRCkpO1xyXG4gIHNlbGVjdGVkR1JDVGFiOiBudW1iZXIgPSAwO1xyXG4gIGdyY1RhYkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyY1NlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XHJcbiAgR1JDX1RZUEVfQVJSQVkgPSBHUkNfVFlQRV9BUlJBWTtcclxuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XHJcbiAgICBhc3NldHM6IFtdLFxyXG4gICAgcHJvY2Vzc2VzOiBbXSxcclxuICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgaW52ZW50b3J5OiBbXSxcclxuICB9O1xyXG5cclxuICBASW5wdXQoJ2Nsb3NlT25Fc2MnKSBzZXQgY2xvc2VPbkVzYyhlc2NhcGVDb25kaXRpb246IGJvb2xlYW4pIHtcclxuICAgIGlmIChlc2NhcGVDb25kaXRpb24pIHtcclxuICAgICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIG9yZ0RldGFpbHM6IGFueTtcclxuXHJcbiAgdXJsID1cclxuICAgICdxPXtcImJ5UmVzcG9uc2liaWxpdGllc1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltcIkNDXCJdfSxcImJ5U3RhdHVzXCI6e1widHlwZVwiOltcInJlc3BvbnNpYmlsaXRpZXNfaW5fcXVldWVcIl0sXCJzdWJUeXBlXCI6W119LFwiZmlsdGVyT2JqZWN0XCI6e1wicmVzcG9uc2liaWxpdHlDZW50ZXJcIjpbXSxcImVudHJ1c3RlZEJ5XCI6W10sXCJlbnRydXN0ZWRUb1wiOltdLFwicmlza0lkc1wiOltdLFwicmVzcG9uc2liaWxpdHlDYXRlZ29yeVwiOltdfSxcInRpbWVQZXJpb2REZXRhaWxzXCI6e1widHlwZVwiOlwiXCIsXCJzZWxlY3RlZFBlcmlvZFwiOlwiXCIsXCJzZWxlY3RlZFllYXJcIjpcIlwifSxcInN0YXR1c1wiOlwiXCJ9JztcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVzZXRGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hlY2twb2ludENvdW50VXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBvcGVuZWRGcm9tITogYW55OyAvL3doZW4gb3BlbmVkIGZyb20gcmlzayB0cmVhdG1lbnQgaXQgd2lsbCBiZSAnUklTS19UUkVBVE1FTlQnXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRSQzogbnVtYmVyID0gMDsgLy8gNC01IGRpZ2l0IGlkIG9mIHNlbGVjdGVkIHJjIGJ5IGRlZmF1bHQgd2hlbiBvcGVuZWQgZnJvbSByaXNrIHRyZWF0bWVudFxyXG4gIC8vIEBJbnB1dCgpIHNlbGVjdGVkUHJvZ3JhbTogYW55ID0gbnVsbDtcclxuICBmZWF0dXJlRmxhZ19ncm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XHJcbiAgc2VsZWN0ZWRSZXZpZXdlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCdzZWxlY3RlZFByb2dyYW0nKSBzZXQgc2V0U2VsZWN0ZWRQcm9ncmFtKHByb2dyYW06IGFueSkge1xyXG4gICAgaWYgKHByb2dyYW0gJiYgT2JqZWN0LmtleXMocHJvZ3JhbSk/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSA9IHByb2dyYW07XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBbXTtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlua2VkUHJvZ3JhbSA9IFtdO1xyXG4gICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtLnB1c2gocHJvZ3JhbSk7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmxpbmtlZFByb2dyYW0ucHVzaChwcm9ncmFtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIENyZWF0aW5nIGFuIGV2ZW50IGVtaXR0ZXIuICovXHJcbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdDaGVja3BvaW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaXNBc3Nlc3NtZW50RGlzYWJsZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFzc2lnbmVlVHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gaXQgd2lsbCBlbWl0IHdoZW4gYXNzaWduZWUgdHlwZSBjaGFuZ2VcclxuICBAT3V0cHV0KCkgb25SZXZpZXdlclR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIGl0IHdpbGwgZW1pdCB3aGVuIHJldmlld2VyIHR5cGUgY2hhbmdlXHJcblxyXG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eScsXHJcbiAgfTtcclxuICBwcm9ncmFtUGVvcGxlTGlzdDogYW55ID0ge1xyXG4gICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICByZXZpZXdlcnNMaXN0OiBbXSxcclxuICAgIG92ZXJzZWVyc0xpc3Q6IFtdLFxyXG4gIH07XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgZWRpdERldGFpbHMhOiBhbnk7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBEb25lIWA7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHtcclxuICAgICAgYnV0dG9uVGV4dDogJ0VudHJ1c3QgTW9yZSBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgY2xhc3M6ICd3aGl0ZS1idG4nLFxyXG4gICAgICBpZDogJ2FkZE1vcmUnLFxyXG4gICAgfSxcclxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmVzcG9uc2liaWxpdGllcycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXcnIH0sXHJcbiAgXTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbWVtYmVySWQgPSAwO1xyXG4gIG9yZ2FuaXphdGlvbklkID0gMDtcclxuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBhc3NpZ25vcnNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgYXNzaWduZWVzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGNhdGVnb3JpZXNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgZ3JvdXBzTGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRnJhbWV3b3JrVmFsdWVzITogYW55O1xyXG4gIGhhc1Jldmlld2VyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIHVzZXJzTGlzdDogYW55W10gPSBbXTtcclxuICBhc3NpZ25vcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGFzc2lnbmVlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgcmV2aWV3ZXJzTGlzdDogYW55W10gPSBbXTtcclxuICBkaXNhYmxlQXNzaWduZWVJZHM6IGFueVtdID0gW107XHJcbiAgZGlzYWJsZVJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xyXG4gIGRpc2FibGVPdmVyc2VlcklkczogYW55W10gPSBbXTtcclxuICByZXZpZXdlck1lbWJlcklkc0xpc3Q6IGFueVtdID0gW107XHJcbiAgZ3JvdXBPdmVyc2Vlckxpc3Q6IGFueVtdID0gW107XHJcbiAgZ3JvdXBSZXZpZXdlckxpc3Q6IGFueVtdID0gW107XHJcbiAgZ3JvdXBBc3NpZ25lZUxpc3Q6IGFueVtdID0gW107XHJcbiAgb3ZlcnNlZXJzTGlzdDogYW55W10gPSBbXTtcclxuICBhbGxVc2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgYmVoYWxmT2ZVc2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgYXNzaWduZWVVc2VyTGlzdDogYW55W10gPSBbXTtcclxuICByZXZpZXdlclVzZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG92ZXJzZWVyVXNlckxpc3Q6IGFueVtdID0gW107XHJcbiAgb3ZlcnNlZXJVc2VyTm90aWZ5TGlzdDogYW55W10gPSBbXTtcclxuICBhbGxDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIGFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGFzc3VyYW5jZVJlcXVpcmVzQXVkaXRMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3Vwc0xpc3Q6IGFueVtdID0gW107XHJcbiAgT3JnR3JvdXA6IGFueVtdID0gW107XHJcbiAgYWRtaW5zTGlzdDogYW55W10gPSBbXTtcclxuICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGNhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcclxuICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlOiBOdW1iZXIgPSAwO1xyXG5cclxuICByZXNwb25zaWJpbGl0eUZvcm06IGFueSA9IHtcclxuICAgIGFzc2lnbm9yczoge1xyXG4gICAgICBlbmFibGU6IGZhbHNlLFxyXG4gICAgICBsaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgICByZXNwb25zaWJpbGl0eToge1xyXG4gICAgICBuYW1lOiAnJyxcclxuICAgICAga2V5UmVzcG9uc2liaWxpdHk6IGZhbHNlLFxyXG4gICAgfSxcclxuICAgIGFzc2lnbmVlR3JvdXBzOiB7XHJcbiAgICAgIHdob0NhbkNvbXBsZXRlOiAnQU5ZT05FJyxcclxuICAgICAgbGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgYXNzaWduZWVzOiB7XHJcbiAgICAgIHdob0NhbkNvbXBsZXRlOiAnQUxMJyxcclxuICAgICAgbGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgZnJlcXVlbmN5OiAnJyxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIG9iamVjdGl2ZTogJycsXHJcbiAgICByYzogW10sXHJcbiAgICByZXNwb25zaWJpbGl0eUNlbnRlclR5cGU6IDAsXHJcbiAgICBjYXRlZ29yeTogW10sXHJcbiAgICBwcm9ncmFtOiBbXSxcclxuICAgIHByb2dyYW1fc2VsZWN0ZWRfaWRzOiBbXSxcclxuICAgIGNoZWNrcG9pbnRJbnN0cnVjdGlvbjogJycsXHJcbiAgICBjdXN0b21UYWdzOiBbXSxcclxuICAgIGNoZWNrcG9pbnRzOiBbXSxcclxuICAgIHJldmlld2Vyczoge1xyXG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXHJcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xyXG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcclxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxyXG4gICAgICB9LFxyXG4gICAgICBsaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgICBncm91cFJldmlld2Vyczoge1xyXG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXHJcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xyXG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcclxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxyXG4gICAgICB9LFxyXG4gICAgICBsaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgICBvdmVyc2VlcnM6IHtcclxuICAgICAgbm90aWZ5TGlzdDogW10sXHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIG92ZXJzZWVyc0dyb3Vwczoge1xyXG4gICAgICBub3RpZnlMaXN0OiBbXSxcclxuICAgICAgbGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgZm9ybWF0QW5kRXZpZGVuY2U6IHtcclxuICAgICAgZm9ybWF0UmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICBmb3JtYXRGaWxlczogW10sXHJcbiAgICAgIGZvcm1hdExpbmtzOiBbXSxcclxuICAgICAgZXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXHJcbiAgICB9LFxyXG4gICAgYXNzdXJhbmNlTGlzdDogW10sXHJcbiAgICByZXF1aXJlc0F1ZGl0TGlzdDogW10sXHJcbiAgICByaXNrQ2xhc3M6IDEsXHJcbiAgICByaXNrTWF0cml4OiAnMCwwLDAsMCwwLDAnLFxyXG4gICAgYXVkaXRfY2F0ZWdvcnlfZGV0YWlsczoge1xyXG4gICAgICBjYXRlZ29yeV9pZDogMCxcclxuICAgICAgc2FtcGxlOiA1LFxyXG4gICAgICBwZXJjZW50YWdlOiAzMCxcclxuICAgICAgZnJlcXVlbmN5X3BhdHRlcm46ICcxfjB+M34xJyxcclxuICAgICAgZnJlcXVlbmN5X3RpbWU6IERFRkFVTFRfMjRIUixcclxuICAgIH0sXHJcbiAgICBhc3Nlc3NtZW50OiB7XHJcbiAgICAgIGNhdGVnb3J5X2lkOiAnJyxcclxuICAgICAgYXNzZXNzbWVudF9pZDogJycsXHJcbiAgICB9LFxyXG4gICAgbmV3X2NoZWNrcG9pbnRzOiB7fSxcclxuICAgIGxpbmtlZFByb2dyYW06IFtdLFxyXG4gICAgc2VsZWN0ZWRHUkNPYmplY3RzOiBbXSxcclxuICB9O1xyXG4gIG1vcmVPcHRpb25zOiBhbnkgPSB7XHJcbiAgICBPQkpFQ1RJVkU6IGZhbHNlLFxyXG4gICAgUkM6IGZhbHNlLFxyXG4gICAgQ0FURUdPUlk6IGZhbHNlLFxyXG4gICAgUFJPR1JBTTogZmFsc2UsXHJcbiAgICBGT1JNQVRFX0VWSURFTkNFOiBmYWxzZSxcclxuICAgIENIRUNLUE9JTlRTOiBmYWxzZSxcclxuICAgIEFTU0VTU01FTlQ6IGZhbHNlLFxyXG4gICAgUklTS19DTEFTU0lGSUNBVElPTjogZmFsc2UsXHJcbiAgICBSRVZJRVdFUjogZmFsc2UsXHJcbiAgICBPVkVSU0VFUjogZmFsc2UsXHJcbiAgICBBU1NVUkFOQ0U6IGZhbHNlLFxyXG4gICAgQVBQUzogZmFsc2UsXHJcbiAgICBSRVFVSVJFU19BVURJVDogZmFsc2UsXHJcbiAgICBDSEVDS1BPSU5UU19ORVc6IGZhbHNlLFxyXG4gICAgR1JDX09CSkVDVFM6IGZhbHNlLFxyXG4gIH07XHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICBzaWRlU2VsZWN0b3JFbGVtZW50czogYW55ID0gW1xyXG4gICAgJ2Fzc3VyYW5jZScsXHJcbiAgICAnZnJhbWV3b3JrJyxcclxuICAgICdhc3NpZ25vcnMnLFxyXG4gICAgJ2Fzc2lnbmVlcycsXHJcbiAgICAnY2F0ZWdvcnknLFxyXG4gICAgJ3Byb2dyYW0nLFxyXG4gICAgJ3JjJyxcclxuICAgICdjaGVja3BvaW50cycsXHJcbiAgICAnZnJlcXVlbmN5JyxcclxuICAgICdyZXZpZXdlcicsXHJcbiAgICAncmV2aWV3ZXJGcmVxdWVuY3knLFxyXG4gICAgJ292ZXJzZWVyJyxcclxuICAgICdvdmVyc2Vlck5vdGlmeScsXHJcbiAgICAncmlza0NhbGN1bGF0b3InLFxyXG4gICAgJ2lzQXNzZXNzbWVudCcsXHJcbiAgICAncmVxdWlyZXNfYXVkaXQnLFxyXG4gICAgJ2NoZWNrcG9pbnRzLW5ldycsXHJcbiAgICAnR1JDX09CSkVDVFMnLFxyXG4gIF07XHJcblxyXG4gIGZvY3VzID0ge1xyXG4gICAgcmVzcG9uc2liaWxpdHlOYW1lOiBmYWxzZSxcclxuICAgIGRlc2NyaXB0aW9uOiBmYWxzZSxcclxuICAgIG9iamVjdGl2ZTogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgY2F0ZWdvcmllczogYW55ID0ge1xyXG4gICAgcmVndWxhdGlvbnM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgc3RhbmRhcmRzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIGludGVybmFsQ29udHJvbHM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgb3RoZXJzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBhbGxQcm9ncmFtczogYW55W10gPSBbXTtcclxuXHJcbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gW1xyXG4gICAgeyBuYW1lOiAnTG93JywgdmFsdWU6IDEsIGNsYXNzOiAnbG93JyB9LFxyXG4gICAgeyBuYW1lOiAnTG93LU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdNZWRpdW0tSGlnaCcsIHZhbHVlOiAzLCBjbGFzczogJ21lZC1oaWdoJyB9LFxyXG4gICAgeyBuYW1lOiAnSGlnaCcsIHZhbHVlOiA0LCBjbGFzczogJ2hpZ2gnIH0sXHJcbiAgXTtcclxuXHJcbiAgYXNzaWdub3JNb2RlID0gJ2NoZWNrYm94JztcclxuICByY01vZGUgPSAnY2hlY2tib3gnO1xyXG4gIGludmFsaWRUeXBlID0gJyc7XHJcbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkITogYW55O1xyXG4gIGFzc2lnbmVlUmFkaW9TZWxlY3QgPSBmYWxzZTtcclxuICBwcm9ncmFtc0xpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIC8vIGZyZXF1ZW5jeSB2YXJpYWJsZSBkZWNsYXJhdGlvblxyXG4gIGZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXHJcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXHJcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgd2luZG93OiAwLFxyXG4gICAgZmFpbGVkOiAwLFxyXG4gICAgdGltZTogREVGQVVMVF9USU1FLFxyXG4gICAgZmFpbGVkVGltZTogJycsXHJcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxyXG4gICAgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlsczoge30sXHJcbiAgfTtcclxuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdIb3cgb2Z0ZW4gZG9lcyB0aGUgcmVzcG9uc2liaWxpdHkgb2NjdXI/JztcclxuICBzaG9ydE1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgaXNFZGl0V2hhdDogQm9vbGVhbiA9IHRydWU7XHJcbiAgaXNGcmFtZXdvcmtBdmFpbGFibGUgPSAxO1xyXG4gIGlzTm90aWZpY2F0aW9uUGVuZGluZyA9IDA7XHJcblxyXG4gIGFzc3VyYW5jZUZsYWchOiBhbnk7XHJcbiAgcmlza0NsYXNzaWZpY2F0aW9uRmxhZyE6IGFueTtcclxuICBoaWRkZW5MaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHN1YnNjcmlwdGlvbkRldGFpbHMhOiBhbnk7XHJcbiAgaXNSaXNrRW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0R1cGxpY2F0ZUVudHJ1c3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhdWRpdFRpbWU6IHN0cmluZyA9IERFRkFVTFRfVElNRTtcclxuICBzZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZTogbnVtYmVyID0gMjtcclxuICBzYW1wbGVWYWx1ZTogYW55O1xyXG4gIHNhbXBsZVBlcmNlbnRhZ2U6IGFueTtcclxuICBzZWxlY3RlZFNhbXBsZSE6IG51bWJlcjtcclxuICBpc1NhbXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRlbXBDaGVja1ZhbHVlOiBudW1iZXIgPSAtMTtcclxuICBpc0Fzc2Vzc21lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtYW5hZ2VQZXJtaXNzaW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hlY2twb2ludENvdW50OiBudW1iZXIgPSAwO1xyXG4gIHJvbGVCYXNlZFBlcm1pc3Npb25zITogYW55O1xyXG4gIGlzR3JvdXBBc3NpZ25lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlc3BvbnNpYmlsaXR5RGF0YSE6IGFueTtcclxuICBvcmlnaW5hbEFzc2lnbmVlITogYW55O1xyXG4gIHVzZXJMaXN0TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXNzaWdub3JzTGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJhd1Jlc3BvbnNpYmlsaXR5OiBhbnk7XHJcbiAgb3RoZXJHUkNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3doYXQnKSB3aGF0SW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gIHVuU3Vic2NyaWJlUHJvZ3JhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcHJvZ3JhbVNlcnZpY2U6IFByb2dyYW1zU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgY29tcGxpYW5jZVN1Ym1vZHVsZSA9XHJcbiAgICAgICAgcmVzLnJvbGVBY3Rpb25zW1xyXG4gICAgICAgICAgcmVzLnJvbGVBY3Rpb25zLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUubW9kdWxlTmFtZSA9PSAnY29tcGxpYW5jZSdcclxuICAgICAgICAgIClcclxuICAgICAgICBdLnN1Yk1vZHVsZTtcclxuICAgICAgY29uc3QgcGVybWlzc2lvbnMgPVxyXG4gICAgICAgIGNvbXBsaWFuY2VTdWJtb2R1bGVbXHJcbiAgICAgICAgICBjb21wbGlhbmNlU3VibW9kdWxlLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuc3ViTW9kdWxlTmFtZSA9PSAnUHJvZ3JhbXMnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXS5wZXJtaXNzaW9ucztcclxuICAgICAgdGhpcy5tYW5hZ2VQZXJtaXNzaW9uID0gcGVybWlzc2lvbnNbXHJcbiAgICAgICAgcGVybWlzc2lvbnMuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLm5hbWUgPT0gJ21hbmFnZSBwcm9ncmFtcycpXHJcbiAgICAgIF0uZW5hYmxlXHJcbiAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgOiBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMubWFuYWdlUGVybWlzc2lvbikge1xyXG4gICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDQVRFR09SWScpO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdQUk9HUkFNJyk7XHJcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yeUxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXHJcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9ncm91cHMnXHJcbiAgICApO1xyXG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZCA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxyXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfc2ltcGxpZmljYXRpb24nXHJcbiAgICApO1xyXG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxyXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfcmNfbGluaydcclxuICAgICk7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICAvLyAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUgPSBcImFiY2RlZlwiXHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQVNTRVNTTUVOVCcpO1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRBc3NpZ25lZXNMaXN0KCk7XHJcbiAgICB0aGlzLmdldEFzc3VyYW5jZSgpO1xyXG4gICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XHJcbiAgICB0aGlzLmdldEFzc3VyYW5jZUZvclJlcXVpcmVzQXVkaXQoKTtcclxuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgIHRoaXMuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpO1xyXG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgdGhpcy5zaG9ydE1vbnRoID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLm1vbnRoQXJyYXkubWFwKChtb250aCkgPT5cclxuICAgICAgbW9udGguc3Vic3RyaW5nKDAsIDMpXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaXNSaXNrRW5hYmxlID0gcmVzLmVuYWJsZV9yaXNrY2xhc3MgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgIGlmICghcmVzLmVuYWJsZV9yaXNrY2xhc3MpIHtcclxuICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xyXG4gICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFN1YnNjcmlwdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uRGV0YWlscyA9IHJlcztcclxuICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uRGV0YWlsc1swXS5hc3Nlc3NtZW50X2ZsYWcpIHtcclxuICAgICAgICB0aGlzLmhpZGRlbkxpc3QgPSB0aGlzLmhpZGRlbkxpc3QuZmlsdGVyKChlbGUpID0+IGVsZSAhPT0gJ0FTU0VTU01FTlQnKTtcclxuICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRSZXNwb25zaWJpbGl0eU5hbWUoKTtcclxuICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gICAgaWYgKHR5cGUgPT09ICdjaGVja3BvaW50cy1uZXcnKSB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGV2ZW50KTtcclxuICAgIGlmICh0aGlzLnNpZGVTZWxlY3RvckVsZW1lbnRzPy5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRSZXNwb25zaWJpbGl0eU5hbWUoKSB7XHJcbiAgICBpZiAodGhpcy5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlID09PSAnY29tcGxpYW5jZV9hdWRpdCcpIHtcclxuICAgICAgY29uc3QgYXNzZXNzbWVudERhdGEgPSB7XHJcbiAgICAgICAgdGFyZ2V0OiB7XHJcbiAgICAgICAgICB2YWx1ZTogJ0F1ZGl0OiAnICsgdGhpcy5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF9uYW1lLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgYXNzZXNzbWVudF9pZDogdGhpcy5hc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxyXG4gICAgICAgIGNhdGVnb3J5X2lkOiB0aGlzLmFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5WzBdPy5faWQsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnNldEFzc2Vzc21lbnREYXRhKFt0aGlzLmFzc2Vzc21lbnREZXRhaWxzXSwgcGF5bG9hZCwgJ2Fzc2Vzc21lbnQnKTtcclxuXHJcbiAgICAgIHRoaXMud2hhdENoYW5nZWQoYXNzZXNzbWVudERhdGEpO1xyXG4gICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcclxuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTX05FVycpO1xyXG4gICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3aGF0Q2hhbmdlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aGF0Jykge1xyXG4gICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmVEZXNlbGVjdG9yKCkge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2FkZCBNb3JlIGluZm8nLCBldmVudCk7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycgJiZcclxuICAgICAgZXZlbnQuY2hlY2twb2ludF9uZXcgJiZcclxuICAgICAgdGhpcy5jaGVja3BvaW50Q291bnRcclxuICAgICkge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9uc1tldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJjVHlwZUNoYW5nZShzZWxlY3RlZFR5cGU6IE51bWJlcikge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPSBzZWxlY3RlZFR5cGUgPz8gMDtcclxuICB9XHJcblxyXG4gIGdldFJDTGlzdChwcm9ncmFtX2lkPzogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGlmIChwcm9ncmFtX2lkKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZT8uZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KHBhcmFtcykuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gcmVzO1xyXG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMsICdpdGVtX2lkJyk7XHJcbiAgICAgICAgY29uc3QgUkMgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBpZHM/LmluY2x1ZGVzKGVsZW1lbnQuaXRlbV9pZClcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChSQz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IFJDO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJykge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcclxuICAgICAgICAgICAgW3RoaXMuc2VsZWN0ZWRSQ10sXHJcbiAgICAgICAgICAgICdpdGVtX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgYnV0dG9uVGV4dDogJ0dvIHRvIHJpc2sgdHJlYXRtZW50JyxcclxuICAgICAgICAgICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgICAgICAgICBpZDogJ3ZpZXcnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIC8vIFByZXZpb3VzbHkgdGhlcmUgd2FzIG9ubHkgUkMgd2FzIGVtaXR0aW5nIHdoaWNoIG1hZGUgdGhlIGNoZWNrZWQgb3B0aW9ucyB0byBkZSBjaGVjayBub3cgY2hlY2tpbmcgdGhlIGNvbmRpdGlvbiBhbmQgc2VuZGluZyBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnNcclxuICAgICAgICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMubW9yZU9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubW9yZU9wdGlvbnNba2V5XSkge1xyXG4gICAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRGV0YWlscygpIHtcclxuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbnM/Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyA9IHJlcy5ub3RpZmljYXRpb25fcGVuZGluZ19mbGFnO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uc1sxXS5idXR0b25UZXh0ID0gdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmdcclxuICAgICAgICAgID8gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyBpbiBRdWV1ZSdcclxuICAgICAgICAgIDogJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyc7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXNzdXJhbmNlKCkge1xyXG4gICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0QXNzdXJhbmNlKCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0ID0gcmVzO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICh0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHMgJiZcclxuICAgICAgICAgICAgIXRoaXMuc3Vic2NyaXB0aW9uRGV0YWlsc1swXS5hc3N1cmFuY2VfZmxhZykgfHxcclxuICAgICAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3Q/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQVNTVVJBTkNFJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcclxuICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXNzdXJhbmNlRm9yUmVxdWlyZXNBdWRpdCgpIHtcclxuICAgIC8vIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldEFzc3VyYW5jZUZvclJlcXVpcmVzQXVkaXQoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXNzdXJhbmNlUmVxdWlyZXNBdWRpdExpc3QgPSByZXM7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKHRoaXMuc3Vic2NyaXB0aW9uRGV0YWlscyAmJlxyXG4gICAgICAgICAgICAhdGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzWzBdLmF1ZGl0X2ZsYWcpIHx8XHJcbiAgICAgICAgICB0aGlzLmFzc3VyYW5jZVJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPT0gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ1JFUVVJUkVTX0FVRElUJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcclxuICAgICAgICAvLyB0aGlzLmFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgLy8gdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc0ZyYW1ld29ya0F2YWlsYWJsZSA9IHJlcz8uZW5hYmxlX3Jlc3BvbnNpYmlsaXR5X2ZyYW1ld29yaztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2F0ZWdvcnlMaXN0KCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gcmVzO1xyXG4gICAgICAgIHRoaXMuYWxsQ2F0ZWdvcmllcyA9IGNsb25lRGVlcChyZXMpO1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5vdGhlcnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMucmVndWxhdGlvbnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMikge1xyXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuc3RhbmRhcmRzLmxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLmludGVybmFsQ29udHJvbHMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0ocHJvZ3JhbV9pZD86IHN0cmluZykge1xyXG4gICAgdGhpcy51blN1YnNjcmliZVByb2dyYW0ubmV4dCgpO1xyXG4gICAgdGhpcy51blN1YnNjcmliZVByb2dyYW0uY29tcGxldGUoKTtcclxuICAgIGlmIChwcm9ncmFtX2lkICYmIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XHJcbiAgICAgIHRoaXMuZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZCk7XHJcbiAgICAgIHRoaXMuZ2V0UkNMaXN0KHByb2dyYW1faWQpO1xyXG4gICAgICB0aGlzLmdldEdyb3Vwc0xpc3QocHJvZ3JhbV9pZCk7XHJcbiAgICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdChwcm9ncmFtX2lkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0QXNzaWduZWVzTGlzdCgpO1xyXG4gICAgICB0aGlzLmdldFJDTGlzdCgpO1xyXG4gICAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcclxuICAgICAgdGhpcy5nZXRBc3NpZ25vcnNMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcm9ncmFtRGV0YWlscyhwcm9ncmFtSWQ/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UHJvZ3JhbShwcm9ncmFtSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHJlcz8uYXNzZXNzbWVudCAmJlxyXG4gICAgICAgIHJlcz8uYXNzZXNzbWVudD8ubGVuZ3RoICYmXHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQpPy5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlBc3Nlc3NtZW50ID0gcmVzPy5hc3Nlc3NtZW50LmZpbHRlcihcclxuICAgICAgICAgIChhc3Nlc3NtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50Py5jYXRlZ29yeV9pZCA9PT1cclxuICAgICAgICAgICAgYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGNhdGVnb3J5QXNzZXNzbWVudD8ubGVuZ3RoICYmXHJcbiAgICAgICAgICBjYXRlZ29yeUFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnRJZHM/Lmxlbmd0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29uc3QgaXNFeGlzdCA9IGNhdGVnb3J5QXNzZXNzbWVudFswXT8uYXNzZXNzbWVudElkcz8uaW5jbHVkZXMoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKCFpc0V4aXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSB7XHJcbiAgICAgICAgICAgICAgYXNzZXNzbWVudF9pZDogJycsXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xyXG4gICAgICAgICAgICBhc3Nlc3NtZW50X2lkOiAnJyxcclxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0ocHJvZ3JhbV9pZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdldFBlb3BsZUxpc3RBZ2FpbnN0UElEKHByb2dyYW1faWQpO1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QocHJvZ3JhbV9pZCk7XHJcbiAgICB0aGlzLmdldEdyb3Vwc0xpc3QocHJvZ3JhbV9pZCk7XHJcbiAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZCk7XHJcbiAgfVxyXG5cclxuICBnZXRBc3NpZ25vcnNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgaWYgKHByb2dyYW1faWQpIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXNzaWdub3JzTGlzdExvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRBc3NpZ25vcnNMaXN0KHBhcmFtcykuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmJlaGFsZk9mVXNlcnNMaXN0ID0gcmVzO1xyXG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXNzaWdub3JzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXNzaWdub3JzTGlzdExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXNzaWduZWVzTGlzdChwcm9ncmFtX2lkPzogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGlmIChwcm9ncmFtX2lkKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblBlb3BsZShwYXJhbXMpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QgPSByZXMubWFwKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVzZXIubWVtYmVyX25hbWUgPSB1c2VyLmVtcGxveWVlX25hbWU7XHJcbiAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51c2VyTGlzdExvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VyTGlzdExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGlmIChwcm9ncmFtX2lkKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XHJcbiAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uUGVvcGxlKHBhcmFtcykuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSByZXMuYXNzaWduZWUubWFwKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVzZXIubWVtYmVyX25hbWUgPSB1c2VyLmVtcGxveWVlX25hbWU7XHJcbiAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSByZXMub3ZlcnNlZXIubWFwKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVzZXIubWVtYmVyX25hbWUgPSB1c2VyLmVtcGxveWVlX25hbWU7XHJcbiAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnJldmlld2Vyc0xpc3QgPSByZXMucmV2aWV3ZXIubWFwKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVzZXIubWVtYmVyX25hbWUgPSB1c2VyLmVtcGxveWVlX25hbWU7XHJcbiAgICAgICAgICByZXR1cm4gdXNlcjtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnByb2dyYW1QZW9wbGVMaXN0ID0ge1xyXG4gICAgICAgICAgYXNzaWduZWVzTGlzdDogWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25lZXNMaXN0KV0sXHJcbiAgICAgICAgICByZXZpZXdlcnNMaXN0OiBbLi4ubmV3IFNldCh0aGlzLnJldmlld2Vyc0xpc3QpXSxcclxuICAgICAgICAgIG92ZXJzZWVyc0xpc3Q6IFsuLi5uZXcgU2V0KHRoaXMub3ZlcnNlZXJzTGlzdCldLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfaWRzIHx8XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCxcclxuICAgICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBhbGxJZHMgPSBbXHJcbiAgICAgICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxyXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9pZHNcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gYXNzaWdub3JzO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9ycyA9IHRoaXMuYXNzaWduZWVzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9pZHM/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8ubXlfbWVtYmVyX2lkXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9ncmFtQXNzaWduZWVHcm91cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJzIHx8XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggfHxcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QsXHJcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgYWxsSWRzID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X3Jldmlld2VycyksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gdGhpcy5yZXZpZXdlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyBjb25zdCByZXZpZXdlcnMgPSB0aGlzLnJldmlld2Vyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9yZXZpZXdlcnM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXZpZXdlcnM/Lmxlbmd0aCB8fFxyXG4gICAgICAgICAgICAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSByZXZpZXdlcnM7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gcmV2aWV3ZXJzO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3RcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVByb2dyYW1SZXZpZXdlckdyb3VwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9vdmVyc2VlcnMgfHxcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCB8fFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCxcclxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBhbGxEZWZhdWx0Q0NJZHMgPSBbXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcclxuICAgICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0MgPSB0aGlzLm92ZXJzZWVyc0xpc3Q/LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICBhbGxEZWZhdWx0Q0NJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyBjb25zdCBvdmVyc2VlcnMgPSB0aGlzLm92ZXJzZWVyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9vdmVyc2VlcnMuY2NfZW1haWwuaW5jbHVkZXMoZWxlbWVudC5teV9tZW1iZXJfaWQpKTtcclxuICAgICAgICAgIGNvbnN0IG5vdGlmeUxpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QsXHJcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDRmFpbHVyZUlkcyA9IFtcclxuICAgICAgICAgICAgLi4ubmV3IFNldChub3RpZnlMaXN0SWRzKSxcclxuICAgICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0ZhaWx1cmUgPSB0aGlzLm92ZXJzZWVyc0xpc3Q/LmZpbHRlcihcclxuICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgICBhbGxEZWZhdWx0Q0NGYWlsdXJlSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgLy8gY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzLmZhaWx1cmVfY2NfZW1haWwuaW5jbHVkZXMoZWxlbWVudC5teV9tZW1iZXJfaWQpKTtcclxuICAgICAgICAgIC8vIGlmIChvdmVyc2VlcnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IG92ZXJzZWVycztcclxuICAgICAgICAgIC8vICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyBpZiAobm90aWZ5T3ZlcnNlZXJzPy5sZW5ndGgpIHtcclxuICAgICAgICAgIC8vICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSBub3RpZnlPdmVyc2VlcnM7XHJcbiAgICAgICAgICAvLyAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgIGlmIChvdmVyc2VlcnNDQz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gb3ZlcnNlZXJzQ0M7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG92ZXJzZWVyc0NDRmFpbHVyZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gb3ZlcnNlZXJzQ0NGYWlsdXJlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3RcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbU92ZXJzZWVyR3JvdXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5tb3JlT3B0aW9ucykge1xyXG4gICAgICAgICAgaWYgKHRoaXMubW9yZU9wdGlvbnNba2V5XSkge1xyXG4gICAgICAgICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaChrZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xyXG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEdyb3Vwc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcclxuICAgICAgLmdldE9yZ2FuaXphdGlvbkdyb3VwcyhwYXJhbXMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuU3Vic2NyaWJlUHJvZ3JhbSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8/IFtdO1xyXG4gICAgICAgICAgaWYgKCFwcm9ncmFtX2lkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAgPSBkYXRhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgZ3JvdXBzOiBhbnkgPSBbXTtcclxuICAgICAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBlbGVtZW50Lmdyb3VwX25hbWUsXHJcbiAgICAgICAgICAgICAgICB1c2VySWRzOiBlbGVtZW50Lm1lbWJlcl9pZHMsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBncm91cHMucHVzaChvYmopO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGdyb3VwcztcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXHJcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXA/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtPy5sZW5ndGggJiZcclxuICAgICAgICAgICAgcHJvZ3JhbV9pZFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyAmJlxyXG4gICAgICAgICAgICBwcm9ncmFtX2lkXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBkYXRhLmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5ncm91cF9pZFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGdyb3Vwcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbGV0IG1lbWJlcklkczogYW55W10gPSBbXTtcclxuICAgICAgICAgICAgICBzZWxlY3RlZEdyb3Vwcy5mb3JFYWNoKChlYWNoR3JvdXA6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVhY2hHcm91cD8ubWVtYmVyX2lkcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIG1lbWJlcklkcyA9IFtcclxuICAgICAgICAgICAgICAgICAgICAuLi5uZXcgU2V0KG1lbWJlcklkcy5jb25jYXQoZWFjaEdyb3VwPy5tZW1iZXJfaWRzKSksXHJcbiAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCxcclxuICAgICAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxJZHMgPSBbLi4ubmV3IFNldChpZHMpLCAuLi5uZXcgU2V0KG1lbWJlcklkcyldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXNzaWdub3JzID0gdGhpcy5hc3NpZ25lZXNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9ycyA9IHRoaXMuYXNzaWduZWVzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgbWVtYmVySWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFzc2lnbm9ycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gYXNzaWdub3JzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0UmVzcG9uc2liaWxpdHlEZXRhaWxzKGlkOiBhbnkpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmVkaXRSZXNwb25zaWJpbGl0eShpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzRHVwbGljYXRlRW50cnVzdCA9IHRydWU7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLnJhd1Jlc3BvbnNpYmlsaXR5ID0gcmVzO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxBc3NpZ25lZSA9IFtOdW1iZXIocmVzLmFzc2lnbmVkX3RvKV07XHJcbiAgICAgICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCk/LnVzZXI7XHJcbiAgICAgICAgdGhpcy5pc0dyb3VwQXNzaWduZWQgPSByZXM/LmlzR3JvdXBBc3NpZ25UbyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBjb25zdCBjdXJyZW50c1VlckluZm8gPSB7XHJcbiAgICAgICAgICBtZW1iZXJfZW1haWw6IGN1cnJlbnRVc2VyPy5lbWFpbCxcclxuICAgICAgICAgIG1lbWJlcl9pZDogY3VycmVudFVzZXIuaWQsXHJcbiAgICAgICAgICBtZW1iZXJfbmFtZTogY3VycmVudFVzZXIubmFtZSxcclxuICAgICAgICAgIG9yZ2FuaXNhdGlvbl9pZDogY3VycmVudFVzZXIub3JnYW5pc2F0aW9uX2lkLFxyXG4gICAgICAgICAgX2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgdGVzdFBsYW5DYXRlZ29yeSA9XHJcbiAgICAgICAgICB0eXBlb2YgcmVzPy50ZXN0cGxhbl9jYXRlZ29yeV9pZCA9PT0gJ3N0cmluZydcclxuICAgICAgICAgICAgPyBbXVxyXG4gICAgICAgICAgICA6IHJlcz8udGVzdHBsYW5fY2F0ZWdvcnlfaWQ7XHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRBdWRpdENhdGVnb3J5SWQgPSByZXM/LmF1ZGl0X2NhdGVnb3J5X2RldGFpbHM/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICA/IFtyZXM/LmF1ZGl0X2NhdGVnb3J5X2RldGFpbHM/LmNhdGVnb3J5X2lkXVxyXG4gICAgICAgICAgOiBbXTtcclxuICAgICAgICBjb25zdCByZXZpZXdlckRldGFpbHMgPSBPYmplY3Qua2V5cyhyZXM/LnJldmlld2VyX2Fycik7XHJcbiAgICAgICAgdGhpcy5oYXNSZXZpZXdlciA9IHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMDtcclxuICAgICAgICB0aGlzLmFzc2lnbmVlUmFkaW9TZWxlY3QgPVxyXG4gICAgICAgICAgcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWQ/Lmxlbmd0aCA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNFbnRydXN0ID0gcmVzLmlzR3JvdXBBc3NpZ25UbyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBsZXQgbGlua2FnZSA9IHJlcz8ubGlua2VkUHJvZ3JhbURldGFpbHM7XHJcbiAgICAgICAgbGlua2FnZS5wdXNoKHJlcz8ucHJvZ3JhbURldGFpbHMpO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtID0ge1xyXG4gICAgICAgICAgYXNzaWdub3JzOiB7XHJcbiAgICAgICAgICAgIGVuYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpc3Q6XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWdub3JzTGlzdCwgW3Jlcy5tZW1iZXJfaWRdLCAnbWVtYmVyX2lkJylcclxuICAgICAgICAgICAgICAgID8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25vcnNMaXN0LCBbcmVzLm1lbWJlcl9pZF0sICdtZW1iZXJfaWQnKVxyXG4gICAgICAgICAgICAgICAgOiBbY3VycmVudHNVZXJJbmZvXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eToge1xyXG4gICAgICAgICAgICBuYW1lOiByZXM/LnJlcG9ydF9uYW1lLFxyXG4gICAgICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogcmVzPy5rZXlfY29tcGxpYW5jZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhc3NpZ25lZXM6IHtcclxuICAgICAgICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcy5pc0dyb3VwQXNzaWduVG8gPyAnQU5ZX09ORScgOiAnQUxMJyxcclxuICAgICAgICAgICAgbGlzdDpcclxuICAgICAgICAgICAgICByZXMuYXNzaWduZWRfdG9fbWVtYmVyX2lkPy5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgPyB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgIFtOdW1iZXIocmVzLmFzc2lnbmVkX3RvKV0sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmFzc2lnbmVkX3RvX21lbWJlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZyZXF1ZW5jeTogcmVzPy5mcmVxdWVuY3lfZGV0YWlscyxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiByZXM/LnJlbWFya3MsXHJcbiAgICAgICAgICBvYmplY3RpdmU6IHJlcz8ub2JqZWN0aXZlLFxyXG4gICAgICAgICAgcmM6IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICAgICBbTnVtYmVyKHJlcz8ucmNfaWQpXSxcclxuICAgICAgICAgICAgJ3JjX2lkJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZTpcclxuICAgICAgICAgICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJiByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZVxyXG4gICAgICAgICAgICAgID8gcGFyc2VJbnQocmVzPy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUpXHJcbiAgICAgICAgICAgICAgOiAwLFxyXG4gICAgICAgICAgY2F0ZWdvcnk6IHJlcz8ucHJvZ3JhbV9jYXRfaWRzPy5sZW5ndGhcclxuICAgICAgICAgICAgPyByZXM/LmNhdGVnb3J5X2lkc19hcnJheS5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZWxlOiBhbnkpID0+ICFyZXMucHJvZ3JhbV9jYXRfaWRzPy5pbmNsdWRlcyhlbGUpXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IHJlcz8uY2F0ZWdvcnlfaWRzX2FycmF5LFxyXG4gICAgICAgICAgcHJvZ3JhbV9zZWxlY3RlZF9pZHM6IHJlcz8uY2F0ZWdvcnlfaWQuc3BsaXQoJywnKSA/PyBbXSxcclxuICAgICAgICAgIGNhdGVnb3J5X2lkOiByZXM/LmNhdGVnb3J5X2lkID8/ICcnLFxyXG5cclxuICAgICAgICAgIGxpbmtlZFByb2dyYW06IGxpbmthZ2UgPz8gcmVzPy5saW5rZWRQcm9ncmFtRGV0YWlscyxcclxuICAgICAgICAgIHByb2dyYW06IHJlcz8ucHJvZ3JhbURldGFpbHM/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICAgID8gW3Jlcz8ucHJvZ3JhbURldGFpbHNdXHJcbiAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICBjaGVja3BvaW50SW5zdHJ1Y3Rpb246IHJlcz8uY2hlY2twb2ludF9kZXNjcmlwdGlvbixcclxuICAgICAgICAgIGN1c3RvbVRhZ3M6IHJlcz8uY3VzdG9tX3RhZ3MgPyBKU09OLnBhcnNlKHJlcz8uY3VzdG9tX3RhZ3MpIDogJycsXHJcbiAgICAgICAgICBjaGVja3BvaW50czogcmVzPy5jaGVja3BvaW50X2RldGFpbHNcclxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHJlcz8uY2hlY2twb2ludF9kZXRhaWxzKVxyXG4gICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgcmV2aWV3ZXJzOiB7XHJcbiAgICAgICAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzpcclxuICAgICAgICAgICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy50eXBlID09ICdTRVFVRU5USUFMJyA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XHJcbiAgICAgICAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOlxyXG4gICAgICAgICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmVzPy5yZXZpZXdfYWZ0ZXJfZGF5cyA6IDIsXHJcbiAgICAgICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czpcclxuICAgICAgICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2ZhaWxlZF9hZnRlcl9kYXlzIDogMixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWNjZXB0ZWREYXRhOlxyXG4gICAgICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgPyByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnNcclxuICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgIGxpc3Q6XHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICA/IHRoaXMuc2V0UmV2aWV3ZXJQYXlsb2FkKFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2VycyxcclxuICAgICAgICAgICAgICAgICAgICAnb2JqZWN0JyxcclxuICAgICAgICAgICAgICAgICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy50eXBlXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgIG92ZXJzZWVyczoge1xyXG4gICAgICAgICAgICBsaXN0OiByZXM/LmNjX2VtYWlsXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcclxuICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzPy5jY19lbWFpbCkubWFwKE51bWJlciksXHJcbiAgICAgICAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICBub3RpZnlMaXN0OiByZXM/LmZhaWx1cmVfY2NfZW1haWxcclxuICAgICAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXM/LmZhaWx1cmVfY2NfZW1haWwpLm1hcChOdW1iZXIpLFxyXG4gICAgICAgICAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmb3JtYXRBbmRFdmlkZW5jZToge1xyXG4gICAgICAgICAgICBmb3JtYXRSZXF1aXJlZDpcclxuICAgICAgICAgICAgICByZXM/LnJlcG9ydF9mb3JtYXQ/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICByZXM/LmxpbmtfZm9yX2RldGFpbHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiBmYWxzZSxcclxuICAgICAgICAgICAgZm9ybWF0RmlsZXM6IHJlcz8ucmVwb3J0X2Zvcm1hdCxcclxuICAgICAgICAgICAgZm9ybWF0TGlua3M6IHJlcz8ubGlua19mb3JfZGV0YWlscyxcclxuICAgICAgICAgICAgZXZpZGVuY2VSZXF1aXJlZDogcmVzPy5yZXBvcnRfdXBsb2FkX2ZsYWcgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYXNzdXJhbmNlTGlzdDogdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0LFxyXG4gICAgICAgICAgICB0ZXN0UGxhbkNhdGVnb3J5LFxyXG4gICAgICAgICAgICAnY2F0ZWdvcnlfaWQnXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgcmVxdWlyZXNBdWRpdExpc3Q6IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5hc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdCxcclxuICAgICAgICAgICAgcmVxdWlyZWRBdWRpdENhdGVnb3J5SWQsXHJcbiAgICAgICAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICByaXNrQ2xhc3M6IHJlcz8ucmlza19jbGFzcyxcclxuICAgICAgICAgIHJpc2tNYXRyaXg6IHJlcz8ucmlza19tYXRyaXhfZGF0YSxcclxuICAgICAgICAgIHNlbGVjdGVkR1JDT2JqZWN0czogcmVzPy5saW5rZWRHcmNEZXRhaWxzID8/IFtdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHJlcz8ubGlua2VkR3JjRGV0YWlscz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVBc3NpZ25lZURhdGEocmVzKTtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVPdmVyc2VlckRhdGEocmVzKTtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVSZXZpZXdlckRhdGEocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPVxyXG4gICAgICAgICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJiByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZVxyXG4gICAgICAgICAgICA/IHBhcnNlSW50KHJlcz8ucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlKVxyXG4gICAgICAgICAgICA6IDA7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtID0gcmVzPy5wcm9ncmFtRGV0YWlscz8uY2F0ZWdvcnlfaWRcclxuICAgICAgICAgID8gcmVzLnByb2dyYW1EZXRhaWxzXHJcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uX2lkICYmXHJcbiAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5nZXRMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbSh0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uX2lkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXMubm90aWZpY2F0aW9uX3BlbmRpbmc7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNbMV0uYnV0dG9uVGV4dCA9ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMgaW4gUXVldWUnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNbMV0uYnV0dG9uVGV4dCA9ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyA1fjB+MH4wIHRoaXMgaXMgZm9yIG90aGVyIGZyZXF1ZW5jeVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHJlcy5mcmVxdWVuY3lfZGV0YWlscyAhPT0gJycgJiZcclxuICAgICAgICAgIHJlcy5mcmVxdWVuY3lfZGV0YWlscyAhPT0gJzV+MH4wfjAnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICB0aGlzLmdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKHJlcyk7XHJcbiAgICAgICAgICByZXMucGxhY2Vob2xkZXIgPSB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlzRW50cnVzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcclxuICAgICAgICAgIHRoaXMuYXNzaWduZWVSYWRpb1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmVuYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICAgICAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgKCF0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyB8fFxyXG4gICAgICAgICAgICAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzLmxpc3Q/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaXNFbnRydXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xyXG4gICAgICAgICAgdGhpcy5hc3NpZ25lZVJhZGlvU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcclxuICAgICAgICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgaWYgKHJlcy5mcmVxdWVuY3lfZGV0YWlscy5zcGxpdCgnficpWzBdICE9PSA2KSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXM/LnJjX2lkID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5yY1NlbGVjdGVkLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiZcclxuICAgICAgICAgIHJlcz8ucmVzcG9uc2liaWxpdHlDZW50ZXJBcnI/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgcmVzPy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXHJcbiAgICAgICAgICAgIHJlcy5yZXNwb25zaWJpbGl0eUNlbnRlckFycixcclxuICAgICAgICAgICAgJ3JjX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzPy5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlQXNzdXJhbmNlTGlzdChyZXM/LmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogMCxcclxuICAgICAgICAgICAgc2FtcGxlOiAwLFxyXG4gICAgICAgICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogJycsXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXMuYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZCkge1xyXG4gICAgICAgICAgdGhpcy5nZXRBc3Nlc3NtZW50RGV0YWlscyhyZXMuYXNzZXNzbWVudCwgcmVzLnF1ZXN0aW9ubmFpcmVfdHlwZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcclxuICAgICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc0Fzc2Vzc21lbnREaXNhYmxlZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuZ2V0RWRpdE1vcmVPcHRpb25zKHJlcyk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChcclxuICAgICAgICAobGlzdEVsZW1lbnQ6IGFueSkgPT4gbGlzdEVsZW1lbnRba2V5XSA9PSBlbGVtZW50XHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBkYXRhLnB1c2gobGlzdFtpbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGxpc3RcclxuICAgICAgPy5tYXAoKGVsZSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVba2V5XSkge1xyXG4gICAgICAgICAgcmV0dXJuIGVsZVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcigoZWxlKSA9PiBlbGUpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVQcm9ncmFtQXNzaWduZWVHcm91cCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsXHJcbiAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhbGxJZHMgPSBbXHJcbiAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXHJcbiAgICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHNcclxuICAgICAgICAgICksXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBhc3NpZ25lZUdyb3VwcyA9IHRoaXMuZ3JvdXBBc3NpZ25lZUxpc3Q/LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChhc3NpZ25lZUdyb3Vwcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gYXNzaWduZWVHcm91cHM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cHMgPSB0aGlzLmdyb3VwQXNzaWduZWVMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcz8uaW5jbHVkZXMoXHJcbiAgICAgICAgICAgIGVsZW1lbnQ/Lmdyb3VwX2lkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoYXNzaWduZWVHcm91cHM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IGFzc2lnbmVlR3JvdXBzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVQcm9ncmFtT3ZlcnNlZXJHcm91cCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnNcclxuICAgICAgICA/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdCxcclxuICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0dyb3VwSWRzID0gW1xyXG4gICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxyXG4gICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHNcclxuICAgICAgICAgICksXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0dyb3VwID0gdGhpcy5ncm91cE92ZXJzZWVyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gYWxsRGVmYXVsdENDR3JvdXBJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3Qgbm90aWZ5TGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QsXHJcbiAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhbGxEZWZhdWx0Q0NGYWlsdXJlR3JvdXBJZHMgPSBbXHJcbiAgICAgICAgICAuLi5uZXcgU2V0KG5vdGlmeUxpc3RJZHMpLFxyXG4gICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwc1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwID0gdGhpcy5ncm91cE92ZXJzZWVyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgYWxsRGVmYXVsdENDRmFpbHVyZUdyb3VwSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0dyb3VwPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0ID0gb3ZlcnNlZXJzQ0NHcm91cDtcclxuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXA/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPVxyXG4gICAgICAgICAgICBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cDtcclxuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0dyb3VwID0gdGhpcy5ncm91cE92ZXJzZWVyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgIGVsZW1lbnQ/Lmdyb3VwX2lkXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwID0gdGhpcy5ncm91cE92ZXJzZWVyTGlzdD8uZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwcz8uaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgZWxlbWVudD8uZ3JvdXBfaWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKG92ZXJzZWVyc0NDR3JvdXA/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLmxpc3QgPSBvdmVyc2VlcnNDQ0dyb3VwO1xyXG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cC5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID1cclxuICAgICAgICAgICAgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXA7XHJcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0ID0gW107XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZVByb2dyYW1SZXZpZXdlckdyb3VwKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHMgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QsXHJcbiAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBhbGxJZHMgPSBbXHJcbiAgICAgICAgLi4ubmV3IFNldChpZHMpLFxyXG4gICAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkc1xyXG4gICAgICAgICksXHJcbiAgICAgIF07XHJcbiAgICAgIGNvbnN0IHJldmlld2Vyc0dyb3VwID0gdGhpcy5ncm91cFJldmlld2VyTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcmV2aWV3ZXJzR3JvdXA/Lmxlbmd0aCB8fFxyXG4gICAgICAgICh0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyAmJlxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2Vycy5saXN0ID0gcmV2aWV3ZXJzR3JvdXA7XHJcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVZJRVdFUiA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2Vycy5saXN0ID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZU92ZXJzZWVyRGF0YShyZXM6IGFueSkge1xyXG4gICAgbGV0IG92ZXJzZWVyVXNlckxpc3Q6IG51bWJlcltdID0gW107XHJcbiAgICBsZXQgb3ZlcnNlZXJVc2VyTm90aWZ5TGlzdDogbnVtYmVyW10gPSBbXTtcclxuICAgIGxldCBvdmVyc2VlckVtcGxveWVlc0xpc3QgPSByZXM/LmNjX2VtYWlsXHJcbiAgICAgID8gT2JqZWN0LmtleXMocmVzPy5jY19lbWFpbCkubWFwKE51bWJlcilcclxuICAgICAgOiBbXTtcclxuICAgIG92ZXJzZWVyVXNlckxpc3QgPVxyXG4gICAgICBvdmVyc2VlckVtcGxveWVlc0xpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgID8gb3ZlcnNlZXJFbXBsb3llZXNMaXN0LmZpbHRlcigoZW1wbG95ZWVJZHM6IG51bWJlcikgPT5cclxuICAgICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmNjRW1haWxFbXBJZHM/LmluY2x1ZGVzKGVtcGxveWVlSWRzKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogWy4uLm92ZXJzZWVyRW1wbG95ZWVzTGlzdF07XHJcbiAgICBsZXQgb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3QgPSByZXM/LmZhaWx1cmVfY2NfZW1haWxcclxuICAgICAgPyBPYmplY3Qua2V5cyhyZXM/LmZhaWx1cmVfY2NfZW1haWwpLm1hcChOdW1iZXIpXHJcbiAgICAgIDogW107XHJcbiAgICBvdmVyc2VlclVzZXJOb3RpZnlMaXN0ID1cclxuICAgICAgb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmZhaWx1cmVDQ0VtYWlsR3JvdXBJZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IG92ZXJzZWVyRW1wbG95ZWVOb3RpZnlMaXN0LmZpbHRlcigoZW1wbG95ZWVJZHM6IG51bWJlcikgPT5cclxuICAgICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmZhaWx1cmVDQ0VtYWlsRW1wSWRzPy5pbmNsdWRlcyhlbXBsb3llZUlkcylcclxuICAgICAgICAgIClcclxuICAgICAgICA6IFsuLi5vdmVyc2VlckVtcGxveWVlTm90aWZ5TGlzdF07XHJcblxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ292ZXJzZWVycyddID0ge1xyXG4gICAgICBsaXN0OiByZXM/LmNjX2VtYWlsXHJcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBvdmVyc2VlclVzZXJMaXN0LCAnZW1wbG95ZWVfaWQnKVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIG5vdGlmeUxpc3Q6IHJlcz8uZmFpbHVyZV9jY19lbWFpbFxyXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXHJcbiAgICAgICAgICAgIG92ZXJzZWVyVXNlck5vdGlmeUxpc3QsXHJcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICAgIClcclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnb3ZlcnNlZXJzR3JvdXBzJ10gPSB7XHJcbiAgICAgIGxpc3Q6IHJlcz8udXNlckdyb3VwSWRzPy5jY0VtYWlsR3JvdXBJZHNcclxuICAgICAgICA/IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgdGhpcy5PcmdHcm91cCxcclxuICAgICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkcyxcclxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIG5vdGlmeUxpc3Q6IHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzXHJcbiAgICAgICAgPyB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXHJcbiAgICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzLFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZVJldmlld2VyRGF0YShyZXM6IGFueSkge1xyXG4gICAgY29uc3QgcmV2aWV3ZXJEZXRhaWxzID0gT2JqZWN0LmtleXMocmVzPy5yZXZpZXdlcl9hcnIpO1xyXG4gICAgdGhpcy5oYXNSZXZpZXdlciA9IHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMDtcclxuICAgIGNvbnN0IGdyb3VwUmV2aWV3ZXJEZXRhaWxzID0gcmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHM/Lmxlbmd0aFxyXG4gICAgICA/IE9iamVjdC5hc3NpZ24ocmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHMpXHJcbiAgICAgIDogW107XHJcbiAgICBsZXQgcmV2aWV3ZXJfdXNlcnM6IGFueVtdID0gW107XHJcbiAgICByZXZpZXdlcl91c2VycyA9XHJcbiAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2Vycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICByZXM/LnVzZXJHcm91cElkcz8ucmV2aWV3ZXJHcm91cElkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgID8gcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8ucmV2aWV3ZXJzLmZpbHRlcigobWVtYmVySWQ6IGFueSkgPT5cclxuICAgICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LnJldmlld2VySWRzPy5pbmNsdWRlcyhtZW1iZXJJZD8ubWVtYmVyX2lkKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8ucmV2aWV3ZXJzO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ3Jldmlld2VycyddID0ge1xyXG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XHJcbiAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZSA9PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xyXG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czpcclxuICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2FmdGVyX2RheXMgOiAyLFxyXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6XHJcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19mYWlsZWRfYWZ0ZXJfZGF5cyA6IDIsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFjY2VwdGVkRGF0YTogcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmV2aWV3ZXJfdXNlcnMgOiBbXSxcclxuICAgICAgbGlzdDpcclxuICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5zZXRSZXZpZXdlclBheWxvYWQoXHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXJfdXNlcnMsXHJcbiAgICAgICAgICAgICAgJ29iamVjdCcsXHJcbiAgICAgICAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydncm91cFJldmlld2VycyddID0ge1xyXG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XHJcbiAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZSA9PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xyXG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czpcclxuICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2FmdGVyX2RheXMgOiAyLFxyXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6XHJcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19mYWlsZWRfYWZ0ZXJfZGF5cyA6IDIsXHJcbiAgICAgIH0sXHJcbiAgICAgIGxpc3Q6XHJcbiAgICAgICAgZ3JvdXBSZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMuT3JnR3JvdXAsIGdyb3VwUmV2aWV3ZXJEZXRhaWxzLCAnZ3JvdXBfaWQnKVxyXG4gICAgICAgICAgOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZUFzc2lnbmVlRGF0YShyZXM6IGFueSkge1xyXG4gICAgbGV0IEFzc2lnbmVlQW55VXNlckxpc3Q6IG51bWJlcltdID0gW107XHJcbiAgICBsZXQgQXNzaWduZWVBbGxVc2VyTGlzdDogbnVtYmVyW10gPSBbXTtcclxuICAgIGxldCBhc3NpZ25lZUFueU9uZUxpc3QgPVxyXG4gICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZCAmJiB0aGlzLmlzRW50cnVzdFxyXG4gICAgICAgID8gcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWRcclxuICAgICAgICA6IFtdO1xyXG4gICAgQXNzaWduZWVBbnlVc2VyTGlzdCA9XHJcbiAgICAgIHJlcz8uYXNzaWduZWRfdG9fbWVtYmVyX2lkPy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFueW9uZUdyb3VwSWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgPyBhc3NpZ25lZUFueU9uZUxpc3QuZmlsdGVyKChlbXBsb3llZUlkczogbnVtYmVyKSA9PlxyXG4gICAgICAgICAgICByZXM/LmV4aXN0aW5nVXNlcklkcz8uYXNzaWduZWVBbnlvbmVJZHM/LmluY2x1ZGVzKGVtcGxveWVlSWRzKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIDogWy4uLmFzc2lnbmVlQW55T25lTGlzdF07XHJcblxyXG4gICAgQXNzaWduZWVBbGxVc2VyTGlzdCA9XHJcbiAgICAgIHJlcz8uYXNzaWduZWRfdG8gJiYgIXRoaXMuaXNFbnRydXN0ID8gcmVzPy5hc3NpZ25lZF90byA6IFtdO1xyXG4gICAgY29uc3QgYXNzaWduZWRUb1VzZXJEZXRhaWxzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgIFtOdW1iZXIocmVzPy5hc3NpZ25lZF90byldLFxyXG4gICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICApO1xyXG4gICAgaWYgKGFzc2lnbmVkVG9Vc2VyRGV0YWlscz8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG1lbWJlcl9pZCA9IGFzc2lnbmVkVG9Vc2VyRGV0YWlsc1swXT8ubXlfbWVtYmVyX2lkO1xyXG4gICAgICBpZiAocmVzPy5leGlzdGluZ1VzZXJJZHM/LmFzc2lnbmVlQWxsSWRzPy5pbmNsdWRlcyhtZW1iZXJfaWQpKSB7XHJcbiAgICAgICAgQXNzaWduZWVBbGxVc2VyTGlzdCA9IHJlcz8uYXNzaWduZWRfdG87XHJcbiAgICAgICAgcmVzLnVzZXJHcm91cElkc1snYXNzaWduZWVBbGxHcm91cElkcyddID0gW107XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQWxsR3JvdXBJZHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBBc3NpZ25lZUFsbFVzZXJMaXN0ID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhc3NpZ25lZXMnXSA9IHtcclxuICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcy5pc0dyb3VwQXNzaWduVG8gPyAnQU5ZX09ORScgOiAnQUxMJyxcclxuICAgICAgbGlzdDpcclxuICAgICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZD8ubGVuZ3RoID09IDBcclxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcclxuICAgICAgICAgICAgICBbTnVtYmVyKEFzc2lnbmVlQWxsVXNlckxpc3QpXSxcclxuICAgICAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIDogdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcclxuICAgICAgICAgICAgICBBc3NpZ25lZUFueVVzZXJMaXN0LFxyXG4gICAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICAgICksXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2Fzc2lnbmVlR3JvdXBzJ10gPSB7XHJcbiAgICAgIHdob0NhbkNvbXBsZXRlOiByZXM/LmlzR3JvdXBBc3NpZ25UbyA/ICdBTllfT05FJyA6ICdBTEwnLFxyXG4gICAgICBsaXN0OlxyXG4gICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFueW9uZUdyb3VwSWRzPy5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgPyByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXHJcbiAgICAgICAgICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcyxcclxuICAgICAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogW11cclxuICAgICAgICAgIDogdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXHJcbiAgICAgICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHMsXHJcbiAgICAgICAgICAgICAgJ2dyb3VwX2lkJ1xyXG4gICAgICAgICAgICApLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYWxsR3JvdXBBc3NpZ25lZSA9XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAhdGhpcy5pc0VudHJ1c3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0aGlzIGZ1bmN0aW9uIGlzIGZvciBnZXR0aW5nIHRoZSB1c2VycyBkYXRhIGJhc2VkIG9uIG1lbWJlcl9pZCBvZiB1c2VycyBvZiBzZWxlY3RlZCBVc2VyIEdyb3VwXHJcbiAgICogQHBhcmFtIHVzZXJsaXN0IGNvbnRhaW5zIHVzZXJzIGRhdGFcclxuICAgKiBAcGFyYW0gc2VsZWN0ZWRncm91cHMgY29udGFpbnMgc2VsZWN0ZWQgVXNlciBHcm91cCBkYXRhXHJcbiAgICogQHJldHVybnMgdXNlciBkYXRhIG9mIFNlbGVjdGVkIHVzZXIgZ3JvdXAuXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzVXNlckVtcGxveWVlc0lkKHVzZXJMaXN0OiBhbnksIHNlbGVjdGVkR3JvdXBzOiBhbnkpIHtcclxuICAgIGxldCBncm91cE1lbWJlcklkczogYW55ID0gW107XHJcbiAgICBsZXQgZ3JvdXBVc2VyRW1wbG95ZWU6IGFueSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRHcm91cHM/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgZ3JvdXBNZW1iZXJJZHMgPSBbLi4ubmV3IFNldChbLi4uZ3JvdXBNZW1iZXJJZHMsIC4uLmdyb3VwPy5tZW1iZXJfaWRzXSldO1xyXG4gICAgfSk7XHJcbiAgICB1c2VyTGlzdD8uZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGdyb3VwTWVtYmVySWRzPy5pbmNsdWRlcyhlbGU/Lm15X21lbWJlcl9pZCkpIHtcclxuICAgICAgICBncm91cFVzZXJFbXBsb3llZS5wdXNoKGVsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyb3VwVXNlckVtcGxveWVlO1xyXG4gIH1cclxuXHJcbiAgc2V0UmV2aWV3ZXJQYXlsb2FkKFxyXG4gICAgaWRzOiBhbnlbXSxcclxuICAgIHR5cGU6IHN0cmluZyxcclxuICAgIGFjY2VwdGVkRGF0YT86IEFycmF5PGFueT4sXHJcbiAgICByZXZpZXdlclR5cGU/OiBzdHJpbmdcclxuICApIHtcclxuICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICBjb25zdCBpZE9iakFycmF5ID0gdGhpcy5yZXR1cm5JZHMoaWRzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHJldHVybiB0aGlzLnNldExpc3QodGhpcy5hbGxVc2Vyc0xpc3QsIGlkT2JqQXJyYXksICdteV9tZW1iZXJfaWQnKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xpc3QnKSB7XHJcbiAgICAgIGNvbnN0IHBheUxvYWQ6IGFueSA9IFtdO1xyXG4gICAgICBjb25zdCBpZHNMaXN0ID0gdGhpcy5yZXR1cm5JZHMoaWRzLCAnbXlfbWVtYmVyX2lkJyk7XHJcbiAgICAgIGlkc0xpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XHJcbiAgICAgICAgaWYgKChhY2NlcHRlZERhdGEgPz8gW10pPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpbmRleCA9XHJcbiAgICAgICAgICAgIGFjY2VwdGVkRGF0YT8uZmluZEluZGV4KChlbGUpID0+IGVsZS5tZW1iZXJfaWQgPT09IGVsZW1lbnQpID8/IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYWNjZXB0U3RhdHVzID1cclxuICAgICAgICAgIGluZGV4ID4gLTEgJiYgYWNjZXB0ZWREYXRhID8gYWNjZXB0ZWREYXRhW2luZGV4XS5yZXZpZXdlcl9hY2NlcHQgOiAwO1xyXG4gICAgICAgIGlmIChhY2NlcHRTdGF0dXMgPT09IDAgJiYgcmV2aWV3ZXJUeXBlID09PSAnQU5ZT05FJykge1xyXG4gICAgICAgICAgYWNjZXB0U3RhdHVzID0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGF5TG9hZC5wdXNoKHsgbWVtYmVyX2lkOiBlbGVtZW50LCByZXZpZXdlcl9hY2NlcHQ6IGFjY2VwdFN0YXR1cyB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBwYXlMb2FkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWRcclxuICAgICkge1xyXG4gICAgICBpZiAodGhpcy5mcmFtZXdvcmtEZXRhaWxzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5hc3NpZ25Gcm9tRnJhbWV3b3JrKHRoaXMuZnJhbWV3b3JrRGV0YWlsc1swXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMuZ2V0RWRpdFJlc3BvbnNpYmlsaXR5RGV0YWlscyh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtLnB1c2godGhpcy5zZWxlY3RlZFByb2dyYW0pO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0uY2F0ZWdvcnlfaWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5jYXRlZ29yeV9pZD8udG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5kZWZhdWx0X2Fzc2lnbmVlX3R5cGUgPT0gJ0FOWU9ORSdcclxuICAgICAgICAgICAgICAgID8gJ0FOWV9PTkUnXHJcbiAgICAgICAgICAgICAgICA6ICdBTEwnO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSA9PSAnU0VRVUVOVElBTCdcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9IHRoaXNcclxuICAgICAgICAgICAgICAuc2VsZWN0ZWRQcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZ1xyXG4gICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBwcm9ncmFtQ3VzdG9tVGFncyA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5jdXN0b21fdGFnc1xyXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZFByb2dyYW0uY3VzdG9tX3RhZ3MpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBwcm9ncmFtQ3VzdG9tVGFncy5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gSlNPTi5wYXJzZSh0YWcpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XHJcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlBST0dSQU0gPSB0cnVlO1xyXG4gICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1BST0dSQU0nKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnICYmXHJcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0ZPUk1BVEVfRVZJREVOQ0UnKTtcclxuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0odGhpcy5zZWxlY3RlZFByb2dyYW0/Ll9pZCk7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZExpc3QodHlwZTogc3RyaW5nLCBzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxyXG4gICAgICAgIGlmICh0aGlzLmludmFsaWRUeXBlID09PSAnd2hvbScpIHtcclxuICAgICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3QsXHJcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtcy5tZW1iZXJfaWRdLFxyXG4gICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XHJcbiAgICAgICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aG8nKSB7XHJcbiAgICAgICAgICB0aGlzLmludmFsaWRUeXBlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICF0aGlzLmlzRW50cnVzdCAmJlxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zLmVtcGxveWVlX2lkXSxcclxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVHcm91cEFzc2lnbmVlRGF0YShzZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcclxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxyXG4gICAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICdpdGVtX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yY1NlbGVjdGVkLmVtaXQodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA+IDApO1xyXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2F1ZGl0X2NhdGVnb3J5X2RldGFpbHMnXVsnY2F0ZWdvcnlfaWQnXSA9IDA7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcclxuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeSc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIHNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0YWcgPVxyXG4gICAgICAgICAgICBlbGVtZW50LmN1c3RvbV90YWdzICE9PSAnJyAmJlxyXG4gICAgICAgICAgICBlbGVtZW50LmN1c3RvbV90YWdzICE9PSAnbnVsbCcgJiZcclxuICAgICAgICAgICAgZWxlbWVudC5jdXN0b21fdGFncyAhPSAnW10nXHJcbiAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKGVsZW1lbnQuY3VzdG9tX3RhZ3MpXHJcbiAgICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIGlmICh0YWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Byb2dyYW0nOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmxpbmtlZFByb2dyYW0gPSBzZWxlY3RlZEl0ZW1zPy5saW5rZWRQcm9ncmFtO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXHJcbiAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAodGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICd1bmNhdGVnb3JpemVkJykgfHxcclxuICAgICAgICAgICAgIXRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXHJcbiAgICAgICAgICApICYmXHJcbiAgICAgICAgICAhdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHNlbGVjdGVkSXRlbXMuY2F0ZWdvcmllc1xyXG4gICAgICAgICAgICA/IHNlbGVjdGVkSXRlbXMuY2F0ZWdvcmllc1xyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgbGV0IGNhdGVnb3J5SWQgPSBzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWQgKyAnLCcgKyBjYXRlZ29yeUlkO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMgPSBbXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcyksXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoW3NlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXSksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFnc1xyXG4gICAgICAgICAgICA/IEpTT04ucGFyc2Uoc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY3VzdG9tX3RhZ3MpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBwcm9ncmFtQ3VzdG9tVGFncz8uZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGFnRGF0YSA9IHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSh0YWcpIDogdGFnO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQpPy5sZW5ndGhcclxuICAgICAgICAgICAgICA/IHRoaXMuZ2V0UHJvZ3JhbURldGFpbHMoc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbS5faWQpXHJcbiAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcclxuICAgICAgICAgICAgPyBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5X2lkID0gJyc7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbSA9IHNlbGVjdGVkSXRlbXMucHJvZ3JhbVxyXG4gICAgICAgICAgICA/IFtzZWxlY3RlZEl0ZW1zLnByb2dyYW1dXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBsZXQgY2F0ZWdvcnlJZCA9IHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXM/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5X2lkID1cclxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZCArICcsJyArIGNhdGVnb3J5SWQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWQ/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtcclxuICAgICAgICAgICAgLi4ubmV3IFNldChzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzKSxcclxuICAgICAgICAgICAgLi4ubmV3IFNldChbc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRdKSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBjb25zdCBwcm9ncmFtQ3VzdG9tVGFncyA9IHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmN1c3RvbV90YWdzXHJcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFncylcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIHByb2dyYW1DdXN0b21UYWdzPy5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gdHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHRhZykgOiB0YWc7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cclxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5kZWZhdWx0X2Fzc2lnbmVlX3R5cGUgPT0gJ0FOWU9ORSdcclxuICAgICAgICAgICAgICAgID8gJ0FOWV9PTkUnXHJcbiAgICAgICAgICAgICAgICA6ICdBTEwnO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cclxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5kZWZhdWx0X3Jldmlld2Vyc190eXBlID09ICdTRVFVRU5USUFMJ1xyXG4gICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkID1cclxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgIShcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ucHJvZ3JhbVR5cGUgPT09IDAgJiZcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3VuY2F0ZWdvcml6ZWQnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uX2lkICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbShzZWxlY3RlZEl0ZW1zLnByb2dyYW0uX2lkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXZpZXdlcic6XHJcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmVHcm91cFJldmlld2VyRGF0YShzZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICAgIHRoaXMucmV2aWV3ZXJzTGlzdCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zLCAnb3ZlcnNlZXJMaXN0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyTm90aWZ5JzpcclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zLCAnb3ZlcnNlZXJOb3RpZnlMaXN0Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Fzc3VyYW5jZSc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3QsXHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxyXG4gICAgICAgICAgJ2NhdGVnb3J5X2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3JlcXVpcmVzX2F1ZGl0JzpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMuYXNzdXJhbmNlUmVxdWlyZXNBdWRpdExpc3QsXHJcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcnlfaWRdLFxyXG4gICAgICAgICAgJ2NhdGVnb3J5X2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2F1ZGl0X2NhdGVnb3J5X2RldGFpbHMnXVsnY2F0ZWdvcnlfaWQnXSA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yeV9pZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzID0gc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHM7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludEluc3RydWN0aW9uID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnRJbnN0cnVjdGlvbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2FsY3VsYXRlZHJpc2snOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJpc2tDbGFzcyA9IHNlbGVjdGVkSXRlbXM/LnJpc2tDbGFzcztcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrTWF0cml4ID0gc2VsZWN0ZWRJdGVtcz8ucmlza01hdHJpeDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZm9ybWF0ZV9ldmlkZW5jZSc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0UmVxdWlyZWQgPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uaXNGb3JtYXRlVXBsb2FkZWQgPz8gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0RmlsZXMgPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3MgPVxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ubGlua3MgPz8gW107XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5pc0V2aWRlbmNlUmVxdWlyZWQgPz8gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld0ZyZXF1ZW5jeSc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeSA9IHtcclxuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogc2VsZWN0ZWRJdGVtcy5jb21wbGV0ZURheXMsXHJcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiBzZWxlY3RlZEl0ZW1zLm5vdENvbXBsZXRlZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdHUkNfT0JKRUNUUyc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBwcm9ncmFtIGlzIHNlbGVjdGVkIGFuZCB0aGUgdXNlciBoYXMgZnVsbCBwZXJtaXNzaW9uLCByZWZyZXNoIHRoZSBsaXN0cyB3aGlsZSB0aGUgcHJvZ3JhbVxyXG4gICAqIGlzIHNlbGVjdGVkLiBPdGhlcndpc2UsIHJlZnJlc2ggYWxsIGxpc3RzLlxyXG4gICAqIDwvY29kZT5cclxuICAgKi9cclxuICBjYWxsUmVmcmVzaExpc3QoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0/Lmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmUodHlwZTogYW55LCBldmVudD86IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICBjb25zdCByY0luZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09IGV2ZW50LnJjX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYy5zcGxpY2UocmNJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5yY1NlbGVjdGVkLmVtaXQodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA+IDApO1xyXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2F1ZGl0X2NhdGVnb3J5X2RldGFpbHMnXVsnY2F0ZWdvcnlfaWQnXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnLCB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcclxuICAgICAgICBjb25zdCBlbnRydXN0SW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0LmZpbmRJbmRleChcclxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Quc3BsaWNlKGVudHJ1c3RJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2dyb3VwYXNzaWduZWVzJzpcclxuICAgICAgICBjb25zdCBncm91cEluZGV4ID1cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cC5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0LnNwbGljZShncm91cEluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuICAgICAgICBjb25zdCByZXZpZXdlckluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdC5zcGxpY2UocmV2aWV3ZXJJbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2dyb3VwUmV2aWV3ZXInOlxyXG4gICAgICAgIGNvbnN0IGdyb3VwUmV2aWV3ZXJJbmRleCA9XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAocmV2aWV3ZXI6IGFueSkgPT4gcmV2aWV3ZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdC5zcGxpY2UoXHJcbiAgICAgICAgICBncm91cFJldmlld2VySW5kZXgsXHJcbiAgICAgICAgICAxXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlcic6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJbmRleCA9XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0LmZpbmRJbmRleChcclxuICAgICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0LnNwbGljZShvdmVyc2VlckluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb3ZlcnNlZXJHcm91cCc6XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cEluZGV4ID1cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLmxpc3Quc3BsaWNlKFxyXG4gICAgICAgICAgb3ZlcnNlZXJHcm91cEluZGV4LFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb3ZlcnNlZXJOb3RpZnlMaXN0JzpcclxuICAgICAgICBjb25zdCBvdmVyc2Vlck5vdGlmeUluZGV4ID1cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAob3ZlcnNlZXJOOiBhbnkpID0+IG92ZXJzZWVyTi5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdC5zcGxpY2UoXHJcbiAgICAgICAgICBvdmVyc2Vlck5vdGlmeUluZGV4LFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyR3JvdXBOb3RpZnlMaXN0JzpcclxuICAgICAgICBjb25zdCBvdmVyc2Vlckdyb3VwTm90aWZ5SW5kZXggPVxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChvdmVyc2Vlck46IGFueSkgPT4gb3ZlcnNlZXJOLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0LnNwbGljZShcclxuICAgICAgICAgIG92ZXJzZWVyR3JvdXBOb3RpZnlJbmRleCxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkuZmluZEluZGV4KFxyXG4gICAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LmNhdGVnb3J5X2lkID09IGV2ZW50LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeS5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XHJcbiAgICAgICAgY29uc3QgdGFnID0gSlNPTi5wYXJzZShldmVudC5jdXN0b21fdGFncyk7XHJcbiAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleENUICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5zcGxpY2UoaW5kZXhDVCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnk/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0YWcgPSBKU09OLnBhcnNlKGVsZW1lbnQuY3VzdG9tX3RhZ3MpO1xyXG4gICAgICAgICAgICBpZiAodGFnPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwcm9ncmFtJzpcclxuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdFByb2dyYW1PblJlbW92ZShldmVudCk7XHJcbiAgICAgICAgLy8gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBbXTtcclxuICAgICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XHJcblxyXG4gICAgICAgIC8vIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0oKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmVxdWlyZXNfYXVkaXQnOlxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcXVpcmVzQXVkaXRMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHtcclxuICAgICAgICAgIGNhdGVnb3J5X2lkOiAwLFxyXG4gICAgICAgICAgc2FtcGxlOiAwLFxyXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcclxuICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnJyxcclxuICAgICAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3N1cmFuY2UnOlxyXG4gICAgICAgIGNvbnN0IGFzc3VyYW5jZUluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoYXNzdXJhbmNlOiBhbnkpID0+IGFzc3VyYW5jZS5jYXRlZ29yeV9pZCA9PSBhc3N1cmFuY2UuY2F0ZWdvcnlfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3Quc3BsaWNlKGFzc3VyYW5jZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2hlY2twb2ludCc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMuc3BsaWNlKGV2ZW50LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzZXNzbWVudCc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IHtcclxuICAgICAgICAgIGNhdGVnb3J5X2lkOiAnJyxcclxuICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ25ldy1jaGVja3BvaW50cyc6XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzID0ge307XHJcbiAgICAgICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMuY2hlY2twb2ludENvdW50VXBkYXRlZC5lbWl0KHRoaXMuY2hlY2twb2ludENvdW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnR1JDX09CSkVDVFMnOlxyXG4gICAgICAgIHRoaXMucmVtb3ZlT3RoZXJHUkNPYmplY3RzKGV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVHcm91cEFzc2lnbmVlRGF0YShzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIGxldCB1c2VyT2JqOiBhbnk7XHJcbiAgICB1c2VyT2JqID0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8gc2VsZWN0ZWRJdGVtcyA6IHNlbGVjdGVkSXRlbXM/LnVzZXJzO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcclxuICAgICAgdXNlck9iaixcclxuICAgICAgJ215X21lbWJlcl9pZCdcclxuICAgICk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICB0aGlzLk9yZ0dyb3VwLFxyXG4gICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHMsXHJcbiAgICAgICdncm91cF9pZCdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzYXZlR3JvdXBSZXZpZXdlckRhdGEoc2VsZWN0ZWRJdGVtczogYW55KSB7XHJcbiAgICBsZXQgdXNlck9iajogYW55ID0gW107XHJcbiAgICBzZWxlY3RlZEl0ZW1zLnVzZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIHVzZXJPYmoucHVzaChlbGUuZW1wbG95ZWVfaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgdGhpcy5yZXZpZXdlcnNMaXN0LFxyXG4gICAgICB1c2VyT2JqLFxyXG4gICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMgPSB7XHJcbiAgICAgIGxpc3Q6IHNlbGVjdGVkSXRlbXM/Lmdyb3Vwcz8ubGVuZ3RoID4gMCA/IHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyA6IFtdLFxyXG4gICAgfTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3cgPVxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93O1xyXG4gIH1cclxuXHJcbiAgc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zOiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ292ZXJzZWVyTGlzdCc6XHJcbiAgICAgICAgbGV0IG92ZXJzZWVyc2VsZWN0ZWRsaXN0ID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnVzZXJzLFxyXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXHJcbiAgICAgICAgICBvdmVyc2VlcnNlbGVjdGVkbGlzdCxcclxuICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwc1snbGlzdCddID1cclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3Vwcz8ubGVuZ3RoID4gMCA/IHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyA6IFtdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvdmVyc2Vlck5vdGlmeUxpc3QnOlxyXG4gICAgICAgIGxldCBvdmVyc2VlcnNlbGVjdGVkTm90aWZ5bGlzdCA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy51c2VycyxcclxuICAgICAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgICAgb3ZlcnNlZXJzZWxlY3RlZE5vdGlmeWxpc3QsXHJcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHNbJ25vdGlmeUxpc3QnXSA9XHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHM/Lmxlbmd0aCA+IDAgPyBzZWxlY3RlZEl0ZW1zPy5ncm91cHMgOiBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgZW50cnVzdEZyYW1ld29yayhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuXHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eSA9IHtcclxuICAgICAgbmFtZTogZXZlbnQucmVwb3J0X25hbWUsXHJcbiAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiBldmVudC5rZXlfY29tcGxpYW5jZSA/IHRydWUgOiBmYWxzZSxcclxuICAgIH07XHJcbiAgICBjb25zdCBuZXdTdGFydERhdGUgPVxyXG4gICAgICBldmVudC5zdGFydF9kYXRlIHx8IGV2ZW50LnN0YXJ0X2RhdGUgIT0gbnVsbCB8fCBldmVudC5zdGFydF9kYXRlICE9PSAnJ1xyXG4gICAgICAgID8gbmV3IERhdGUoZXZlbnQuc3RhcnRfZGF0ZSAqIDEwMDApXHJcbiAgICAgICAgOiBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgcHZ0VGVtcGxhdGUgPVxyXG4gICAgICBldmVudC5mcmVxdWVuY3lfdGVtcGxhdGUgJiYgZXZlbnQuZnJlcXVlbmN5X3RlbXBsYXRlICE9PSAnJ1xyXG4gICAgICAgID8gZXZlbnQuZnJlcXVlbmN5X3RlbXBsYXRlXHJcbiAgICAgICAgOiBldmVudC5mcmVxdWVuY3k7XHJcbiAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0OiBhbnkgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXHJcbiAgICAgIHB2dFRlbXBsYXRlLFxyXG4gICAgICBuZXdTdGFydERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICBuZXdTdGFydERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgbmV3U3RhcnREYXRlLmdldEZ1bGxZZWFyKClcclxuICAgICk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm47XHJcbiAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUXzI0SFI7XHJcbiAgICBldmVudC5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxyXG4gICAgICA/IGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxyXG4gICAgICA6IDI7XHJcbiAgICBldmVudC5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXHJcbiAgICAgID8gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcclxuICAgICAgOiAyO1xyXG4gICAgZXZlbnQubGlmZWN5Y2xlX2RldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XHJcbiAgICBldmVudC5zdGFydF9vZl9kYXlfdXRjID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZyYW1ld29ya1N0YXJ0RGF0ZShldmVudCk7XHJcbiAgICBldmVudC5vbl9jb21wbGV0aW9uX29mID0gW107XHJcbiAgICBldmVudC5kb21fdXRjID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cclxuICAgICAgZnJlcXVlbmN5RGV0YWlsc09iamVjdC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUXzI0SFI7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9XHJcbiAgICAgIGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA/IGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA6IDI7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXHJcbiAgICAgID8gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcclxuICAgICAgOiAyO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlmZWN5Y2xlRGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0X29mX2RheV91dGMgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2VcclxuICAgICAgLmZyYW1ld29ya1N0YXJ0RGF0ZShldmVudClcclxuICAgICAgLnRvRml4ZWQoKVxyXG4gICAgICAudG9TdHJpbmcoKTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9uX2NvbXBsZXRpb25fb2YgPSBbXTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRvbV91dGMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uID1cclxuICAgICAgZXZlbnQucmVtYXJrcy50cmltKCkgIT0gJycgPyBldmVudC5yZW1hcmtzIDogJyc7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzID1cclxuICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgJiZcclxuICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09IG51bGwgJiZcclxuICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09ICdudWxsJyAmJlxyXG4gICAgICBldmVudC5jdXN0b21fdGFncyAhPT0gJydcclxuICAgICAgICA/IEpTT04ucGFyc2UoZXZlbnQuY3VzdG9tX3RhZ3MpXHJcbiAgICAgICAgOiBbXTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGV2ZW50LmNvbnRyb2xfb2JqZWN0aXZlXHJcbiAgICAgID8gZXZlbnQuY29udHJvbF9vYmplY3RpdmVcclxuICAgICAgOiAnJztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbENhdGVnb3JpZXMsXHJcbiAgICAgIFtldmVudC5jYXRlZ29yeV9pZF0sXHJcbiAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICk7IC8vXHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cyA9IDI7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMgPSAyO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmluZChcclxuICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09PSBldmVudC5lbnRpdHlfaWRcclxuICAgIClcclxuICAgICAgPyBbXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmluZChcclxuICAgICAgICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09PSBldmVudC5lbnRpdHlfaWRcclxuICAgICAgICAgICksXHJcbiAgICAgICAgXVxyXG4gICAgICA6IFtdO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzID0gdGhpcy5pc1Jpc2tFbmFibGUgPyAxIDogMjtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByaXZhdGVfbGlicmFyeV9pZCA9IGV2ZW50LnJlcG9ydF9pZDtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2xhc3NpZmljYXRpb24gPSB0aGlzLmlzUmlza0VuYWJsZSA/IDEgOiAyO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY29udGludW91c19mYWlsZWRfZGF5cyA9XHJcbiAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9XHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZS5mcmFtZXdvcmtTdGFydERhdGUoZXZlbnQpO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UgPSB7XHJcbiAgICAgIGV2aWRlbmNlUmVxdWlyZWQ6IGV2ZW50LnJlcG9ydF91cGxvYWRfZmxhZyA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgZm9ybWF0RmlsZXM6IGV2ZW50LnJlcG9ydF9mb3JtYXQsXHJcbiAgICAgIGZvcm1hdExpbmtzOlxyXG4gICAgICAgICFldmVudC5yZXBvcnRfZm9ybWF0X2xpbmsgfHwgZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rID09ICcnXHJcbiAgICAgICAgICA/IFtdXHJcbiAgICAgICAgICA6IFtldmVudC5yZXBvcnRfZm9ybWF0X2xpbmtdLFxyXG4gICAgICBmb3JtYXRSZXF1aXJlZDpcclxuICAgICAgICBldmVudC5yZXBvcnRfZm9ybWF0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgKGV2ZW50LnJlcG9ydF9mb3JtYXRfbGluayAmJiBldmVudC5yZXBvcnRfZm9ybWF0X2xpbmsgIT0gJycpXHJcbiAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgIDogZmFsc2UsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHtcclxuICAgICAgY2F0ZWdvcnlfaWQ6IDAsXHJcbiAgICAgIHNhbXBsZTogNSxcclxuICAgICAgcGVyY2VudGFnZTogMzAsXHJcbiAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnMX4wfjN+MScsXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBERUZBVUxUXzI0SFIsXHJcbiAgICB9O1xyXG5cclxuICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF9USU1FO1xyXG4gICAgaWYgKFxyXG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyAhPT0gJycgJiZcclxuICAgICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgIT09ICc1fjB+MH4wJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcclxuICAgIGV2ZW50LnBsYWNlaG9sZGVyID0gdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihldmVudCk7XHJcbiAgICBjb25zdCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlICE9PSAnJykge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnT0JKRUNUSVZFJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuT0JKRUNUSVZFID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSSVNLX0NMQVNTSUZJQ0FUSU9OJyk7XHJcbiAgICB0aGlzLm1vcmVPcHRpb25zLlJJU0tfQ0xBU1NJRklDQVRJT04gPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdDQVRFR09SWScpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNBVEVHT1JZID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5mb3JtYXRBbmRFdmlkZW5jZT8uZXZpZGVuY2VSZXF1aXJlZCB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2U/LmZvcm1hdFJlcXVpcmVkXHJcbiAgICApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0ZPUk1BVEVfRVZJREVOQ0UnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5lbnRpdHlfaWQgPiAwKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSQycpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLlJDID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcclxuICAgIC8vICBldmVudC5wbGFjZWhvbGRlclxyXG4gIH1cclxuXHJcbiAgYXNzaWduRnJvbUZyYW1ld29yayhmcmVxT2JqOiBhbnkpIHtcclxuICAgIGlmIChmcmVxT2JqLmRhdGEpIHtcclxuICAgICAgLy8gdGhpcy5yZXNldCgpO1xyXG4gICAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgICAgY29uc3QgbmV3U3RhcnREYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q6IGFueSA9XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxyXG4gICAgICAgICAgZnJlcU9iai5kYXRhLmZyZXF1ZW5jeSxcclxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXREYXRlKCksXHJcbiAgICAgICAgICBuZXdTdGFydERhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIGxldCBldmVudDogYW55ID0ge307XHJcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlsc09iamVjdD8ucGF0dGVybjtcclxuICAgICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUXzI0SFI7XHJcbiAgICAgIGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzID0gMjtcclxuICAgICAgZXZlbnQuZmFpbGVkX2FmdGVyX2RheXMgPSAyO1xyXG4gICAgICBldmVudC5saWZlY3ljbGVfZGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcclxuICAgICAgZXZlbnQuc3RhcnRfb2ZfZGF5X3V0YyA9IERhdGUubm93KCkgLyAxMDAwO1xyXG4gICAgICBldmVudC5vbl9jb21wbGV0aW9uX29mID0gW107XHJcbiAgICAgIGV2ZW50LmRvbV91dGMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyA9XHJcbiAgICAgICAgZnJlcXVlbmN5RGV0YWlsc09iamVjdC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xyXG4gICAgICB0aGlzLmdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKGV2ZW50KTtcclxuICAgICAgZXZlbnQucGxhY2Vob2xkZXIgPSB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyO1xyXG4gICAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfVElNRTtcclxuICAgICAgdGhpcy5mcmVxdWVuY3lQb3B1bGF0aW9uKGV2ZW50KTtcclxuXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUgPSBmcmVxT2JqLmRhdGEubmFtZSA/PyAnJztcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gZnJlcU9iai5kYXRhLm9iamVjdGl2ZXMgPz8gJyc7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm4gPz8gJyc7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0X29mX2RheV91dGM7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlbWluZGVyX2JlZm9yZV9kYXlzID0gZXZlbnQucmVtaW5kZXJfYmVmb3JlX2RheXM7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxyXG4gICAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZhaWxlZF9hZnRlcl9kYXlzID0gZXZlbnQuZmFpbGVkX2FmdGVyX2RheXM7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcmFtZXdvcmtWYWx1ZXMgPSBmcmVxT2JqLnNlbGVjdGVkRnJhbWV3b3JrRGF0YSA/PyB1bmRlZmluZWQ7XHJcbiAgICAgIGlmIChmcmVxT2JqPy5kYXRhPy5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uID0gZnJlcU9iaj8uZGF0YT8uZGVzY3JpcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZyZXFPYmo/LmRhdGE/Lm9iamVjdGl2ZXMpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgPSBmcmVxT2JqLmRhdGEub2JqZWN0aXZlcyA/PyAnJztcclxuICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9CSkVDVElWRSA9IHRydWU7XHJcbiAgICAgICAgbGV0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMubW9yZU9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcclxuICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goa2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbGlzdCB1c2VybGlzdCBmb3IgbGlzdGluZyB1c2Vyc1xyXG4gICAqIEByZXR1cm5zIGFzc2lnbiB1c2VyJ3MgbXlfbWVtYmVyX2lkICB0byBtZW1iZXJfaWQgZGF0YVxyXG4gICAqL1xyXG4gIGFzc2lnblVzZXJNZW1iZXJJZChsaXN0OiBhbnkpIHtcclxuICAgIGNvbnN0IHVzZXJPYmogPSBbLi4ubGlzdF07XHJcbiAgICB1c2VyT2JqPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgdXNlci5tZW1iZXJfaWQgPSB1c2VyPy5teV9tZW1iZXJfaWQ7XHJcbiAgICB9KTtcclxuICAgIGxpc3QgPSBbLi4udXNlck9ial07XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hBbGxMaXN0cygpIHtcclxuICAgIGxldCBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgYWxsVXNlcnNJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGFzc2lnbmVlR3JvdXBJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGFzc2lnbmVlSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBncm91cFJldmlld2VySWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBncm91cE92ZXJzZWVySWRzOiBhbnkgPSBbXTtcclxuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbXTtcclxuICAgIHRoaXMuYXNzaWdub3JJZCA9IFtdO1xyXG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFtdO1xyXG4gICAgdGhpcy5hc3NpZ25lZUlkcyA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGFsbFVzZXJzID0gY2xvbmVEZWVwKHRoaXMuYWxsVXNlcnNMaXN0KTtcclxuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLk9yZ0dyb3VwKTtcclxuICAgIGNvbnN0IGJlaGFsZlVzZXJzID0gY2xvbmVEZWVwKHRoaXMuYmVoYWxmT2ZVc2Vyc0xpc3QpO1xyXG5cclxuICAgIGNvbnN0IGFzc2lnbm9ycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0KTtcclxuICAgIGNvbnN0IGFzc2lnbmVlcyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0KTtcclxuXHJcbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwTGlzdCA9IGNsb25lRGVlcChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0XHJcbiAgICApO1xyXG4gICAgY29uc3QgcmV2aWV3ZXJzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0KTtcclxuICAgIGNvbnN0IGdyb3VwUmV2aWV3ZXJzTGlzdCA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXHJcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IG92ZXJzZWVyTGlzdCA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0KTtcclxuICAgIGNvbnN0IGdyb3VwT3ZlcnNlZXJMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcclxuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGdyb3VwTm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcclxuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdClcclxuICAgICAgOiBbXTtcclxuICAgIGFzc2lnbm9ycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlci5tZW1iZXJfaWQpO1xyXG4gICAgICB0aGlzLmFzc2lnbm9ySWQucHVzaCh1c2VyLm1lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgICAgYXNzaWduZWVJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgICB0aGlzLmFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPT0gMCkge1xyXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHRoaXMubWVtYmVySWQpO1xyXG4gICAgICB0aGlzLmFzc2lnbm9ySWQucHVzaCh0aGlzLm1lbWJlcklkKTtcclxuICAgIH1cclxuICAgIGFsbFVzZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgYWxsVXNlcnNJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBhc3NpZ25lZUdyb3VwTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xyXG4gICAgICBhc3NpZ25lZUdyb3VwSWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldmlld2Vycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIHJldmlld2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICAgIHRoaXMucmV2aWV3ZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cFJldmlld2Vyc0xpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgZ3JvdXBSZXZpZXdlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuICAgIGdyb3VwT3ZlcnNlZXJMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cE5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xyXG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcclxuICAgIH0pO1xyXG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzID0gWy4uLm5ldyBTZXQoYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMpXTtcclxuICAgIGFsbFVzZXJzSWRzID0gWy4uLm5ldyBTZXQoYWxsVXNlcnNJZHMpXTtcclxuICAgIGFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQoYXNzaWduZWVJZHMpXTtcclxuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xyXG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xyXG4gICAgdGhpcy5hc3NpZ25vcklkID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25vcklkKV07XHJcbiAgICB0aGlzLmFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25lZUlkcyldO1xyXG4gICAgdGhpcy5yZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJJZHMpXTtcclxuICAgIHRoaXMub3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLm92ZXJzZWVySWRzKV07XHJcblxyXG4gICAgYXNzaWduZWVHcm91cElkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlR3JvdXBJZHMpXTtcclxuICAgIGdyb3VwUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldChncm91cFJldmlld2VySWRzKV07XHJcbiAgICBncm91cE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBPdmVyc2VlcklkcyldO1xyXG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PiAhb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzO1xyXG4gICAgdGhpcy5yZXZpZXdlcnNMaXN0ID0gYWxsVXNlcnM7XHJcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSBhbGxVc2VycztcclxuXHJcbiAgICB0aGlzLmRpc2FibGVMaXN0KFxyXG4gICAgICBhbGxVc2VycyxcclxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMsXHJcbiAgICAgIGFzc2lnbmVlSWRzLFxyXG4gICAgICByZXZpZXdlcnNJZHMsXHJcbiAgICAgIG92ZXJzZWVySWRzXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBBc3NpZ25lZUxpc3QgPSBhbGxHcm91cHMuZmlsdGVyKFxyXG4gICAgICAgIChncm91cDogYW55KSA9PlxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgZ3JvdXBSZXZpZXdlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxyXG4gICAgICAgICAgICBncm91cE92ZXJzZWVySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmV2aWV3ZXJNZW1iZXJJZHNMaXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQodGhpcy5hbGxVc2Vyc0xpc3QpO1xyXG4gICAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZCh0aGlzLmFsbFVzZXJzTGlzdCk7XHJcbiAgICAgIHRoaXMuZ3JvdXBSZXZpZXdlckxpc3QgPSBhbGxHcm91cHMuZmlsdGVyKFxyXG4gICAgICAgIChncm91cDogYW55KSA9PlxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxyXG4gICAgICAgICAgICBhc3NpZ25lZUdyb3VwSWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3QgPSBhbGxHcm91cHMuZmlsdGVyKFxyXG4gICAgICAgIChncm91cDogYW55KSA9PlxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxyXG4gICAgICAgICAgICBncm91cFJldmlld2VySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlTGlzdChcclxuICAgIGFsbFVzZXJzOiBhbnksXHJcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55LFxyXG4gICAgYXNzaWduZWVJZHM6IGFueSxcclxuICAgIHJldmlld2Vyc0lkczogYW55LFxyXG4gICAgb3ZlcnNlZXJJZHM6IGFueVxyXG4gICkge1xyXG4gICAgbGV0IGRpc2FibGVBc3NpZ25lZUxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+XHJcbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxyXG4gICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuZGlzYWJsZVJhZGlvQXNzaWduZWUgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcclxuICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgKTtcclxuICAgIGxldCBkaXNhYmxlUmV2aWV3ZXJMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxyXG4gICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICApO1xyXG4gICAgbGV0IGRpc2FibGVPdmVyc2Vlckxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+XHJcbiAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICBkaXNhYmxlT3ZlcnNlZXJMaXN0LFxyXG4gICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XHJcbiAgICAgIGxldCBkaXNhYmxlUmV2aWV3ZXJMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxyXG4gICAgICAgICh1c2VyOiBhbnkpID0+XHJcbiAgICAgICAgICBvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxyXG4gICAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxyXG4gICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcclxuICAgICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgIGRpc2FibGVPdmVyc2VlcnNMaXN0LFxyXG4gICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpIHtcclxuICAgIGxldCBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55ID0gW107XHJcbiAgICBsZXQgcmV2aWV3ZXJzSWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBvdmVyc2VlcklkczogYW55ID0gW107XHJcbiAgICBsZXQgYXNzaWduZWVJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGFzc2lnbmVlR3JvdXBJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGdyb3VwUmV2aWV3ZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGdyb3VwT3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5yZXZpZXdlcklkcyA9IFtdO1xyXG4gICAgdGhpcy5hc3NpZ25vcklkID0gW107XHJcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gW107XHJcbiAgICB0aGlzLmFzc2lnbmVlSWRzID0gW107XHJcbiAgICBjb25zdCBiZWhhbGZVc2VycyA9IGNsb25lRGVlcCh0aGlzLmJlaGFsZk9mVXNlcnNMaXN0KTtcclxuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLk9yZ0dyb3VwKTtcclxuICAgIGNvbnN0IGFzc2lnbm9ycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCk7XHJcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCk7XHJcbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwTGlzdCA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXHJcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IHJldmlld2VycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0KTtcclxuICAgIGNvbnN0IGdyb3VwUmV2aWV3ZXJzTGlzdCA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXHJcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IG92ZXJzZWVyTGlzdCA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0KTtcclxuICAgIGNvbnN0IGdyb3VwT3ZlcnNlZXJMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcclxuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdClcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGdyb3VwTm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcclxuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdClcclxuICAgICAgOiBbXTtcclxuICAgIGFzc2lnbm9ycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XHJcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcclxuICAgIH0pO1xyXG4gICAgYXNzaWduZWVzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcclxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgICBhc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICAgIHRoaXMuYXNzaWduZWVJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09IDApIHtcclxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh0aGlzLm1lbWJlcklkKTtcclxuICAgICAgdGhpcy5hc3NpZ25vcklkLnB1c2godGhpcy5tZW1iZXJJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXNzaWduZWVHcm91cExpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgYXNzaWduZWVHcm91cElkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuICAgIHJldmlld2Vycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIHJldmlld2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICAgIHRoaXMucmV2aWV3ZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cFJldmlld2Vyc0xpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcclxuICAgICAgZ3JvdXBSZXZpZXdlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XHJcbiAgICB9KTtcclxuICAgIG92ZXJzZWVyTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XHJcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcclxuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XHJcbiAgICB9KTtcclxuICAgIGdyb3VwT3ZlcnNlZXJMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XHJcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xyXG4gICAgfSk7XHJcbiAgICBncm91cE5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xyXG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcclxuICAgIH0pO1xyXG4gICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyldO1xyXG4gICAgYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUlkcyldO1xyXG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XHJcbiAgICBvdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KG92ZXJzZWVySWRzKV07XHJcbiAgICBhc3NpZ25lZUdyb3VwSWRzID0gWy4uLm5ldyBTZXQoYXNzaWduZWVHcm91cElkcyldO1xyXG4gICAgZ3JvdXBSZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwUmV2aWV3ZXJJZHMpXTtcclxuICAgIGdyb3VwT3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChncm91cE92ZXJzZWVySWRzKV07XHJcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbm9ySWQpXTtcclxuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbmVlSWRzKV07XHJcbiAgICB0aGlzLnJldmlld2VySWRzID0gWy4uLm5ldyBTZXQodGhpcy5yZXZpZXdlcklkcyldO1xyXG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMub3ZlcnNlZXJJZHMpXTtcclxuXHJcbiAgICB0aGlzLmFzc2lnbm9yc0xpc3QgPSBiZWhhbGZVc2Vycy5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+ICFvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5hc3NpZ25lZXNMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8uYXNzaWduZWVzTGlzdDtcclxuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LnJldmlld2Vyc0xpc3Q7XHJcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5vdmVyc2VlcnNMaXN0O1xyXG5cclxuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICB0aGlzLmdyb3VwQXNzaWduZWVMaXN0ID1cclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJlxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5hc3NpZ25lZV9ncm91cF9pZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtR3JvdXBMaXN0KFxyXG4gICAgICAgICAgICAgIGFsbEdyb3VwcyxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uYXNzaWduZWVfZ3JvdXBfaWRzXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIDogYWxsR3JvdXBzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICEoXHJcbiAgICAgICAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcclxuICAgICAgICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICB0aGlzLnJldmlld2VyTWVtYmVySWRzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxyXG4gICAgICAgIHRoaXMucHJvZ3JhbVBlb3BsZUxpc3QucmV2aWV3ZXJzTGlzdFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmdyb3VwUmV2aWV3ZXJMaXN0ID1cclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJlxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5yZXZpZXdlcl9ncm91cF9pZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtR3JvdXBMaXN0KFxyXG4gICAgICAgICAgICAgIGFsbEdyb3VwcyxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ucmV2aWV3ZXJfZ3JvdXBfaWRzXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIDogYWxsR3JvdXBzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICEoXHJcbiAgICAgICAgICAgICAgICAgIGdyb3VwT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcclxuICAgICAgICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcclxuICAgICAgICB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Lm92ZXJzZWVyc0xpc3RcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5ncm91cE92ZXJzZWVyTGlzdCA9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtR3JvdXBMaXN0KFxyXG4gICAgICAgICAgICAgIGFsbEdyb3VwcyxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHNcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgOiBhbGxHcm91cHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChncm91cDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgIShcclxuICAgICAgICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxyXG4gICAgICAgICAgICAgICAgICBncm91cFJldmlld2VySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc2FibGVQcm9ncmFtTGlzdChcclxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMsXHJcbiAgICAgIGFzc2lnbmVlSWRzLFxyXG4gICAgICByZXZpZXdlcnNJZHMsXHJcbiAgICAgIG92ZXJzZWVySWRzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJvZ3JhbUdyb3VwTGlzdChhbGxHcm91cHM6IGFueSwgLi4uYXJnczogYW55W10pIHtcclxuICAgIC8vIGFyZ3NbMF1cclxuICAgIGxldCBhc3NpZ25lZVByb2dyYW06IGFueSA9IFtdO1xyXG4gICAgbGV0IGdyb3VwSWRzID0gYXJnc1swXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJiB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uYXNzaWduZWVfZ3JvdXBfaWRzKSB7XHJcbiAgICAgIGFzc2lnbmVlUHJvZ3JhbSA9IGFsbEdyb3Vwcy5maWx0ZXIoKGdyb3VwOiBhbnkpID0+XHJcbiAgICAgICAgZ3JvdXBJZHMuaW5jbHVkZXMoZ3JvdXAuZ3JvdXBfaWQpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXNzaWduZWVQcm9ncmFtO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZVByb2dyYW1MaXN0KFxyXG4gICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSxcclxuICAgIGFzc2lnbmVlSWRzOiBhbnksXHJcbiAgICByZXZpZXdlcnNJZHM6IGFueSxcclxuICAgIG92ZXJzZWVySWRzOiBhbnlcclxuICApIHtcclxuICAgIGxldCBkaXNhYmxlQXNzaWduZWVMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8uYXNzaWduZWVzTGlzdC5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+XHJcbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxyXG4gICAgICAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuZGlzYWJsZVJhZGlvQXNzaWduZWUgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcclxuICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgKTtcclxuICAgIGxldCBkaXNhYmxlUmV2aWV3ZXJMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8ucmV2aWV3ZXJzTGlzdC5maWx0ZXIoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+XHJcbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICBhc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGlzYWJsZVJldmlld2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgIGRpc2FibGVSZXZpZXdlckxpc3QsXHJcbiAgICAgICdlbXBsb3llZV9pZCdcclxuICAgICk7XHJcbiAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/Lm92ZXJzZWVyc0xpc3QuZmlsdGVyKFxyXG4gICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgZGlzYWJsZU92ZXJzZWVyTGlzdCxcclxuICAgICAgJ2VtcGxveWVlX2lkJ1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xyXG4gICAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IHRoaXMucmV2aWV3ZXJNZW1iZXJJZHNMaXN0LmZpbHRlcihcclxuICAgICAgICAodXNlcjogYW55KSA9PlxyXG4gICAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcclxuICAgICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVJldmlld2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcclxuICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9IHRoaXMub3ZlcnNlZXJzTGlzdC5maWx0ZXIoXHJcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cclxuICAgICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XHJcbiAgICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcclxuICAgICAgICBkaXNhYmxlT3ZlcnNlZXJMaXN0LFxyXG4gICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgZm9ybSBpcyB2YWxpZCwgdGhlbiBpZiB0aGUgbW9kZSBpcyBFRElULCB0aGVuIHNldCB0aGUgb3JnYW5pemF0aW9uSWQgYW5kIG1lbWJlcklkIHRvIHRoZVxyXG4gICAqIGF1dGhTZXJ2aWNlIHZhbHVlcywgYW5kIHRoZW4gY2FsbCB0aGUgZW50cnVzdFJlc3BvbnNpYmlsaXR5IGZ1bmN0aW9uIHdpdGggdGhlIHJlc3BvbnNpYmlsaXR5Rm9ybSBhc1xyXG4gICAqIGEgcGFyYW1ldGVyLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIG1vZGUgaXMgbm90IEVESVQsIHRoZW4gY2FsbCB0aGUgZW50cnVzdFJlc3BvbnNpYmlsaXR5IGZ1bmN0aW9uIHdpdGggdGhlIHJlc3BvbnNpYmlsaXR5Rm9ybVxyXG4gICAqIGFzIGEgcGFyYW1ldGVyLlxyXG4gICAqIEByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS5cclxuICAgKi9cclxuICBzdWJtaXRSZXNwb25zaWJpbGl0eSgpIHtcclxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVJlc3BvbnNpYmlsaXR5KCk7XHJcbiAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xyXG4gICAgICB0aGlzLmVudHJ1c3RSZXNwb25zaWJpbGl0eSh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSk7XHJcbiAgICAgIC8vIGVkaXQgY29uZGl0aW9uc1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbnRydXN0UmVzcG9uc2liaWxpdHkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIHJlc3BvbnNpYmlsaXR5IG5hbWUgaXMgZW1wdHksIG9yIHRoZSBmcmVxdWVuY3kgaXMgZW1wdHksIG9yIHRoZSBhc3NpZ25lZXMgbGlzdCBpcyBlbXB0eSxcclxuICAgKiB0aGVuIHJldHVybiBmYWxzZS4gT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZS5cclxuICAgKi9cclxuICB2YWxpZGF0ZVJlc3BvbnNpYmlsaXR5KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlICYmXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPT09IDBcclxuICAgICkge1xyXG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJ3dob20nO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUudHJpbSgpID09ICcnXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICd3aGF0JztcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0IHx8XHJcbiAgICAgICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICghdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgfHxcclxuICAgICAgICAgICgoIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCB8fFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA9PSAwKSAmJlxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcykpKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hvJztcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09ICcnIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PT0gJycgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnNX4wfjB+MCdcclxuICAgICkge1xyXG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJ3doZW4nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgPT0gJycgfHxcclxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPT09ICcnIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PT0gJzV+MH4wfjAnIHx8XHJcbiAgICAgICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAoIXRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XHJcbiAgICAgICAgICAoKCF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0IHx8XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3Q/Lmxlbmd0aCA9PSAwKSAmJlxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcykpKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW50cnVzdFJlc3BvbnNpYmlsaXR5KGVudHJ1c3RGb3JtOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIGxldCBzdGFydERhdGUgPSBtb21lbnQocGFyc2VJbnQoZW50cnVzdEZvcm0uc3RhcnREYXRlKSAqIDEwMDApLmZvcm1hdChcclxuICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXHJcbiAgICApO1xyXG4gICAgc3RhcnREYXRlID0gbW9tZW50KHN0YXJ0RGF0ZS5zcGxpdCgnICcpWzBdICsgJyAwMDowMDowMCcpLmZvcm1hdChcclxuICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXHJcbiAgICApO1xyXG4gICAgY29uc3QgcmNEZXRhaWxzID1cclxuICAgICAgZW50cnVzdEZvcm0ucmM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLnJjLm1hcCgocmM6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyYykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJjRGV0YWlsc0FyciA9IHtcclxuICAgICAgICAgICAgICAgIHBhcmVudF9yY19pZHM6IHJjLnBhcmVudF9yY19pZHMsXHJcbiAgICAgICAgICAgICAgICByY19pZDogcmMucmNfaWQsXHJcbiAgICAgICAgICAgICAgICBjaGlsZF9yY19pZHM6IHJjPy5pdGVtX2NoaWxkX2lkcyxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHJldHVybiByY0RldGFpbHNBcnI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgOiBbXTtcclxuICAgIGNvbnN0IHJjRGV0YWlsc0lkQXJyID1cclxuICAgICAgZW50cnVzdEZvcm0ucmM/Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLnJjLm1hcCgocmM6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyYykge1xyXG4gICAgICAgICAgICAgIHJldHVybiByYy5yY19pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICA6IFtdO1xyXG5cclxuICAgIGNvbnN0IG1vcmVPcHRpb25zID0gdGhpcy5tb3JlT3B0aW9ucztcclxuXHJcbiAgICBjb25zdCBjaGVja0NvbnRpbnVvdXNGYWlsZWRWYWx1ZSA9IChkZXRhaWxzOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgZnJlcXVlbmN5VHlwZSA9IHBhcnNlSW50KGRldGFpbHMuc3BsaXQoJ34nKVswXSk7XHJcbiAgICAgIGlmIChmcmVxdWVuY3lUeXBlID09PSAxIHx8IGZyZXF1ZW5jeVR5cGUgPT09IDIgfHwgZnJlcXVlbmN5VHlwZSA9PT0gMykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgbGlua2VkUHJvZ3JhbUlkczogYW55W10gPSBbXTtcclxuICAgIGxldCBsaW5rZWRDYXRlZ29yeUlkczogYW55W10gPSBbXTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkICE9PSBlbGU/LmNhdGVnb3J5X2lkXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHByb2dyYW0gPSB7XHJcbiAgICAgICAgICBwcm9ncmFtSWQ6IGVsZT8uY2F0ZWdvcnlfaWQsXHJcbiAgICAgICAgICBwcm9ncmFtT2JqZWN0SWQ6IGVsZT8uX2lkLFxyXG4gICAgICAgICAgc3ViUHJvZ3JhbUlkczogZWxlPy5jaGlsZF9pZD8uZmlsdGVyKChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeT8uaW5jbHVkZXMoZWwpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsaW5rZWRQcm9ncmFtSWRzPy5wdXNoKHByb2dyYW0pO1xyXG4gICAgICAgIGxpbmtlZENhdGVnb3J5SWRzPy5wdXNoKGVsZT8uY2F0ZWdvcnlfaWQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgY2F0ZWdvcnlJZHNFeGNlcHREZWZhdWx0OiBhbnkgPSBbXTtcclxuICAgIGNhdGVnb3J5SWRzRXhjZXB0RGVmYXVsdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeT8uZmlsdGVyKFxyXG4gICAgICAoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICBlbCAhPT0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkICYmXHJcbiAgICAgICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmNoaWxkX2lkPy5pbmNsdWRlcyhlbClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5jb21iaW5lVXNlckFuZFVzZXJHcm91cE1lbWJlcnMoXHJcbiAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09PSAnQUxMJyAmJlxyXG4gICAgICAgIHRoaXMucmF3UmVzcG9uc2liaWxpdHk/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHJlbWFya3MgPVxyXG4gICAgICBlbnRydXN0Rm9ybS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJykudHJpbSgpICE9PSAnJ1xyXG4gICAgICAgID8gZW50cnVzdEZvcm0uZGVzY3JpcHRpb25cclxuICAgICAgICA6ICcnO1xyXG4gICAgY29uc3Qgb2JqZWN0aXZlID1cclxuICAgICAgZW50cnVzdEZvcm0ub2JqZWN0aXZlLnJlcGxhY2UoL1xcJm5ic3A7L2csICcnKS50cmltKCkgIT09ICcnXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5vYmplY3RpdmVcclxuICAgICAgICA6ICcnO1xyXG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgYXBwX2Fzc29jaWF0aW9uOiBbXSxcclxuICAgICAgYXNzaWduZWRfdG86IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgIHRoaXMuYXNzaWduZWVVc2VyTGlzdCxcclxuICAgICAgICAnZW1wbG95ZWVfaWQnXHJcbiAgICAgICkudG9TdHJpbmcoKSxcclxuICAgICAgcHJvZ3JhbV9jYXRfaWRzOiBtb3JlT3B0aW9ucz8uUFJPR1JBTVxyXG4gICAgICAgID8gZW50cnVzdEZvcm0/LnByb2dyYW0/Lmxlbmd0aFxyXG4gICAgICAgICAgPyBbZW50cnVzdEZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkXVxyXG4gICAgICAgICAgOiBbXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGxpbmtlZF9wcm9ncmFtX2lkczogbGlua2VkUHJvZ3JhbUlkcyxcclxuICAgICAgbGlua2VkX2NhdGVnb3J5X2lkczogdGhpcy5nZXRVbmlxdWVJZHMoW1xyXG4gICAgICAgIC4uLmNhdGVnb3J5SWRzRXhjZXB0RGVmYXVsdCxcclxuICAgICAgICAuLi5saW5rZWRDYXRlZ29yeUlkcyxcclxuICAgICAgXSksXHJcbiAgICAgIC8vIGNhdGVnb3J5X2lkOiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1fc2VsZWN0ZWRfaWRzPy5sZW5ndGggPiAwKSA/IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeV9pZCA6ICcnLFxyXG4gICAgICBjYXRlZ29yeV9pZDpcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbV9zZWxlY3RlZF9pZHM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5nZXRVbmlxdWVJZHMoW1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeSxcclxuICAgICAgICAgICAgICAuLi5saW5rZWRDYXRlZ29yeUlkcyxcclxuICAgICAgICAgICAgICAuLi5bZW50cnVzdEZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkXSxcclxuICAgICAgICAgICAgXSk/LnRvU3RyaW5nKClcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgIGNjX2VtYWlsOiBtb3JlT3B0aW9ucy5PVkVSU0VFUlxyXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHModGhpcy5vdmVyc2VlclVzZXJMaXN0LCAnZW1wbG95ZWVfaWQnKS50b1N0cmluZygpXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgY2hlY2twb2ludF9kZXNjcmlwdGlvbjogbW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvblxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGNoZWNrcG9pbnRfZGV0YWlsczogbW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNcclxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGNoZWNrcG9pbnRfZmxhZzogMCxcclxuICAgICAgY29sbGFib3JhdG9yX21hcmtfZG9uZTogMCxcclxuICAgICAgY29tbWVudDogJycsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGNoZWNrQ29udGludW91c0ZhaWxlZFZhbHVlKGVudHJ1c3RGb3JtLmZyZXF1ZW5jeSlcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXNcclxuICAgICAgICA6IDAsXHJcbiAgICAgIGNvc3Rfb2ZfY29tcGxpYW5jZTogJycsXHJcbiAgICAgIGNyZWF0ZWRfYnk6IGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPCAxID8gMCA6IHRoaXMubWVtYmVySWQsXHJcbiAgICAgIGNyZWF0aW9uX3dpbmRvdzogMCxcclxuICAgICAgY3VzdG9tX3RhZ3M6IEpTT04uc3RyaW5naWZ5KGVudHJ1c3RGb3JtLmN1c3RvbVRhZ3MpLFxyXG4gICAgICBlbnRpdHlfdHJlZTogbW9yZU9wdGlvbnMuUkNcclxuICAgICAgICA/IHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiZcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09IDFcclxuICAgICAgICAgID8gW11cclxuICAgICAgICAgIDogcmNEZXRhaWxzXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgZW50cnVzdF9mcm9tX3Jpc2s6IHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGVudHJ1c3RGb3JtLmZhaWxlZF9hZnRlcl9kYXlzLFxyXG4gICAgICBmYWlsZWRfdGltZV91dGM6IGVudHJ1c3RGb3JtLmZhaWxlZF90aW1lX3V0YyxcclxuICAgICAgZmFpbHVyZV9jY19lbWFpbDogbW9yZU9wdGlvbnMuT1ZFUlNFRVJcclxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHRoaXMub3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCwgJ2VtcGxveWVlX2lkJykudG9TdHJpbmcoKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBlbnRydXN0Rm9ybS5mcmVxdWVuY3ksXHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBlbnRydXN0Rm9ybS50aW1lSW4yNEhyID8/IERFRkFVTFRfMjRIUixcclxuICAgICAgZ3JjX29iamVjdF9pZDogMCxcclxuICAgICAgZ3JjX3JlbGF0aW9uc2hpcDogJycsXHJcbiAgICAgIGlmX3Rlc3RwbGFuX2ZhaWxlZDogMCxcclxuICAgICAgaW1wYWN0OiAnJyxcclxuICAgICAgaXNHcm91cEFzc2lnblRvOlxyXG4gICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PSAnQU5ZX09ORScgPyAxIDogMCxcclxuICAgICAgaXNfa2V5X2NvbXBsaWFuY2U6IGVudHJ1c3RGb3JtLnJlc3BvbnNpYmlsaXR5LmtleVJlc3BvbnNpYmlsaXR5ID8gMSA6IDAsXHJcbiAgICAgIGxpYnJhcnlfcmVwb3J0X2lkOiAwLFxyXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZW50cnVzdEZvcm0ubGlmZWN5Y2xlRGV0YWlscyA/PyAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICAgIGxpbmtfZm9yX2RldGFpbHM6IG1vcmVPcHRpb25zLkZPUk1BVEVfRVZJREVOQ0VcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgbGlua2FnZXM6IHsgY29tcGxpYW5jZTogW10gfSxcclxuICAgICAgbWVtYmVyX2lkOlxyXG4gICAgICAgIHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LCAnbWVtYmVyX2lkJyk/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0uYXNzaWdub3JzLmxpc3QsICdtZW1iZXJfaWQnKVswXVxyXG4gICAgICAgICAgOiB0aGlzLm1lbWJlcklkLFxyXG4gICAgICBvYmplY3RpdmU6IG1vcmVPcHRpb25zLk9CSkVDVElWRSA/IG9iamVjdGl2ZSA6ICcnLFxyXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBlbnRydXN0Rm9ybS5yZXBvcnRJZCA/IFtlbnRydXN0Rm9ybS5yZXBvcnRJZF0gOiBbXSxcclxuICAgICAgb25fY29tcGxldGlvbl9vZl90eXBlOiAxLFxyXG4gICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXHJcbiAgICAgIG92ZXJyaWRlX3dlZWtseTogMCxcclxuICAgICAgcGFyZW50X2lkOiAwLFxyXG4gICAgICBwZW5hbHR5OiAnJyxcclxuICAgICAgcHJpdmF0ZV9saWJyYXJ5X2lkOiAwLFxyXG4gICAgICByZW1hcmtzOiByZW1hcmtzLFxyXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZW50cnVzdEZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMsXHJcbiAgICAgIHJlcG9ydF9mb3JtYXQ6IG1vcmVPcHRpb25zLkZPUk1BVEVfRVZJREVOQ0VcclxuICAgICAgICA/IGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgcmVwb3J0X2Zvcm1hdF9saW5rOiAnJyxcclxuICAgICAgcmVwb3J0X25hbWU6IGVudHJ1c3RGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUsXHJcbiAgICAgIHJlcG9ydF91cGxvYWRfZmxhZzogZW50cnVzdEZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZFxyXG4gICAgICAgID8gMVxyXG4gICAgICAgIDogMCxcclxuICAgICAgcmV2aWV3X2FmdGVyX2RheXM6IG1vcmVPcHRpb25zLlJFVklFV0VSXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cyA9PT0gJydcclxuICAgICAgICAgID8gMFxyXG4gICAgICAgICAgOiBOdW1iZXIoZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXMpXHJcbiAgICAgICAgOiAwLFxyXG4gICAgICByZXZpZXdfZmFpbGVkX2FmdGVyX2RheXM6IG1vcmVPcHRpb25zLlJFVklFV0VSXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMgPT09ICcnXHJcbiAgICAgICAgICA/IDBcclxuICAgICAgICAgIDogTnVtYmVyKGVudHJ1c3RGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Tk90Q29tcGxldGVkRGF5cylcclxuICAgICAgICA6IDAsXHJcbiAgICAgIHJldmlld2VyX2FycjogbW9yZU9wdGlvbnMuUkVWSUVXRVJcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgbGV2ZWwxOiB7XHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXJzOiB0aGlzLnNldFJldmlld2VyUGF5bG9hZChcclxuICAgICAgICAgICAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCxcclxuICAgICAgICAgICAgICAgICdsaXN0JyxcclxuICAgICAgICAgICAgICAgIGVudHJ1c3RGb3JtLnJldmlld2Vycy5hY2NlcHRlZERhdGEsXHJcbiAgICAgICAgICAgICAgICBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93XHJcbiAgICAgICAgICAgICAgICAgID8gJ1NFUVVFTlRJQUwnXHJcbiAgICAgICAgICAgICAgICAgIDogJ0FOWU9ORSdcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHR5cGU6IGVudHJ1c3RGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcclxuICAgICAgICAgICAgICAgID8gJ1NFUVVFTlRJQUwnXHJcbiAgICAgICAgICAgICAgICA6ICdBTllPTkUnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge30sXHJcbiAgICAgIHVzZXJHcm91cElkczoge1xyXG4gICAgICAgIGFzc2lnbmVlQWxsR3JvdXBJZHM6XHJcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgIT09ICdBTllfT05FJ1xyXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCwgJ2dyb3VwX2lkJylcclxuICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICBhc3NpZ25lZUFueW9uZUdyb3VwSWRzOlxyXG4gICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09PSAnQU5ZX09ORSdcclxuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsICdncm91cF9pZCcpXHJcbiAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgY2NFbWFpbEdyb3VwSWRzOlxyXG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXHJcbiAgICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICAgICkgPz8gW10sXHJcbiAgICAgICAgZmFpbHVyZUNDRW1haWxHcm91cElkczpcclxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0LFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApID8/IFtdLFxyXG4gICAgICAgIHJldmlld2VyR3JvdXBJZHM6XHJcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0LFxyXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgICApID8/IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBleGlzdGluZ1VzZXJJZHM6IHtcclxuICAgICAgICBhc3NpZ25lZUFsbElkczpcclxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXHJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/LmFzc2lnbmVlcz8ubGlzdCwgJ215X21lbWJlcl9pZCcpXHJcbiAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgYXNzaWduZWVBbnlvbmVJZHM6XHJcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT09ICdBTllfT05FJ1xyXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZXM/Lmxpc3QsICdteV9tZW1iZXJfaWQnKVxyXG4gICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgIGNjRW1haWxFbXBJZHM6XHJcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8ub3ZlcnNlZXJzPy5saXN0LCAnZW1wbG95ZWVfaWQnKSA/PyBbXSxcclxuICAgICAgICBmYWlsdXJlQ0NFbWFpbEVtcElkczpcclxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QsICdlbXBsb3llZV9pZCcpID8/XHJcbiAgICAgICAgICBbXSxcclxuICAgICAgICByZXZpZXdlcklkczpcclxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0LFxyXG4gICAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgKSA/PyBbXSxcclxuICAgICAgfSxcclxuICAgICAgcmV2aWV3ZXJfY2hlY2twb2ludHM6IFt7IGNoZWNrcG9pbnRzOiBbXSwgaW5zdHJ1Y3Rpb246ICcnIH1dLFxyXG4gICAgICByZXZpZXdlcl9pZDogMCxcclxuICAgICAgcmlza19jbGFzczogdGhpcy5pc1Jpc2tFbmFibGUgPyBlbnRydXN0Rm9ybS5yaXNrQ2xhc3MgOiAyLFxyXG4gICAgICByaXNrX2lkczogJycsXHJcbiAgICAgIHJpc2tfbWF0cml4X2RhdGE6IG1vcmVPcHRpb25zLlJJU0tfQ0xBU1NJRklDQVRJT05cclxuICAgICAgICA/IGVudHJ1c3RGb3JtLnJpc2tNYXRyaXhcclxuICAgICAgICA6ICcwLDAsMCwwLDAsMCcsXHJcbiAgICAgIHNhbXBsZV9zaXplOiAwLFxyXG4gICAgICBzdGFydF9kYXRlX3V0Yzogc3RhcnREYXRlLFxyXG4gICAgICBzdGF0dXRvcnlfZGF5OiAwLFxyXG4gICAgICB0ZXN0X3JlcXVpcmVkX2ZsYWc6IG1vcmVPcHRpb25zLkFTU1VSQU5DRVxyXG4gICAgICAgID8gZW50cnVzdEZvcm0uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgPyAxXHJcbiAgICAgICAgICA6IDBcclxuICAgICAgICA6IDAsXHJcbiAgICAgIHRlc3RwbGFuX2NhdGVnb3J5X2lkOiBtb3JlT3B0aW9ucy5BU1NVUkFOQ0VcclxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc3VyYW5jZUxpc3QsICdjYXRlZ29yeV9pZCcpXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgdGVzdHBsYW5fY2F0ZWdvcnlfbWFuYWdlcjogJycsXHJcbiAgICAgIGF1ZGl0X2NhdGVnb3J5X2RldGFpbHM6XHJcbiAgICAgICAgbW9yZU9wdGlvbnMuUkVRVUlSRVNfQVVESVQgJiZcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscz8uY2F0ZWdvcnlfaWRcclxuICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2lkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscy5jYXRlZ29yeV9pZCxcclxuICAgICAgICAgICAgICBzYW1wbGU6IHRoaXMuc2VsZWN0ZWRTYW1wbGUgPT09IDAgPyB0aGlzLnNhbXBsZVZhbHVlIDogMCxcclxuICAgICAgICAgICAgICBwZXJjZW50YWdlOiB0aGlzLnNlbGVjdGVkU2FtcGxlID09PSAxID8gdGhpcy5zYW1wbGVQZXJjZW50YWdlIDogMCxcclxuICAgICAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogYDF+MH4ke3RoaXMuc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWV9fjFgLFxyXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeV90aW1lOiBtb21lbnQodGhpcy5hdWRpdFRpbWUsICdISDptbSBhJykuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgJ0hIOm1tOnNzJ1xyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAwLFxyXG4gICAgICAgICAgICAgIHNhbXBsZTogMCxcclxuICAgICAgICAgICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiBgYCxcclxuICAgICAgICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgIGFzc2Vzc21lbnQ6IHtcclxuICAgICAgICBjYXRlZ29yeV9pZDogbW9yZU9wdGlvbnMuQVNTRVNTTUVOVFxyXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgYXNzZXNzbWVudF9pZDogbW9yZU9wdGlvbnMuQVNTRVNTTUVOVFxyXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgfSxcclxuICAgICAgYXNzZXNzbWVudF9jaGVja3BvaW50OiBtb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVdcclxuICAgICAgICA/IE9iamVjdC5rZXlzKGVudHJ1c3RGb3JtPy5uZXdfY2hlY2twb2ludHMpPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IGVudHJ1c3RGb3JtPy5uZXdfY2hlY2twb2ludHNcclxuICAgICAgICAgIDoge31cclxuICAgICAgICA6IHt9LFxyXG4gICAgICBxdWVzdGlvbm5haXJlX3R5cGU6IG1vcmVPcHRpb25zLkNIRUNLUE9JTlRTX05FV1xyXG4gICAgICAgID8gT2JqZWN0LmtleXMoZW50cnVzdEZvcm0/Lm5ld19jaGVja3BvaW50cyk/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gJ2Fzc2Vzc21lbnRfY2hlY2twb2ludCdcclxuICAgICAgICAgIDogbW9yZU9wdGlvbnMuQVNTRVNTTUVOVCAmJiBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcclxuICAgICAgICAgID8gJ2Fzc2Vzc21lbnQnXHJcbiAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzKSAhPSAnJyAmJlxyXG4gICAgICAgICAgICBtb3JlT3B0aW9ucy5DSEVDS1BPSU5UU1xyXG4gICAgICAgICAgPyAnY2hlY2twb2ludCdcclxuICAgICAgICAgIDogJydcclxuICAgICAgICA6ICcnLFxyXG5cclxuICAgICAgbGlua2VkX0dSQ19pZHM6IG1vcmVPcHRpb25zLkdSQ19PQkpFQ1RTXHJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMubWFwKChncmM6IGFueSkgPT4gZ3JjLl9pZClcclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkKSB7XHJcbiAgICAgIHBheWxvYWRbJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSddID1cclxuICAgICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmIG1vcmVPcHRpb25zLlJDXHJcbiAgICAgICAgICA/IHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlXHJcbiAgICAgICAgICA6IDA7XHJcbiAgICAgIHBheWxvYWRbJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyQXJyJ10gPVxyXG4gICAgICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiYgbW9yZU9wdGlvbnMuUkNcclxuICAgICAgICAgID8gcmNEZXRhaWxzSWRBcnJcclxuICAgICAgICAgIDogW107XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZCA9IHBheWxvYWQ7XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnICYmICF0aGlzLmlzRHVwbGljYXRlRW50cnVzdCkge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5zdWJtaXRFbnRydXN0KHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XHJcblxyXG4gICAgICAgICAgaWYgKHJlcy5tZXNzYWdlICYmIHJlcy5tZXNzYWdlLnRvTG93ZXJDYXNlKCkgPT09ICdidWxrIGVudHJ1c3QnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBZb3UgaGF2ZSBlbnRydXN0ZWQgJHtyZXMuY2FsY3VsYXRlX25vX29mX3Jlc3BvbnNpYmlpdGllc30gcmVzcG9uc2liaWxpdGllcy4gVGhlc2Ugd291bGQgYmUgcmVmbGVjdGVkIHdpdGhpbiB5b3VyIGFjY291bnQgaW4gc29tZXRpbWUuYDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyAmJiBwYXlsb2FkLmNyZWF0ZWRfYnkgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAgICdUaGlzIHJlc3BvbnNpYmlsaXR5IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBub3RpZmljYXRpb24gcXVldWUuJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmNyZWF0ZWRfYnkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zWzFdLmJ1dHRvblRleHQgPSAnVmlldyBSZXNwb25zaWJpbGl0aWVzJztcclxuICAgICAgICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgWW91IGp1c3QgY3JlYXRlZCBhIHJlc3BvbnNpYmlsaXR5IG9uIGJlaGFsZiAke1xyXG4gICAgICAgICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWdub3JzLmxpc3QuZmluZChcclxuICAgICAgICAgICAgICAgICAgKG1lbWJlcjogYW55KSA9PiBtZW1iZXIubWVtYmVyX2lkID09PSBwYXlsb2FkLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgKS5tZW1iZXJfbmFtZVxyXG4gICAgICAgICAgICAgIH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy90aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcgfHwgdGhpcy5pc0R1cGxpY2F0ZUVudHJ1c3QpIHtcclxuICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gYFRoZSByZXNwb25zaWJpbGl0eSBoYXMgYmVlbiBtb2RpZmllZC5gO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxyXG4gICAgICAgIC51cGRhdGVFbnRydXN0KHBheWxvYWQsIHRoaXMucmVzcG9uc2liaWxpdHlJZCwgdHJ1ZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5pc0R1cGxpY2F0ZUVudHJ1c3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVuaXF1ZUlkVXNlckdyb3VwcyhcclxuICAgIHRvdGFsVXNlckxpc3Q6IGFueSxcclxuICAgIHNlbGVjdGVkR3JvdXA6IGFueSxcclxuICAgIHNlbGVjdGVkVXNlcnM6IGFueVxyXG4gICkge1xyXG4gICAgbGV0IGdyb3VwVXNlckxpc3QgPSB0aGlzLmdldEdyb3Vwc1VzZXJFbXBsb3llZXNJZChcclxuICAgICAgdG90YWxVc2VyTGlzdCxcclxuICAgICAgc2VsZWN0ZWRHcm91cFxyXG4gICAgKTtcclxuICAgIGxldCBpZHMgPSBuZXcgU2V0KHNlbGVjdGVkVXNlcnMubWFwKCh1c2VyOiBhbnkpID0+IHVzZXI/Lm15X21lbWJlcl9pZCkpO1xyXG4gICAgbGV0IHVzZXJMaXN0ID0gW1xyXG4gICAgICAuLi5zZWxlY3RlZFVzZXJzLFxyXG4gICAgICAuLi5ncm91cFVzZXJMaXN0LmZpbHRlcihcclxuICAgICAgICAoZ3JvdXBVc2VyOiBhbnkpID0+ICFpZHMuaGFzKGdyb3VwVXNlcj8ubXlfbWVtYmVyX2lkKVxyXG4gICAgICApLFxyXG4gICAgXTtcclxuICAgIHJldHVybiB1c2VyTGlzdDtcclxuICB9XHJcblxyXG4gIGNvbWJpbmVVc2VyQW5kVXNlckdyb3VwTWVtYmVycyhpc0dyb3VwPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcclxuICAgICAgdGhpcy5hc3NpZ25lZVVzZXJMaXN0ID0gaXNHcm91cFxyXG4gICAgICAgID8gW3sgZW1wbG95ZWVfaWQ6IHRoaXMucmF3UmVzcG9uc2liaWxpdHk/LmFzc2lnbmVkX3RvIH1dXHJcbiAgICAgICAgOiB0aGlzLnVuaXF1ZUlkVXNlckdyb3VwcyhcclxuICAgICAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCxcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFxyXG4gICAgICAgICAgKTtcclxuICAgICAgdGhpcy5yZXZpZXdlclVzZXJMaXN0ID0gdGhpcy51bmlxdWVJZFVzZXJHcm91cHMoXHJcbiAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0LFxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5vdmVyc2VlclVzZXJMaXN0ID0gdGhpcy51bmlxdWVJZFVzZXJHcm91cHMoXHJcbiAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdCxcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxyXG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QsXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hc3NpZ25lZVVzZXJMaXN0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdDtcclxuICAgICAgdGhpcy5yZXZpZXdlclVzZXJMaXN0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdDtcclxuICAgICAgdGhpcy5vdmVyc2VlclVzZXJMaXN0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdDtcclxuICAgICAgdGhpcy5vdmVyc2VlclVzZXJOb3RpZnlMaXN0ID1cclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgcmVzZXRzIHRoZSBmb3JtLlxyXG4gICAqL1xyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSA9IHtcclxuICAgICAgYXNzaWdub3JzOiB7XHJcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcclxuICAgICAgICBsaXN0OiBbXSxcclxuICAgICAgfSxcclxuICAgICAgcmVzcG9uc2liaWxpdHk6IHtcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICBrZXlSZXNwb25zaWJpbGl0eTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFzc2lnbmVlR3JvdXBzOiB7XHJcbiAgICAgICAgd2hvQ2FuQ29tcGxldGU6ICdBTEwnLFxyXG4gICAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBhc3NpZ25lZXM6IHtcclxuICAgICAgICB3aG9DYW5Db21wbGV0ZTogJ0FMTCcsXHJcbiAgICAgICAgbGlzdDogW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyZXF1ZW5jeTogJycsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgb2JqZWN0aXZlOiAnJyxcclxuICAgICAgcmM6IFtdLFxyXG4gICAgICBjYXRlZ29yeTogW10sXHJcbiAgICAgIGNoZWNrcG9pbnRJbnN0cnVjdGlvbjogJycsXHJcbiAgICAgIGN1c3RvbVRhZ3M6IFtdLFxyXG4gICAgICBjaGVja3BvaW50czogW10sXHJcbiAgICAgIHJldmlld2Vyczoge1xyXG4gICAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogdHJ1ZSxcclxuICAgICAgICByZXZpZXdGcmVxdWVuY3k6IHtcclxuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcclxuICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IDIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsaXN0OiBbXSxcclxuICAgICAgfSxcclxuICAgICAgZ3JvdXBSZXZpZXdlcnM6IHtcclxuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXHJcbiAgICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XHJcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXHJcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGlzdDogW10sXHJcbiAgICAgIH0sXHJcbiAgICAgIG92ZXJzZWVyczoge1xyXG4gICAgICAgIG5vdGlmeUxpc3Q6IFtdLFxyXG4gICAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgICBvdmVyc2VlcnNHcm91cHM6IHtcclxuICAgICAgICBub3RpZnlMaXN0OiBbXSxcclxuICAgICAgICBsaXN0OiBbXSxcclxuICAgICAgfSxcclxuICAgICAgZm9ybWF0QW5kRXZpZGVuY2U6IHtcclxuICAgICAgICBmb3JtYXRSZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgZm9ybWF0RmlsZXM6IFtdLFxyXG4gICAgICAgIGZvcm1hdExpbmtzOiBbXSxcclxuICAgICAgICBldmlkZW5jZVJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAgYXNzdXJhbmNlTGlzdDogW10sXHJcbiAgICAgIHJlcXVpcmVzQXVkaXRMaXN0OiBbXSxcclxuICAgICAgcmlza0NsYXNzOiAxLFxyXG4gICAgICByaXNrTWF0cml4OiAnMCwwLDAsMCwwLDAnLFxyXG4gICAgICBwcm9ncmFtOiBbXSxcclxuICAgICAgcHJvZ3JhbV9zZWxlY3RlZF9pZHM6IFtdLFxyXG4gICAgfTtcclxuICAgIHRoaXMubW9yZU9wdGlvbnMgPSB7XHJcbiAgICAgIE9CSkVDVElWRTogZmFsc2UsXHJcbiAgICAgIFJDOiBmYWxzZSxcclxuICAgICAgQ0FURUdPUlk6IGZhbHNlLFxyXG4gICAgICBGT1JNQVRFX0VWSURFTkNFOiBmYWxzZSxcclxuICAgICAgQ0hFQ0tQT0lOVFM6IGZhbHNlLFxyXG4gICAgICBSSVNLX0NMQVNTSUZJQ0FUSU9OOiBmYWxzZSxcclxuICAgICAgUkVWSUVXRVI6IGZhbHNlLFxyXG4gICAgICBPVkVSU0VFUjogZmFsc2UsXHJcbiAgICAgIEFTU1VSQU5DRTogZmFsc2UsXHJcbiAgICAgIEFQUFM6IGZhbHNlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnSG93IG9mdGVuIGRvZXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9jY3VyPyc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMgPSB7XHJcbiAgICAgIHBhdHRlcm46ICcnLFxyXG4gICAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgd2luZG93OiAwLFxyXG4gICAgICBmYWlsZWQ6IDAsXHJcbiAgICAgIHRpbWU6IERFRkFVTFRfVElNRSxcclxuICAgICAgZmFpbGVkVGltZTogJycsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXHJcbiAgICAgIG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM6IHt9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2FtcGxlVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNhbXBsZVBlcmNlbnRhZ2UgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gLTE7XHJcbiAgICB0aGlzLnNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlID0gMjtcclxuICAgIHRoaXMuYXVkaXRUaW1lID0gREVGQVVMVF9USU1FO1xyXG4gICAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XHJcbiAgICB0aGlzLmlzRW50cnVzdCA9IHRydWU7XHJcbiAgICB0aGlzLmFzc2Vzc21lbnREZXRhaWxzID0gbnVsbDtcclxuICAgIHRoaXMucmVzZXRGb3JtLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VTbWlsZXkoJ2RzJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoZXZlbnQpIHtcclxuICAgICAgY2FzZSAnYWRkTW9yZSc6XHJcbiAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3JzpcclxuICAgICAgICB0aGlzLnZpZXdSZXNwb25zaWJpbGl0aWVzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHZpZXdSZXNwb25zaWJpbGl0aWVzKCk6IHZvaWQge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgbGV0IHVybFN1YnN0cmluZyA9ICcnO1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgJiZcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuY3JlYXRlZF9ieSA9PSAwXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQpIHtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdHk/JyArIHRoaXMudXJsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9XHJcbiAgICAgICAgICAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcy9yZXNwb25zaWJpbGl0aWVzLXF1ZXVlJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQpIHtcclxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW0gPSBKU09OPy5zdHJpbmdpZnkodGhpcy5yZWNlbnRSZXNwb25zaWJpbGl0eVVybCk7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXR5P3E9JyArIHRoaXMucXVlcnlQYXJhbTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvIy8nICsgdXJsU3Vic3RyaW5nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9jb21wbGlhbmNlLyMvJyArIHVybFN1YnN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tb2RlICE9PSAnRURJVCcpIHtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsb3NlU21pbGV5KCdkcycpO1xyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlEYXRhKTtcclxuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSwgY29uZmlybTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRPbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZyZXF1ZW5jeURhdGEgPSBldmVudD8uZnJlcXVlbmN5X2RldGFpbHM/LnNwbGl0KCd+Jyk7XHJcbiAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGF0YVswXSkgPT0gNikge1xyXG4gICAgICByZXR1cm4gZXZlbnQ/Lm9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIGZvciBlZGl0IHJlc3BvbnNpYmlsaXR5XHJcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IGRhdGE6IGFueSA9IHtcclxuICAgICAgcGF0dGVybjogZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzLFxyXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cyxcclxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cyxcclxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiBldmVudC5mYWlsZWRfdGltZV91dGMsXHJcbiAgICAgIGxpZmVjeWNsZURldGFpbHM6IGV2ZW50Py5saWZlY3ljbGVfZGV0YWlscyxcclxuICAgICAgc3RhcnRGcm9tOiBOdW1iZXIoZXZlbnQ/LnN0YXJ0X29mX2RheV91dGMpLFxyXG4gICAgICB0aW1lSW4yNEhyOiBldmVudC5mcmVxdWVuY3lfdGltZSxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgICAgc3RhcnREYXRlOiBOdW1iZXIoZXZlbnQ/LnN0YXJ0X29mX2RheV91dGMpLFxyXG4gICAgICByZXBvcnRJZDogZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMCxcclxuICAgICAgdGltZUluMTJocjogdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVJbjEyKFxyXG4gICAgICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lICE9ICcnID8gZXZlbnQuZnJlcXVlbmN5X3RpbWUgOiBERUZBVUxUXzI0SFJcclxuICAgICAgKSxcclxuICAgIH07XHJcbiAgICBsZXQgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IHRoaXMuZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudCk7XHJcbiAgICBpZiAob25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyAhPSBudWxsKSB7XHJcbiAgICAgIGRhdGEub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURhdGEoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBmcmVxdWVuY3lQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSBldmVudD8uZnJlcXVlbmN5X3RpbWU7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMud2luZG93ID0gZXZlbnQ/LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcclxuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5saWZlY3ljbGUgPSBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc3RhcnREYXRlID0gZXZlbnQ/LnN0YXJ0X29mX2RheV91dGM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gZXZlbnQ/LmRvbV91dGM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuY29udGludW91c19mYWlsZWRfZGF5cyA9XHJcbiAgICAgIGV2ZW50Py5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9IGV2ZW50Py5wbGFjZWhvbGRlcjtcclxuXHJcbiAgICBsZXQgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IHRoaXMuZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudCk7XHJcbiAgICBpZiAob25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5vbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzID1cclxuICAgICAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3doZW4nKSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9IGV2ZW50LnBhdHRlcm47XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9XHJcbiAgICAgIGV2ZW50LmNhc2UgPT09ICdkYWlseScgPyAwIDogZXZlbnQud2luZG93O1xyXG4gICAgLy90aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IGV2ZW50LndpbmRvdztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZhaWxlZF9hZnRlcl9kYXlzID0gZXZlbnQuZmFpbGVkQWZ0ZXI7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfdGltZV91dGMgPSBldmVudC5mYWlsZWRfdGltZV91dGM7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saWZlY3ljbGVEZXRhaWxzID0gZXZlbnQubGlmZWN5Y2xlRGV0YWlscztcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcG9ydElkID0gZXZlbnQucmVwb3J0SWQgPz8gMDtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0RnJvbTtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnRpbWVJbjI0SHIgPSBldmVudC50aW1lSW4yNEhyO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY29udGludW91c19mYWlsZWRfZGF5cyA9XHJcbiAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKTtcclxuICAgIGxldCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxyXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcclxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGV2ZW50LndpbmRvdyxcclxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxyXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcclxuICAgICAgc3RhcnRfb2ZfZGF5X3V0YzogZXZlbnQuc3RhcnRGcm9tLFxyXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxyXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxyXG4gICAgfTtcclxuXHJcbiAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XHJcbiAgICBsZXQgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IHRoaXMuZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudCk7XHJcbiAgICBpZiAob25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyAhPSBudWxsKSB7XHJcbiAgICAgIHBheWxvYWQub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mcmVxdWVuY3lQb3B1bGF0aW9uKHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tCbGFuayhkYXRhOiBzdHJpbmcpIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGxldCB0ZXh0ID0gZGF0YTtcclxuICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgvXFwmbmJzcDsvZywgJycpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYSBzdHJpbmcuXHJcbiAgICogQHBhcmFtIHthbnl9IHJlcyAtIGFueSA9IHtcclxuICAgKi9cclxuICBnZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihyZXM6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHJlcy5mcmVxdWVuY3lfZGV0YWlscykge1xyXG4gICAgICAgIGNvbnN0IGZyZXF1ZW5jeURldGFpbHMgPSByZXM/LmZyZXF1ZW5jeV9kZXRhaWxzLnNwbGl0KCd+Jyk7XHJcbiAgICAgICAgY29uc3QgZnJlcXVlbmN5VGltZSA9XHJcbiAgICAgICAgICByZXM/LmZyZXF1ZW5jeV90aW1lID09PSAnMDA6MDA6MDAnXHJcbiAgICAgICAgICAgID8gJzEyOjAwIGFtJ1xyXG4gICAgICAgICAgICA6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihyZXM/LmZyZXF1ZW5jeV90aW1lKTtcclxuICAgICAgICBzd2l0Y2ggKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMF0pKSB7XHJcbiAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGFpbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICB0aGlzLmdldE1vbnRobHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UXVhcnRlcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA5OlxyXG4gICAgICAgICAgICB0aGlzLmdldEJpYW5udWFsUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICB0aGlzLmdldFllYXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShcclxuICAgICAgICAgICAgICAgIG1vbWVudChcclxuICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1sxXSArXHJcbiAgICAgICAgICAgICAgICAgICAgJy0nICtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdICtcclxuICAgICAgICAgICAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gK1xyXG4gICAgICAgICAgICAgICAgICAgICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICAgICAgICAgICAnWVlZWS1NTS1ERCBISDptbTpzcydcclxuICAgICAgICAgICAgICAgICkudW5peCgpICogMTAwMFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgICAgICdPbmUgVGltZSAnICtcclxuICAgICAgICAgICAgICAgIGRhdGVPYmplY3QuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbZGF0ZU9iamVjdC5nZXRNb250aCgpXSArXHJcbiAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA4OlxyXG4gICAgICAgICAgICB0aGlzLmdldFJhbmRvbVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIDEwOlxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICAgICAnWW91IGhhdmUgc2VsZWN0ZWQgYW4gb25nb2luZyBmcmVxdWVuY3kuJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgNjpcclxuICAgICAgICAgICAgdGhpcy5nZXRPbkNvbXBsZXRpb25PZihcclxuICAgICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzLFxyXG4gICAgICAgICAgICAgIHJlcz8ub25fY29tcGxldGlvbl9vZlswXSxcclxuICAgICAgICAgICAgICByZXMub25Db21wbGV0aW9uUmVwb3J0RGV0YWlsc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogSXQgZ2V0cyB0aGUgZnJlcXVlbmN5IGRldGFpbHMgYW5kIHJlcG9ydCBpZCwgdGhlbiBpdCBzZXRzIHRoZSBmcmVxdWVuY3kgcGxhY2Vob2xkZXIgdG8gdGhlIGZyZXF1ZW5jeVxyXG4gICAqIGRldGFpbHMgYW5kIHRoZW4gaXQgZ2V0cyB0aGUgb24gY29tcGxldGlvbiBvZiByZXNwb25zaWJpbGl0eSBhbmQgc2V0cyB0aGUgZnJlcXVlbmN5IHBsYWNlaG9sZGVyIHRvXHJcbiAgICogdGhlIGZyZXF1ZW5jeSBkZXRhaWxzIGFuZCB0aGUgcmVwb3J0IG5hbWUuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbMF0gPSZndDsgXCIxXCJcclxuICAgKiBAcGFyYW0ge251bWJlcn0gcmVwb3J0SWQgLSBudW1iZXJcclxuICAgKi9cclxuICBnZXRPbkNvbXBsZXRpb25PZihcclxuICAgIGZyZXF1ZW5jeURldGFpbHM6IGFueSxcclxuICAgIHJlcG9ydElkOiBudW1iZXIsXHJcbiAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcclxuICAgICAgJyAnICtcclxuICAgICAgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMSA/ICdkYXlzJyA6ICdkYXknKSArXHJcbiAgICAgICcgYWZ0ZXIgY29tcGxldGlvbiBvZiAnO1xyXG4gICAgaWYgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMpIHtcclxuICAgICAgaWYgKHJlcG9ydElkID09PSBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzLlJlcG9ydElkKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcclxuICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxID8gJ2RheXMnIDogJ2RheScpICtcclxuICAgICAgICAgICcgYWZ0ZXIgY29tcGxldGlvbiBvZiAnICtcclxuICAgICAgICAgIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzXHJcbiAgICAgICAgICAgID8gb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscy5yZXBvcnRfbmFtZVxyXG4gICAgICAgICAgICA6ICcnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcIklmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIDEsIHRoZW4gc2V0IHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciB0byAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWUsXHJcbiAgICogb3RoZXJ3aXNlIGlmIGZyZXF1ZW5jeURldGFpbHNbM10gaXMgZ3JlYXRlciB0aGFuIDEsIHRoZW4gc2V0IHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciB0byAnRXZlcnkgJyArXHJcbiAgICogcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgKyAnIGRheXMgYnkgJyArIGZyZXF1ZW5jeVRpbWUuXCJcclxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFswLCAwLCAwLCAxXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMjowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0RGFpbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBmcmVxdWVuY3lEZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlscy5tYXAoTnVtYmVyKTtcclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdEYWlseSBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA+IDEpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICdFdmVyeSAnICtcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pICtcclxuICAgICAgICAgICcgZGF5cyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCB3b3Jkcy5cclxuICAgKlxyXG4gICAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycywgbGlrZSB0aGlzOlxyXG4gICAqXHJcbiAgICogZ2V0V2Vla2x5UGxhY2Vob2xkZXIoW1wiMVwiLFwiMiwzLDQsNSw2LDdcIixcIjFcIixcIjFcIl0sIFwiMTA6MDAgQU1cIilcclxuICAgKlxyXG4gICAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCB3b3JkcywgbGlrZSB0aGlzOlxyXG4gICAqXHJcbiAgICogXCJFdmVyeSBNb25kYXksVHVlc2RheSxXZWRuZXNkYXksVGh1cnNkYXksRnJpZGF5LFNhdHVyZGF5IGJ5IDEwOjAwIEFNXCI8L2NvZGU+XHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMSwyLDMsNCw1XCIsIFwiXCIsIFwiMVwiLCBcIlwiXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3lEZXRhaWxzWzFdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF5TmFtZVtwYXJzZUludChlbGUpIC0gMV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgYWx0ZXJuYXRlICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJ0V2ZXJ5IDNyZCAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnRXZlcnkgJyArXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggJyArXHJcbiAgICAgICAgICBzZWxlY3RlZERheS5qb2luKCkgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzLCBjb252ZXJ0cyB0aGVtIHRvIG1vbnRoIG5hbWVzLCBhbmQgdGhlbiBhZGRzIHRoZW0gdG8gYVxyXG4gICAqIHNlbnRlbmNlLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjFcIiwgXCIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMlwiXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0TW9udGhseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gaXMgMSwgMiwgMywgMjEsIDIyLCAyMywgb3IgZ3JlYXRlciB0aGFuIDMsIHRoZW4gc2V0IHRoZVxyXG4gICAqIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIHRvIGEgc3RyaW5nIHRoYXQgaW5jbHVkZXMgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gYW5kIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzJdXHJcbiAgICogYW5kIHRoZSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiM1wiLCBcIjFcIiwgXCIxLDIsM1wiXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0UXVhcnRlcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcclxuICAgIHtcclxuICAgICAgY29uc3QgcXVhcnRlcmx5ID0gW1xyXG4gICAgICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXHJcbiAgICAgICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxyXG4gICAgICAgICcgTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxyXG4gICAgICBdO1xyXG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XHJcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcclxuICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXHJcbiAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG1vbnRoIG5hbWVzLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjFcIiwgXCIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMlwiXVxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXHJcbiAgICovXHJcbiAgZ2V0Qmlhbm51YWxQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjEgfHxcclxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIGxlc3MgdGhhbiAyLCB0aGVuIHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciBpcyBzZXQgdG8gdGhlIDFzdCwgMm5kLFxyXG4gICAqIDNyZCwgb3IgbnRoIG9mIGV2ZXJ5IG1vbnRoIGJ5IGZyZXF1ZW5jeVRpbWUuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBncmVhdGVyIHRoYW4gMSwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsIDJuZCxcclxuICAgKiAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCwgSW50ZXJ2YWw6IGV2ZXJ5IHllYXJTZXF1ZW5jZSB5ZWFycyBieSBmcmVxdWVuY3lUaW1lLlxyXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiWWVhcmx5XCIsIFwiMVwiLCBcIjFcIiwgXCIxXCJdXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcclxuICAgKi9cclxuICBnZXRZZWFybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCB5ZWFyU2VxdWVuY2UgPVxyXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID4gMCA/IHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pIDogMTtcclxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pIDwgMikge1xyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzJuZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICd0aCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzEgfHxcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA+IDEpIHtcclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJzFzdCAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnMm5kICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcclxuICAgICAgICAgICAgeWVhclNlcXVlbmNlICtcclxuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICczcmQgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJywgSW50ZXJ2YWw6IGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xyXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ3RoIG9mICAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXHJcbiAgICAgICAgICAgICcgeWVhcnMgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMSB8fFxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xyXG4gICAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcclxuICAgICAgICAgICAgJyBieSAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcclxuICAgICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXHJcbiAgICAgICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXHJcbiAgICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYSBmcmVxdWVuY3lEZXRhaWxzIGFycmF5IGFuZCBhIGZyZXF1ZW5jeVRpbWUgYXJyYXkgYW5kIHJldHVybnMgYSBzdHJpbmcuXHJcbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbNCwxLDEsMV1cclxuICAgKi9cclxuICBnZXRSYW5kb21QbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xyXG4gICAgY29uc3QgcXVhcnRlcmx5ID0gW1xyXG4gICAgICAnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLFxyXG4gICAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXHJcbiAgICAgICcgTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxyXG4gICAgXTtcclxuICAgIHtcclxuICAgICAgc3dpdGNoIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSkge1xyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnRXZlcnkgd2VlayBmb3IgJyArIGZyZXF1ZW5jeURldGFpbHNbM10gKyAnIHJhbmRvbSBpbnN0YW5jZXMnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XHJcbiAgICAgICAgICAgICcgRXZlcnkgJyArXHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChlbGUpIC0gMV07XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBhbGlnblxyXG4gICAgICAgICAgICB9KSArXHJcbiAgICAgICAgICAgICcgZm9yICcgK1xyXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcclxuICAgICAgICAgICAgJyByYW5kb20gaW5zdGFuY2VzJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICAgICAnRXZlcnkgJyArXHJcbiAgICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xyXG4gICAgICAgICAgICAnIGZvciAnICtcclxuICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXHJcbiAgICAgICAgICAgICcgcmFuZG9tIGluc3RhbmNlcyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cclxuICAgICAgICAgICAgJ0V2ZXJ5IHllYXIgZm9yICcgKyBmcmVxdWVuY3lEZXRhaWxzWzNdICsgJyByYW5kb20gaW5zdGFuY2VzJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXCJXaGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgZWRpdCBidXR0b24sIHRoZSBlZGl0IGJ1dHRvbiBpcyBoaWRkZW4gYW5kIHRoZSBpbnB1dCBmaWVsZCBpcyBzaG93bi5cclxuICAgKiBXaGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgaW5wdXQgZmllbGQsIHRoZSBpbnB1dCBmaWVsZCBpcyBoaWRkZW4gYW5kIHRoZSBlZGl0IGJ1dHRvbiBpcyBzaG93bi5cIlxyXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZnVuY3Rpb25cclxuICAgKi9cclxuICBvbkVkaXRXaGF0KGV2ZW50OiBhbnkpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyB0aGlzIHdpbGwgbWFrZSB0aGUgZXhlY3V0aW9uIGFmdGVyIHRoZSBhYm92ZSBib29sZWFuIGhhcyBjaGFuZ2VkXHJcbiAgICAgIHRoaXMuaXNFZGl0V2hhdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLndoYXRJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cclxuICAgKiBAcGFyYW0ge2FueX0gW3Jlc10gLSBpcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZ2V0RWRpdE1vcmVPcHRpb25zKHJlcz86IGFueSkge1xyXG4gICAgbGV0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSAhPT0gJycpIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09CSkVDVElWRScpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLk9CSkVDVElWRSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xyXG4gICAgdGhpcy5tb3JlT3B0aW9ucy5SSVNLX0NMQVNTSUZJQ0FUSU9OID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUFJPR1JBTScpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLlBST0dSQU0gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkXHJcbiAgICApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0ZPUk1BVEVfRVZJREVOQ0UnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiZcclxuICAgICAgcmVzPy5yZXNwb25zaWJpbGl0eUNlbnRlckFyciAmJlxyXG4gICAgICByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyQXJyPy5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UUycpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdHUkNfT0JKRUNUUycpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkdSQ19PQkpFQ1RTID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXI/Lmxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkVWSUVXRVInKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVZJRVdFUiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09WRVJTRUVSJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQVNTVVJBTkNFJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTVVJBTkNFID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JFUVVJUkVTX0FVRElUJyk7XHJcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkVRVUlSRVNfQVVESVQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXMucXVlc3Rpb25uYWlyZV90eXBlID09PSAnYXNzZXNzbWVudCcpIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0FTU0VTU01FTlQnKTtcclxuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5BU1NFU1NNRU5UID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzLnF1ZXN0aW9ubmFpcmVfdHlwZSA9PT0gJ2Fzc2Vzc21lbnRfY2hlY2twb2ludCcpIHtcclxuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0NIRUNLUE9JTlRTX05FVycpO1xyXG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTX05FVyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvLyBGb3JtYXQgJiBFdmlkZW5jZVxyXG4gIHRlc3RGdW5jdGlvbigpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgIHRoaXMuaXNFZGl0V2hhdCA9PT0gZmFsc2VcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uID09ICc8YnI+Jykge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9PSAnPGJyPicpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZpZXdlclR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XHJcbiAgICAgIGV2ZW50ID09PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZFNhbXBsZURhdGEoZXZlbnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IGV2ZW50O1xyXG4gICAgdGhpcy50ZW1wQ2hlY2tWYWx1ZSA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgcG9wdWxhdGVzIGEgbGlzdCBvZiBhc3N1cmFuY2UgY2F0ZWdvcmllcyBiYXNlZCBvbiB0aGUgdGVzdCBwbGFuIGNhdGVnb3J5IHNlbGVjdGVkLlxyXG4gICAqIEBwYXJhbSB7YW55fSB0ZXN0UGxhbkNhdGVnb3J5IC0gYW55XHJcbiAgICovXHJcbiAgcG9wdWxhdGVBc3N1cmFuY2VMaXN0KHRlc3RQbGFuQ2F0ZWdvcnk6IGFueSkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0LFxyXG4gICAgICBbdGVzdFBsYW5DYXRlZ29yeT8uY2F0ZWdvcnlfaWRdLFxyXG4gICAgICAnY2F0ZWdvcnlfaWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHRlc3RQbGFuQ2F0ZWdvcnk7XHJcbiAgICBpZiAodGVzdFBsYW5DYXRlZ29yeS5zYW1wbGUpIHtcclxuICAgICAgdGhpcy5pc1NhbXBsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2FtcGxlVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LnNhbXBsZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRlc3RQbGFuQ2F0ZWdvcnkucGVyY2VudGFnZSkge1xyXG4gICAgICB0aGlzLmlzU2FtcGxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zYW1wbGVQZXJjZW50YWdlID0gdGVzdFBsYW5DYXRlZ29yeS5wZXJjZW50YWdlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gMTtcclxuICAgIH1cclxuICAgIHRoaXMudGVtcENoZWNrVmFsdWUgPSB0aGlzLnNlbGVjdGVkU2FtcGxlO1xyXG4gICAgdGhpcy5zZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZSA9IHRlc3RQbGFuQ2F0ZWdvcnkuZnJlcXVlbmN5X3BhdHRlcm5cclxuICAgICAgPyBwYXJzZUludCh0ZXN0UGxhbkNhdGVnb3J5LmZyZXF1ZW5jeV9wYXR0ZXJuLnNwbGl0KCd+JylbMl0pXHJcbiAgICAgIDogMjtcclxuICAgIHRoaXMuYXVkaXRUaW1lID0gbW9tZW50KFxyXG4gICAgICB0ZXN0UGxhbkNhdGVnb3J5Py5mcmVxdWVuY3lfdGltZSxcclxuICAgICAgJ0hIOm1tOnNzJ1xyXG4gICAgKS5mb3JtYXQoJ0hIOm1tIGEnKTtcclxuICB9XHJcblxyXG4gIC8vb24gc2FtcGxlIHRvZ2dsZSBvbi9vZmZcclxuICBjaGVja0lucHV0VmFsdWUoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IGtleSA9IGV2ZW50LmNoYXJDb2RlOyAvLyAgICAgICAgIGtleSA9IGV2ZW50LmtleUNvZGU7ICAoQm90aCBjYW4gYmUgdXNlZClcclxuICAgIHJldHVybiAoa2V5ID4gNDcgJiYga2V5IDwgNTgpIHx8IGtleSA9PSA0NTtcclxuICB9XHJcblxyXG4gIHN3aXRjaEVuYWJsZShldmVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSB0aGlzLnRlbXBDaGVja1ZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IC0xO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzogIHNlbGVjdCBBc3Nlc3NtZW50IGxpc3QgYW5kIHNldCBpZCB0byBwYXlsb2FkXHJcbiAgb25Bc3Nlc3NtZW50U2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuaXNBc3Nlc3NtZW50ID0gZmFsc2U7XHJcbiAgICBjb25zb2xlLmxvZygnZXZlbnQgPT09PiAxJywgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0pO1xyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSBldmVudDtcclxuICAgIGNvbnNvbGUubG9nKCdldmVudCA9PT0+JywgZXZlbnQsIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtKTtcclxuICB9XHJcbiAgLy8gVE9ETzogUG9wdWxhdGUgYXNzZXNzbWVudCBkYXRhIGZyb20gYWxyZWFkeSBzZWxlY3RlZCBkYXRhXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYXNzZXNzbWVudERldGFpbHMgOiBzZWxlY3RlZCBhc3Nlc3NtZW50IGRldGFpbHMgbGlrZSBpdCdzIG9iamVjdCBpZCBhbmQgY2F0ZWdvcnlfaWRcclxuICAgKi9cclxuICBnZXRBc3Nlc3NtZW50RGV0YWlscyhhc3Nlc3NtZW50RGV0YWlsczogYW55LCB0eXBlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxyXG4gICAgICAuZ2V0QXNzZXNzbWVudERldGFpbHNCeUlEKGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRBc3Nlc3NtZW50RGF0YShyZXMsIGFzc2Vzc21lbnREZXRhaWxzLCB0eXBlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRBc3Nlc3NtZW50RGF0YShyZXM6IGFueSwgYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xyXG4gICAgaWYgKHJlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodHlwZSA9PT0gJ2Fzc2Vzc21lbnQnKSB7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5LmZpbmQoXHJcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5faWQgPT0gYXNzZXNzbWVudERldGFpbHMuY2F0ZWdvcnlfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTRVNTTUVOVCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgYXNzZXNzbWVudERhdGEgPSB7XHJcbiAgICAgICAgICBjYXRlZ29yeV9pZDogYXNzZXNzbWVudERldGFpbHMuY2F0ZWdvcnlfaWQsXHJcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxyXG4gICAgICAgICAgYXNzZXNzbWVudERldGFpbHM6IHtcclxuICAgICAgICAgICAgaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQsXHJcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcclxuICAgICAgICAgICAgcXVlc3Rpb25zOiByZXNbMF0ucXVlc3Rpb25zQ291bnQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShhc3Nlc3NtZW50RGF0YSlcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBvc3RBc3Nlc3NtZW50KHsgYXNzZXNzbWVudERldGFpbHM6IHJlc1swXS5xdWVzdGlvbnMgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlQ2hlY2twb2ludHModHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9uUmVtb3ZpbmdDaGVja3BvaW50LmVtaXQodHlwZSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGVja3BvaW50KCkge1xyXG4gICAgdGhpcy5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgPSBbXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGV2ZW50IEFzc2Vzc21lbnQgZGV0YWlsc1xyXG4gICAqL1xyXG4gIHBvc3RBc3Nlc3NtZW50KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm5ld19jaGVja3BvaW50cyA9IGV2ZW50LmFzc2Vzc21lbnREZXRhaWxzO1xyXG4gICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSBldmVudC5hc3Nlc3NtZW50RGV0YWlscy5lbGVtZW50cz8ubGVuZ3RoO1xyXG4gICAgdGhpcy5jaGVja3BvaW50Q291bnRVcGRhdGVkLmVtaXQodGhpcy5jaGVja3BvaW50Q291bnQpO1xyXG4gICAgdGhpcy5zZXRJc1VwbG9hZGVkKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNldElzVXBsb2FkZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFldmVudCkgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNoZWNrRGVmYXVsdFByb2dyYW1PblJlbW92ZShwcm9ncmFtOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/LmZpbmRJbmRleChcclxuICAgICAgKGVsOiBhbnkpID0+IGVsPy5jYXRlZ29yeV9pZCA9PT0gcHJvZ3JhbT8uY2F0ZWdvcnlfaWRcclxuICAgICk7XHJcbiAgICBjb25zdCBwcm9ncmFtSW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8uZmluZEluZGV4KFxyXG4gICAgICAoZWw6IGFueSkgPT4gZWw/LmNhdGVnb3J5X2lkID09PSBwcm9ncmFtPy5jYXRlZ29yeV9pZFxyXG4gICAgKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRDYXRlZ29yaWVzID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmNhdGVnb3J5Py5maWx0ZXIoXHJcbiAgICAgICAgKGVsOiBhbnkpID0+XHJcbiAgICAgICAgICAhKGVsID09PSBwcm9ncmFtPy5jYXRlZ29yeV9pZCB8fCBwcm9ncmFtPy5jaGlsZF9pZD8uaW5jbHVkZXMoZWwpKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHVwZGF0ZWRDYXRlZ29yaWVzO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2dyYW1JbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbSA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbVswXVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGFuIGFycmF5IG9mIG51bWJlcnMgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdW5pcXVlIG51bWJlcnMuXHJcbiAgICogQHBhcmFtIHthbnl9IGFycmF5IC0gVGhlIGFycmF5IHlvdSB3YW50IHRvIGdldCB0aGUgdW5pcXVlIHZhbHVlcyBmcm9tLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMuXHJcbiAgICovXHJcbiAgZ2V0VW5pcXVlSWRzKGFycmF5OiBhbnkpIHtcclxuICAgIGNvbnN0IHVuaXF1ZSA9IFsuLi5uZXcgU2V0KGFycmF5KV07XHJcbiAgICByZXR1cm4gdW5pcXVlO1xyXG4gIH1cclxuXHJcbiAgb3BlbkFzc2lnbmVlQ2hhbmdlQ29uZmlybWF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPSAnQU5ZX09ORSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPSAnJztcclxuICAgICAgdGhpcy5hc3NpZ25lZVR5cGVDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBtb2RlIGlzIEVESVQsIGVtaXQgdGhlIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSByYWRpbyBidXR0b25cclxuICAgKi9cclxuICBvblJldmlld2VyV29ya2Zsb3dDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XHJcbiAgICAgIGV2ZW50ID09PSAnc2VxdWVudGlhbCcgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcgJiYgdGhpcy5oYXNSZXZpZXdlcikge1xyXG4gICAgICB0aGlzLm9uUmV2aWV3ZXJUeXBlQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0T3RoZXJHUkNPYmplY3RzKGV2ZW50PzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWV2ZW50KSB7XHJcbiAgICAgIGV2ZW50ID0ge1xyXG4gICAgICAgIHJjX2lkczogJycsXHJcbiAgICAgICAgdHlwZTogdGhpcy5zZWxlY3RlZEdSQ1RhYixcclxuICAgICAgICBzdGF0ZTogMSxcclxuICAgICAgICBwYWdlOiAxLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50Py5zZWFyY2hTdHJpbmcgJiYgdGhpcy5ncmNTZWFyY2hTdHJpbmcgIT09IGV2ZW50Py5zZWFyY2hTdHJpbmcpIHtcclxuICAgICAgdGhpcy5ncmNTZWFyY2hTdHJpbmcgPSBldmVudD8uc2VhcmNoU3RyaW5nO1xyXG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoe1xyXG4gICAgICAgIHJjX2lkczogJycsXHJcbiAgICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLmdyY1NlYXJjaFN0cmluZyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyY0xvYWRlciA9IHRydWU7XHJcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcclxuICAgIGV2ZW50WydncmNUeXBlJ10gPSB0aGlzLnNlbGVjdGVkR1JDVGFiO1xyXG4gICAgdGhpcy5vdGhlckdSQ1N1YnNjcmlwdGlvbiA9IHRoaXMuZ3JjU2VydmljZVxyXG4gICAgICAuZ2V0R1JDTGlzdChldmVudClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ncmNMaXN0ID0gZGF0YTtcclxuICAgICAgICB0aGlzLmdyY0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdW5jdGlvbiBgZ2V0T3RoZXJHUkNUYWJDb3VudGAgcmV0cmlldmVzIHRoZSBjb3VudCBvZiBkaWZmZXJlbnQgdHlwZXMgb2YgaXRlbXMgKGFzc2V0cyxcclxuICAgKiBwcm9jZXNzZXMsIHZlbmRvcnMsIGludmVudG9yeSkgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgdGFicyB3aXRoIHRoZSBjb3VudC5cclxuICAgKiBAcGFyYW0ge2FueX0gW2V2ZW50XSAtIFRoZSBcImV2ZW50XCIgcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlXHJcbiAgICogXCJnZXRPdGhlckdSQ1RhYkNvdW50XCIgZnVuY3Rpb24uIEl0IGlzIG9mIHR5cGUgXCJhbnlcIiwgd2hpY2ggbWVhbnMgaXQgY2FuIGFjY2VwdCBhbnkgZGF0YSB0eXBlLlxyXG4gICAqL1xyXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGV2ZW50WydyY19pZHMnXSA9IHRoaXMuZ2V0QWxsUkNJZHModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMpO1xyXG4gICAgdGhpcy5ncmNUYWJMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldEdSQ1RhYnNDb3VudChldmVudCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5vdGhlckdSQ0NhcmQuZm9yRWFjaCgodGFiOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBPQkpFQ1RfTEFCRUw6IGFueSA9IHtcclxuICAgICAgICAgIEFTU0VUOiAnQXNzZXRzJyxcclxuICAgICAgICAgIFBST0NFU1M6ICdQcm9jZXNzZXMnLFxyXG4gICAgICAgICAgVkVORE9SOiAnVmVuZG9ycycsXHJcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ncmNUYWJMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBUQUJfTkFNRSA9IE9CSkVDVF9MQUJFTFt0YWI/LnRpdGxlPy50b1VwcGVyQ2FzZSgpXTtcclxuICAgICAgICBpZiAoVEFCX05BTUUpIHtcclxuICAgICAgICAgIHRhYi50aXRsZSA9IFRBQl9OQU1FO1xyXG4gICAgICAgICAgdGFiLnZhbHVlID0gaW5kZXg7XHJcbiAgICAgICAgICB0YWIuc2VsZWN0ZWRDb3VudCA9IDA7XHJcbiAgICAgICAgICB0YWIua2V5ID0gVEFCX05BTUU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGtleSA9IGAke3RhYi5rZXl9X3R5cGVfY291bnRgO1xyXG4gICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgIHRhYi5jb3VudCA9IGRhdGFba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxSQ0lkcyhyY0lkczogYW55KSB7XHJcbiAgICBjb25zdCBhbGxJZHM6IG51bWJlcltdID0gcmNJZHMuZmxhdE1hcCgocmM6IGFueSkgPT4gW1xyXG4gICAgICAuLi5yYy5pdGVtX3BhcmVudF9pZHMubWFwKE51bWJlciksXHJcbiAgICAgIC4uLnJjLml0ZW1fY2hpbGRfaWRzLm1hcChOdW1iZXIpLFxyXG4gICAgICBOdW1iZXIocmMucmNfaWQpLFxyXG4gICAgXSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFxyXG4gICAgICAuZmlsdGVyKChyYzogYW55KSA9PiBhbGxJZHMuaW5jbHVkZXMocmM/LnJjX2lkKSlcclxuICAgICAgLm1hcCgoZWxlOiBhbnkpID0+IGVsZS5faWQpXHJcbiAgICAgIC5qb2luKCcsJyk7XHJcbiAgfVxyXG5cclxuICBzZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpIHtcclxuICAgIGNvbnN0IGdyY1R5cGVzID0gR1JDX1RZUEVfQVJSQVk7XHJcbiAgICB0aGlzLnJlc2V0R1JDRGF0YVdpdGhUeXBlcygpO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW2dyY1R5cGVzW2l0ZW0/LnR5cGVdXT8ucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEdSQ0RhdGFXaXRoVHlwZXMoKSB7XHJcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSB7XHJcbiAgICAgIGFzc2V0czogW10sXHJcbiAgICAgIHByb2Nlc3NlczogW10sXHJcbiAgICAgIHZlbmRvcnM6IFtdLFxyXG4gICAgICBpbnZlbnRvcnk6IFtdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU90aGVyR1JDT2JqZWN0cyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID1cclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cy5maWx0ZXIoXHJcbiAgICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxyXG4gICAgICApO1xyXG4gICAgdGhpcy5maWx0ZXJPdGhlckdSQ0RhdGEoZXZlbnQsIGdyY1R5cGVzW2V2ZW50Py50eXBlXSk7XHJcbiAgICB0aGlzLm90aGVyR1JDQ2FyZFswXS5zZWxlY3RlZENvdW50XHJcbiAgICAgID8gKHRoaXMub3RoZXJHUkNDYXJkW2V2ZW50Py50eXBlXS5zZWxlY3RlZENvdW50IC09IDEpXHJcbiAgICAgIDogMDtcclxuICB9XHJcblxyXG4gIGZpbHRlck90aGVyR1JDRGF0YShldmVudDogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXSA9IHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXT8uZmlsdGVyKFxyXG4gICAgICAoZ3JjOiBhbnkpID0+IGdyYz8uX2lkICE9PSBldmVudD8uX2lkXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwid29ya2Zsdy1jb21wbGlhbmNlXCIgKm5nSWY9XCIhc2hvd1NtaWxleVwiPlxyXG4gIDwhLS0gQmVoYWxmIC0tPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwibW9kZSAhPT0gJ0VESVQnXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9pbS1jcmVhdGluZy5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWdub3JzJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXHJcbiAgICAgICAgICA+SSBhbSBjcmVhdGluZyB0aGlzIHJlc3BvbnNpYmlsaXR5IG9uIGJlaGFsZiBvZiBzb21lb25lIGVsc2VcclxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlXCJcclxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGUgPSAkZXZlbnQ7XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0ID0gW11cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25vcnMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGlzIHJlc3BvbnNpYmlsaXR5P1wiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/LmVuYWJsZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBiX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLCBiX3VzZXIpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYl91c2VyLm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IGJfdXNlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYmVoYWxmLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IGJfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMCwyKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLGJfdXNlcilcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2JfdXNlci5tZW1iZXJfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImJlaGFsZi5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3NpZ25vcnMnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNiZWhhbGYgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGJfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdCB8IHNsaWNlIDogMjtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLCBiX3VzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBiX3VzZXIubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aG9tJ1wiXHJcbiAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoaXMgcmVzcG9uc2liaWxpdHkuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFdoYXQgLS0+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJhbWV3b3JrJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmVzcG9uc2liaWxpdHlOYW1lJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcclxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSAhPT0gJycgJiZcclxuICAgICAgICAhZm9jdXMucmVzcG9uc2liaWxpdHlOYW1lXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgPT09ICcnIHx8XHJcbiAgICAgICAgICBmb2N1cy5yZXNwb25zaWJpbGl0eU5hbWVcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgICAgICAhZm9jdXMucmVzcG9uc2liaWxpdHlOYW1lXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XHJcbiAgICAgICAgICBXaGF0PyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBpc0ZyYW1ld29ya0F2YWlsYWJsZSAmJlxyXG4gICAgICAgICAgICAgIG1vZGUgIT09ICdFRElUJyAmJlxyXG4gICAgICAgICAgICAgIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyYW1ld29yaycsIHRydWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBTZWxlY3QgRnJvbSBBIGZyYW1ld29ya1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5rZXlSZXNwb25zaWJpbGl0eVwiXHJcbiAgICAgICAgICBjbGFzcz1cImluZGljYXRvclwiXHJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCInVGhpcyByZXNwb25zaWJpbGl0eSBpcyBtYXJrZWQgYXMga2V5IHJlc3BvbnNpYmlsaXR5LidcIlxyXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhNzA7PC9pPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpID09ICcnIHx8ICFpc0VkaXRXaGF0XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgW25nTW9kZWxdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWVcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaGF0IGlzIHRoZSByZXNwb25zaWJpbGl0eT9cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ3aGF0Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jlc3BvbnNpYmlsaXR5TmFtZScsIHRydWUpXCJcclxuICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJ0ZXN0RnVuY3Rpb24oKVwiXHJcbiAgICAgICAgICAjd2hhdFxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSAhPSAnJyAmJiBpc0VkaXRXaGF0XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3tcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHk/Lm5hbWVcclxuICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdFdoYXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aGF0J1wiXHJcbiAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBQbGVhc2UgZW50ZXIgYSBuYW1lIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoLXJvdyBhbGlnbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgICAgW25nVmFsdWVdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Py5rZXlSZXNwb25zaWJpbGl0eVwiXHJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5rZXlSZXNwb25zaWJpbGl0eSA9ICRldmVudFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+S2V5IFJlc3BvbnNpYmlsaXR5XHJcbiAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gV2hvIC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aG8uc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxyXG4gICAgICAgICAgPldobz8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxyXG4gICAgICAgID5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICghZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XHJcbiAgICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWduZWVzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldobyBpcyByZXNwb25zaWJsZSBmb3IgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHk/XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcclxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDApICYmXHJcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBlX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDAsIDEpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZV91c2VyLm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IGVfdXNlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5iZ1wiXHJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhc3NpZ25lZXMucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ2Fzc2lnbmVlcycsIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1c2VyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID4mPC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFsbEdyb3VwQXNzaWduZWUgfHwgbW9kZSAhPT0gJ0VESVQnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxyXG4gICAgICAgICAgICAgICAgICAgICdncm91cGFzc2lnbmVlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBlX3VzZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnYXNzaWduZWVzJyxlX3VzZXIpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tlX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZXMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycscmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0pXCIgPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwICYmIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIiA+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGhcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIoIWFsbEdyb3VwQXNzaWduZWUgfHwgbW9kZSAhPT0gJ0VESVQnKVwiIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwYXNzaWduZWVzJyxyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnICYmXHJcbiAgICAgICAgICAgICAgKCFmZWF0dXJlRmxhZ19ncm91cHMgfHxcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlRmxhZ19ncm91cHMgJiYgKCFhbGxHcm91cEFzc2lnbmVlIHx8IG1vZGUgIT09ICdFRElUJykpKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbmVlcycsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBlX3VzZXIubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmVGbGFnX2dyb3VwcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCcpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBhc3NpZ25lZXMnLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmdyb3VwX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcblxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hvJ1wiXHJcbiAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yIGNvbXBsZXRpbmcgdGhpc1xyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHkuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cEFzc2lnbmVkXCI+XHJcbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgICpuZ0lmPVwibW9kZSAhPT0gJ0VESVQnXCJcclxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJ0FMTCdcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09ICdBTEwnXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3doYXQnXCJcclxuICAgICAgICAgICAgPkFMTCBTRUxFQ1RFRCBQRVJTT05TIE5FRUQgVE8gQ09NUExFVEUgVEhJUzxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoIHBlcnNvbi4nXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgICpuZ0lmPVwibW9kZSAhPT0gJ0VESVQnXCJcclxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJ0FOWV9PTkUnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3doYXQnXCJcclxuICAgICAgICAgICAgPkFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVNcclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic3dpdGNoLXJvdyBhbGlnbi1yaWdodFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcclxuICAgICAgICAgICAgICAoIWZlYXR1cmVGbGFnX2dyb3VwcyB8fFxyXG4gICAgICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QubGVuZ3RoID09PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcykpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwib3BlbkFzc2lnbmVlQ2hhbmdlQ29uZmlybWF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PSAnQU5ZX09ORSdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQU5ZIFNFTEVDVEVEIFBFUlNPTiBDQU4gQ09NUExFVEUgVEhJU1xyXG4gICAgICAgICAgICA8L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI2Fzc2lnbmVlcyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgZV91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0IHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGVfdXNlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGVfdXNlci5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBXaGVuPyAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxyXG4gICAgICAgICFyZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aGVuLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5IHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICYmXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSAhPSAnJyAmJlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT0gJzV+MH4wfjAnXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcclxuICAgICAgICAgID5XaGVuPyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ID09ICcnIHx8XHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ID09ICc1fjB+MH4wJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0IGJ1dHRvbi1zZWNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIFNldCBBIGZyZXF1ZW5jeVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT0gJycgJiZcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT09ICc1fjB+MH4wJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgYnV0dG9uLXNlY1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZnJlcXVlbmN5UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgPnt7IGZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgKm5nSWY9XCJpbnZhbGlkVHlwZSA9PT0gJ3doZW4nXCJcclxuICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIFBsZWFzZSBzZWxlY3QgdGhlIGZyZXF1ZW5jeSBvZiBvY2N1cnJlbmNlIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LlxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBOb3RlcyAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdub3RlcydcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ25vdGVzJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcclxuICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8uZGVzY3JpcHRpb24pLnRyaW0oKSAhPT0gJycgJiZcclxuICAgICAgICAhZm9jdXMuZGVzY3JpcHRpb25cclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9ub3Rlcy5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/LmRlc2NyaXB0aW9uKS50cmltKCkgPT09ICcnIHx8XHJcbiAgICAgICAgICBmb2N1cy5kZXNjcmlwdGlvblxyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8uZGVzY3JpcHRpb24pLnRyaW0oKSAhPT0gJycgJiZcclxuICAgICAgICAgICFmb2N1cy5kZXNjcmlwdGlvblxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgIFtlZGl0b3JDb25maWddPVwie1xyXG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgICAgICAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICAgICAgICAgIGxpbms6IHRydWUsXHJcbiAgICAgICAgICAgIGlkOiAnbm90ZXMnLFxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjpcclxuICAgICAgICAgICAgICAnQWRkIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHknXHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICA+PC92Y29tcGx5LWVkaXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBPYmplY3RpdmUgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/Lk9CSkVDVElWRVwiXHJcbiAgICBbYXR0ci5pZF09XCInT0JKRUNUSVZFJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb2JqZWN0aXZlJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb2JqZWN0aXZlJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxlZnRcIlxyXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcclxuICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub2JqZWN0aXZlKS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgICAgIWZvY3VzLm9iamVjdGl2ZVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L29iamVjdGl2ZXMuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5vYmplY3RpdmUpLnRyaW0oKSA9PT0gJycgfHxcclxuICAgICAgICAgIGZvY3VzLm9iamVjdGl2ZVxyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub2JqZWN0aXZlKS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgICAgICAhZm9jdXMub2JqZWN0aXZlXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+T2JqZWN0aXZlPC9sYWJlbD5cclxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZVwiXHJcbiAgICAgICAgICBbZWRpdG9yQ29uZmlnXT1cIntcclxuICAgICAgICAgICAgbW9kZTogJ3ByaW1lJyxcclxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgICAgICAgICBpZDogJ29iamVjdGl2ZScsXHJcbiAgICAgICAgICAgIGxpbms6IHRydWUsXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxyXG4gICAgICAgICAgICAgICdUaGlzIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IGFuIG9iamVjdGl2ZSBmb3IgdGhlIHJlc3BvbnNpYmlsaXR5LidcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkNcIlxyXG4gICAgW2F0dHIuaWRdPVwiJ1JDJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsZWZ0XCJcclxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jlc3BvbnNpYmlsaXR5LWNlbnRlci5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJlc3BvbnNpYmlsaXR5IENlbnRlciA8L2xhYmVsPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20taW5wdXRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIGFyaWEtcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIHJlc3BvbnNpYmlsaXR5IGNlbnRlciBvciB0aGUgcmVzcG9uc2liaWxpdHkgY2VudGVycyBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLHRydWUpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpXCIgcmVhZG9ubHk+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICBbY2xhc3MucmVhZE9ubHldPVwib3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmMgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMCwgMSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuZWRGcm9tICE9PSAnUklTS19UUkVBVE1FTlQnXCJcclxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyYz8uaXRlbV9uYW1lXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICA+e3sgcmM/Lml0ZW1fbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyY1BvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aD4yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgcmMgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycscmMpXCIgKm5nSWY9XCJvcGVuZWRGcm9tICE9PSAnUklTS19UUkVBVE1FTlQnXCI+JiN4ZTkwZDs8L2k+e3tyYz8uaXRlbV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiYgb3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNyY1BvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IHJjIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmMgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByYylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICB7eyByYy5pdGVtX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXHJcbiAgICAgICAgICAgIChtb2RlICE9ICdFRElUJyB8fCByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPD0gMSlcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSA8YXBwLWNzLXJhZGlvPjxkaXYgW2FwcFRvb2x0aXBdPVwiJ0NyZWF0ZSBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIGZvciBlYWNoIHJlc3BvbnNpYmlsaXR5IGNlbnRlcidcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5DUkVBVEUgU0VQQVJBVEUgUkVTUE9OU0lCSUxJVElFUyBGT1IgRUFDSCBSRVNQT05TSUJJTElUWSBDRU7igKY8L2Rpdj48aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHR5cGU9XCJ3aGl0ZVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTFmOzwvaT48L2FwcC1jcy1yYWRpbz4gLS0+XHJcbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICBtb2RlID09ICdFRElUJyAmJlxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT09IDEgJiZcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMFwiXHJcbiAgICAgICAgICAgIFtuYW1lXT1cIidmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1wiXHJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SY1R5cGVDaGFuZ2UoMClcIlxyXG4gICAgICAgICAgICA+PGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmMtcmFkaW8tdGV4dFwiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnQ3JlYXRlIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMgZm9yIGVhY2ggcmVzcG9uc2liaWxpdHkgY2VudGVycydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBDUkVBVEUgU0VQQVJBVEUgUkVTUE9OU0lCSUxJVElFUyBGT1IgRUFDSCBSRVNQT05TSUJJTElUWSBDRU7igKZcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlci4nXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcclxuICAgICAgICAgICAgPjwvYXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICBtb2RlID09ICdFRElUJyAmJlxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGUgPT09IDEgJiZcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMVwiXHJcbiAgICAgICAgICAgIFtuYW1lXT1cIidmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1wiXHJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SY1R5cGVDaGFuZ2UoMSlcIlxyXG4gICAgICAgICAgICA+RElTUExBWSBUSEUgU0FNRSBSRVNQT05TSUJJTElUWSBJTiBBTEwgUkVTUE9OU0lCSUxJVFkgQ0VOVEVSUzxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHRoZSBzYW1lIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgbGlua2VkIHRvIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgICA+PC9hcHAtY3MtcmFkaW9cclxuICAgICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBQcm9ncmFtIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5QUk9HUkFNXCJcclxuICAgIFthdHRyLmlkXT1cIidQUk9HUkFNJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncHJvZ3JhbSdcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3Byb2dyYW0nXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlByb2dyYW08L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20taW5wdXRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncHJvZ3JhbScsIHRydWUpXCJcclxuICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgUHJvZ3JhbSBvciBQcm9ncmFtIENhdGVnb3JpZXMgdGhhdCB0aGlzIHJlc3BvbnNpYmlsaXR5IHJlbGF0ZXMgdG8uXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Byb2dyYW0nLHRydWUpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmVzcG9uc2liaWxpdHkgcHJvZ3JhbShzKVwiIHJlYWRvbmx5PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvZ3JhbSBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1cIj5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgIWhpZGRlbkxpc3Q/LmluY2x1ZGVzKCdQUk9HUkFNJykgJiZcclxuICAgICAgICAgICAgICAgICAgIXByb2dyYW0/LmlzVmlld09ubHlQcm9ncmFtXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncHJvZ3JhbScsIHByb2dyYW0pXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicHJvZ3JhbT8ubmFtZSA/PyAnLS0nXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHByb2dyYW0/Lm5hbWUgPz8gXCItLVwiIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGg+MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgcHJvZ3JhbSBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1cIj48aSBjbGFzcz1cImljb25zXCIgKm5nSWY9XCJmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpXCIgKGNsaWNrKT1cInJlbW92ZSgncHJvZ3JhbScscHJvZ3JhbSlcIj4mI3hlOTBkOzwvaT4ge3twcm9ncmFtPy5uYW1lPz8nLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLSAtIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDJcIiBjbGFzcz1cImNvdW50XCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW0ucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rIHt7cmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPiAtIC0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW0ucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rIHt7cmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncHJvZ3JhbScgJiYgIWhpZGRlbkxpc3QuaW5jbHVkZXMoJ1BST0dSQU0nKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Byb2dyYW0nLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcHJvZ3JhbSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtdWx0aXBsZS1wcm9ncmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5LWxhYmVsXCI+UFJJTUFSWTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IHByb2dyYW0gb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdmF0YXItY2FyZFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbT8uY2F0ZWdvcnlfaWQgIT09XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInByb2dyYW0/Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhaGlkZGVuTGlzdD8uaW5jbHVkZXMoJ1BST0dSQU0nKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhcHJvZ3JhbT8uaXNWaWV3T25seVByb2dyYW1cclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Byb2dyYW0nLCBwcm9ncmFtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcHJvZ3JhbT8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jdXN0b21UYWdzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5jdXN0b21UYWdzXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWc/LnRhZ19uYW1lPy50cmltKClcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIj57e1xyXG4gICAgICAgICAgICAgICAgdGFnPy50YWdfbmFtZVxyXG4gICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgdGFnPy50YWdfbmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBGb3JtYXQgJiBFdmlkZW5jZSAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uRk9STUFURV9FVklERU5DRVwiXHJcbiAgICBbYXR0ci5pZF09XCInRk9STUFURV9FVklERU5DRSdcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Zvcm1hdGVfZXZpZGVuY2UnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmb3JtYXRlX2V2aWRlbmNlJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPT0gZmFsc2UgJiZcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzLmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRMaW5rcz8ubGVuZ3RoID09IDBcclxuICAgICAgICBcIlxyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9mb3JtYXQtZXZpZGVuY2Uuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgfHxcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzLmxlbmd0aCB8fFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3M/Lmxlbmd0aFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8YXBwLWZvcm1hdC1hbmQtZXZpZGVuY2VcclxuICAgICAgICAodXBkYXRlRmlsZXMpPVwic2F2ZVNlbGVjdGVkTGlzdCgnZm9ybWF0ZV9ldmlkZW5jZScsICRldmVudClcIlxyXG4gICAgICAgIFttb2RlXT1cIidyZXNwb25zaWJpbGl0eSdcIlxyXG4gICAgICAgIFtmb3JtYXRFdmlkYW5jZURhdGFdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5mb3JtYXRBbmRFdmlkZW5jZVwiXHJcbiAgICAgID5cclxuICAgICAgPC9hcHAtZm9ybWF0LWFuZC1ldmlkZW5jZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEFzc2Vzc21lbnQgLS0+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVFwiXHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgW2F0dHIuaWRdPVwiJ0FTU0VTU01FTlQnXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGVmdFwiXHJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcclxuICAgID5cclxuICAgICAgPGltZ1xyXG4gICAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvYXNzZXNzbWVudHMuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BU1NFU1NNRU5UUzwvbGFiZWw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCB0cnVlKTsgaXNBc3Nlc3NtZW50ID0gdHJ1ZVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBhc3Nlc3NtZW50IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnYXNzZXNzbWVudCcsIGNhdGVnb3J5KVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHNcclxuICAgICAgICAgICAgICAgICAgPy5hc3Nlc3NtZW50X25hbWVcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXHJcbiAgICAgICAgICAgICAgICAgID8uYXNzZXNzbWVudF9uYW1lXHJcbiAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tbC0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zIH19XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zID4gMVxyXG4gICAgICAgICAgICAgICAgICA/IFwiUXVlc3Rpb25zXCJcclxuICAgICAgICAgICAgICAgICAgOiBcIlF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgdHJ1ZSk7IGlzQXNzZXNzbWVudCA9IHRydWVcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gQ2hlY2twb2ludHMgLS0+XHJcbiAgPCEtLSAqbmdJZj1cIm1vcmVPcHRpb25zLmNoZWNrcG9pbnRzXCIgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXCJcclxuICAgIFthdHRyLmlkXT1cIidDSEVDS1BPSU5UUydcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NoZWNrcG9pbnRzLnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiaW1cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdjaGVja3BvaW50cydcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cydcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cclxuICAgICAgICAgIDwhLS0ge3tyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHN8anNvbn19XHJcbiAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50SW5zdHJ1Y3Rpb259fSAtLT5cclxuXHJcbiAgICAgICAgICBDaGVja3BvaW50c1xyXG4gICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cz8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgY2hlY2twb2ludHMgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHlcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEFkZCBDaGVja3BvaW50c1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5zbGljZSgwLCAxKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2hlY2twb2ludD8ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgY2hlY2twb2ludD8ubGFiZWwgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrcG9pbnQucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyIGNoZWNrcG9pbnRzXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aD4yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgY2hlY2twb2ludCBvZiByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/LnNsaWNlKDAsMSlcIj57e2NoZWNrcG9pbnQ/LmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoID4gMVwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJjaGVja3BvaW50LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGgtIDF9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnY2hlY2twb2ludHMnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cInRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGhcIlxyXG4gICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYWxlcnQtaWNvblwiPiYjeGU5MzA7PC9pPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICA+WW91IGNhbiBub3cgdXNlIHRoZSBuZXcgPHN0cm9uZz5DaGVja3BvaW50cyA8L3N0cm9uZz5vclxyXG4gICAgICAgICAgPHN0cm9uZz5Bc3Nlc3NtZW50czwvc3Ryb25nPiBmZWF0dXJlIGluc3RlYWQgb2YgdGhlIG9sZCBjaGVja3BvaW50c1xyXG4gICAgICAgICAgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUgYW5hbHl0aWNhbCBxdWVzdGlvbnMuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwicmVtb3ZlLWJ0blwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCdjaGVja3BvaW50JylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBSZW1vdmUgQ2hlY2twb2ludHNcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgdG8gY29udGludWUuPC9zcGFuXHJcbiAgICAgICAgPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1wb3BvdmVyICNjaGVja3BvaW50IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBOZXcgIENoZWNrcG9pbnRzIC0tPlxyXG4gIDwhLS0gKm5nSWY9XCJtb3JlT3B0aW9ucy5jaGVja3BvaW50c1wiIC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU19ORVdcIlxyXG4gICAgW2F0dHIuaWRdPVwiJ0NIRUNLUE9JTlRTLU5FVydcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzLW5ldydcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2hlY2twb2ludHMuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJpbVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgPCEtLSB7e3Jlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50c3xqc29ufX1cclxuICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbn19IC0tPlxyXG5cclxuICAgICAgICAgIENoZWNrcG9pbnRzXHJcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC12ZXJzaW9uXCI+IFYyLjA8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgPCEtLSA8YnV0dG9uICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3Jyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCIgKm5nSWY9XCJjaGVja3BvaW50Q291bnQgPT09IDBcIj5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWRkIGNoZWNrcG9pbnRzIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBBZGQgQ2hlY2twb2ludHNcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID4gMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVtb3ZlQ2hlY2twb2ludHMoJ25ldy1jaGVja3BvaW50cycpXCJcclxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgPnt7IGNoZWNrcG9pbnRDb3VudCB9fVxyXG4gICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnRDb3VudCA+IDEgPyBcIlF1ZXN0aW9uc1wiIDogXCJRdWVzdGlvblwiIH19PC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyIGNoZWNrcG9pbnRzXCIgW2NsYXNzLm1vcmUtb25lXT1cImNoZWNrcG9pbnRDb3VudCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwib25SZW1vdmVDaGVja3BvaW50cygnbmV3LWNoZWNrcG9pbnRzJylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NoZWNrcG9pbnRDb3VudH19IHt7Y2hlY2twb2ludENvdW50ID4gMSA/ICdRdWVzdGlvbnMnOiAnUXVlc3Rpb24nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cy1uZXcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLCB0cnVlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YXBwLXBvcG92ZXIgI2NoZWNrcG9pbnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2twb2ludCBvZiByZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBjaGVja3BvaW50Py5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJpc2sgQ2xhc3NpZmljYXRpb24gLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJJU0tfQ0xBU1NJRklDQVRJT05cIlxyXG4gICAgW2F0dHIuaWRdPVwiJ1JJU0tfQ0xBU1NJRklDQVRJT04nXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2FsY3VsYXRvcidcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jpc2tDYWxjdWxhdG9yJyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yaXNrcy5zdmdcIlxyXG4gICAgICAgIGFsdD1cImltXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgUmlzayBDbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcigncmlza0NhbGN1bGF0b3InLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgKyBSaXNrIENhbGN1bGF0b3JcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbGFzc2lmaWNhdGlvblwiPlxyXG4gICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgIGNsYXNzPVwibG93XCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJpc2sgb2Ygcmlza0NsYXNzaWZpY2F0aW9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiW3Jpc2suY2xhc3NdXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVzcG9uc2liaWxpdHlGb3JtLnJpc2tDbGFzc1wiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJpc2s/LnZhbHVlXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+e3sgcmlzaz8ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmV2aWV3ZXIgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJFVklFV0VSXCJcclxuICAgIFthdHRyLmlkXT1cIidSRVZJRVdFUidcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmV2aWV3ZXIuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmV2aWV3ZXInXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJldmlld2VyPC9sYWJlbD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcclxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJldmlld2VyXCJcclxuICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxyXG4gICAgICAgICAgICAoKHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCkgJiZcclxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgwLCAxKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLCByZXZpZXdlcilcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyZXZpZXdlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyByZXZpZXdlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGg+MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoPjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicscmV2aWV3ZXIpXCI+JiN4ZTkwZDs8L2k+IHt7cmV2aWV3ZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDJcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZSgncmV2aWV3ZXInLCByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXHJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgJlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxyXG4gICAgICAgICAgICAgICAgICAgICdncm91cFJldmlld2VyJyxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJyxyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+ICt7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwUmV2aWV3ZXInLHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCI+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyZXZpZXdlcidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93XCJcclxuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxyXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJvblJldmlld2VyV29ya2Zsb3dDaGFuZ2UoJ3NlcXVlbnRpYWwnKVwiXHJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgU0VRVUVOVElBTDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICAgIFtjaGVja2VkXT1cIiFyZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1wiXHJcbiAgICAgICAgICBbbmFtZV09XCIncmV2aWV3ZXInXCJcclxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdhbnlSZXZpZXdlcicpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBBTlkgUkVWSUVXRVIgQ0FOIE1BUksgVEhJUyBBUyBSRVZJRVdFRDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAnVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IHRvIGFsbCByZXZpZXdlcnMgYXQgdGhlIHNhbWUgdGltZS4gSWYgYW55b25lIG9mIHRoZSByZXZpZXdlciByZXZpZXdzIHRoZSByZXNwb25zaWJpbGl0eSwgaXQgd2lsbCBiZSBjb25zaWRlcmVkIGFzIHJldmlld2VkLidcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcmV2aWV3ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0XHJcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLCByZXZpZXdlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJldmlld2VyLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjdXNlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgcmV2aWV3ZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RcclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwUmV2aWV3ZXInLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmdyb3VwX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gT3ZlcnNlZXIgLS0+XHJcbiAgPGRpdlxyXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXHJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/Lk9WRVJTRUVSXCJcclxuICAgIFthdHRyLmlkXT1cIidPVkVSU0VFUidcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICFbJ292ZXJzZWVyTm90aWZ5JywgJ292ZXJzZWVyTm90aWZ5J10uaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb3ZlcnNpZ2h0LnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDApIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDApICYmXHJcbiAgICAgICAgICAhKFxyXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk92ZXJzaWdodDwvbGFiZWw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGhhdmUgb3ZlcnNpZ2h0IG9mIHRoZSByZXNwb25zaWJpbGl0eT9cIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XHJcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCkgJiZcclxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgwLCAxKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLCBvdmVyc2VlcilcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJvdmVyc2Vlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBvdmVyc2Vlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJzLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoPjJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXInLG92ZXJzZWVyKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyLm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKCdvdmVyc2VlcicsIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlclVzZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID4mPC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyR3JvdXAnLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QubGVuZ3RoID4gMFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJVc2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj4gK3t7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwICYmIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDAgXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXAnLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdLmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiICA+e3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXInXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XHJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2Vlck5vdGlmeScsIHRydWUpXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGJlIG5vdGlmaWVkIGlmIHRoZSByZXNwb25zaWJpbGl0eSBpcyBub3QgY29tcGxldC4uLlwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICdXaG8gc2hvdWxkIGJlIG5vdGlmaWVkIGlmIHRoZSByZXNwb25zaWJpbGl0eSBpcyBub3QgY29tcGxldGVkPydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcclxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwKSAmJlxyXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/LnNsaWNlKFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLCBvdmVyc2VlcilcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJvdmVyc2Vlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBvdmVyc2Vlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibm90aWZ5LnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5zbGljZSgxKS5sZW5ndGggfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoPjJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLG92ZXJzZWVyKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyLm1lbWJlcl9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdC5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcclxuICAgICAgICAgICAgICAgICAgICAnb3ZlcnNlZXJOb3RpZnlMaXN0JyxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0/LmVtcGxveWVlX25hbWVcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXT8uZW1wbG95ZWVfbmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5vdGlmeVVzZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID4mPC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcclxuICAgICAgICAgICAgICAgICAgICAnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdPy5ncm91cF9uYW1lXHJcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5vdGlmeUdyb3VwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAre3tcclxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeVVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdC5sZW5ndGggPiAwICYmIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXCIgPiY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXBOb3RpZnlMaXN0JyxyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwXCIgID57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnlHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdvdmVyc2Vlck5vdGlmeSdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyTm90aWZ5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlclVzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVycyBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3ZlcnNlZXJzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXJzPy5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0XHJcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJHcm91cCcsIG92ZXJzZWVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lmdyb3VwX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNub3RpZnkgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLCBvdmVyc2VlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVyPy5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeVVzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLCBvdmVyc2VlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVyPy5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5ncm91cF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEFzc3VyYW5jZSAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQVNTVVJBTkNFXCJcclxuICAgIFthdHRyLmlkXT1cIidBU1NVUkFOQ0UnXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3N1cmFuY2UnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3N1cmFuY2UnICYmXHJcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcmV2aWV3ZXIuc3ZnXCJcclxuICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc3VyYW5jZSdcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5Bc3N1cmFuY2U8L2xhYmVsPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1pbnB1dFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3N1cmFuY2UnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgIGFyaWEtcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIHRlc3QgcGxhbiBjYXRlZ29yaWVzIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gYWRkIHRoaXMgcmVzcG9uc2liaWxpdHkgdG8uXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcclxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgYXNzdXJhbmNlIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2Fzc3VyYW5jZScsIGFzc3VyYW5jZSlcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXNzdXJhbmNlLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc3VyYW5jZSdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc3VyYW5jZScsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXBwLXBvcG92ZXIgI2Fzc3VyYW5jZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzdXJhbmNlIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc3VyYW5jZScsIGFzc3VyYW5jZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGFzc3VyYW5jZS5jYXRlZ29yeV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJlcXVpcmVzIEF1ZGl0IC0tPlxyXG4gIDxkaXZcclxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxyXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5SRVFVSVJFU19BVURJVCAmJiByZXNwb25zaWJpbGl0eUZvcm0ucmMubGVuZ3RoID4gMFwiXHJcbiAgICBbYXR0ci5pZF09XCInUkVRVUlSRVNfQVVESVQnXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JlcXVpcmVzX2F1ZGl0JyAmJlxyXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2F1ZGl0LnN2Z1wiXHJcbiAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXHJcbiAgICAgICAgXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXF1aXJlc19hdWRpdCdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UkVRVUlSRVMgQVVESVQ/PC9sYWJlbD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA9PSAwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIklmIHllcywgc2VsZWN0IGFuIEF1ZGl0IENhdGVnb3J5LlwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXF1aXJlc19hdWRpdCcsIHRydWUpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3JlcXVpcmVzX2F1ZGl0Jywgb3ZlcnNlZXIpXCJcclxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3RbMF0/LmNhdGVnb3J5X25hbWVcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXT8uY2F0ZWdvcnlfbmFtZVxyXG4gICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXF1aXJlc19hdWRpdCcsIHRydWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGM7PC9pPiBFZGl0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwhLS0gY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgRWRpdDwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LThcIj5cclxuICAgICAgICAgICAgU0FNUExFIFNJWkVcclxuICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcclxuICAgICAgICAgICAgICBbKG5nVmFsdWUpXT1cImlzU2FtcGxlXCJcclxuICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzd2l0Y2hFbmFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNhbXBsZS1wYXJ0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1NhbXBsZVwiPlxyXG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCIwXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNhbXBsZS1yYWRpb1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkU2FtcGxlRGF0YSgwKVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRTYW1wbGUgPT09IDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5DT1VOVDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi0tXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJjaGVja0lucHV0VmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNhbXBsZVZhbHVlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yXCI+T1I8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgIHZhbHVlPVwiMVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYW1wbGUtcmFkaW9cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFNhbXBsZURhdGEoMSlcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkU2FtcGxlID09PSAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+UEVSQ0VOVEFHRTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tJbnB1dFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzYW1wbGVQZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiLS1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LThcIlxyXG4gICAgICAgICAgICA+U0VUIEEgUkVNSU5ERVIgSUYgVEhFIEFVRElUIFBMQU4gSVMgTk9UIENSRUFURUQuPC9sYWJlbFxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWluZGVyLXBhcnRcIj5cclxuICAgICAgICAgICAgU2VuZCByZW1pbmRlciBldmVyeVxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIjJcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICBEYXkgYnlcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1ncm91cFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1lXCJcclxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCIxMmhyIGZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF1ZGl0VGltZVwiXHJcbiAgICAgICAgICAgICAgICBbbmd4VGltZXBpY2tlcl09XCJkYWlseVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJhdWRpdFRpbWUudG9VcHBlckNhc2UoKVwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBbbWluXT1cImN1cnJlbnRUaW1lXCJcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTk1NTs8L2k+XHJcbiAgICAgICAgICAgICAgPG5neC1tYXRlcmlhbC10aW1lcGlja2VyICNkYWlseVRpbWUgW2RlZmF1bHRUaW1lXT1cImF1ZGl0VGltZVwiPlxyXG4gICAgICAgICAgICAgIDwvbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gTGluayBvZiBHUkMgb2JqZWN0cyAtLT5cclxuICA8ZGl2XHJcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcclxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uR1JDX09CSkVDVFMgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIlxyXG4gICAgW2F0dHIuaWRdPVwiJ0dSQ19PQkpFQ1RTJ1wiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnR1JDX09CSkVDVFMnXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdHUkNfT0JKRUNUUycgJiZcclxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cclxuICAgICAgPGltZ1xyXG4gICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hdWRpdC5zdmdcIlxyXG4gICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdHUkNfT0JKRUNUUydcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdHUkNfT0JKRUNUUydcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+TElOSyBHUkMgT0JKRUNUKFMpPC9sYWJlbD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXHJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEdSQyBvYmplY3QocykgdG8gbGluayB3aXRoIHRoaXMgcmVzcG9uc2liaWxpdHlcIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignR1JDX09CSkVDVFMnLCB0cnVlKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWxlY3RlZEdSQyBvZiBHUkNfVFlQRV9BUlJBWTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cImdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgdngtbWItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyYyBvZiBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXT8uc2xpY2UoMCwgMSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdHUkNfT0JKRUNUUycsIGdyYywgMClcIlxyXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRHUkMgfCB0aXRsZWNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJncmM/Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgID57eyBncmM/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb3BvdmVyR1JDLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgK3t7IGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR1JDVGFiID0gZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ11bMF0/LnR5cGU7XHJcbiAgICAgICAgICAgICAgICAgIGdldE90aGVyR1JDT2JqZWN0cygpO1xyXG4gICAgICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIHRydWUpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyR1JDIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYyBvZiBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXSB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnR1JDX09CSkVDVFMnLCBncmMsIGogKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JjLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YXBwLXVzZXJzLXJhZGlvLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWdub3JzJ1wiXHJcbiAgW3VzZXJzTGlzdF09XCJhc3NpZ25vcnNMaXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3RcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ21lbWJlcl9lbWFpbCdcIlxyXG4gIFt1c2VySWRLZXldPVwiJ21lbWJlcl9pZCdcIlxyXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdhc3NpZ25vcnMnLCAkZXZlbnQpXCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuPlxyXG48L2FwcC11c2Vycy1yYWRpby1saXN0PlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWduZWVzJ1wiPlxyXG4gIDxhcHAtZ3JvdXAtdXNlcnMtbGlzdFxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgaXNFbnRydXN0IHx8IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXHJcbiAgICBcIlxyXG4gICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXHJcbiAgICBbdXNlcnNMaXN0XT1cImFzc2lnbmVlc0xpc3RcIlxyXG4gICAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInQXNzaWduZWUnXCJcclxuICAgIFtncm91cHNMaXN0XT1cImdyb3Vwc0xpc3RcIlxyXG4gICAgW2Fzc2lnbmVlR3JvdXBzTGlzdF09XCJncm91cEFzc2lnbmVlTGlzdFwiXHJcbiAgICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFwiXHJcbiAgICBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFwiXHJcbiAgICBbdXNlcklkS2V5XT1cIidteV9tZW1iZXJfaWQnXCJcclxuICAgIFtncm91cElkS2V5XT1cIidncm91cF9pZCdcIlxyXG4gICAgW2xvYWRlcl09XCJ1c2VyTGlzdExvYWRlciB8fCBhc3NpZ25vcnNMaXN0TG9hZGVyXCJcclxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbmVlcycsICRldmVudClcIlxyXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbiAgICBbZ3JvdXBzRW5hYmxlZF09XCJmZWF0dXJlRmxhZ19ncm91cHNcIlxyXG4gID5cclxuICA8L2FwcC1ncm91cC11c2Vycy1saXN0PlxyXG4gIDxhcHAtdXNlcnMtcmFkaW8tbGlzdFxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgIWlzRW50cnVzdCAmJiByZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcclxuICAgIFwiXHJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxyXG4gICAgW3VzZXJzTGlzdF09XCJhc3NpZ25lZXNMaXN0XCJcclxuICAgIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdFwiXHJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxyXG4gICAgW2l0ZW1OYW1lS2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXHJcbiAgICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidBc3NpZ25lZSdcIlxyXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWduZWVzJywgJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICA+XHJcbiAgPC9hcHAtdXNlcnMtcmFkaW8tbGlzdD5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48YXBwLWNoZWNrcG9pbnRzXHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXHJcbiAgW2NoZWNrcG9pbnRJbnN0cnVjdGlvbl09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRJbnN0cnVjdGlvblwiXHJcbiAgW2NoZWNrcG9pbnREYXRhXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHNcIlxyXG4gIChzYXZlQ2hlY2tQb2ludCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjaGVja3BvaW50cycsICRldmVudClcIlxyXG4gIChjbG9zZUNoZWNrUG9pbnQpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuPjwvYXBwLWNoZWNrcG9pbnRzPlxyXG48YXBwLWZyZXF1ZW5jeS1jb250YWluZXJcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgW2ZyZXF1ZW5jeURldGFpbHNdPVwiZnJlcXVlbmN5RGV0YWlsc1wiXHJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXHJcbiAgKHNlbGVjdGVkRnJlcXVlbmN5KT1cImZyZXF1ZW5jeURhdGEoJGV2ZW50KVwiXHJcbiAgW21vZGVdPVwiJ3Jlc3BvbnNpYmlsaXR5J1wiXHJcbiAgKGNsb3NlRnJlcXVlbmN5KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbj5cclxuPC9hcHAtZnJlcXVlbmN5LWNvbnRhaW5lcj5cclxuXHJcbjxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXHJcbiAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFwiXHJcbiAgW3JhZGlvU2VsZWN0aW9uXT1cIlxyXG4gICAgbW9kZSA9PSAnRURJVCcgJiYgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAwID8gdHJ1ZSA6IGZhbHNlXHJcbiAgXCJcclxuICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJjXCJcclxuICBbcmNJZEtleV09XCInaXRlbV9pZCdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JjJywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlUmNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbj5cclxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxyXG5cclxuPGFwcC1jYXRlZ29yeS1tdWx0aS1zZWxlY3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXCJcclxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3JpZXNcIlxyXG4gIFthbGxDYXRlZ29yaWVzXT1cImFsbENhdGVnb3JpZXNcIlxyXG4gIFtjYXRlZ29yeUlkS2V5XT1cIidjYXRlZ29yeV9pZCdcIlxyXG4gIFtzZWxlY3RlZENhdGVnb3JpZXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5XCJcclxuICAoc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwic2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCAkZXZlbnQpXCJcclxuICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4+XHJcbjwvYXBwLWNhdGVnb3J5LW11bHRpLXNlbGVjdD5cclxuXHJcbjwhLS0gW2hpZGVQcm9ncmFtc0xpc3RdPVwiKHNlbGVjdGVkUHJvZ3JhbSAgJiYgISh0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ucHJvZ3JhbVR5cGUgPT09IDAgJiYgdGhpcy5zZWxlY3RlZFByb2dyYW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICd1bmNhdGVnb3JpemVkJyApKSA/IHRydWUgOiBmYWxzZVwiIC0tPlxyXG48YXBwLXByb2dyYW0tbGlzdGluZ1xyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdwcm9ncmFtJ1wiXHJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXHJcbiAgW3Byb2dyYW1zTGlzdF09XCJwcm9ncmFtc0xpc3RcIlxyXG4gIFtzZWxlY3RlZENhdGVnb3JpZXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5IHwgcmVmRGlzY29ubmVjdFwiXHJcbiAgW3NlbGVjdGVkUHJvZ3JhbV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbSB8IHJlZkRpc2Nvbm5lY3RcIlxyXG4gIChzYXZlU2VsZWN0ZWRQcm9ncmFtKT1cInNhdmVTZWxlY3RlZExpc3QoJ3Byb2dyYW0nLCAkZXZlbnQpXCJcclxuICAoY2xvc2VFdmVudCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gIFtsaW5rZWRQcm9ncmFtXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ubGlua2VkUHJvZ3JhbVwiXHJcbiAgW21vZGVdPVwiXHJcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ucHJvZ3JhbVR5cGUgPT09IDAgJiZcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndW5jYXRlZ29yaXplZCdcclxuICAgICAgPyAnJ1xyXG4gICAgICA6IG1vZGVcclxuICBcIlxyXG4gIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxyXG4gIFtyZXNwb25zaWJpbGl0eUlkXT1cInJlc3BvbnNpYmlsaXR5SWRcIlxyXG4+PC9hcHAtcHJvZ3JhbS1saXN0aW5nPlxyXG5cclxuPGFwcC1vd25lci1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyJyAmJiAhZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICBbbGlzdEhlYWRpbmddPVwiJ1NlbGVjdCBhIFJldmlld2VyJ1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCJcclxuICBbc2hvd1dvcmtmbG93XT1cInRydWVcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdFwiXHJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcclxuICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxyXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJcclxuICAgIHNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld2VyJywgJGV2ZW50KTtcclxuICAgIGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcclxuICBcIlxyXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gIFttb2RlXT1cIm1vZGVcIlxyXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXHJcbiAgW3Jldmlld2VyV29ya2Zsb3dUeXBlXT1cIlxyXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/LnNlcXVlbnRpYWxXb3JrZmxvd1xyXG4gICAgICA/ICdTRVFVRU5USUFMJ1xyXG4gICAgICA6ICdBTlkgUkVWSUVXRVIgQ0FOIE1BUksgVEhJUyBBUyBSRVZJRVdFRCdcclxuICBcIlxyXG4gIChyZXZpZXdlcldvcmtmbG93VHlwZUNoYW5nZSk9XCJyZXZpZXdlclR5cGVDaGFuZ2UoJGV2ZW50KVwiXHJcbj5cclxuPC9hcHAtb3duZXItbGlzdD5cclxuPHVzZXItZ3JvdXAtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICBbc2VsZWN0ZWRSZXZpZXdlcl09XCJ0cnVlXCJcclxuICBbdXNlcmxpc3RdPVwicmV2aWV3ZXJNZW1iZXJJZHNMaXN0XCJcclxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxyXG4gIFtncm91cExpc3RdPVwiZ3JvdXBSZXZpZXdlckxpc3RcIlxyXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0XCJcclxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFwiXHJcbiAgKGNhbmNlbCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gIChzYXZlKT1cIlxyXG4gICAgc2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXInLCAkZXZlbnQpO1xyXG4gICAgYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCB0cnVlKVxyXG4gIFwiXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInUmV2aWV3ZXInXCJcclxuICBbbG9hZGluZ109XCJ1c2VyTGlzdExvYWRlciB8fCBhc3NpZ25vcnNMaXN0TG9hZGVyXCJcclxuICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxyXG4gIFtyZXZpZXdlcldvcmtmbG93VHlwZV09XCJcclxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5zZXF1ZW50aWFsV29ya2Zsb3dcclxuICAgICAgPyAnU0VRVUVOVElBTCdcclxuICAgICAgOiAnQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQnXHJcbiAgXCJcclxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuPGFwcC1vd25lci1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJyAmJiAhZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXHJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXHJcbiAgW3VzZXJzTGlzdF09XCJhbGxVc2Vyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdFwiXHJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcclxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidPdmVyc2VlcidcIlxyXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcclxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2VlcicsICRldmVudClcIlxyXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gIFtpdGVtRW1haWxLZXldPVwiJ2VtcGxveWVlX2VtYWlsJ1wiXHJcbj5cclxuPC9hcHAtb3duZXItbGlzdD5cclxuPHVzZXItZ3JvdXAtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcicgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxyXG4gIFtncm91cExpc3RdPVwiZ3JvdXBPdmVyc2Vlckxpc3RcIlxyXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFwiXHJcbiAgW3VzZXJsaXN0XT1cIm92ZXJzZWVyc0xpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdFwiXHJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcclxuICBbbG9hZGluZ109XCJ1c2VyTGlzdExvYWRlciB8fCBhc3NpZ25vcnNMaXN0TG9hZGVyXCJcclxuICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2VlcicsICRldmVudClcIlxyXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuXHJcbjxhcHAtb3duZXItbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXHJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCJcclxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidPdmVyc2VlcidcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdFwiXHJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcclxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXHJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnb3ZlcnNlZXJOb3RpZnknLCAkZXZlbnQpXCJcclxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxyXG4+PC9hcHAtb3duZXItbGlzdD5cclxuPHVzZXItZ3JvdXAtbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuICBbdXNlcmxpc3RdPVwib3ZlcnNlZXJzTGlzdFwiXHJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcclxuICBbZ3JvdXBMaXN0XT1cImdyb3VwT3ZlcnNlZXJMaXN0XCJcclxuICBbc2VsZWN0ZWRHcm91cHNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RcIlxyXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdFwiXHJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcclxuICBbbG9hZGluZ109XCJ1c2VyTGlzdExvYWRlciB8fCBhc3NpZ25vcnNMaXN0TG9hZGVyXCJcclxuICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2Vlck5vdGlmeScsICRldmVudClcIlxyXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCJcclxuPlxyXG48L3VzZXItZ3JvdXAtbGlzdD5cclxuXHJcbjxhcHAtb3duZXItbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3N1cmFuY2UnXCJcclxuICBbc2luZ3VsYXJUZXh0XT1cIidUZXN0IENhdGVnb3J5IHNlbGVjdGVkJ1wiXHJcbiAgW3BsdXJhbFRleHRdPVwiJ1Rlc3QgQ2F0ZWdvcmllcyBzZWxlY3RlZCdcIlxyXG4gIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU2VhcmNoIFRlc3QgQ2F0ZWdvcnkuLi4nXCJcclxuICBbbGlzdEhlYWRpbmddPVwiJ1NlbGVjdCBUZXN0IENhdGVnb3JpZXMnXCJcclxuICBbdXNlcnNMaXN0XT1cImFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0XCJcclxuICBbbm9EYXRhVGV4dF09XCInTm8gVGVzdCBDYXRlZ29yaWVzIEZvdW5kJ1wiXHJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3RcIlxyXG4gIFt1c2VySWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXHJcbiAgW2l0ZW1FbWFpbEtleV09XCInY2F0ZWdvcnlfbmFtZSdcIlxyXG4gIFtpdGVtTmFtZUtleV09XCInY2F0ZWdvcnlfbmFtZSdcIlxyXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc3VyYW5jZScsICRldmVudClcIlxyXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4gIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInU2VhcmNoIENhdGVnb3J5J1wiXHJcbj5cclxuPC9hcHAtb3duZXItbGlzdD5cclxuXHJcbjxhcHAtYXVkaXQtY2F0ZWdvcnktbGlzdFxyXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcIlxyXG4gIChjbG9zZUxpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICBbYXVkaXRDYXRlZ29yeV09XCJhc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdFwiXHJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmVxdWlyZXNfYXVkaXQnLCAkZXZlbnQpXCJcclxuICBbc2VsZWN0ZWREYXRhXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3RbMF1cIlxyXG4+PC9hcHAtYXVkaXQtY2F0ZWdvcnktbGlzdD5cclxuXHJcbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcbjxhcHAtZnJhbWV3b3JrLWxpc3RcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJhbWV3b3JrJ1wiXHJcbiAgKGFzc2lnbkNvbnRyb2wpPVwiYXNzaWduRnJvbUZyYW1ld29yaygkZXZlbnQpXCJcclxuICBbcHJldmlvdXNTZWxlY3RlZFZhbHVlc109XCJzZWxlY3RlZEZyYW1ld29ya1ZhbHVlc1wiXHJcbiAgKGNsb3NlRnJhbWV3b3JrKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXHJcbiAgKGVudHJ1c3RGcmFtZXdvcmspPVwiZW50cnVzdEZyYW1ld29yaygkZXZlbnQpXCJcclxuPjwvYXBwLWZyYW1ld29yay1saXN0PlxyXG5cclxuPCEtLSByaXNrLWNhbGN1bGF0b3IgaGVyZSAtLT5cclxuPGFwcC1yaXNrLWNsYXNzaWZpY2F0aW9uXHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jpc2tDYWxjdWxhdG9yJ1wiXHJcbiAgW2N1cnJlbnRSaXNrVmFsdWVdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJpc2tDbGFzc1wiXHJcbiAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhbGN1bGF0ZWRyaXNrJywgJGV2ZW50KVwiXHJcbiAgKGNsb3NlTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxyXG4+XHJcbjwvYXBwLXJpc2stY2xhc3NpZmljYXRpb24+XHJcblxyXG48YXBwLXJldmlldy1mcmVxdWVuY3lcclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcclxuICBbcmV2aWV3Q29tcGxldGVEYXlzXT1cIlxyXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Q29tcGxldGVEYXlzXHJcbiAgXCJcclxuICBbcmV2aWV3Tk90Q29tcGxldGVkRGF5c109XCJcclxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXNcclxuICBcIlxyXG4gIChzYXZlUmV2aWV3RnJlcXVlbmN5KT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld0ZyZXF1ZW5jeScsICRldmVudClcIlxyXG4gIChjbG9zZVJldmlld0ZyZXF1ZW5jeSk9XCJcclxuICAgIGFjdGl2ZURlc2VsZWN0b3IoKTtcclxuICAgIGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgZmFsc2UpO1xyXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gW107XHJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdXHJcbiAgXCJcclxuICAoYmFja1RvVXNlckxpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpOyBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIHRydWUpXCJcclxuPlxyXG48L2FwcC1yZXZpZXctZnJlcXVlbmN5PlxyXG5cclxuPGFwcC1hc3Nlc3NtZW50LWxpc3RcclxuICAqbmdJZj1cImlzQXNzZXNzbWVudFwiXHJcbiAgW3Byb2dyYW1faWRzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdPy5faWRcIlxyXG4gIChjYW5jZWxBc3Nlc3NtZW50KT1cIlxyXG4gICAgaXNBc3Nlc3NtZW50ID0gZmFsc2U7IGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIGZhbHNlKVxyXG4gIFwiXHJcbiAgW2lzRWRpdF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQgPyB0cnVlIDogZmFsc2VcIlxyXG4gIFtzZWxlY3RlZEFzc2Vzc21lbnRdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50XCJcclxuICAob25Bc3Nlc3NtZW50U2VsZWN0KT1cIlxyXG4gICAgb25Bc3Nlc3NtZW50U2VsZWN0KCRldmVudCk7IGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIGZhbHNlKVxyXG4gIFwiXHJcbj48L2FwcC1hc3Nlc3NtZW50LWxpc3Q+XHJcblxyXG48YXBwLXNtaWxleS1kaWFsb2ctaW5saW5lXHJcbiAgKm5nSWY9XCJzaG93U21pbGV5XCJcclxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcclxuICBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCJcclxuICAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCJcclxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXHJcbj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cclxuXHJcbjxkaXYgY2xhc3M9XCJpbXBvcnRcIiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMtbmV3J1wiPlxyXG4gIDxhcHAtY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyXHJcbiAgICAjZWRpdG9yXHJcbiAgICBbb3BlblBvcnRhbF09XCInUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCdcIlxyXG4gICAgKHBvc3RBc3Nlc3NtZW50KT1cInBvc3RBc3Nlc3NtZW50KCRldmVudClcIlxyXG4gICAgKHNldElzVXBsb2FkZWQpPVwic2V0SXNVcGxvYWRlZCgkZXZlbnQpXCJcclxuICAgIFtjaGVja3BvaW50SlNPTl09XCJyZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzXCJcclxuICA+XHJcbiAgPC9hcHAtY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxhcHAtZ3JjLW9iamVjdC1saXN0XHJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQ19PQkpFQ1RTJ1wiXHJcbiAgW2dyY09iamVjdF09XCJncmNMaXN0XCJcclxuICBbc2VsZWN0ZWRHUkNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyB8IHJlZkRpc2Nvbm5lY3RcIlxyXG4gIFtsb2FkZXJdPVwiZ3JjTG9hZGVyXCJcclxuICBbdGFibGVDYXJkXT1cIm90aGVyR1JDQ2FyZFwiXHJcbiAgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkR1JDVGFiXCJcclxuICBbY2FyZExvYWRlcl09XCJncmNUYWJMb2FkZXJcIlxyXG4gIChnZXRPdGhlckdSQ09iamVjdHMpPVwiZ2V0T3RoZXJHUkNPYmplY3RzKCRldmVudClcIlxyXG4gIChzYXZlT3RoZXJHUkMpPVwic2F2ZVNlbGVjdGVkTGlzdCgnR1JDX09CSkVDVFMnLCAkZXZlbnQpXCJcclxuICAoY2xvc2VPdGhlckdSQyk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIGZhbHNlKVwiXHJcbj48L2FwcC1ncmMtb2JqZWN0LWxpc3Q+XHJcbiJdfQ==