vcomply-workflow-engine 3.4.22 → 3.4.24

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.
Files changed (101) hide show
  1. package/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -4
  2. package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -3
  3. package/esm2020/lib/formgroup/cs-select/cs-select.component.mjs +5 -5
  4. package/esm2020/lib/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  5. package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +1 -11
  6. package/esm2020/lib/more-option/more-option.component.mjs +5 -6
  7. package/esm2020/lib/pipes/filter.pipe.mjs +1 -2
  8. package/esm2020/lib/pipes/search.pipe.mjs +3 -5
  9. package/esm2020/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +3 -7
  10. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +1 -5
  11. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +1 -7
  12. package/esm2020/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +80 -36
  13. package/esm2020/lib/sharedComponents/assessment-list/assessment-list.component.mjs +27 -21
  14. package/esm2020/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +7 -4
  15. package/esm2020/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +3 -4
  16. package/esm2020/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -9
  17. package/esm2020/lib/sharedComponents/bulk-view/bulk-view.component.mjs +9 -7
  18. package/esm2020/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +6 -8
  19. package/esm2020/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +93 -27
  20. package/esm2020/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +11 -9
  21. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +13 -12
  22. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +28 -19
  23. package/esm2020/lib/sharedComponents/floating-bar/floating-bar.component.mjs +8 -8
  24. package/esm2020/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +35 -37
  25. package/esm2020/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +7 -7
  26. package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -12
  27. package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -3
  28. package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -13
  29. package/esm2020/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +1 -7
  30. package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +1 -26
  31. package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +1 -15
  32. package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -14
  33. package/esm2020/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +14 -8
  34. package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -13
  35. package/esm2020/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +1 -2
  36. package/esm2020/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -18
  37. package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +2 -2
  38. package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +1 -12
  39. package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +2 -11
  40. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +1 -2
  41. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +1 -2
  42. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +1 -2
  43. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +1 -2
  44. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +1 -2
  45. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +1 -2
  46. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +2 -2
  47. package/esm2020/lib/sharedComponents/group-users-list/group-users-list.component.mjs +1 -3
  48. package/esm2020/lib/sharedComponents/link-program/link-program/link-program.component.mjs +48 -38
  49. package/esm2020/lib/sharedComponents/link-program/restapi.service.mjs +31 -16
  50. package/esm2020/lib/sharedComponents/no-data/no-data.component.mjs +2 -4
  51. package/esm2020/lib/sharedComponents/owner-list/owner-list.component.mjs +12 -10
  52. package/esm2020/lib/sharedComponents/program-listing/program-listing.component.mjs +127 -58
  53. package/esm2020/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +4 -7
  54. package/esm2020/lib/sharedComponents/risk-classification/risk-classification.component.mjs +11 -6
  55. package/esm2020/lib/sharedComponents/select-approvers/select-approvers.component.mjs +1 -2
  56. package/esm2020/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -3
  57. package/esm2020/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  58. package/esm2020/lib/ui-kit/popover/popover-longpress.directive.mjs +1 -3
  59. package/esm2020/lib/ui-kit/popover/popover.component.mjs +26 -12
  60. package/esm2020/lib/ui-kit/tooltip/tooltip.directive.mjs +8 -5
  61. package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -2
  62. package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +1 -4
  63. package/esm2020/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +1 -2
  64. package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +1 -4
  65. package/esm2020/lib/workflow/shared/components/table-card/table-card.component.mjs +4 -8
  66. package/esm2020/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +245 -108
  67. package/esm2020/lib/workflow-assessment/workflow-assessment.component.mjs +2 -4
  68. package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +10 -8
  69. package/esm2020/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -5
  70. package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +5 -5
  71. package/esm2020/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +45 -45
  72. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +43 -25
  73. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +4 -4
  74. package/esm2020/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +1 -2
  75. package/esm2020/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +25 -14
  76. package/esm2020/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +6 -3
  77. package/esm2020/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +25 -19
  78. package/esm2020/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +1 -4
  79. package/esm2020/lib/workflow-program/workflow-program.component.mjs +232 -110
  80. package/esm2020/lib/workflow-services/add-risk.service.mjs +1 -2
  81. package/esm2020/lib/workflow-services/assessment.service.mjs +1 -5
  82. package/esm2020/lib/workflow-services/programs.service.mjs +173 -57
  83. package/fesm2015/vcomply-workflow-engine.mjs +1380 -938
  84. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  85. package/fesm2020/vcomply-workflow-engine.mjs +1390 -943
  86. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  87. package/lib/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  88. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +4 -5
  89. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +2 -3
  90. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +2 -3
  91. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +2 -4
  92. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
  93. package/lib/sharedComponents/link-program/restapi.service.d.ts +3 -3
  94. package/lib/sharedComponents/no-data/no-data.component.d.ts +2 -4
  95. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  96. package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -3
  97. package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +2 -3
  98. package/lib/workflow/shared/components/table-card/table-card.component.d.ts +2 -5
  99. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +8 -9
  100. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +2 -4
  101. package/package.json +1 -1
@@ -168,7 +168,6 @@ export class WorkflowAssessmentComponent {
168
168
  }
169
169
  }
170
170
  validateAssessment() {
171
- // console.log("val",this.assessmentForm)
172
171
  this.submitted = true;
173
172
  if (!this.assessmentForm.name || this.assessmentForm.category.length == 0) {
174
173
  return false;
@@ -191,7 +190,6 @@ export class WorkflowAssessmentComponent {
191
190
  approval_required: true,
192
191
  source_page: 'compliance',
193
192
  };
194
- console.log('payload', payload);
195
193
  if (this.mode == 'CREATE') {
196
194
  this.assessmentService.addAssessment(payload).subscribe((res) => {
197
195
  this.disconnectRefresh.emit(false);
@@ -199,7 +197,7 @@ export class WorkflowAssessmentComponent {
199
197
  window.location.href = `https://${window.location.hostname}/assessment/create/${res?._id}`;
200
198
  this.loader = false;
201
199
  }, (err) => {
202
- console.log(err);
200
+ console.error(err);
203
201
  this.loader = false;
204
202
  this.uiKitService.isLoader = false;
205
203
  this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?', 'alert');
@@ -246,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
246
244
  }], closeWorkflow: [{
247
245
  type: Output
248
246
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYXNzZXNzbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1hc3Nlc3NtZW50L3dvcmtmbG93LWFzc2Vzc21lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctYXNzZXNzbWVudC93b3JrZmxvdy1hc3Nlc3NtZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjdkIsTUFBTSxPQUFPLDJCQUEyQjtJQStCdEMsWUFDUyxpQkFBb0MsRUFDbkMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsUUFBeUIsRUFDckIsTUFBdUI7UUFKNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQWxDbkMsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNWLFNBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2Ysc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCx5QkFBb0IsR0FBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLGtCQUFhLEdBQUc7WUFD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QUksQ0FBQztnQkFDekIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDbEIsSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFDeEI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLGtHQUFrRyxFQUNsRyxPQUFPLENBQ1IsQ0FBQztxQkFDSDtnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDOzt3SEEzT1UsMkJBQTJCOzRHQUEzQiwyQkFBMkIsc1FDckJ4QywrbWRBb05BOzJGRC9MYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UseUJBQXlCOzswQkF3Q2hDLFFBQVE7NENBL0JGLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQVlHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXNzZXNzbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1hc3Nlc3NtZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctYXNzZXNzbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctYXNzZXNzbWVudC5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGFjdGl2ZVNlbGVjdG9yOiBhbnkgPSAnJztcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBsb2FkZXIgPSBmYWxzZTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbW9kZSA9ICdFRElUJztcclxuICBASW5wdXQoKSBhc3Nlc3NtZW50SWQgPSAnJztcclxuICBASW5wdXQoKSBvcGVuZWRGcm9tID0gJyc7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzOiBhbnkgPSBbJ2NhdGVnb3J5J107XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIC8vIHsgYnV0dG9uVGV4dDogJ0FkZCBNb3JlIEFzc2Vzc21lbnRzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvblRleHQ6ICdHbyB0byBhc3Nlc3NtZW50IHdvcmtyb29tJyxcclxuICAgICAgY2xhc3M6ICdibHVlLWJ0bicsXHJcbiAgICAgIGlkOiAndmlld0Fzc2Vzc21lbnQnLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIGFzc2Vzc21lbnRUeXBlQ2hhbmdlQWxsb3dlZCA9IGZhbHNlO1xyXG4gIHRpbWV6b25lITogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGFzc2Vzc21lbnRGb3JtOiBhbnkgPSB7XHJcbiAgICBhc3Nlc3NtZW50VHlwZTogJ2NvbXBsaWFuY2UnLFxyXG4gICAgbmFtZTogJycsXHJcbiAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICBjYXRlZ29yeTogW10sXHJcbiAgICBjdXN0b21UYWdzOiBbXSxcclxuICB9O1xyXG4gIGFzc2Vzc21lbnREYXRhOiBhbnk7XHJcbiAgb3JnYW5pemF0aW9uSWQgPSAwO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGFzc2Vzc21lbnRTZXJ2aWNlOiBBc3Nlc3NtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICB0aGlzLnRpbWV6b25lID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyVGltZVpvbmUoKTtcclxuICB9XHJcbiAgc2VsZWN0b3JDb25maWcgPSB7XHJcbiAgICBBU1NFU1NNRU5UX0NBVEdPUlk6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBhbiBBc3Nlc3NtZW50IENhdGVnb3J5JyxcclxuICAgICAgZW50aXR5U2luZ3VsYXI6ICdDYXRlZ29yeSBzZWxlY3RlZC4nLFxyXG4gICAgICBlbnRpdHlQbHVyYWw6ICdDYXRlZ29yaWVzIHNlbGVjdGVkLicsXHJcbiAgICAgIGRpc3BsYXlLZXk6ICdjYXRlZ29yeV9uYW1lJyxcclxuICAgICAgaWRlbnRpZmllcktleTogJ2lkJyxcclxuICAgICAgcGFyZW50S2V5OiAnY2F0ZWdvcnlfcGFyZW50cycsXHJcbiAgICAgIHBhcmVudERpc3BsYXlLZXk6ICdwYXJlbnRfdHJlZScsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIGFuIGFzc2Vzc21lbnQgY2F0ZWdvcnkuJyxcclxuICAgICAgbm9EYXRhVGV4dDogJ05vIGFzc2Vzc21lbnQgY2F0ZWdvcmllcyBmb3VuZC4nLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy90aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnQ1JFQVRFJykge1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgfVxyXG4gICAgLy90aGlzLnNldENhdGVnb3J5KHsgc2VhcmNoS2V5OiAnJywgcGFnZTogMSB9KTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLmdldEFzc2Vzc21lbnREZXRhaWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBc3Nlc3NtZW50RGV0YWlscygpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2UuZ2V0QXNzZXNzbWVudERldGFpbHModGhpcy5hc3Nlc3NtZW50SWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudEZvcm0ubmFtZSA9IHJlcz8uYXNzZXNzbWVudF9uYW1lID8/ICcnO1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudEZvcm0uZGVzY3JpcHRpb24gPSByZXM/LmRlc2NyaXB0aW9uID8/ICcnO1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudEZvcm0uYXNzZXNzbWVudFR5cGUgPVxyXG4gICAgICAgICAgcmVzPy5hc3Nlc3NtZW50X3R5cGUgPz8gJ2NvbXBsaWFuY2UnO1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudEZvcm0uY2F0ZWdvcnkgPSByZXMuY2F0ZWdvcnlfYXJyLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGlkOiBlbGU/Ll9pZCwgY2F0ZWdvcnlfbmFtZTogZWxlPy5jYXRlZ29yeV9uYW1lIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9UaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmZXRjaGluZyB0aGUgbGlzdCBvZiBjYXRlZ29yaWVzXHJcbiAgc2V0Q2F0ZWdvcnkoZXZ0OiBhbnkpIHtcclxuICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2UuZmV0Y2hDYXRlZ29yeSh7XHJcbiAgICAgIHNlYXJjaF90aXRsZTogZXZ0LnNlYXJjaEtleSxcclxuICAgICAgcGFnZV9ubzogZXZ0LnBhZ2UsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScpIHtcclxuICAgICAgdGhpcy5zZXRDYXRlZ29yeSh7IHNlYXJjaEtleTogJycsIHBhZ2U6IDEgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XHJcbiAgICBpZiAodGhpcy5zaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmVEZXNlbGVjdG9yKCkge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgbmV4dCh0eXBlOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0NBVEVHT1JZJzoge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudEZvcm0uY2F0ZWdvcnkgPSBwYXlsb2FkO1xyXG4gICAgICAgIGlmICh0aGlzLmFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5Py5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLmFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5ID0gdGhpcy5hc3Nlc3NtZW50Rm9ybS5jYXRlZ29yeS5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jYXRlZ29yeV9uYW1lICE9ICd1bmNhdGVnb3JpemVkJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdjYXRlZ29yeSc6XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50Rm9ybS5jYXRlZ29yeSA9IHRoaXMuYXNzZXNzbWVudEZvcm0uY2F0ZWdvcnkuZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmlkICE9PSBldmVudD8uaWRcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgYSBkZXNjcmlwdGlvbicsXHJcbiAgfTtcclxuXHJcbiAgY2hhbmdlQXNzZXNzbWVudCh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXNzZXNzbWVudEZvcm0gPSB7IC4uLnRoaXMuYXNzZXNzbWVudEZvcm0sIC4uLnsgcmlza1R5cGU6IHR5cGUgfSB9O1xyXG4gIH1cclxuICBjbG9zZVNtaWxleShldnQ6IGFueSkge1xyXG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMuYXNzZXNzbWVudElkLCBjb25maXJtOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGFjdGlvbihldnQ6IGFueSkge1xyXG4gICAgaWYgKGV2dCA9PT0gJ3ZpZXdBc3Nlc3NtZW50Jykge1xyXG4gICAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGBodHRwczovLyR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfS9hc3Nlc3NtZW50L2Fzc2Vzc21lbnQtd29ya3Jvb20vP2lkPSR7dGhpcy5hc3Nlc3NtZW50SWR9YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRGVzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5hc3Nlc3NtZW50Rm9ybS5kZXNjcmlwdGlvbiA9PSAnPGJyPicpIHtcclxuICAgICAgdGhpcy5hc3Nlc3NtZW50Rm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3VibWl0QXNzZXNzbWVudCgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZUFzc2Vzc21lbnQoKTtcclxuICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jcmVhdGVBc3Nlc3NtZW50KHRoaXMuYXNzZXNzbWVudEZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVBc3Nlc3NtZW50KCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJ2YWxcIix0aGlzLmFzc2Vzc21lbnRGb3JtKVxyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLmFzc2Vzc21lbnRGb3JtLm5hbWUgfHwgdGhpcy5hc3Nlc3NtZW50Rm9ybS5jYXRlZ29yeS5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUFzc2Vzc21lbnQoYXNzZXNzbWVudEZvcm06IGFueSkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBhc3Nlc3NtZW50X25hbWU6IGFzc2Vzc21lbnRGb3JtLm5hbWUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBhc3Nlc3NtZW50Rm9ybS5kZXNjcmlwdGlvbixcclxuICAgICAgYXNzZXNzbWVudF90eXBlOiBhc3Nlc3NtZW50Rm9ybS5hc3Nlc3NtZW50VHlwZSxcclxuICAgICAgY2F0ZWdvcnlfYXJyOiB0aGlzLmFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5Lm1hcCgoZWxlOiBhbnkpID0+IGVsZS5pZCksXHJcbiAgICAgIGFwcHJvdmFsX3dvcmtmbG93X2Fycjoge1xyXG4gICAgICAgIHRlc3Q6ICd0ZXN0JyxcclxuICAgICAgfSxcclxuICAgICAgYXBwcm92YWxfcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgIHNvdXJjZV9wYWdlOiAnY29tcGxpYW5jZScsXHJcbiAgICB9O1xyXG4gICAgY29uc29sZS5sb2coJ3BheWxvYWQnLCBwYXlsb2FkKTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcclxuICAgICAgdGhpcy5hc3Nlc3NtZW50U2VydmljZS5hZGRBc3Nlc3NtZW50KHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLmFzc2Vzc21lbnRJZCA9IHJlcz8uX2lkO1xyXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgaHR0cHM6Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0vYXNzZXNzbWVudC9jcmVhdGUvJHtyZXM/Ll9pZH1gO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2VcclxuICAgICAgICAudXBkYXRlQXNzZXNzbWVudCh0aGlzLmFzc2Vzc21lbnRJZCwgcGF5bG9hZClcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycj8uZXJyb3IubWVzc2FnZS5zdGFydHNXaXRoKCdObyBjaGFuZ2VzJykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbG93LWFzc2Vzc21lbnRcIj5cclxuICAgIDwhLS0gQXNzZXNzbWVudCBUeXBlIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Fzc29jaWF0ZWQtcmlza3Muc3ZnXCIgYWx0PVwiaW1cIiAqbmdJZj1cInRydWVcIj5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BU1NFU1NNRU5UIFRZUEUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaXNrLXR5cGUtZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJhc3Nlc3NtZW50Rm9ybT8uYXNzZXNzbWVudFR5cGUgPT09ICdDT01QTElBTkNFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kaXNhYmxlZF09XCIhYXNzZXNzbWVudFR5cGVDaGFuZ2VBbGxvd2VkXCIgKGNsaWNrKT1cImNoYW5nZUFzc2Vzc21lbnQoJ0NPTVBMSUFOQ0UnKVwiPkNPTVBMSUFOQ0UgQVNTRVNTTUVOVDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGluZm9cIiBbYXBwVG9vbHRpcF09XCInQ29tcGxpYW5jZSBhc3Nlc3NtZW50IGluZm8gdGV4dCBoZXJlLi4uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMyOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kaXNhYmxlZF09XCIhYXNzZXNzbWVudFR5cGVDaGFuZ2VBbGxvd2VkXCIgKGNsaWNrKT1cImNoYW5nZUFzc2Vzc21lbnQoJ1JJU0snKVwiPlJJU0sgQVNTRVNTTUVOVDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGluZm9cIiBbYXBwVG9vbHRpcF09XCInUmlzayBhc3Nlc3NtZW50IGluZm8gdGV4dCBoZXJlLi4uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMyOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhY2tncm91bmQtZ2xpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+QWRkIGFuIGFzc2Vzc21lbnQgdHlwZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFzc2Vzc21lbnQgTmFtZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZScgICYmIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiIWFzc2Vzc21lbnRGb3JtLm5hbWUudHJpbSgpIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnbmFtZSdcIj5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybS5uYW1lLnRyaW0oKSAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCIgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFzc2Vzc21lbnQgTmFtZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleWRvd24pPVwiYWN0aXZlU2VsZWN0b3IgPSAnbmFtZSdcIiAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJyx0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsZmFsc2UpXCIgWyhuZ01vZGVsKV09XCJhc3Nlc3NtZW50Rm9ybS5uYW1lXCIgcGxhY2Vob2xkZXI9XCJBZGQgYW4gYXNzZXNzbWVudCBuYW1lXCIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybS5uYW1lID09JycgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybS5uYW1lLmxlbmd0aCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e2Fzc2Vzc21lbnRGb3JtLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJyx0cnVlKVwidHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN1Ym1pdHRlZCAmJiAoIWFzc2Vzc21lbnRGb3JtLm5hbWUudHJpbSgpKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkVudGVyIGEgbmFtZSBmb3IgdGhpcyBBc3Nlc3NtZW50LjwvcD5cclxuICAgICAgICAgICAgICAgIDx2Y29tcGx5LWVkaXRvciBbKG5nTW9kZWwpXT1cImFzc2Vzc21lbnRGb3JtLmRlc2NyaXB0aW9uXCIgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiIChjbGlja091dHNpZGUpPVwiY2hlY2tEZXNjcmlwdGlvbigpXCI+PC92Y29tcGx5LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgKGFzc2Vzc21lbnRGb3JtLmFzc2Vzc21lbnRUeXBlID09PSdDT01QTElBTkNFJyAmJiAhYXNzZXNzbWVudEZvcm0/LmRlc2NyaXB0aW9uPy50cmltKCk/Lmxlbmd0aClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5BZGQgYW4gYXNzZXNzbWVudCBkZXNjcmlwdGlvbjwvcD4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBc3Nlc3NtZW50IENhdGVnb3J5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5JyAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGggfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIiBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCIgYWx0PVwiXCIgLz5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiAqbmdJZj1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeT8ubGVuZ3RoICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BU1NFU1NNRU5UIENBVEVHT1JZIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCIhYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLHRydWUpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY2F0ZWdvcnkgZm9yIHRoaXMgYXNzZXNzbWVudFwiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAqbmdJZj1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeVswXT8uY2F0ZWdvcnlfbmFtZSAhPT0gJ3VuY2F0ZWdvcml6ZWQnXCIgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLGFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5WzBdKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeVswXT8uY2F0ZWdvcnlfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2Fzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeVswXT8uY2F0ZWdvcnlfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImNhdGVnb3J5LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnk/Lmxlbmd0aCA+IDFcIj4re3thc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnk/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpICpuZ0lmPVwiYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5WzBdPy5jYXRlZ29yeV9uYW1lICE9PSAndW5jYXRlZ29yaXplZCdcIiBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLGFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5WzBdKVwiPiYjeGU5MGQ7PC9pPnt7YXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5WzBdPy5jYXRlZ29yeV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwiYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGggPiAxXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiY2F0ZWdvcnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3thc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnk/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLHRydWUpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3VibWl0dGVkICYmICghYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGgpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+U2VsZWN0IHRoZSBBc3Nlc3NtZW50IENhdGVnb3J5LjwvcD5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjY2F0ZWdvcnkgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBhc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnkgfCBzbGljZTogMTsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLGNhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybT8uY3VzdG9tVGFncz8ubGVuZ3RoPjBcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCB0YWcgb2YgYXNzZXNzbWVudEZvcm0uY3VzdG9tVGFnc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj57e3RhZy5jdXN0b21fdGFnX25hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgIFsobmdNb2RlbCldPVwidGFnLmN1c3RvbV90YWdfdmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwidGFnLmN1c3RvbV90YWdfbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXNzZXNzbWVudCBBcHByb3ZhbCBXb3JrZmxvdyAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwidHJ1ZVwiIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hcHByb3ZhbC5zdmdcIiBhbHQ9XCJpbVwiPlxyXG5cclxuICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCBhcHByb3ZhbC13b3JrZmxvd1wiIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFwcHJvdmFsIHdvcmtmbG93IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIj5DUkVBVEUgQSBORVcgQVBQUk9WQUwgV09SS0ZMT1c8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCIgKm5nSWY9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhcHByb3ZlcnMgZm9yIHRoaXMgYXNzZXNzbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbj50ZXN0PC9jcy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1vcHRpb24+Q3JlYXRlIGEgbmV3IGFwcHJvdmFsIHdvcmtmbG93PC9jcy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoPkFQUFJPVkFMIE5PVCBSRVFVSVJFRCA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0FwcHJvdmFsIHdvcmtmbG93IGluZm8gdGV4dCBoZXJlLi4uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHR5cGU9XCJ3aGl0ZVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMyOzwvaT48L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGl0bGVcIj5MZXZlbCAxPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPmxhdmVsIG5hbWU8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwXCIgKm5nSWY9XCJ0cnVlXCIgPjE8L3NwYW4+YXBwcm92YWwgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJ0cnVlXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImxhYmVsTmFtZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPis4PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNsYWJlbE5hbWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIFsxLCAxLCAxLCAxLCAxLCAxLCAxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwXCI+Mjwvc3Bhbj5hcHByb3ZhbCBuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJ0cnVlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+U2VsZWN0IG9yIGNyZWF0ZSBhbiBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBhc3Nlc3NtZW50LjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgKm5nSWY9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiPisgQWRkIE1vcmUgTGV2ZWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoYXNzZXNzbWVudFNlcnZpY2U/LmNhdGVnb3JpZXNMaXN0RGF0YSR8YXN5bmMpIGFzIGNhdGVnb3JpZXNcIj5cclxuXHJcbjxhcHAtcmFkaW8tbGlzdC13aXRoLXBhZ2luYXRpb24gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxyXG4gICAgICAgICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3JpZXM/LmRhdGFcIlxyXG4gICAgICAgICBbY29uZmlnXT1cInNlbGVjdG9yQ29uZmlnPy5BU1NFU1NNRU5UX0NBVEdPUllcIlxyXG4gICAgICAgICBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcmllcz8uY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICBbcmVjb3JkU3RhcnRdPVwiY2F0ZWdvcmllcz8uc3RhcnRfdmFsdWVcIlxyXG4gICAgICAgICBbcmVjb3JkRW5kXT1cImNhdGVnb3JpZXM/LmVuZF92YWx1ZVwiXHJcbiAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwiY2F0ZWdvcmllcz8udG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgW3RvdGFsUGFnZXNdPVwiY2F0ZWdvcmllcz8udG90YWxQYWdlXCJcclxuICAgICAgICAgW2xvYWRpbmddID0gXCJhc3Nlc3NtZW50U2VydmljZT8uY2F0ZWdvcmllc0xvYWRpbmckfGFzeW5jXCJcclxuICAgICAgICAgKGZldGNoRGF0YSk9XCJzZXRDYXRlZ29yeSgkZXZlbnQpXCJcclxuICAgICAgICAgKG5leHQpPVwibmV4dCgnQ0FURUdPUlknLCRldmVudClcIlxyXG4gICAgICAgICBbc2VsZWN0ZWRMaXN0XT1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeSB8dW5jYXRlZ29yaXplZEZpbHRlclwiXHJcbiAgICAgICAgIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICAgICAgICAgKGJhY2spPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICAgID48L2FwcC1yYWRpby1saXN0LXdpdGgtcGFnaW5hdGlvbj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcclxuICAgICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcclxuICAgIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxyXG4gICAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPlxyXG48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cclxuPCEtLSA8YXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lcj48L2FwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXI+IC0tPlxyXG4iXX0=
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYXNzZXNzbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1hc3Nlc3NtZW50L3dvcmtmbG93LWFzc2Vzc21lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctYXNzZXNzbWVudC93b3JrZmxvdy1hc3Nlc3NtZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjdkIsTUFBTSxPQUFPLDJCQUEyQjtJQStCdEMsWUFDUyxpQkFBb0MsRUFDbkMsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsUUFBeUIsRUFDckIsTUFBdUI7UUFKNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQWxDbkMsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNWLFNBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2Ysc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCx5QkFBb0IsR0FBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLGtCQUFhLEdBQUc7WUFDZCw2RUFBNkU7WUFDN0U7Z0JBQ0UsVUFBVSxFQUFFLDJCQUEyQjtnQkFDdkMsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLEVBQUUsRUFBRSxnQkFBZ0I7YUFDckI7U0FDRixDQUFDO1FBQ0YsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0MsbUJBQWMsR0FBUTtZQUNwQixjQUFjLEVBQUUsWUFBWTtZQUM1QixJQUFJLEVBQUUsRUFBRTtZQUNSLFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFFRixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQVVuQixtQkFBYyxHQUFHO1lBQ2Ysa0JBQWtCLEVBQUU7Z0JBQ2xCLFVBQVUsRUFBRSwrQkFBK0I7Z0JBQzNDLGNBQWMsRUFBRSxvQkFBb0I7Z0JBQ3BDLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLFVBQVUsRUFBRSxlQUFlO2dCQUMzQixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsU0FBUyxFQUFFLGtCQUFrQjtnQkFDN0IsZ0JBQWdCLEVBQUUsYUFBYTtnQkFDL0IsaUJBQWlCLEVBQUUsZ0NBQWdDO2dCQUNuRCxVQUFVLEVBQUUsaUNBQWlDO2FBQzlDO1NBQ0YsQ0FBQztRQWlGRixnQkFBVyxHQUFpQjtZQUMxQixJQUFJLEVBQUUsT0FBTztZQUNiLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLG1CQUFtQjtTQUNqQyxDQUFDO1FBcEdBLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBY0QsUUFBUTtRQUNOLHFCQUFxQjtRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVEO1FBQ0QsK0NBQStDO1FBQy9DLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3ZFLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYztvQkFDaEMsR0FBRyxFQUFFLGVBQWUsSUFBSSxZQUFZLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixrR0FBa0csRUFDbEcsT0FBTyxDQUNSLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsV0FBVyxDQUFDLEdBQVE7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztZQUNuQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFNBQVM7WUFDM0IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsS0FBYztRQUN4QyxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDOUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBWSxFQUFFLE9BQVk7UUFDN0IsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ3ZDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNoRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsSUFBSSxlQUFlLENBQ3BELENBQUM7aUJBQ0g7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFTLEVBQUUsS0FBVTtRQUMxQixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ2hFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQ3BDLENBQUM7U0FDTDtJQUNILENBQUM7SUFTRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFDRCxXQUFXLENBQUMsR0FBUTtRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBUTtRQUNiLElBQUksR0FBRyxLQUFLLGdCQUFnQixFQUFFO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsV0FBVyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsdUNBQXVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN0SDtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxJQUFJLE1BQU0sRUFBRTtZQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3pFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsY0FBbUI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRW5DLE1BQU0sT0FBTyxHQUFHO1lBQ2QsZUFBZSxFQUFFLGNBQWMsQ0FBQyxJQUFJO1lBQ3BDLFdBQVcsRUFBRSxjQUFjLENBQUMsV0FBVztZQUN2QyxlQUFlLEVBQUUsY0FBYyxDQUFDLGNBQWM7WUFDOUMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxxQkFBcUIsRUFBRTtnQkFDckIsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNELGlCQUFpQixFQUFFLElBQUk7WUFDdkIsV0FBVyxFQUFFLFlBQVk7U0FDMUIsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3JELENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxXQUFXLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxzQkFBc0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2dCQUMzRixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDLEVBQ0QsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsa0dBQWtHLEVBQ2xHLE9BQU8sQ0FDUixDQUFDO1lBQ0osQ0FBQyxDQUNGLENBQUM7U0FDSDthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGlCQUFpQjtpQkFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7aUJBQzVDLFNBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNsQixJQUFJLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTt3QkFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3FCQUN4Qjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsa0dBQWtHLEVBQ2xHLE9BQU8sQ0FDUixDQUFDO3FCQUNIO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7O3dIQXpPVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixzUUNyQnhDLCttZEFvTkE7MkZEL0xhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQXdDaEMsUUFBUTs0Q0EvQkYsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBWUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hc3Nlc3NtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LWFzc2Vzc21lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1hc3Nlc3NtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1hc3Nlc3NtZW50LmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgYWN0aXZlU2VsZWN0b3I6IGFueSA9ICcnO1xyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIGxvYWRlciA9IGZhbHNlO1xyXG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb2RlID0gJ0VESVQnO1xyXG4gIEBJbnB1dCgpIGFzc2Vzc21lbnRJZCA9ICcnO1xyXG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gPSAnJztcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFsnY2F0ZWdvcnknXTtcclxuICBhY3Rpb25CdXR0b25zID0gW1xyXG4gICAgLy8geyBidXR0b25UZXh0OiAnQWRkIE1vcmUgQXNzZXNzbWVudHMnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgIHtcclxuICAgICAgYnV0dG9uVGV4dDogJ0dvIHRvIGFzc2Vzc21lbnQgd29ya3Jvb20nLFxyXG4gICAgICBjbGFzczogJ2JsdWUtYnRuJyxcclxuICAgICAgaWQ6ICd2aWV3QXNzZXNzbWVudCcsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgYXNzZXNzbWVudFR5cGVDaGFuZ2VBbGxvd2VkID0gZmFsc2U7XHJcbiAgdGltZXpvbmUhOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgYXNzZXNzbWVudEZvcm06IGFueSA9IHtcclxuICAgIGFzc2Vzc21lbnRUeXBlOiAnY29tcGxpYW5jZScsXHJcbiAgICBuYW1lOiAnJyxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIGNhdGVnb3J5OiBbXSxcclxuICAgIGN1c3RvbVRhZ3M6IFtdLFxyXG4gIH07XHJcbiAgYXNzZXNzbWVudERhdGE6IGFueTtcclxuICBvcmdhbml6YXRpb25JZCA9IDA7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXNzZXNzbWVudFNlcnZpY2U6IEFzc2Vzc21lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcclxuICApIHtcclxuICAgIHRoaXMudGltZXpvbmUgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJUaW1lWm9uZSgpO1xyXG4gIH1cclxuICBzZWxlY3RvckNvbmZpZyA9IHtcclxuICAgIEFTU0VTU01FTlRfQ0FUR09SWToge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IGFuIEFzc2Vzc21lbnQgQ2F0ZWdvcnknLFxyXG4gICAgICBlbnRpdHlTaW5ndWxhcjogJ0NhdGVnb3J5IHNlbGVjdGVkLicsXHJcbiAgICAgIGVudGl0eVBsdXJhbDogJ0NhdGVnb3JpZXMgc2VsZWN0ZWQuJyxcclxuICAgICAgZGlzcGxheUtleTogJ2NhdGVnb3J5X25hbWUnLFxyXG4gICAgICBpZGVudGlmaWVyS2V5OiAnaWQnLFxyXG4gICAgICBwYXJlbnRLZXk6ICdjYXRlZ29yeV9wYXJlbnRzJyxcclxuICAgICAgcGFyZW50RGlzcGxheUtleTogJ3BhcmVudF90cmVlJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggYW4gYXNzZXNzbWVudCBjYXRlZ29yeS4nLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gYXNzZXNzbWVudCBjYXRlZ29yaWVzIGZvdW5kLicsXHJcbiAgICB9LFxyXG4gIH07XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvL3RoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuc2V0Q2F0ZWdvcnkoeyBzZWFyY2hLZXk6ICcnLCBwYWdlOiAxIH0pO1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuZ2V0QXNzZXNzbWVudERldGFpbHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFzc2Vzc21lbnREZXRhaWxzKCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50U2VydmljZS5nZXRBc3Nlc3NtZW50RGV0YWlscyh0aGlzLmFzc2Vzc21lbnRJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50Rm9ybS5uYW1lID0gcmVzPy5hc3Nlc3NtZW50X25hbWUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50Rm9ybS5kZXNjcmlwdGlvbiA9IHJlcz8uZGVzY3JpcHRpb24gPz8gJyc7XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50Rm9ybS5hc3Nlc3NtZW50VHlwZSA9XHJcbiAgICAgICAgICByZXM/LmFzc2Vzc21lbnRfdHlwZSA/PyAnY29tcGxpYW5jZSc7XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50Rm9ybS5jYXRlZ29yeSA9IHJlcy5jYXRlZ29yeV9hcnIubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IGVsZT8uX2lkLCBjYXRlZ29yeV9uYW1lOiBlbGU/LmNhdGVnb3J5X25hbWUgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL1RoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZldGNoaW5nIHRoZSBsaXN0IG9mIGNhdGVnb3JpZXNcclxuICBzZXRDYXRlZ29yeShldnQ6IGFueSkge1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50U2VydmljZS5mZXRjaENhdGVnb3J5KHtcclxuICAgICAgc2VhcmNoX3RpdGxlOiBldnQuc2VhcmNoS2V5LFxyXG4gICAgICBwYWdlX25vOiBldnQucGFnZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xyXG4gICAgICB0aGlzLnNldENhdGVnb3J5KHsgc2VhcmNoS2V5OiAnJywgcGFnZTogMSB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcclxuICAgIGlmICh0aGlzLnNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2ZURlc2VsZWN0b3IoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBuZXh0KHR5cGU6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnQ0FURUdPUlknOiB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50Rm9ybS5jYXRlZ29yeSA9IHBheWxvYWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuYXNzZXNzbWVudEZvcm0uY2F0ZWdvcnk/Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMuYXNzZXNzbWVudEZvcm0uY2F0ZWdvcnkgPSB0aGlzLmFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5LmZpbHRlcihcclxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNhdGVnb3J5X25hbWUgIT0gJ3VuY2F0ZWdvcml6ZWQnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKHR5cGU6IGFueSwgZXZlbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICB0aGlzLmFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5ID0gdGhpcy5hc3Nlc3NtZW50Rm9ybS5jYXRlZ29yeS5maWx0ZXIoXHJcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uaWQgIT09IGV2ZW50Py5pZFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uJyxcclxuICB9O1xyXG5cclxuICBjaGFuZ2VBc3Nlc3NtZW50KHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50Rm9ybSA9IHsgLi4udGhpcy5hc3Nlc3NtZW50Rm9ybSwgLi4ueyByaXNrVHlwZTogdHlwZSB9IH07XHJcbiAgfVxyXG4gIGNsb3NlU21pbGV5KGV2dDogYW55KSB7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5hc3Nlc3NtZW50SWQsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uKGV2dDogYW55KSB7XHJcbiAgICBpZiAoZXZ0ID09PSAndmlld0Fzc2Vzc21lbnQnKSB7XHJcbiAgICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYGh0dHBzOi8vJHt3aW5kb3cubG9jYXRpb24uaG9zdG5hbWV9L2Fzc2Vzc21lbnQvYXNzZXNzbWVudC13b3Jrcm9vbS8/aWQ9JHt0aGlzLmFzc2Vzc21lbnRJZH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tEZXNjcmlwdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmFzc2Vzc21lbnRGb3JtLmRlc2NyaXB0aW9uID09ICc8YnI+Jykge1xyXG4gICAgICB0aGlzLmFzc2Vzc21lbnRGb3JtLmRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdWJtaXRBc3Nlc3NtZW50KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlQXNzZXNzbWVudCgpO1xyXG4gICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZUFzc2Vzc21lbnQodGhpcy5hc3Nlc3NtZW50Rm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUFzc2Vzc21lbnQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMuYXNzZXNzbWVudEZvcm0ubmFtZSB8fCB0aGlzLmFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlQXNzZXNzbWVudChhc3Nlc3NtZW50Rm9ybTogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGFzc2Vzc21lbnRfbmFtZTogYXNzZXNzbWVudEZvcm0ubmFtZSxcclxuICAgICAgZGVzY3JpcHRpb246IGFzc2Vzc21lbnRGb3JtLmRlc2NyaXB0aW9uLFxyXG4gICAgICBhc3Nlc3NtZW50X3R5cGU6IGFzc2Vzc21lbnRGb3JtLmFzc2Vzc21lbnRUeXBlLFxyXG4gICAgICBjYXRlZ29yeV9hcnI6IHRoaXMuYXNzZXNzbWVudEZvcm0uY2F0ZWdvcnkubWFwKChlbGU6IGFueSkgPT4gZWxlLmlkKSxcclxuICAgICAgYXBwcm92YWxfd29ya2Zsb3dfYXJyOiB7XHJcbiAgICAgICAgdGVzdDogJ3Rlc3QnLFxyXG4gICAgICB9LFxyXG4gICAgICBhcHByb3ZhbF9yZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgc291cmNlX3BhZ2U6ICdjb21wbGlhbmNlJyxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2UuYWRkQXNzZXNzbWVudChwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5hc3Nlc3NtZW50SWQgPSByZXM/Ll9pZDtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYGh0dHBzOi8vJHt3aW5kb3cubG9jYXRpb24uaG9zdG5hbWV9L2Fzc2Vzc21lbnQvY3JlYXRlLyR7cmVzPy5faWR9YDtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2VcclxuICAgICAgICAudXBkYXRlQXNzZXNzbWVudCh0aGlzLmFzc2Vzc21lbnRJZCwgcGF5bG9hZClcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycj8uZXJyb3IubWVzc2FnZS5zdGFydHNXaXRoKCdObyBjaGFuZ2VzJykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbG93LWFzc2Vzc21lbnRcIj5cclxuICAgIDwhLS0gQXNzZXNzbWVudCBUeXBlIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2Fzc29jaWF0ZWQtcmlza3Muc3ZnXCIgYWx0PVwiaW1cIiAqbmdJZj1cInRydWVcIj5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BU1NFU1NNRU5UIFRZUEUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaXNrLXR5cGUtZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJhc3Nlc3NtZW50Rm9ybT8uYXNzZXNzbWVudFR5cGUgPT09ICdDT01QTElBTkNFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kaXNhYmxlZF09XCIhYXNzZXNzbWVudFR5cGVDaGFuZ2VBbGxvd2VkXCIgKGNsaWNrKT1cImNoYW5nZUFzc2Vzc21lbnQoJ0NPTVBMSUFOQ0UnKVwiPkNPTVBMSUFOQ0UgQVNTRVNTTUVOVDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGluZm9cIiBbYXBwVG9vbHRpcF09XCInQ29tcGxpYW5jZSBhc3Nlc3NtZW50IGluZm8gdGV4dCBoZXJlLi4uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMyOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kaXNhYmxlZF09XCIhYXNzZXNzbWVudFR5cGVDaGFuZ2VBbGxvd2VkXCIgKGNsaWNrKT1cImNoYW5nZUFzc2Vzc21lbnQoJ1JJU0snKVwiPlJJU0sgQVNTRVNTTUVOVDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGluZm9cIiBbYXBwVG9vbHRpcF09XCInUmlzayBhc3Nlc3NtZW50IGluZm8gdGV4dCBoZXJlLi4uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJ3aGl0ZVwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMyOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhY2tncm91bmQtZ2xpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+QWRkIGFuIGFzc2Vzc21lbnQgdHlwZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFzc2Vzc21lbnQgTmFtZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZScgICYmIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIiBhbHQ9XCJpbVwiICpuZ0lmPVwiIWFzc2Vzc21lbnRGb3JtLm5hbWUudHJpbSgpIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnbmFtZSdcIj5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybS5uYW1lLnRyaW0oKSAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCIgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFzc2Vzc21lbnQgTmFtZSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleWRvd24pPVwiYWN0aXZlU2VsZWN0b3IgPSAnbmFtZSdcIiAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJyx0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsZmFsc2UpXCIgWyhuZ01vZGVsKV09XCJhc3Nlc3NtZW50Rm9ybS5uYW1lXCIgcGxhY2Vob2xkZXI9XCJBZGQgYW4gYXNzZXNzbWVudCBuYW1lXCIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybS5uYW1lID09JycgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybS5uYW1lLmxlbmd0aCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e2Fzc2Vzc21lbnRGb3JtLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdFwiIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJyx0cnVlKVwidHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN1Ym1pdHRlZCAmJiAoIWFzc2Vzc21lbnRGb3JtLm5hbWUudHJpbSgpKVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkVudGVyIGEgbmFtZSBmb3IgdGhpcyBBc3Nlc3NtZW50LjwvcD5cclxuICAgICAgICAgICAgICAgIDx2Y29tcGx5LWVkaXRvciBbKG5nTW9kZWwpXT1cImFzc2Vzc21lbnRGb3JtLmRlc2NyaXB0aW9uXCIgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiIChjbGlja091dHNpZGUpPVwiY2hlY2tEZXNjcmlwdGlvbigpXCI+PC92Y29tcGx5LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgKGFzc2Vzc21lbnRGb3JtLmFzc2Vzc21lbnRUeXBlID09PSdDT01QTElBTkNFJyAmJiAhYXNzZXNzbWVudEZvcm0/LmRlc2NyaXB0aW9uPy50cmltKCk/Lmxlbmd0aClcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5BZGQgYW4gYXNzZXNzbWVudCBkZXNjcmlwdGlvbjwvcD4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBc3Nlc3NtZW50IENhdGVnb3J5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5JyAmJiBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGggfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIiBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCIgYWx0PVwiXCIgLz5cclxuXHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiAqbmdJZj1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeT8ubGVuZ3RoICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5BU1NFU1NNRU5UIENBVEVHT1JZIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCIhYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLHRydWUpXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY2F0ZWdvcnkgZm9yIHRoaXMgYXNzZXNzbWVudFwiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIiAqbmdJZj1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeVswXT8uY2F0ZWdvcnlfbmFtZSAhPT0gJ3VuY2F0ZWdvcml6ZWQnXCIgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLGFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5WzBdKVwiPiYjeGU5YWU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeVswXT8uY2F0ZWdvcnlfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2Fzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeVswXT8uY2F0ZWdvcnlfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImNhdGVnb3J5LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnk/Lmxlbmd0aCA+IDFcIj4re3thc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnk/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpICpuZ0lmPVwiYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5WzBdPy5jYXRlZ29yeV9uYW1lICE9PSAndW5jYXRlZ29yaXplZCdcIiBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLGFzc2Vzc21lbnRGb3JtLmNhdGVnb3J5WzBdKVwiPiYjeGU5MGQ7PC9pPnt7YXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5WzBdPy5jYXRlZ29yeV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwiYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGggPiAxXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiY2F0ZWdvcnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3thc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnk/Lmxlbmd0aCAtMX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLHRydWUpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3VibWl0dGVkICYmICghYXNzZXNzbWVudEZvcm0/LmNhdGVnb3J5Py5sZW5ndGgpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+U2VsZWN0IHRoZSBBc3Nlc3NtZW50IENhdGVnb3J5LjwvcD5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjY2F0ZWdvcnkgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBhc3Nlc3NtZW50Rm9ybT8uY2F0ZWdvcnkgfCBzbGljZTogMTsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLGNhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3Nlc3NtZW50Rm9ybT8uY3VzdG9tVGFncz8ubGVuZ3RoPjBcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCB0YWcgb2YgYXNzZXNzbWVudEZvcm0uY3VzdG9tVGFnc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj57e3RhZy5jdXN0b21fdGFnX25hbWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgIFsobmdNb2RlbCldPVwidGFnLmN1c3RvbV90YWdfdmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwidGFnLmN1c3RvbV90YWdfbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXNzZXNzbWVudCBBcHByb3ZhbCBXb3JrZmxvdyAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImZhbHNlXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwidHJ1ZVwiIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hcHByb3ZhbC5zdmdcIiBhbHQ9XCJpbVwiPlxyXG5cclxuICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCBhcHByb3ZhbC13b3JrZmxvd1wiIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFwcHJvdmFsIHdvcmtmbG93IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIj5DUkVBVEUgQSBORVcgQVBQUk9WQUwgV09SS0ZMT1c8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCIgKm5nSWY9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhcHByb3ZlcnMgZm9yIHRoaXMgYXNzZXNzbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbj50ZXN0PC9jcy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjcy1vcHRpb24+Q3JlYXRlIGEgbmV3IGFwcHJvdmFsIHdvcmtmbG93PC9jcy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoPkFQUFJPVkFMIE5PVCBSRVFVSVJFRCA8aSBjbGFzcz1cImljb25zXCIgW2FwcFRvb2x0aXBdPVwiJ0FwcHJvdmFsIHdvcmtmbG93IGluZm8gdGV4dCBoZXJlLi4uJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHR5cGU9XCJ3aGl0ZVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMyOzwvaT48L2FwcC1jcy1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGl0bGVcIj5MZXZlbCAxPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPmxhdmVsIG5hbWU8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwXCIgKm5nSWY9XCJ0cnVlXCIgPjE8L3NwYW4+YXBwcm92YWwgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJ0cnVlXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImxhYmVsTmFtZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPis4PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNsYWJlbE5hbWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIFsxLCAxLCAxLCAxLCAxLCAxLCAxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwXCI+Mjwvc3Bhbj5hcHByb3ZhbCBuYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJ0cnVlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+U2VsZWN0IG9yIGNyZWF0ZSBhbiBhcHByb3ZhbCB3b3JrZmxvdyBmb3IgdGhpcyBhc3Nlc3NtZW50LjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgKm5nSWY9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiPisgQWRkIE1vcmUgTGV2ZWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoYXNzZXNzbWVudFNlcnZpY2U/LmNhdGVnb3JpZXNMaXN0RGF0YSR8YXN5bmMpIGFzIGNhdGVnb3JpZXNcIj5cclxuXHJcbjxhcHAtcmFkaW8tbGlzdC13aXRoLXBhZ2luYXRpb24gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxyXG4gICAgICAgICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3JpZXM/LmRhdGFcIlxyXG4gICAgICAgICBbY29uZmlnXT1cInNlbGVjdG9yQ29uZmlnPy5BU1NFU1NNRU5UX0NBVEdPUllcIlxyXG4gICAgICAgICBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcmllcz8uY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICBbcmVjb3JkU3RhcnRdPVwiY2F0ZWdvcmllcz8uc3RhcnRfdmFsdWVcIlxyXG4gICAgICAgICBbcmVjb3JkRW5kXT1cImNhdGVnb3JpZXM/LmVuZF92YWx1ZVwiXHJcbiAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwiY2F0ZWdvcmllcz8udG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgW3RvdGFsUGFnZXNdPVwiY2F0ZWdvcmllcz8udG90YWxQYWdlXCJcclxuICAgICAgICAgW2xvYWRpbmddID0gXCJhc3Nlc3NtZW50U2VydmljZT8uY2F0ZWdvcmllc0xvYWRpbmckfGFzeW5jXCJcclxuICAgICAgICAgKGZldGNoRGF0YSk9XCJzZXRDYXRlZ29yeSgkZXZlbnQpXCJcclxuICAgICAgICAgKG5leHQpPVwibmV4dCgnQ0FURUdPUlknLCRldmVudClcIlxyXG4gICAgICAgICBbc2VsZWN0ZWRMaXN0XT1cImFzc2Vzc21lbnRGb3JtPy5jYXRlZ29yeSB8dW5jYXRlZ29yaXplZEZpbHRlclwiXHJcbiAgICAgICAgIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICAgICAgICAgKGJhY2spPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcclxuICAgID48L2FwcC1yYWRpby1saXN0LXdpdGgtcGFnaW5hdGlvbj5cclxuPC9uZy1jb250YWluZXI+XHJcbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcclxuICAgICpuZ0lmPVwic2hvd1NtaWxleVwiXHJcbiAgICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcclxuICAgIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxyXG4gICAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiPlxyXG48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cclxuPCEtLSA8YXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lcj48L2FwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXI+IC0tPlxyXG4iXX0=