@cqa-lib/cqa-ui 1.1.361 → 1.1.363

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 (24) hide show
  1. package/esm2020/lib/execution-screen/ai-action-step/ai-action-step.component.mjs +3 -1
  2. package/esm2020/lib/execution-screen/api-step/api-step.component.mjs +3 -2
  3. package/esm2020/lib/execution-screen/basic-step/basic-step.component.mjs +5 -2
  4. package/esm2020/lib/execution-screen/condition-step/condition-step.component.mjs +5 -2
  5. package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +2 -2
  6. package/esm2020/lib/execution-screen/document-verification-step/document-verification-step.component.mjs +4 -1
  7. package/esm2020/lib/execution-screen/live-execution-step/live-execution-step.component.mjs +4 -1
  8. package/esm2020/lib/execution-screen/loop-step/loop-step.component.mjs +21 -4
  9. package/esm2020/lib/execution-screen/step-group/step-group.component.mjs +9 -4
  10. package/esm2020/lib/execution-screen/step-renderer/step-renderer.component.mjs +46 -9
  11. package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +29 -4
  12. package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +1 -1
  13. package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +121 -11
  14. package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +21 -6
  15. package/fesm2015/cqa-lib-cqa-ui.mjs +272 -43
  16. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  17. package/fesm2020/cqa-lib-cqa-ui.mjs +255 -31
  18. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  19. package/lib/execution-screen/loop-step/loop-step.component.d.ts +4 -1
  20. package/lib/execution-screen/step-renderer/step-renderer.component.d.ts +3 -1
  21. package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +7 -1
  22. package/lib/step-builder/step-builder-loop/step-builder-loop.component.d.ts +23 -1
  23. package/lib/step-builder/template-variables-form/template-variables-form.component.d.ts +2 -1
  24. package/package.json +1 -1
@@ -114,7 +114,7 @@ export class DbVerificationStepComponent extends BaseStepComponent {
114
114
  }
115
115
  ngOnChanges(changes) {
116
116
  // Update config when inputs change
117
- if (changes['dbTestResult'] || changes['dbConfig'] || changes['expanded'] || changes['status'] || changes['duration'] || changes['stepDeleted']) {
117
+ if (changes['dbTestResult'] || changes['dbConfig'] || changes['expanded'] || changes['status'] || changes['duration'] || changes['stepDeleted'] || changes['stepNumber']) {
118
118
  this.updateConfig();
119
119
  if (changes['dbTestResult']) {
120
120
  this.setupTableColumns();
@@ -799,4 +799,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
799
799
  }], selfHealAction: [{
800
800
  type: Output
801
801
  }] } });
802
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGItdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2RiLXZlcmlmaWNhdGlvbi1zdGVwL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9kYi12ZXJpZmljYXRpb24tc3RlcC9kYi12ZXJpZmljYXRpb24tc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsWUFBWSxFQUFFLE1BQU0sRUFBeUMsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFxTyw2QkFBNkIsRUFBc0IsOEJBQThCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoVyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFTaEYsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGlCQUFpQjtJQWdFaEUsWUFBb0IsR0FBc0I7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWxEakMsWUFBTyxHQUFhLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFhLEtBQUssQ0FBQztRQUNoQyxrQkFBYSxHQUFhLEtBQUssQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQy9DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3BDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQzVELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQy9ELHVCQUFrQixHQUF3Qiw2QkFB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QXhCLEtBQUs7Z0JBQ0csK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBZUcsUUFBUTtzQkFBaEIsS0FBSztnQkF3Q0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWcsIERiVGVzdFJlc3VsdCwgRGJRdWVyeVJlc3VsdCwgRGJBc3NlcnRpb25SZXN1bHQsIFN0ZXBTdGF0dXMsIFRpbWluZ0JyZWFrZG93biwgRmFpbHVyZURldGFpbHMsIFN1YlN0ZXAsIFNlbGZIZWFsQW5hbHlzaXNEYXRhLCBTZWxmSGVhbEFjdGlvbiwgRXhlY3V0aW9uU3RlcENvbmZpZywgU2VsZkhlYWxBY3Rpb25FdmVudCwgQWRkU3RlcE1lbnVPcHRpb24sIERFRkFVTFRfQUREX1NURVBfTUVOVV9PUFRJT05TLCBTdGVwTW9yZU1lbnVPcHRpb24sIERFRkFVTFRfU1RFUF9NT1JFX01FTlVfT1BUSU9OUyB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBEeW5hbWljVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb25maWcgfSBmcm9tICcuLi8uLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVNUFRZX1NUQVRFX0lNQUdFUyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvaW1hZ2UtYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQsIHVwbG9hZEJhc2VsaW5lRXZlbnQgfSBmcm9tICcuLi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZGItdmVyaWZpY2F0aW9uLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGItdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QgY3FhLXctZnVsbCcgfVxufSlcbmV4cG9ydCBjbGFzcyBEYlZlcmlmaWNhdGlvblN0ZXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBpZCE6IHN0cmluZztcbiAgQElucHV0KCkgdGVzdFN0ZXBSZXN1bHRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgc3RlcE51bWJlciE6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0YXR1cyE6IFN0ZXBTdGF0dXM7XG4gIEBJbnB1dCgpIGR1cmF0aW9uITogbnVtYmVyO1xuICBASW5wdXQoKSB0aW1pbmdCcmVha2Rvd24/OiBUaW1pbmdCcmVha2Rvd247XG4gIEBJbnB1dCgpIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgZGJUZXN0UmVzdWx0ITogRGJUZXN0UmVzdWx0O1xuICBASW5wdXQoKSBkYkNvbmZpZz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGJUeXBlOiBzdHJpbmc7XG4gIH07XG4gIEBJbnB1dCgpIGlzRGVidWc/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlYnVnUG9pbnRTZXQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhcmVudFNraXBwZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBkZWJ1Z1BvaW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgZWRpdFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwT3B0aW9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRTdGVwTWVudU9wdGlvbj4oKTtcbiAgQE91dHB1dCgpIHN0ZXBNb3JlT3B0aW9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwTW9yZU1lbnVPcHRpb24+KCk7XG4gIEBJbnB1dCgpIGFkZFN0ZXBNZW51T3B0aW9uczogQWRkU3RlcE1lbnVPcHRpb25bXSA9IERFRkFVTFRfQUREX1NURVBfTUVOVV9PUFRJT05TO1xuICBASW5wdXQoKSBzdGVwTW9yZU1lbnVPcHRpb25zOiBTdGVwTW9yZU1lbnVPcHRpb25bXSA9IERFRkFVTFRfU1RFUF9NT1JFX01FTlVfT1BUSU9OUztcbiAgQElucHV0KCkgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgQElucHV0KCkgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0ZXBEZWxldGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNVcGxvYWRpbmdCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBpc01ha2luZ0N1cnJlbnRCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBzZWxmSGVhbEFuYWx5c2lzPzogU2VsZkhlYWxBbmFseXNpc0RhdGE7XG4gIEBJbnB1dCgpIGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXI/OiAoKSA9PiB7IGlzTG9hZGluZ0FjY2VwdDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07IGlzTG9hZGluZ01vZGlmeUFjY2VwdDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfTtcbiAgQElucHV0KCkgb25TdGVwQ2xpY2tIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcsIGV2ZW50PzogRXZlbnQpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIGp1bXBUb1RpbWVzdGFtcEhhbmRsZXI/OiAodGltZXN0YW1wOiBudW1iZXIsIHRlc3RTdGVwSWQ/OiBudW1iZXIgfCBzdHJpbmcpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uSnNvblBhdGhDb3BpZWRIYW5kbGVyPzogKGV2ZW50OiB7IHBhdGg6IHN0cmluZzsgc291cmNlOiBzdHJpbmcgfSkgPT4gdm9pZDtcbiAgQElucHV0KCkgaXNMaXZlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0ZXA/OiBhbnk7XG4gIGdldCBzdGVwQmFkZ2VzKCk6ICgnc2tpcHBlZCcgfCAnZWRpdGVkJyB8ICdhZGRlZCcgfCAncmVtb3ZlZCcpW10ge1xuICAgIGNvbnN0IGJhZGdlID0gdGhpcy5zdGVwPy5zdGVwQmFkZ2U7XG4gICAgaWYgKCFiYWRnZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGJhZGdlKSA/IGJhZGdlIDogW2JhZGdlXTtcbiAgfVxuXG4gIGdldCBpc1NraXBwZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcEJhZGdlcy5pbmNsdWRlcygnc2tpcHBlZCcpO1xuICB9XG5cbiAgZ2V0IGlzU3RlcERlbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcEJhZGdlcy5pbmNsdWRlcygncmVtb3ZlZCcpO1xuICB9XG5cbiAgQElucHV0KCkgc3ViU3RlcHM6IFN1YlN0ZXBbXSA9IFtdO1xuXG4gIC8vIFByb2Nlc3NlZCBzdWItc3RlcHMgZm9yIGxpdmUgbW9kZSAoV0FJVF9GT1JfTE9DQVRPUiBjb3VudGRvd24sIEFJX0FVVE9fSEVBTCBncm91cGluZylcbiAgcHJvY2Vzc2VkU3ViU3RlcHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgbGFzdFByb2Nlc3NlZEluZGV4OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHdhaXRMb2NhdG9yR3JvdXBFbnRyeTogYW55IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY291bnRkb3duSW50ZXJ2YWxJZDogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBhaUF1dG9IZWFsR3JvdXBFbnRyeTogYW55IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gUHJvY2Vzc2VkIHN1Yi1zdGVwcyBmb3IgcnVuIHJlc3VsdCBzY3JlZW4gKGZpbHRlciBhbmQgc3BsaXQgQUlfQVVUT19IRUFMX1NVQ0NFU1MvRkFJTEVEKVxuICBwcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdDogYW55W10gPSBbXTtcblxuICBzaG93RmFpbGVkU3RlcERldGFpbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqIFNob3cgZGVidWcgaWNvbiBvbmx5IHdoZW4gdGhpcyBzdGVwIGhhcyBubyBjaGlsZCBzdGVwcyAobGVhZiBzdGVwOiBhbHdheXMgc2hvdyB3aGVuIGlzRGVidWcpLiAqL1xuICBnZXQgc2hvd0RlYnVnSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0RlYnVnID09PSB0cnVlO1xuICB9XG5cbiAgLyoqIFBlci1zdGVwIGZpbHRlcmVkIHRocmVlLWRvdCBtZW51IG9wdGlvbnMgKGUuZy4gaGlkZSBEdXBsaWNhdGUvRGVsZXRlIGZvciBzdGVwLWdyb3VwIGNoaWxkcmVuKS4gKi9cbiAgZ2V0IGVmZmVjdGl2ZVN0ZXBNb3JlTWVudU9wdGlvbnMoKTogU3RlcE1vcmVNZW51T3B0aW9uW10ge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLnN0ZXBNb3JlTWVudU9wdGlvbnMgfHwgW107XG4gICAgY29uc3Qgc3RlcFJlZjogYW55ID0gdGhpcy5zdGVwO1xuICAgIGlmICghc3RlcFJlZikgcmV0dXJuIGJhc2U7XG5cbiAgICBjb25zdCBpc0dyb3VwQ2hpbGQgPSAhIXN0ZXBSZWYuaXNTdGVwR3JvdXBDaGlsZHJlbjtcbiAgICAvLyBXaGVuIHN0ZXAuc3RlcE1vcmVNZW51T3B0aW9ucyBpcyB0cnV0aHkgT1Igc3RlcCBpcyBhIHN0ZXAtZ3JvdXAgY2hpbGQsIGhpZGUgbXV0YXRpbmcgaXRlbXNcbiAgICBjb25zdCBzdXBwcmVzc011dGF0aW5nID0gISFzdGVwUmVmLnN0ZXBNb3JlTWVudU9wdGlvbnMgfHwgaXNHcm91cENoaWxkO1xuICAgIGlmICghc3VwcHJlc3NNdXRhdGluZykgcmV0dXJuIGJhc2U7XG5cbiAgICByZXR1cm4gYmFzZS5maWx0ZXIob3B0ID0+IG9wdC5pZCAhPT0gJ2R1cGxpY2F0ZScgJiYgb3B0LmlkICE9PSAnZGVsZXRlJyk7XG4gIH1cblxuICBzaG93RW52aXJvbm1lbnRDb3BpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudENvcGllZFRpbWVvdXQ/OiBhbnk7XG5cbiAgQE91dHB1dCgpIG1ha2VDdXJyZW50QmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHVwbG9hZEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjx1cGxvYWRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgYW5hbHl6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHZpZXdGdWxsTG9ncyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlbGZIZWFsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxmSGVhbEFjdGlvbkV2ZW50PigpO1xuXG4gIG92ZXJyaWRlIGNvbmZpZyE6IERiVmVyaWZpY2F0aW9uU3RlcENvbmZpZztcblxuICB2ZXJpZmljYXRpb25GaWx0ZXI6ICdhbGwnIHwgJ2ZhaWxlZCcgfCAncGFzc2VkJyA9ICdhbGwnO1xuXG4gIGZpbHRlclNlZ21lbnRzID0gW1xuICAgIHsgbGFiZWw6ICdBbGwnLCB2YWx1ZTogJ2FsbCcgfSxcbiAgICB7IGxhYmVsOiAnRmFpbGVkIG9ubHknLCB2YWx1ZTogJ2ZhaWxlZCcgfSxcbiAgICB7IGxhYmVsOiAnUGFzc2VkIG9ubHknLCB2YWx1ZTogJ3Bhc3NlZCcgfSxcbiAgXTtcblxuICB2ZXJpZmljYXRpb25UYWJsZUNvbHVtbnM6IER5bmFtaWNUYWJsZUNvbHVtbltdID0gW107XG5cbiAgZW1wdHlTdGF0ZUNvbmZpZzogRW1wdHlTdGF0ZUNvbmZpZyA9IHtcbiAgICB0aXRsZTogJ05vIEFzc2VydGlvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm8gdmVyaWZpY2F0aW9uIGFzc2VydGlvbnMgZm91bmQgZm9yIHRoaXMgZGF0YWJhc2UgcXVlcnkuJyxcbiAgICBpbWFnZVVybDogRU1QVFlfU1RBVEVfSU1BR0VTLkRBU0hCT0FSRCxcbiAgICBhY3Rpb25zOiBbXSxcbiAgfTtcblxuICBwYWdlSW5kZXg6IG51bWJlciA9IDA7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcblxuICAvLyBDYWNoZWQgcXVlcnkgcmVzdWx0cyB0byBhdm9pZCByZWNyZWF0aW5nIGNvbXBvbmVudHMgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvblxuICBjYWNoZWRRdWVyeVJlc3VsdHM6IEFycmF5PHsga2V5OiBzdHJpbmc7IHJlc3VsdDogRGJRdWVyeVJlc3VsdCB9PiA9IFtdO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlnKCk7XG4gICAgdGhpcy5zZXR1cFRhYmxlQ29sdW1ucygpO1xuICAgIHRoaXMudXBkYXRlQ2FjaGVkUXVlcnlSZXN1bHRzKCk7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAodGhpcy5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zdWJTdGVwcyAmJiB0aGlzLnN1YlN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNMaXZlICYmIHRoaXMuc3ViU3RlcHMgJiYgdGhpcy5zdWJTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2Nlc3NTdWJTdGVwc0ZvclJ1blJlc3VsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0YXR1cygpOiBTdGVwU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LnN0YXR1cyB8fCB0aGlzLnN0YXR1cztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBVcGRhdGUgY29uZmlnIHdoZW4gaW5wdXRzIGNoYW5nZVxuICAgIGlmIChjaGFuZ2VzWydkYlRlc3RSZXN1bHQnXSB8fCBjaGFuZ2VzWydkYkNvbmZpZyddIHx8IGNoYW5nZXNbJ2V4cGFuZGVkJ10gfHwgY2hhbmdlc1snc3RhdHVzJ10gfHwgY2hhbmdlc1snZHVyYXRpb24nXSB8fCBjaGFuZ2VzWydzdGVwRGVsZXRlZCddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbmZpZygpO1xuICAgICAgaWYgKGNoYW5nZXNbJ2RiVGVzdFJlc3VsdCddKSB7XG4gICAgICAgIHRoaXMuc2V0dXBUYWJsZUNvbHVtbnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVDYWNoZWRRdWVyeVJlc3VsdHMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY29uZmlnIHdoZW4gc3ViU3RlcHMgY2hhbmdlc1xuICAgIGlmIChjaGFuZ2VzWydzdWJTdGVwcyddICYmIHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zdWJTdGVwcyA9IHRoaXMuc3ViU3RlcHMgfHwgW107XG4gICAgICBpZiAodGhpcy5pc0xpdmUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdWJTdGVwc0ZvclJ1blJlc3VsdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlLXByb2Nlc3Mgd2hlbiBpc0xpdmUgY2hhbmdlc1xuICAgIGlmIChjaGFuZ2VzWydpc0xpdmUnXSAmJiB0aGlzLnN1YlN0ZXBzICYmIHRoaXMuc3ViU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMuaXNMaXZlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgZXhwYW5kZWQgc3RhdGUgaWYgY2hhbmdlZFxuICAgIGlmIChjaGFuZ2VzWydleHBhbmRlZCddICYmIHRoaXMuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTGl2ZSkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRMZW5ndGggPSAodGhpcy5zdWJTdGVwcyB8fCBbXSkubGVuZ3RoO1xuICAgIGlmIChjdXJyZW50TGVuZ3RoICE9PSB0aGlzLmxhc3RQcm9jZXNzZWRJbmRleCkge1xuICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0ZXN0U3RlcElkOiB0aGlzLnN0ZXA/LnRlc3RTdGVwSWQgfHwgdW5kZWZpbmVkLFxuICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkLFxuICAgICAgc3RlcE51bWJlcjogdGhpcy5zdGVwTnVtYmVyLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgZHVyYXRpb246IHRoaXMuZHVyYXRpb24sXG4gICAgICBkaXNwbGF5VHlwZTogJ2RiLXZlcmlmaWNhdGlvbicsXG4gICAgICBkYlRlc3RSZXN1bHQ6IHRoaXMuZGJUZXN0UmVzdWx0LFxuICAgICAgZGJDb25maWc6IHRoaXMuZGJDb25maWcsXG4gICAgICBzdWJTdGVwczogdGhpcy5zdWJTdGVwcyB8fCBbXSxcbiAgICAgIHN0ZXBEZWxldGVkOiB0aGlzLnN0ZXBEZWxldGVkLFxuICAgICAgdGltaW5nQnJlYWtkb3duOiB0aGlzLnRpbWluZ0JyZWFrZG93bixcbiAgICAgIGV4cGFuZGVkOiB0aGlzLmV4cGFuZGVkLFxuICAgIH0gYXMgRGJWZXJpZmljYXRpb25TdGVwQ29uZmlnO1xuICB9XG5cbiAgZ2V0IGhhc1N1YlN0ZXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN1YlN0ZXBzICYmIHRoaXMuc3ViU3RlcHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG9uRGVidWdQb2ludENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZWJ1Z1BvaW50Q2hhbmdlLmVtaXQoIXRoaXMuZGVidWdQb2ludFNldCk7XG4gIH1cblxuICB0b2dnbGVIZWFkZXIoZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIGlmICh0aGlzLm9uU3RlcENsaWNrSGFuZGxlcikge1xuICAgICAgY29uc3Qgc3RlcFRvUGFzcyA9IHRoaXMuc3RlcCB8fCB0aGlzLmNvbmZpZztcbiAgICAgIGlmIChzdGVwVG9QYXNzKSB7XG4gICAgICAgIHRoaXMub25TdGVwQ2xpY2tIYW5kbGVyKHN0ZXBUb1Bhc3MsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDYWNoZWRRdWVyeVJlc3VsdHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRiVGVzdFJlc3VsdD8ucmVzdWx0cykge1xuICAgICAgdGhpcy5jYWNoZWRRdWVyeVJlc3VsdHMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYWNoZWRRdWVyeVJlc3VsdHMgPSBPYmplY3QuZW50cmllcyh0aGlzLmRiVGVzdFJlc3VsdC5yZXN1bHRzKS5tYXAoKFtrZXksIHJlc3VsdF0pID0+ICh7IGtleSwgcmVzdWx0IH0pKTtcbiAgfVxuXG4gIGdldFF1ZXJ5UmVzdWx0cygpOiBBcnJheTx7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlZFF1ZXJ5UmVzdWx0cztcbiAgfVxuXG4gIHRyYWNrQnlRdWVyeUtleShpbmRleDogbnVtYmVyLCBpdGVtOiB7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ua2V5O1xuICB9XG5cbiAgZ2V0VG90YWxSb3dzUmV0dXJuZWQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0Py5yZXN1bHRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmRiVGVzdFJlc3VsdC5yZXN1bHRzKS5yZWR1Y2UoKHRvdGFsLCByZXN1bHQpID0+IHtcbiAgICAgIHJldHVybiB0b3RhbCArIChBcnJheS5pc0FycmF5KHJlc3VsdC5kYXRhKSA/IHJlc3VsdC5kYXRhLmxlbmd0aCA6IDApO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0UXVlcnlTdGF0dXMocXVlcnlLZXk6IHN0cmluZyk6ICdwYXNzZWQnIHwgJ2ZhaWxlZCcge1xuICAgIGlmICghdGhpcy5kYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHMpIHJldHVybiAncGFzc2VkJztcbiAgICBjb25zdCBxdWVyeUFzc2VydGlvbnMgPSB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZpbHRlcihcbiAgICAgIGFzc2VydGlvbiA9PiBhc3NlcnRpb24udmFyaWFibGVOYW1lID09PSBxdWVyeUtleVxuICAgICk7XG4gICAgaWYgKHF1ZXJ5QXNzZXJ0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiAncGFzc2VkJztcbiAgICByZXR1cm4gcXVlcnlBc3NlcnRpb25zLmV2ZXJ5KGEgPT4gYS5wYXNzZWQpID8gJ3Bhc3NlZCcgOiAnZmFpbGVkJztcbiAgfVxuXG4gIGdldEZpbHRlcmVkQXNzZXJ0aW9ucygpOiBEYkFzc2VydGlvblJlc3VsdFtdIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzKSByZXR1cm4gW107XG4gICAgc3dpdGNoICh0aGlzLnZlcmlmaWNhdGlvbkZpbHRlcikge1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGJUZXN0UmVzdWx0LmFzc2VydGlvblJlc3VsdHMuZmlsdGVyKGEgPT4gIWEucGFzc2VkKTtcbiAgICAgIGNhc2UgJ3Bhc3NlZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZpbHRlcihhID0+IGEucGFzc2VkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzO1xuICAgIH1cbiAgfVxuXG4gIHNldFZlcmlmaWNhdGlvbkZpbHRlcihmaWx0ZXI6ICdhbGwnIHwgJ2ZhaWxlZCcgfCAncGFzc2VkJykge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uRmlsdGVyID0gZmlsdGVyO1xuICB9XG5cbiAgb25GaWx0ZXJDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uRmlsdGVyID0gdmFsdWUgYXMgJ2FsbCcgfCAnZmFpbGVkJyB8ICdwYXNzZWQnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFRhYmxlQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmlmaWNhdGlvblRhYmxlQ29sdW1ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ2pzb25QYXRoJyxcbiAgICAgICAgZmllbGROYW1lOiAnSlNPTiBwYXRoJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2pzb25QYXRoJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDIsXG4gICAgICAgIHJlbmRlcjogKHJvdzogRGJBc3NlcnRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzRCNTU2M10gY3FhLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbChyb3cuanNvblBhdGgpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3ZlcmlmaWNhdGlvblR5cGUnLFxuICAgICAgICBmaWVsZE5hbWU6ICdWZXJpZmljYXRpb24gdHlwZScsXG4gICAgICAgIGZpZWxkVmFsdWU6ICd2ZXJpZmljYXRpb25UeXBlJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDEuNSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbCh0aGlzLmZvcm1hdFZlcmlmaWNhdGlvblR5cGUocm93LnZlcmlmaWNhdGlvblR5cGUpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpZWxkSWQ6ICdhY3R1YWxWYWx1ZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ0FjdHVhbCB2YWx1ZScsXG4gICAgICAgIGZpZWxkVmFsdWU6ICdhY3R1YWxWYWx1ZScsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLjUsXG4gICAgICAgIHJlbmRlcjogKHJvdzogRGJBc3NlcnRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiByb3cuYWN0dWFsVmFsdWUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkocm93LmFjdHVhbFZhbHVlKSA6IFN0cmluZyhyb3cuYWN0dWFsVmFsdWUpO1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbCh2YWx1ZSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZElkOiAnZXhwZWN0ZWRWYWx1ZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ0V4cGVjdGVkIHZhbHVlJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2V4cGVjdGVkVmFsdWUnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMS41LFxuICAgICAgICByZW5kZXI6IChyb3c6IERiQXNzZXJ0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2Ygcm93LmV4cGVjdGVkVmFsdWUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkocm93LmV4cGVjdGVkVmFsdWUpIDogU3RyaW5nKHJvdy5leHBlY3RlZFZhbHVlKTtcbiAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzRCNTU2M11cIj5cbiAgICAgICAgICAgICAgJHt0aGlzLmVzY2FwZUh0bWwodmFsdWUpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ3Jlc3VsdCcsXG4gICAgICAgIGZpZWxkTmFtZTogJ1Jlc3VsdCcsXG4gICAgICAgIGZpZWxkVmFsdWU6ICdwYXNzZWQnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyb3cucGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtYmxvY2sgY3FhLXRleHQtY2VudGVyIGNxYS13LTExIGNxYS1weC0yIGNxYS1weS0xIGNxYS1yb3VuZGVkLVs1cHhdIGNxYS10ZXh0LVsxMnB4XSBjcWEtYmctWyMyRTdEMzJdIGNxYS10ZXh0LVsjRkZGRkZGXVwiPlxuICAgICAgICAgICAgICAgIFBhc3NcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgYDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWJsb2NrIGNxYS10ZXh0LWNlbnRlciBjcWEtdy0xMSBjcWEtcHgtMiBjcWEtcHktMSBjcWEtcm91bmRlZC1bNXB4XSBjcWEtdGV4dC1bMTJweF0gY3FhLWJnLVsjREMyNjI2XSBjcWEtdGV4dC1bI0ZGRkZGRl1cIj5cbiAgICAgICAgICAgICAgICBGYWlsXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIGA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZUh0bWwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICB9XG5cbiAgZ2V0VGFibGVEYXRhKCk6IERiQXNzZXJ0aW9uUmVzdWx0W10ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbHRlcmVkQXNzZXJ0aW9ucygpO1xuICB9XG5cbiAgZ2V0IGlzRW1wdHlUYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUYWJsZURhdGEoKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSk6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcbiAgfVxuXG4gIGNvcHlRdWVyeShxdWVyeTogc3RyaW5nKSB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQocXVlcnkpLnRoZW4oKCkgPT4ge1xuICAgIH0pO1xuICB9XG5cbiAgY29weVJlc3BvbnNlKHF1ZXJ5UmVzdWx0OiBEYlF1ZXJ5UmVzdWx0KSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBKU09OLnN0cmluZ2lmeShxdWVyeVJlc3VsdC5kYXRhLCBudWxsLCAyKTtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChyZXNwb25zZSkudGhlbigoKSA9PiB7XG4gICAgfSk7XG4gIH1cblxuICBjb3B5RW52aXJvbm1lbnQoKSB7XG4gICAgaWYgKHRoaXMuZGJDb25maWc/Lm5hbWUpIHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuZGJDb25maWcubmFtZSkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0Vudmlyb25tZW50Q29waWVkID0gdHJ1ZTtcbiAgICAgICAgXG4gICAgICAgIC8vIENsZWFyIGFueSBleGlzdGluZyB0aW1lb3V0XG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50Q29waWVkVGltZW91dCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmVudmlyb25tZW50Q29waWVkVGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIEhpZGUgdG9vbHRpcCBhZnRlciAyIHNlY29uZHNcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudENvcGllZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3dFbnZpcm9ubWVudENvcGllZCA9IGZhbHNlO1xuICAgICAgICB9LCAyMDAwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEZhaWx1cmVNZXNzYWdlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghdGhpcy5kYlRlc3RSZXN1bHQgfHwgdGhpcy5kYlRlc3RSZXN1bHQ/LmFsbEFzc2VydGlvbnNQYXNzZWQpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgZmFpbGVkQXNzZXJ0aW9uID0gdGhpcy5kYlRlc3RSZXN1bHQuYXNzZXJ0aW9uUmVzdWx0cz8uZmluZChhID0+ICFhLnBhc3NlZCk7XG4gICAgaWYgKGZhaWxlZEFzc2VydGlvbikge1xuICAgICAgY29uc3QgcXVlcnlLZXkgPSBmYWlsZWRBc3NlcnRpb24udmFyaWFibGVOYW1lO1xuICAgICAgY29uc3QgcXVlcnlJbmRleCA9IHRoaXMuZ2V0UXVlcnlSZXN1bHRzKCkuZmluZEluZGV4KHEgPT4gcS5rZXkgPT09IHF1ZXJ5S2V5KSArIDE7XG4gICAgICByZXR1cm4gYEFzc2VydGlvbiBmYWlsZWQgaW4gUXVlcnkgJHtxdWVyeUluZGV4fS4gRXhwZWN0ZWQgdmFsdWUgXCIke2ZhaWxlZEFzc2VydGlvbi5leHBlY3RlZFZhbHVlfVwiIGJ1dCBnb3QgXCIke2ZhaWxlZEFzc2VydGlvbi5hY3R1YWxWYWx1ZX1cIi5gO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZvcm1hdFZlcmlmaWNhdGlvblR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgJ2VxdWFscyc6ICdFcXVhbHMnLFxuICAgICAgJ25vdF9lcXVhbHMnOiAnTm90IEVxdWFscycsXG4gICAgICAnY29udGFpbnMnOiAnQ29udGFpbnMnLFxuICAgICAgJ25vdF9jb250YWlucyc6ICdOb3QgQ29udGFpbnMnLFxuICAgICAgJ2dyZWF0ZXJfdGhhbic6ICdHcmVhdGVyIFRoYW4nLFxuICAgICAgJ2xlc3NfdGhhbic6ICdMZXNzIFRoYW4nLFxuICAgICAgJ2dyZWF0ZXJfdGhhbl9vcl9lcXVhbHMnOiAnR3JlYXRlciBUaGFuIE9yIEVxdWFscycsXG4gICAgICAnbGVzc190aGFuX29yX2VxdWFscyc6ICdMZXNzIFRoYW4gT3IgRXF1YWxzJyxcbiAgICAgICdleGlzdHMnOiAnRXhpc3RzJyxcbiAgICAgICdub3RfZXhpc3RzJzogJ05vdCBFeGlzdHMnLFxuICAgIH07XG4gICAgcmV0dXJuIHR5cGVNYXBbdHlwZV0gfHwgdHlwZTtcbiAgfVxuXG4gIG9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soZXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dGYWlsZWRTdGVwRGV0YWlscyA9IGV4cGFuZGVkO1xuICB9XG5cbiAgZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKCk6IFN1YlN0ZXBbXSB7XG4gICAgLy8gQ29udmVydCBEQiB2ZXJpZmljYXRpb24gcXVlcnkgcmVzdWx0cyB0byBTdWJTdGVwW10gZm9yIHRoZSBmYWlsZWQgc3RlcCBjb21wb25lbnRcbiAgICBjb25zdCBzdWJTdGVwczogU3ViU3RlcFtdID0gW107XG5cbiAgICBpZiAodGhpcy5kYlRlc3RSZXN1bHQ/LnJlc3VsdHMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZGJUZXN0UmVzdWx0LnJlc3VsdHMpLmZvckVhY2goKFtrZXksIHJlc3VsdF0sIGluZGV4KSA9PiB7XG4gICAgICAgIHN1YlN0ZXBzLnB1c2goe1xuICAgICAgICAgIGlkOiBgcXVlcnktJHtpbmRleH1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUXVlcnkgJHtpbmRleCArIDF9OiAke2tleX1gLFxuICAgICAgICAgIHN0YXR1czogdGhpcy5nZXRRdWVyeVN0YXR1cyhrZXkpID09PSAncGFzc2VkJyA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnLFxuICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24gfHwgMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYXNzZXJ0aW9uIHJlc3VsdHMgYXMgc3ViLXN0ZXBzXG4gICAgaWYgKHRoaXMuZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzKSB7XG4gICAgICB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzLmZvckVhY2goKGFzc2VydGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgc3ViU3RlcHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGBhc3NlcnRpb24tJHtpbmRleH1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQXNzZXJ0aW9uOiAke2Fzc2VydGlvbi5qc29uUGF0aH0gLSAke3RoaXMuZm9ybWF0VmVyaWZpY2F0aW9uVHlwZShhc3NlcnRpb24udmVyaWZpY2F0aW9uVHlwZSl9YCxcbiAgICAgICAgICBzdGF0dXM6IGFzc2VydGlvbi5wYXNzZWQgPyAnc3VjY2VzcycgOiAnZmFpbGVkJyxcbiAgICAgICAgICBkdXJhdGlvbjogMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ViU3RlcHM7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRXhwYW5kZWQgJiYgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzKSAmJlxuICAgICAgKFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5leHBlY3RlZCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5hY3R1YWwpKSB8fFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uY3VycmVudCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmRpZmZlcmVuY2UpXG4gICAgICAgICAgfHwgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5sb2dzPy5sZW5ndGgpKSB8fCBcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhBcHBsaWVkICYmICh0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeE1lc3NhZ2UgfHwgdGhpcy5jb25maWRlbmNlIHx8IHRoaXMucmVhc29uaW5nPy5sZW5ndGgpKSlcbiAgICAgIClcbiAgfVxuXG4gIG9uTWFrZUN1cnJlbnRCYXNlbGluZShldmVudDogbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tYWtlQ3VycmVudEJhc2VsaW5lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25VcGxvYWRCYXNlbGluZShldmVudDogdXBsb2FkQmFzZWxpbmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkQmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkFuYWx5emUoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXplLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld0Z1bGxMb2dzKCk6IHZvaWQge1xuICAgIHRoaXMudmlld0Z1bGxMb2dzLmVtaXQoKTtcbiAgfVxuXG4gIG9uRWRpdFN0ZXAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmVkaXRTdGVwLmVtaXQoKTtcbiAgfVxuXG4gIG9uQWRkU3RlcE9wdGlvblNlbGVjdChvcHRpb246IEFkZFN0ZXBNZW51T3B0aW9uLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuYWRkU3RlcE9wdGlvblNlbGVjdC5lbWl0KG9wdGlvbik7XG4gIH1cblxuICBvblN0ZXBNb3JlT3B0aW9uU2VsZWN0KG9wdGlvbjogU3RlcE1vcmVNZW51T3B0aW9uLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RlcE1vcmVPcHRpb25TZWxlY3QuZW1pdChvcHRpb24pO1xuICB9XG5cbiAgb25TZWxmSGVhbEFjdGlvbihldmVudDogU2VsZkhlYWxBY3Rpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZkhlYWxBY3Rpb24uZW1pdChldmVudCk7XG4gIH1cblxuICBvbkp1bXBUb1RpbWVzdGFtcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5qdW1wVG9UaW1lc3RhbXBIYW5kbGVyICYmIHRoaXMuc3RlcD8uZXhlY3V0ZWRSZXN1bHQ/LnZpZGVvX3N0YXJ0X3RpbWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnN0ZXA/LmV4ZWN1dGVkUmVzdWx0Py52aWRlb19zdGFydF90aW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSB0eXBlb2YgdGhpcy5zdGVwLmV4ZWN1dGVkUmVzdWx0LnZpZGVvX3N0YXJ0X3RpbWUgPT09ICdudW1iZXInIFxuICAgICAgICA/IHRoaXMuc3RlcC5leGVjdXRlZFJlc3VsdC52aWRlb19zdGFydF90aW1lIFxuICAgICAgICA6IE51bWJlcih0aGlzLnN0ZXAuZXhlY3V0ZWRSZXN1bHQudmlkZW9fc3RhcnRfdGltZSk7XG4gICAgICBjb25zdCB0ZXN0U3RlcElkID0gdGhpcy5zdGVwPy50ZXN0U3RlcElkO1xuICAgICAgaWYgKGlzRmluaXRlKHRpbWVzdGFtcCkgJiYgdGltZXN0YW1wID49IDApIHtcbiAgICAgICAgdGhpcy5qdW1wVG9UaW1lc3RhbXBIYW5kbGVyKHRpbWVzdGFtcCwgdGVzdFN0ZXBJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzTGl2ZVN1YlN0ZXBzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFsbFN1YlN0ZXBzID0gKHRoaXMuc3ViU3RlcHMgfHwgW10pIGFzIGFueVtdO1xuXG4gICAgaWYgKGFsbFN1YlN0ZXBzLmxlbmd0aCA8IHRoaXMubGFzdFByb2Nlc3NlZEluZGV4KSB7XG4gICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXg7IGkgPCBhbGxTdWJTdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc3ViU3RlcCA9IGFsbFN1YlN0ZXBzW2ldO1xuICAgICAgY29uc3QgdWlUeXBlOiBzdHJpbmcgPSBzdWJTdGVwPy51aVR5cGUgfHwgc3ViU3RlcD8udHlwZSB8fCAnJztcbiAgICAgIGNvbnN0IHN0YXR1czogc3RyaW5nID0gKHN1YlN0ZXA/LnN0YXR1cyB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKHVpVHlwZSA9PT0gJ1dBSVRfRk9SX0xPQ0FUT1InKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRTZWNvbmRzID0gdHlwZW9mIHN1YlN0ZXAudmFsdWUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBzdWJTdGVwLnZhbHVlXG4gICAgICAgICAgOiAoc3ViU3RlcC52YWx1ZSA/IHBhcnNlRmxvYXQoc3ViU3RlcC52YWx1ZSkgOiAzMCk7XG5cbiAgICAgICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG5cbiAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSB7XG4gICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICByZW1haW5pbmdTZWNvbmRzOiB0aW1lb3V0U2Vjb25kcyxcbiAgICAgICAgICBzdGF0dXM6ICdydW5uaW5nJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZER1cmF0aW9uVG9XYWl0TG9jYXRvckdyb3VwRW50cnkoc3ViU3RlcCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSk7XG5cbiAgICAgICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IE1hdGgubWF4KDAsIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgLSAxKTtcbiAgICAgICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5yZW1haW5pbmdTZWNvbmRzIDw9IDApIHtcbiAgICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuc3RhdHVzID0gJ2ZhaWxlZCc7XG4gICAgICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPSBudWxsO1xuICAgICAgICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMCk7XG5cbiAgICAgIH0gZWxzZSBpZiAodWlUeXBlID09PSAnRklORF9MT0NBVE9SJykge1xuICAgICAgICBpZiAoc3RhdHVzID09PSAnZmFpbGVkJyB8fCBzdGF0dXMgPT09ICdmYWlsdXJlJykge1xuICAgICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcyA9IHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5ICE9PSB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHsgLi4uc3ViU3RlcCwgc3RhdHVzOiAnZmFpbGVkJyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgIGNvbnN0IG5ld1RleHQgPSBzdWJTdGVwLmRlc2NyaXB0aW9uIHx8IHN1YlN0ZXAudGV4dCB8fCBzdWJTdGVwLnRpdGxlO1xuICAgICAgICAgIGlmIChuZXdUZXh0KSB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5kZXNjcmlwdGlvbiA9IG5ld1RleHQ7XG4gICAgICAgICAgdGhpcy5hZGREdXJhdGlvblRvV2FpdExvY2F0b3JHcm91cEVudHJ5KHN1YlN0ZXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh7IC4uLnN1YlN0ZXAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdMT0NBVE9SX0ZPVU5EJykge1xuICAgICAgICBpZiAoc3RhdHVzID09PSAnZmFpbGVkJyB8fCBzdGF0dXMgPT09ICdmYWlsdXJlJykge1xuICAgICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcyA9IHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5ICE9PSB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHsgLi4uc3ViU3RlcCwgc3RhdHVzOiAnZmFpbGVkJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1RleHQgPSBzdWJTdGVwLmRlc2NyaXB0aW9uIHx8IHN1YlN0ZXAudGV4dCB8fCBzdWJTdGVwLnRpdGxlO1xuICAgICAgICAgICAgaWYgKG5ld1RleHQpIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LmRlc2NyaXB0aW9uID0gbmV3VGV4dDtcbiAgICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnN0YXR1cyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgIHRoaXMuYWRkRHVyYXRpb25Ub1dhaXRMb2NhdG9yR3JvdXBFbnRyeShzdWJTdGVwKTtcbiAgICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh7IC4uLnN1YlN0ZXAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSBpZiAodWlUeXBlID09PSAnQUlfQVVUT19IRUFMJykge1xuICAgICAgICBpZiAodGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkpIHtcbiAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5zdGF0dXMgPSAnZmFpbGVkJztcbiAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5yZW1haW5pbmdTZWNvbmRzID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5ID0ge1xuICAgICAgICAgIC4uLnN1YlN0ZXAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHN1YlN0ZXAuZGVzY3JpcHRpb24gfHwgc3ViU3RlcC50ZXh0IHx8ICdBSSBhdXRvLWhlYWwgc3RhcnRlZCcsXG4gICAgICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICAgICAgdWlUeXBlOiAnQUlfQVVUT19IRUFMJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2godGhpcy5haUF1dG9IZWFsR3JvdXBFbnRyeSk7XG5cbiAgICAgIH0gZWxzZSBpZiAodWlUeXBlID09PSAnQUlfQVVUT19IRUFMX1NVQ0NFU1MnIHx8IHVpVHlwZSA9PT0gJ0FJX0FVVE9fSEVBTF9GQUlMRUQnKSB7XG4gICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnN0YXR1cyA9ICdmYWlsZWQnO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPSBudWxsO1xuICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5KSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcyA9IHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5ICE9PSB0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5KTtcbiAgICAgICAgICB0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1N1Y2Nlc3MgPSB1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUxfU1VDQ0VTUyc7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc3ViU3RlcC52YWx1ZSA/PyBzdWJTdGVwLnRleHQgPz8gJyc7XG4gICAgICAgIGNvbnN0IHJlYXNvbmluZyA9IHN1YlN0ZXAucmVhc29uaW5nID8/IHN1YlN0ZXAuUmVhc29uaW5nID8/ICcnO1xuICAgICAgICBjb25zdCBiYXNlRHVyYXRpb24gPSBzdWJTdGVwLmR1cmF0aW9uIHx8IDA7XG4gICAgICAgIGNvbnN0IGZpbmFsU3RhdHVzID0gaXNTdWNjZXNzID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCc7XG5cbiAgICAgICAgY29uc3QgdmFsdWVEZXNjcmlwdGlvbiA9IHN1YlN0ZXAudGV4dCB8fCBzdWJTdGVwLmRlc2NyaXB0aW9uIHx8IChpc1N1Y2Nlc3NcbiAgICAgICAgICA/IGBBSSBhdXRvLWhlYWwgY29tcGxldGVkIHN1Y2Nlc3NmdWxseWBcbiAgICAgICAgICA6IGBBSSBhdXRvLWhlYWwgZmFpbGVkYCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh7XG4gICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsdWVEZXNjcmlwdGlvbixcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgcmVhc29uaW5nOiBudWxsLFxuICAgICAgICAgIHN0YXR1czogZmluYWxTdGF0dXMsXG4gICAgICAgICAgdWlUeXBlOiAnQUlfQVVUT19IRUFMX1ZBTFVFJyxcbiAgICAgICAgICB0eXBlOiAnQUlfQVVUT19IRUFMX1ZBTFVFJyxcbiAgICAgICAgICBkdXJhdGlvbjogYmFzZUR1cmF0aW9uLFxuICAgICAgICAgIGlzQWlBdXRvSGVhbFJlc3VsdDogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVhc29uaW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHtcbiAgICAgICAgICAgIC4uLnN1YlN0ZXAsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVhc29uaW5nLFxuICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICByZWFzb25pbmc6IHJlYXNvbmluZyxcbiAgICAgICAgICAgIHN0YXR1czogZmluYWxTdGF0dXMsXG4gICAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUxfUkVBU09OSU5HJyxcbiAgICAgICAgICAgIHR5cGU6ICdBSV9BVVRPX0hFQUxfUkVBU09OSU5HJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBiYXNlRHVyYXRpb24sXG4gICAgICAgICAgICBpc0FpQXV0b0hlYWxSZXN1bHQ6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKHN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHwgc3RhdHVzID09PSAnZmFpbHVyZScpICYmIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuc3RhdHVzID0gJ2ZhaWxlZCc7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaChzdWJTdGVwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxhc3RQcm9jZXNzZWRJbmRleCA9IGFsbFN1YlN0ZXBzLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRMaXZlUHJvY2Vzc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gW107XG4gICAgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXggPSAwO1xuICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICB0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDb3VudGRvd25UaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb3VudGRvd25JbnRlcnZhbElkICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY291bnRkb3duSW50ZXJ2YWxJZCk7XG4gICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsSWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRHVyYXRpb25Ub1dhaXRMb2NhdG9yR3JvdXBFbnRyeShzdWJTdGVwOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmF3RHVyYXRpb24gPSBzdWJTdGVwPy5kdXJhdGlvbjtcbiAgICBsZXQgZGVsdGEgPSAwO1xuICAgIGlmICh0eXBlb2YgcmF3RHVyYXRpb24gPT09ICdudW1iZXInKSB7XG4gICAgICBkZWx0YSA9IHJhd0R1cmF0aW9uO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhd0R1cmF0aW9uID09PSAnc3RyaW5nJyAmJiByYXdEdXJhdGlvbi50cmltKCkgIT09ICcnKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUZsb2F0KHJhd0R1cmF0aW9uKTtcbiAgICAgIGRlbHRhID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiAwO1xuICAgIH1cblxuICAgIGlmIChkZWx0YSA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJhdyA9IHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LmR1cmF0aW9uO1xuICAgIGxldCBjdXJyZW50ID0gMDtcbiAgICBpZiAodHlwZW9mIGN1cnJlbnRSYXcgPT09ICdudW1iZXInKSB7XG4gICAgICBjdXJyZW50ID0gY3VycmVudFJhdztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjdXJyZW50UmF3ID09PSAnc3RyaW5nJyAmJiBjdXJyZW50UmF3LnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIGNvbnN0IHBhcnNlZEN1cnJlbnQgPSBwYXJzZUZsb2F0KGN1cnJlbnRSYXcpO1xuICAgICAgY3VycmVudCA9IE51bWJlci5pc0Zpbml0ZShwYXJzZWRDdXJyZW50KSA/IHBhcnNlZEN1cnJlbnQgOiAwO1xuICAgIH1cblxuICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LmR1cmF0aW9uID0gY3VycmVudCArIGRlbHRhO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsU3ViU3RlcHMgPSAodGhpcy5zdWJTdGVwcyB8fCBbXSkgYXMgYW55W107XG4gICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdCA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzdWJTdGVwIG9mIGFsbFN1YlN0ZXBzKSB7XG4gICAgICBjb25zdCB1aVR5cGU6IHN0cmluZyA9IHN1YlN0ZXA/LnVpVHlwZSB8fCBzdWJTdGVwPy50eXBlIHx8ICcnO1xuXG4gICAgICBpZiAodWlUeXBlID09PSAnQUlfQVVUT19IRUFMX1NVQ0NFU1MnIHx8IHVpVHlwZSA9PT0gJ0FJX0FVVE9fSEVBTF9GQUlMRUQnKSB7XG4gICAgICAgIGNvbnN0IGlzU3VjY2VzcyA9IHVpVHlwZSA9PT0gJ0FJX0FVVE9fSEVBTF9TVUNDRVNTJztcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdWJTdGVwLnZhbHVlID8/IHN1YlN0ZXAudGV4dCA/PyAnJztcbiAgICAgICAgY29uc3QgcmVhc29uaW5nID0gc3ViU3RlcC5yZWFzb25pbmcgPz8gc3ViU3RlcC5SZWFzb25pbmcgPz8gJyc7XG4gICAgICAgIGNvbnN0IGJhc2VEdXJhdGlvbiA9IHN1YlN0ZXAuZHVyYXRpb24gfHwgMDtcbiAgICAgICAgY29uc3QgZmluYWxTdGF0dXMgPSBpc1N1Y2Nlc3MgPyAnc3VjY2VzcycgOiAnZmFpbGVkJztcblxuICAgICAgICBjb25zdCB2YWx1ZURlc2NyaXB0aW9uID0gKGlzU3VjY2Vzc1xuICAgICAgICAgID8gYEFJIGF1dG8taGVhbCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5YFxuICAgICAgICAgIDogYEFJIGF1dG8taGVhbCBmYWlsZWRgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZURlc2NyaXB0aW9uLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICByZWFzb25pbmc6IG51bGwsXG4gICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIHR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIGR1cmF0aW9uOiBiYXNlRHVyYXRpb24sXG4gICAgICAgICAgaXNBaUF1dG9IZWFsUmVzdWx0OiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZWFzb25pbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByZWFzb25pbmcsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIHJlYXNvbmluZzogcmVhc29uaW5nLFxuICAgICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICAgIHVpVHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgdHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgZHVyYXRpb246IGJhc2VEdXJhdGlvbixcbiAgICAgICAgICAgIGlzQWlBdXRvSGVhbFJlc3VsdDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSAoc3ViU3RlcD8uc3RhdHVzID8/ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGlzRmFpbGVkID0gc3RhdHVzID09PSAnZmFpbGVkJyB8fCBzdGF0dXMgPT09ICdmYWlsdXJlJztcbiAgICAgICAgY29uc3QgaXNMb2NhdG9yU3RlcCA9IHVpVHlwZSA9PT0gJ1dBSVRfRk9SX0xPQ0FUT1InIHx8IHVpVHlwZSA9PT0gJ0ZJTkRfTE9DQVRPUicgfHwgdWlUeXBlID09PSAnTE9DQVRPUl9GT1VORCc7XG4gICAgICAgIGlmIChpc0xvY2F0b3JTdGVwICYmIGlzRmFpbGVkKSB7XG4gICAgICAgICAgY29uc3QgYmFzZURlc2MgPSBzdWJTdGVwPy5kZXNjcmlwdGlvbiA/PyBzdWJTdGVwPy50ZXh0ID8/IHN1YlN0ZXA/LnRpdGxlID8/ICcnO1xuICAgICAgICAgIGNvbnN0IG5vdEZvdW5kU3VmZml4ID0gJyAtIEVsZW1lbnQgbm90IGZvdW5kJztcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAoYmFzZURlc2MgPyBiYXNlRGVzYyArIG5vdEZvdW5kU3VmZml4IDogbm90Rm91bmRTdWZmaXgudHJpbSgpKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQucHVzaChzdWJTdGVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1mb250LWludGVyIGNxYS13LWZ1bGxcIiBbY2xhc3MuY3FhLW9wYWNpdHktNTBdPVwiaXNEZWJ1ZyAmJiBpc1NraXBwZWQgJiYgIXBhcmVudFNraXBwZWRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCIhaXNEZWJ1ZyA/IG51bGwgOiBnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAncGF1c2VkJyA/ICcjRkZGOUU5JyA6IGdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsZWQnID8gJyNGRUYyRjInIDogbnVsbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgPCEtLSBIZWFkZXIgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1wLTIgY3FhLWN1cnNvci1wb2ludGVyXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlSGVhZGVyKCRldmVudClcIlxuICAgIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGM0Y0RjZcIj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlYnVnSWNvblwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgW21hdFRvb2x0aXBdPVwic3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdydW5uaW5nJyA/ICdCcmVha3BvaW50IGNhbm5vdCBiZSBzZXQgb24gYSBydW5uaW5nIHN0ZXAnIDogKGlzU3RlcERlbGV0ZWQgPyAnQnJlYWtwb2ludCBjYW5ub3QgYmUgc2V0IG9uIGRlbGV0ZWQgc3RlcHMnIDogKCghIXBhcmVudFNraXBwZWQgJiYgIXN0ZXA/LmRlYnVnUG9pbnREaXNhYmxlZCkgPyAnQnJlYWtwb2ludCBjYW5ub3QgYmUgc2V0IG9uIGEgcnVubmluZyBzdGVwJyA6ICghIXN0ZXA/LmRlYnVnUG9pbnREaXNhYmxlZCA/ICdCcmVha3BvaW50IGNhbm5vdCBiZSBzZXQgb24gc2tpcHBlZCBzdGVwcycgOiAnJykpKVwiXG4gICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5IGZvY3VzOmNxYS1vdXRsaW5lLW5vbmVcIlxuICAgICAgICBbbmdDbGFzc109XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnIHx8ICEhc3RlcD8uZGVidWdQb2ludERpc2FibGVkIHx8ICEhcGFyZW50U2tpcHBlZCB8fCBpc1N0ZXBEZWxldGVkID8gJ2NxYS1jdXJzb3Itbm90LWFsbG93ZWQgY3FhLW9wYWNpdHktNDAgY3FhLXBvaW50ZXItZXZlbnRzLW5vbmUnIDogJ2NxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwic3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdydW5uaW5nJyB8fCAhIXN0ZXA/LmRlYnVnUG9pbnREaXNhYmxlZCB8fCAhIXBhcmVudFNraXBwZWQgfHwgaXNTdGVwRGVsZXRlZFwiXG4gICAgICAgIChjbGljayk9XCJvbkRlYnVnUG9pbnRDbGljaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJkZWJ1Z1BvaW50U2V0ID8gJ1JlbW92ZSBkZWJ1ZyBwb2ludCcgOiAnU2V0IGRlYnVnIHBvaW50J1wiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiZGVidWdQb2ludFNldFwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiN1wiIGN5PVwiN1wiIHI9XCI2XCIgW2F0dHIuZmlsbF09XCIhIXN0ZXA/LmRlYnVnUG9pbnREaXNhYmxlZCB8fCAhIXBhcmVudFNraXBwZWQgfHwgaXNTdGVwRGVsZXRlZCA/ICcjOUU5RTlFJyA6ICcjQzYzNTM1J1wiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCIhZGVidWdQb2ludFNldFwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiN1wiIGN5PVwiN1wiIHI9XCI2XCIgW2F0dHIuc3Ryb2tlXT1cIiEhc3RlcD8uZGVidWdQb2ludERpc2FibGVkIHx8ICEhcGFyZW50U2tpcHBlZCB8fCBpc1N0ZXBEZWxldGVkID8gJyM5RTlFOUUnIDogJyNDNjM1MzUnXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTdGF0dXMgSWNvbiAtLT5cbiAgICA8IS0tIFN1Y2Nlc3MgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMC45MDA1IDQuOTk5OTlDMTEuMTI4OSA2LjEyMDY0IDEwLjk2NjIgNy4yODU3MSAxMC40Mzk1IDguMzAwODlDOS45MTI3OSA5LjMxNjA4IDkuMDU0IDEwLjEyIDguMDA2MzEgMTAuNTc4N0M2Ljk1ODYyIDExLjAzNzMgNS43ODUzNiAxMS4xMjI5IDQuNjgyMiAxMC44MjEyQzMuNTc5MDQgMTAuNTE5NSAyLjYxMjY1IDkuODQ4NjkgMS45NDQxOSA4LjkyMDcxQzEuMjc1NzMgNy45OTI3MiAwLjk0NTYxMSA2Ljg2MzYxIDEuMDA4ODggNS43MjE2OUMxLjA3MjE1IDQuNTc5NzYgMS41MjQ5OSAzLjQ5NDA0IDIuMjkxODggMi42NDU1OEMzLjA1ODc2IDEuNzk3MTIgNC4wOTMzNCAxLjIzNzIxIDUuMjIzMDggMS4wNTkyMkM2LjM1MjgyIDAuODgxMjMzIDcuNTA5NDQgMS4wOTU5MiA4LjUwMDA1IDEuNjY3NDlcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDUuNUw2IDdMMTEgMlwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBGYWlsdXJlIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCdcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy41IDQuNUw0LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA0LjVMNy41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBQZW5kaW5nIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAncGVuZGluZydcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFJ1bm5pbmcgLSBTaG93IHNwaW5uZXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdydW5uaW5nJ1wiPlxuICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBvcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgPHBhdGggZD1cIk02IDFBNSA1IDAgMCAxIDExIDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyXCIgKm5nSWY9XCJnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAnc2tpcHBlZCdcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjcWEtdGV4dC1bIzlDQTNBRl0gY3FhLXRleHQtWzEycHhdXCI+XG4gICAgICAgIHNraXBfbmV4dFxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAncGF1c2VkJ1wiPjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNOC41IDJINy41QzcuMjIzODYgMiA3IDIuMjIzODYgNyAyLjVWOS41QzcgOS43NzYxNCA3LjIyMzg2IDEwIDcuNSAxMEg4LjVDOC43NzYxNCAxMCA5IDkuNzc2MTQgOSA5LjVWMi41QzkgMi4yMjM4NiA4Ljc3NjE0IDIgOC41IDJaXCIgc3Ryb2tlPVwiI0UxNzEwMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSAySDMuNUMzLjIyMzg2IDIgMyAyLjIyMzg2IDMgMi41VjkuNUMzIDkuNzc2MTQgMy4yMjM4NiAxMCAzLjUgMTBINC41QzQuNzc2MTQgMTAgNSA5Ljc3NjE0IDUgOS41VjIuNUM1IDIuMjIzODYgNC43NzYxNCAyIDQuNSAyWlwiIHN0cm9rZT1cIiNFMTcxMDBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9kaXY+XG5cbiAgICA8ZGl2PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjAgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgcng9XCI0XCIgZmlsbD1cIiNGMEYwRjFcIi8+XG4gICAgICA8cGF0aCBkPVwiTTEzLjUgMy41SDYuNUM1Ljk1IDMuNSA1LjUgMy45NSA1LjUgNC41VjExLjVDNS41IDEyLjA1IDUuOTUgMTIuNSA2LjUgMTIuNUgxMy41QzE0LjA1IDEyLjUgMTQuNSAxMi4wNSAxNC41IDExLjVWNC41QzE0LjUgMy45NSAxNC4wNSAzLjUgMTMuNSAzLjVaTTEzLjUgNC41VjZINi41VjQuNUgxMy41Wk0xMy41IDdWOUg2LjVWN0gxMy41Wk02LjUgMTEuNVYxMEgxMy41VjExLjVINi41WlwiIGZpbGw9XCIjMjEyMTIyXCIvPlxuICAgICAgPC9zdmc+PC9kaXY+XG5cbiAgICA8IS0tIFN0ZXAgTnVtYmVyIGFuZCBUaXRsZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtc2VtaWJvbGQgY3FhLWZsZXgtMSBjcWEtdGV4dC1bIzMzNDE1NV0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtZm9udC1pbnRlciBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiIHN0eWxlPVwid29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgIDxzcGFuPnt7IHN0ZXBOdW1iZXIgfX0uIDxzcGFuIFtpbm5lckhUTUxdPVwidGl0bGVcIj48L3NwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbWwtMSBjcWEtcHgtMS41IGNxYS1weS0wLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMyMTIxMjJdIGNxYS1iZy1bI0YwRjBGMV0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtbWluLXctbWF4XCI+XG4gICAgICAgIERhdGFiYXNlXG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZy5zdGVwRGVsZXRlZFwiIGNsYXNzPVwiY3FhLXB4LTEuNSBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtWzRweF0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyNCNDIzMThdIGNxYS1iZy1bI0ZFRjNGMl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRkVFNEUyXVwiPlxuICAgICAgICBEZWxldGVkXG4gICAgICA8L3NwYW4+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLWZvbnQtaW50ZXJcIj5cbiAgICAgIDwhLS0gU3RlcCBDaGFuZ2UgQmFkZ2VzIChkZWJ1ZyBvbmx5KSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlYnVnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHN0ZXBCYWRnZXNcIj5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiYmFkZ2UgPT09ICdza2lwcGVkJ1wiXG4gICAgICAgICAgbGFiZWw9XCJTa2lwcGVkXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFt0ZXh0Q29sb3JdPVwiJyM0QTU1NjUnXCJcbiAgICAgICAgICBbYm9yZGVyQ29sb3JdPVwiJyM5OUExQUYnXCJcbiAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjRkZGRkZGJ1wiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiYmFkZ2UgPT09ICdlZGl0ZWQnXCJcbiAgICAgICAgICBsYWJlbD1cIkVkaXRlZFwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbdGV4dENvbG9yXT1cIicjRkJCRjI0J1wiXG4gICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjRkRERjkyJ1wiXG4gICAgICAgICAgW2JhY2tncm91bmRDb2xvcl09XCInI0ZGRjlFOSdcIj5cbiAgICAgICAgPC9jcWEtYmFkZ2U+XG4gICAgICAgIDxjcWEtYmFkZ2VcbiAgICAgICAgICAqbmdJZj1cImJhZGdlID09PSAnYWRkZWQnXCJcbiAgICAgICAgICBsYWJlbD1cIkFkZGVkXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFt0ZXh0Q29sb3JdPVwiJyMwREJEN0QnXCJcbiAgICAgICAgICBbYm9yZGVyQ29sb3JdPVwiJyM1RUQzQTgnXCJcbiAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjQ0ZGMkU1J1wiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiYmFkZ2UgPT09ICdyZW1vdmVkJ1wiXG4gICAgICAgICAgbGFiZWw9XCJSZW1vdmVkXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFt0ZXh0Q29sb3JdPVwiJyNFRTNGM0YnXCJcbiAgICAgICAgICBbYm9yZGVyQ29sb3JdPVwiJyNGNDdGN0YnXCJcbiAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjRkNEOUQ5J1wiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZkhlYWxBbmFseXNpc1wiIGNsYXNzPVwiY3FhLXB4LTEuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzA5N0U1M10gY3FhLWJnLVsjQ0ZGMkU1XSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1taW4tdy1tYXggY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCI+XG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDkgOVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk00LjUwOTQxIDBDNC41NjQ4OSAwLjAyMjczODQgNC41ODg1OSAwLjA3ODI2NTIgNC42MTEzMSAwLjEyOTg0NkM0LjYyMjY5IDAuMTU5OSA0LjYzMzE0IDAuMTkwMTE3IDQuNjQzMjkgMC4yMjA1NzVDNC42NDcyNiAwLjIzMjI0NyA0LjY1MTIzIDAuMjQzOTE4IDQuNjU1MzIgMC4yNTU5NDNDNC43MDgwNiAwLjQxMzAwNSA0Ljc1NTA0IDAuNTcxNzQ4IDQuODAyMjkgMC43MzAzOEM0LjgxMjk3IDAuNzY2MTkgNC44MjM2OSAwLjgwMTk4NyA0LjgzNDQyIDAuODM3NzgzQzQuODg5MDUgMS4wMjAwNCA0Ljk0MzI3IDEuMjAyNCA0Ljk5NzE5IDEuMzg0ODRDNS4wMDQ3NiAxLjQxMDQ3IDUuMDEyMzQgMS40MzYwOSA1LjAxOTkyIDEuNDYxNzFDNS4wNDEyOCAxLjUzMzk1IDUuMDYyNjIgMS42MDYxOSA1LjA4MzgzIDEuNjc4NDdDNS4xMjg2NyAxLjgzMTIgNS4xNzQ3MyAxLjk4MzQ3IDUuMjIzNzggMi4xMzUwMUM1LjIyODA3IDIuMTQ4MjcgNS4yMzIzNiAyLjE2MTUyIDUuMjM2NzcgMi4xNzUxOEM1LjM2NDIgMi41NjUgNS41NDQ4MiAyLjkxNDM3IDUuODQwOSAzLjIxMTk2QzUuODQ4MjMgMy4yMTk3IDUuODU1NTYgMy4yMjc0NCA1Ljg2MzEyIDMuMjM1NDFDNS45ODk1IDMuMzY0MzcgNi4xNTE2OSAzLjQ2NzcxIDYuMzEzOCAzLjU1MTExQzYuMzIyMDYgMy41NTU0MiA2LjMzMDMxIDMuNTU5NzQgNi4zMzg4MiAzLjU2NDE5QzYuODE1ODcgMy44MDkyNSA3LjM4OTUxIDMuOTE3MDQgNy45MDYxOSA0LjA2MDVDOC4xMzI2IDQuMTIzNCA4LjM1ODMgNC4xODgyOSA4LjU4MzE3IDQuMjU2MDNDOC41OTg5NyA0LjI2MDc5IDguNjE0NzggNC4yNjU1NCA4LjYzMDU4IDQuMjcwMjhDOC42Nzc4NCA0LjI4NDQ1IDguNzI1IDQuMjk4ODcgOC43NzIxMSA0LjMxMzQ3QzguNzgzMSA0LjMxNjc5IDguNzk0MDggNC4zMjAxMSA4LjgwNTM5IDQuMzIzNTNDOC44NzAyOSA0LjM0NDA2IDguOTMyMzkgNC4zNjgyOSA4Ljk4NTY2IDQuNDEwMjdDOS4wMDE5MSA0LjQ0NDE4IDkuMDAxOTEgNC40NDQxOCA4Ljk5NzQ4IDQuNDc4MUM4Ljk0NTY0IDQuNTI3MzYgOC44OTQyIDQuNTUwNDYgOC44MjU3OCA0LjU3M0M4LjgxNiA0LjU3NjMyIDguODA2MjIgNC41Nzk2NSA4Ljc5NjE0IDQuNTgzMDhDOC42ODA2MSA0LjYyMTgzIDguNTYzNTEgNC42NTU3NSA4LjQ0NjI2IDQuNjg5MzVDOC40MjIyIDQuNjk2MyA4LjM5ODE0IDQuNzAzMjYgOC4zNzQwOCA0LjcxMDIxQzguMjI1NzEgNC43NTMwMSA4LjA3NzA4IDQuNzk0OSA3LjkyODI5IDQuODM2MzJDNy43MzIzMiA0Ljg5MDg4IDcuNTM2NjMgNC45NDYzNCA3LjM0MTEzIDUuMDAyNDNDNy4zMDkxIDUuMDExNjIgNy4yNzcwNiA1LjAyMDc4IDcuMjQ1MDEgNS4wMjk5MUM3LjA3NjcxIDUuMDc3ODYgNi45MDkyMyA1LjEyNzUzIDYuNzQzMTQgNS4xODIwOEM2LjcyOTM3IDUuMTg2NTkgNi43MTU1OSA1LjE5MTEgNi43MDEzOSA1LjE5NTc0QzYuMTQ1MTEgNS4zODA4MiA1LjcyMTEgNS43MjYwOSA1LjQ1NTcxIDYuMjMwOTlDNS4zMTI2MyA2LjUxNDc1IDUuMjI4MjMgNi44MjE2MSA1LjE0MjE0IDcuMTI0NDdDNS4xMTg4NCA3LjIwNjE5IDUuMDk0MDkgNy4yODc0NSA1LjA2OTA1IDcuMzY4NjlDNS4wNDk0IDcuNDMyNjEgNS4wMzAyIDcuNDk2NjMgNS4wMTE0OSA3LjU2MDgxQzUuMDA5MjYgNy41Njg0NCA1LjAwNzAzIDcuNTc2MDggNS4wMDQ3MyA3LjU4Mzk1QzQuOTkzOTQgNy42MjA5NCA0Ljk4MzE5IDcuNjU3OTMgNC45NzI1MiA3LjY5NDk1QzQuOTQ1MTkgNy43ODg3OSA0LjkxNTc4IDcuODgxODcgNC44ODU1NSA3Ljk3NDg5QzQuODMxOTEgOC4xNDAyMSA0Ljc4MzEgOC4zMDY3NCA0LjczNDU5IDguNDczNUM0LjY2MTQ0IDguNzI0NTcgNC42NjE0NCA4LjcyNDU3IDQuNjE5OTcgOC44NDUyN0M0LjYxNzIxIDguODUzMzcgNC42MTQ0NiA4Ljg2MTQ3IDQuNjExNjMgOC44Njk4MkM0LjU5NjQ5IDguOTEyNzggNC41ODA5MiA4Ljk1MjMzIDQuNTUyMjYgOC45ODg3QzQuNTA4NjcgOC45OTc4OCA0LjUwODY3IDguOTk3ODggNC40Njk1MSA5QzQuNDI0NzMgOC45Mzc1OSA0LjM5NTA4IDguODc3MTEgNC4zNzEzMyA4LjgwNTA4QzQuMzY3ODcgOC43OTQ4NyA0LjM2NDQxIDguNzg0NjYgNC4zNjA4NSA4Ljc3NDE1QzQuMzE2ODQgOC42NDI0OCA0LjI3NzUxIDguNTA5NDYgNC4yMzgxNyA4LjM3NjQ2QzQuMjI5MTYgOC4zNDYwNCA0LjIyMDExIDguMzE1NjQgNC4yMTEwNSA4LjI4NTI0QzQuMTQzNiA4LjA1ODYzIDQuMDc3MjUgNy44MzE3NCA0LjAxMTAxIDcuNjA0ODFDMy43MzUwNyA2LjQ4MjI0IDMuNzM1MDcgNi40ODIyNCAzLjAzOSA1LjU3NDY2QzMuMDI3ODQgNS41NjU5NiAzLjAxNjY5IDUuNTU3MjYgMy4wMDUxOSA1LjU0ODNDMi41NDkxMyA1LjE5OTAyIDEuOTQ4MzQgNS4wNjk2OSAxLjM5ODE1IDQuOTE4MTNDMS4yNjIwNyA0Ljg4MDYyIDEuMTI2MDUgNC44NDI5MyAwLjk5MDAzMiA0LjgwNTIzQzAuOTc4MTM4IDQuODAxOTMgMC45NzgxMzggNC44MDE5MyAwLjk2NjAwMyA0Ljc5ODU3QzAuNzY5ODExIDQuNzQ0MTcgMC41NzM2NzQgNC42ODk2MyAwLjM3ODIyNCA0LjYzMjgzQzAuMzY5OTU2IDQuNjMwNDUgMC4zNjE2ODggNC42MjgwNiAwLjM1MzE2OSA0LjYyNTYxQzAuMDUyODk4OSA0LjUzODgzIDAuMDUyODk4OSA0LjUzODgzIDAuMDAwNjQ2NTM3IDQuNDc4MUMtMC4wMDA4MzEyNjEgNC40NTA1NCAtMC4wMDA4MzEyNjEgNC40NTA1NCAwLjAxMjQ2ODkgNC40MjE1N0MwLjA2NzA4MzUgNC4zNzA0IDAuMTIwMDc3IDQuMzQ4NDggMC4xOTIxNiA0LjMyNjE5QzAuMjAyNTk3IDQuMzIyODQgMC4yMTMwMzQgNC4zMTk0OCAwLjIyMzc4NyA0LjMxNjAzQzAuMjU1NzUzIDQuMzA1ODIgMC4yODc3ODggNC4yOTU4NCAwLjMxOTg1MSA0LjI4NTkyQzAuMzI5MDAxIDQuMjgzMDUgMC4zMzgxNTEgNC4yODAxNyAwLjM0NzU3OCA0LjI3NzIyQzAuNDEyMjg1IDQuMjU2OTMgMC40NzcyMjUgNC4yMzc0IDAuNTQyMjU5IDQuMjE4MDlDMC41NTgyNCA0LjIxMzMyIDAuNTU4MjQgNC4yMTMzMiAwLjU3NDU0NCA0LjIwODQ2QzAuODUyMjY5IDQuMTI1ODcgMS4xMzE4MSA0LjA0OSAxLjQxMTI2IDMuOTcxOTZDMS42MTk1IDMuOTE0NTUgMS44MjczOCAzLjg1NjE4IDIuMDM0NiAzLjc5NTQ4QzIuMDQ0MTMgMy43OTI3MSAyLjA1MzY1IDMuNzg5OTMgMi4wNjM0NiAzLjc4NzA3QzIuNTQzNSAzLjY0Njk2IDMuMDEyNzggMy40NDgxNiAzLjMyMjc0IDMuMDUzN0MzLjMyNzM4IDMuMDQ3ODUgMy4zMzIwMiAzLjA0MiAzLjMzNjggMy4wMzU5N0MzLjY4MTk3IDIuNTk4MTUgMy44MTY1OCAyLjA2NTcyIDMuOTY2OTUgMS41NDYyMUM0LjAxNjQzIDEuMzc1MzQgNC4wNjY0OSAxLjIwNDY0IDQuMTE2NzMgMS4wMzM5OUM0LjEzMDY0IDAuOTg2NzMzIDQuMTQ0NTMgMC45Mzk0NzEgNC4xNTgzNiAwLjg5MjE5NEM0LjIxMzk0IDAuNzAyMjg5IDQuMjcwMzUgMC41MTI2NDIgNC4zMyAwLjMyMzg2NEM0LjMzNTU4IDAuMzA2MTg2IDQuMzQxMTQgMC4yODg1MDEgNC4zNDY2NiAwLjI3MDgwN0M0LjQzMDE3IDAuMDAzOTg3NjEgNC40MzAxNyAwLjAwMzk4NzYxIDQuNTA5NDEgMFpcIiBmaWxsPVwiIzBEQkQ3RFwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTcuMjM1OTcgMC41NTQ4NTlDNy4yOTAyNCAwLjYxMzU5OSA3LjMwMTA5IDAuNjgyNjMxIDcuMzE3OTkgMC43NTc2MzhDNy4zNzQzNiAwLjk5MzI2OSA3LjQzOTI5IDEuMjA5OTMgNy42NjQ2NyAxLjM0NjgxQzcuODAzNzEgMS40MjAzNSA3Ljk2OTQ0IDEuNDUzODEgOC4xMjM1IDEuNDg1NDFDOC4xODg1NCAxLjQ5OTAyIDguMjQzNDggMS41MTcwOSA4LjI5OTI0IDEuNTUzMjFDOC4zMTE4MSAxLjU3MjI5IDguMzExODEgMS41NzIyOSA4LjMxMTA3IDEuNjA1NDlDOC4yOTgxNCAxLjY0NTg4IDguMjg2NzggMS42NTg5IDguMjUyNjkgMS42ODUzM0M4LjIxNTQzIDEuNjk3MjYgOC4yMTU0MyAxLjY5NzI2IDguMTcwNjggMS43MDY1M0M4LjE1Mzc1IDEuNzEwMjUgOC4xMzY4MyAxLjcxNCA4LjExOTkyIDEuNzE3NzlDOC4xMTA4NiAxLjcxOTggOC4xMDE4MSAxLjcyMTgxIDguMDkyNDcgMS43MjM4OEM3LjgxNjk2IDEuNzg0ODIgNy44MTY5NiAxLjc4NDgyIDcuNTc4ODIgMS45MjI3M0M3LjU3MTA4IDEuOTI4NjkgNy41NjMzMyAxLjkzNDY2IDcuNTU1MzYgMS45NDA4QzcuMzg1MTYgMi4wODQzMSA3LjM0OTE2IDIuMzIzMDMgNy4yOTc5MyAyLjUyMzAxQzcuMjk0OTkgMi41MzM5OSA3LjI5MjA2IDIuNTQ0OTcgNy4yODkwMyAyLjU1NjI5QzcuMjg2NDkgMi41NjYwMSA3LjI4Mzk1IDIuNTc1NzMgNy4yODEzMyAyLjU4NTc1QzcuMjcwMjggMi42MTU0NCA3LjI1ODgxIDIuNjM0NzkgNy4yMzU5NyAyLjY1NzU0QzcuMTcyMzQgMi42NjUyNyA3LjE3MjM0IDIuNjY1MjcgNy4xNDEzOSAyLjY1NzU0QzcuMDkyMTYgMi42MjEwNiA3LjA4MTE0IDIuNTc5NSA3LjA2ODI4IDIuNTIzNjVDNy4wNjYxMyAyLjUxNTAxIDcuMDYzOTggMi41MDYzNiA3LjA2MTc2IDIuNDk3NDVDNy4wNTQ4OSAyLjQ2OTgzIDcuMDQ4MjQgMi40NDIxNyA3LjA0MTY0IDIuNDE0NDlDNi45ODk3OSAyLjE5ODk3IDYuOTMxMjYgMS45ODc1MSA2LjcyNDUxIDEuODYxMThDNi41NjI5MyAxLjc3NTAxIDYuMzY2NDYgMS43MzQyNiA2LjE4NTg3IDEuNzAxMzZDNi4xMzYzNyAxLjY5MTUxIDYuMTA4MDIgMS42NzkxMSA2LjA3NzM4IDEuNjQwMTJDNi4wNzA3MyAxLjYwMDU1IDYuMDcwNzMgMS42MDA1NSA2LjA3NzM4IDEuNTYwOThDNi4xMjQ0NyAxLjUxNDM3IDYuMTc0MDIgMS41MDI5OSA2LjIzNzcyIDEuNDg4OTFDNi4yNTc3OCAxLjQ4NDE2IDYuMjc3ODQgMS40NzkzOCA2LjI5Nzg5IDEuNDc0NTZDNi4zMDgyNSAxLjQ3MjA5IDYuMzE4NjEgMS40Njk2MiA2LjMyOTI5IDEuNDY3MDdDNi4zODIxMiAxLjQ1NDA3IDYuNDM0NDMgMS40Mzk0OSA2LjQ4NjczIDEuNDI0NjJDNi40OTYyMyAxLjQyMTk4IDYuNTA1NzMgMS40MTkzNSA2LjUxNTUyIDEuNDE2NjNDNi42MjE4MiAxLjM4NjI0IDYuNzEzNTYgMS4zNDczNyA2Ljc5ODU0IDEuMjc4MzZDNi44MDY0NyAxLjI3MjEzIDYuODE0MzkgMS4yNjU4OSA2LjgyMjU1IDEuMjU5NDZDNi45NTQ4IDEuMTQ1NjUgNi45OTk3NCAwLjk3NDY3NCA3LjA0MDUzIDAuODE1MTM0QzcuMDQzNjQgMC44MDMwMjIgNy4wNDY3NSAwLjc5MDkxIDcuMDQ5OTUgMC43Nzg0MzJDNy4wNTYxNCAwLjc1NDEwMSA3LjA2MjIyIDAuNzI5NzQzIDcuMDY4MTcgMC43MDUzNTlDNy4wNzI0MyAwLjY4ODM5NCA3LjA3MjQzIDAuNjg4Mzk0IDcuMDc2NzggMC42NzEwODZDNy4wNzkyNyAwLjY2MDk1MSA3LjA4MTc1IDAuNjUwODE2IDcuMDg0MzEgMC42NDAzNzNDNy4wOTUyMSAwLjYwODEwOCA3LjEwOTUyIDAuNTgyNzcyIDcuMTI5NTcgMC41NTQ4NTlDNy4xNjgxIDAuNTM2NDM1IDcuMTk1MTUgMC41NDQ3NjQgNy4yMzU5NyAwLjU1NDg1OVpcIiBmaWxsPVwiIzA3NUYzRlwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTEuNzk1NDUgNi4yNDcxQzEuODA5NTEgNi4yNDcxOSAxLjgwOTUxIDYuMjQ3MTkgMS44MjM4NiA2LjI0NzI5QzEuOTI0NzcgNi4yNTAyMiAxLjk5MzA0IDYuMjgxMTUgMi4wNjczNiA2LjM0NjAxQzIuMTUzODQgNi40MzUzMyAyLjE5Mzc3IDYuNTM2MTEgMi4xOTE1IDYuNjU2NUMyLjE4MTc4IDYuNzU0MTIgMi4xMjE1OCA2LjgzOTM1IDIuMDQ3NzMgNi45MDUzM0MxLjk2MDgxIDYuOTcyNDIgMS44NzMxMyA2Ljk5NDU5IDEuNzYyMDYgNi45OTE0OUMxLjY2ODQxIDYuOTgxMDcgMS41ODAzIDYuOTM4NTIgMS41MTM5MyA2Ljg3NDUxQzEuNDMxMzggNi43NjY4MSAxLjQwNzI1IDYuNjY4MDMgMS40MTkzNSA2LjUzNTM3QzEuNDQ0MzMgNi40MzA5MiAxLjUxNjM3IDYuMzQ2MTMgMS42MDg1IDYuMjg2NjZDMS42NzI1MSA2LjI1NTY0IDEuNzIzOTkgNi4yNDY1MiAxLjc5NTQ1IDYuMjQ3MVpcIiBmaWxsPVwiIzBEQkQ3RFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgU2VsZi1oZWFsZWRcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtcm91bmRlZC1bNHB4XSBjcWEtcHktMC41IGNxYS1weC0xIGNxYS1iZy1bIzYzNjZGMTFBXSBjcWEtbWwtMSBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLW9wYWNpdHktODAgY3FhLXRyYW5zaXRpb24tb3BhY2l0eVwiIFxuICAgICAgICAgICAqbmdJZj1cInN0ZXA/LmV4ZWN1dGVkUmVzdWx0Py52aWRlb19zdGFydF90aW1lXCIgXG4gICAgICAgICAgIFttYXRUb29sdGlwXT1cIidKdW1wIHRvIHZpZGVvIHRpbWUnXCIgXG4gICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgKGNsaWNrKT1cIm9uSnVtcFRvVGltZXN0YW1wKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWyM2MzYzNjNdICFjcWEtdGV4dC1bMTBweF0gIWNxYS13LVsxMHB4XSAhY3FhLWgtWzEwcHhdXCI+XG4gICAgICAgICAgcGxheV9hcnJvd1xuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVs4cHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtWyM2MzYzNjNdXCI+XG4gICAgICAgICAge3sgZm9ybWF0RHVyYXRpb25DbG9jayhzdGVwPy5leGVjdXRlZFJlc3VsdD8udmlkZW9fc3RhcnRfdGltZSB8fCAwKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0RlYnVnXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMC41IGNxYS10ZXh0LVsjOUNBM0FGXVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFzdGVwPy5pc1N0ZXBHcm91cENoaWxkcmVuXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3FhLXAtMCBjcWEtYm9yZGVyLTAgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5IGZvY3VzOmNxYS1vdXRsaW5lLW5vbmVcIiBhcmlhLWxhYmVsPVwiRWRpdFwiIChjbGljayk9XCJvbkVkaXRTdGVwKCRldmVudClcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIhY3FhLXRleHQtWzE0cHhdICFjcWEtdy1bMTRweF0gIWNxYS1oLVsxNHB4XVwiPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFzdGVwPy5pc1N0ZXBHcm91cENoaWxkcmVuXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3FhLXAtMCBjcWEtYm9yZGVyLTAgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5IGZvY3VzOmNxYS1vdXRsaW5lLW5vbmVcIiBhcmlhLWxhYmVsPVwiQWRkXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFkZFN0ZXBNZW51XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS10ZXh0LVsxNHB4XSAhY3FhLXctWzE0cHhdICFjcWEtaC1bMTRweF1cIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1tZW51ICNhZGRTdGVwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImNxYS1hZGQtc3RlcC1tZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCIgeVBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IG9wdCBvZiBhZGRTdGVwTWVudU9wdGlvbnNcIiAoY2xpY2spPVwib25BZGRTdGVwT3B0aW9uU2VsZWN0KG9wdCwgJGV2ZW50KVwiPnt7IG9wdC5sYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWZmZWN0aXZlU3RlcE1vcmVNZW51T3B0aW9ucy5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1vcGFjaXR5LTgwIGNxYS10cmFuc2l0aW9uLW9wYWNpdHkgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZVwiIGFyaWEtbGFiZWw9XCJNb3JlIG9wdGlvbnNcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwic3RlcE1vcmVNZW51XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS10ZXh0LVsxNHB4XSAhY3FhLXctWzE0cHhdICFjcWEtaC1bMTRweF1cIj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1tZW51ICNzdGVwTW9yZU1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJjcWEtc3RlcC1tb3JlLW1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIiB5UG9zaXRpb249XCJiZWxvd1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgb3B0IG9mIGVmZmVjdGl2ZVN0ZXBNb3JlTWVudU9wdGlvbnNcIiAoY2xpY2spPVwib25TdGVwTW9yZU9wdGlvblNlbGVjdChvcHQsICRldmVudClcIj57eyBvcHQubGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oZHVyYXRpb24pIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3ZnICpuZ0lmPVwiaGFzU3ViU3RlcHMgfHwgIWlzTGl2ZVwiIFtjbGFzcy5jcWEtcm90YXRlLTE4MF09XCJpc0V4cGFuZGVkXCIgY2xhc3M9XCJjcWEtdHJhbnNpdGlvbi10cmFuc2Zvcm1cIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0zLjUgNUw3IDguNUwxMC41IDVcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gU3ViLXN0ZXBzIChsb2dzKSAtIHNob3duIHdoZW4gZXhwYW5kZWQgZm9yIGJvdGggbGl2ZSBhbmQgcnVuIHJlc3VsdCAtLT5cbiAgPGRpdiAqbmdJZj1cImlzRXhwYW5kZWQgJiYgaGFzU3ViU3RlcHNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLXB0LTEgY3FhLXBsLTkgY3FhLXByLTYgY3FhLXBiLTIgY3FhLWJnLXdoaXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViU3RlcCBvZiAoaXNMaXZlID8gcHJvY2Vzc2VkU3ViU3RlcHMgOiBwcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdClcIj5cbiAgICAgIDxjcWEtYWktbG9ncy13aXRoLXJlYXNvbmluZ1xuICAgICAgICAqbmdJZj1cIiRhbnkoc3ViU3RlcCkuaXNBaUF1dG9IZWFsUmVzdWx0XCJcbiAgICAgICAgW3N0YXR1c109XCJzdWJTdGVwLnN0YXR1c1wiXG4gICAgICAgIFt0ZXh0XT1cIiRhbnkoc3ViU3RlcCkudGV4dCB8fCBzdWJTdGVwPy52YWx1ZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCIkYW55KHN1YlN0ZXApLmRlc2NyaXB0aW9uIHx8IHN1YlN0ZXA/LnRleHQgfHwgc3ViU3RlcD8udmFsdWVcIlxuICAgICAgICBbcmVhc29uaW5nXT1cIiRhbnkoc3ViU3RlcCkucmVhc29uaW5nIHx8IHN1YlN0ZXA/LnJlYXNvbmluZ1wiXG4gICAgICAgIFtkdXJhdGlvbl09XCJzdWJTdGVwLmR1cmF0aW9uXCI+XG4gICAgICA8L2NxYS1haS1sb2dzLXdpdGgtcmVhc29uaW5nPlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiISRhbnkoc3ViU3RlcCkuaXNBaUF1dG9IZWFsUmVzdWx0XCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzUuNXB4XSBjcWEtcHgtM1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcycgfHwgc3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncGFzc2VkJ1wiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnIHx8IHN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCdcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTcuNSA0LjVMNC41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNC41TDcuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnXCI+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTYgMUE1IDUgMCAwIDEgMTEgNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleC0xIGNxYS10ZXh0LVsxM3B4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyMzNjQxNTNdXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlLWxpbmU7IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAge3sgJGFueShzdWJTdGVwKS5kZXNjcmlwdGlvbiB8fCAkYW55KHN1YlN0ZXApLnRleHQgfX1cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzTGl2ZSAmJiAkYW55KHN1YlN0ZXApLnJlbWFpbmluZ1NlY29uZHMgIT0gbnVsbFwiIGNsYXNzPVwiY3FhLXRleHQtWyNGOTczMTZdIGNxYS1mb250LW1lZGl1bSBjcWEtbWwtMVwiPih7eyAkYW55KHN1YlN0ZXApLnJlbWFpbmluZ1NlY29uZHMgfX1zIHJlbWFpbmluZyk8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKHN1YlN0ZXAuZHVyYXRpb24pIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgKGRiIHF1ZXJpZXMsIGFzc2VydGlvbnMsIGV0Yy4pIC0gcnVuIHJlc3VsdCBvbmx5IC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNFeHBhbmRlZCAmJiAhaXNMaXZlXCIgY2xhc3M9XCJjcWEtcC0yICFjcWEtcGwtOSAhY3FhLXByLTYgY3FhLWJnLXdoaXRlXCIgc3R5bGU9XCJib3JkZXItdG9wOiAxcHggc29saWQgI0U0RTRFNDtcIj5cbiAgICA8IS0tIFN1bW1hcnkgQmFyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtbWItMS41IGNxYS1wLTMgY3FhLWJnLVsjRkNGQ0ZDXSBjcWEtcm91bmRlZC1bNnB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjRTVFN0VCO1wiICpuZ0lmPVwiZ2V0U3RhdHVzKCkgfHwgZHVyYXRpb24gfHwgY2FjaGVkUXVlcnlSZXN1bHRzPy5sZW5ndGggPiAwIHx8IGRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cz8ubGVuZ3RoID4gMCB8fCBnZXRUb3RhbFJvd3NSZXR1cm5lZCgpID4gMCB8fCBnZXRGYWlsdXJlTWVzc2FnZSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTRcIj5cbiAgICAgICAgPCEtLSBTdGF0dXMgQmFkZ2UgLS0+XG4gICAgICAgIDxjcWEtYmFkZ2VcbiAgICAgICAgICAqbmdJZj1cImdldFN0YXR1cygpPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgZ2V0U3RhdHVzKCk/LnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICBsYWJlbD1cIkZBSUxcIlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiNEQzI2MjZcIlxuICAgICAgICAgIHRleHRDb2xvcj1cIiNGRkZGRkZcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiZ2V0U3RhdHVzKCk/LnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJ1wiXG4gICAgICAgICAgbGFiZWw9XCJQQVNTXCJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjMjJDNTVFXCJcbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjRkZGRkZGXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIj5cbiAgICAgICAgPC9jcWEtYmFkZ2U+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1oLVsxOXB4XSBjcWEtdy1bMXB4XSBjcWEtYmctWyNFNUU3RUJdXCI+PC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8IS0tIFN1bW1hcnkgU3RhdHMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtNCBjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZHVyYXRpb25cIiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+VG90YWwgVGltZTogPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzRCNTU2M11cIj57eyBmb3JtYXREdXJhdGlvbihkdXJhdGlvbikgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FjaGVkUXVlcnlSZXN1bHRzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LVsjMTExODI3XVwiPlF1ZXJpZXM6IDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM0QjU1NjNdXCI+e3sgY2FjaGVkUXVlcnlSZXN1bHRzPy5sZW5ndGggfHwgMCB9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+QXNzZXJ0aW9uczogPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzRCNTU2M11cIj57eyBkYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHM/Lmxlbmd0aCB8fCAwIH19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldFRvdGFsUm93c1JldHVybmVkKCkgPiAwXCIgY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS10ZXh0LVsjMTExODI3XVwiPlJvd3MgUmV0dXJuZWQ6IDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM0QjU1NjNdXCI+e3sgZ2V0VG90YWxSb3dzUmV0dXJuZWQoKSB9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRmFpbHVyZSBCYW5uZXIgLS0+XG4gICAgICA8ZGl2IFxuICAgICAgICAqbmdJZj1cImdldEZhaWx1cmVNZXNzYWdlKClcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1weC0yIGNxYS1weS0xIGNxYS1iZy1bI0ZFRjJGMl0gY3FhLXJvdW5kZWQtWzRweF1cIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNGRUUyRTI7XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyNCOTFDMUNdXCI+XG4gICAgICAgICAge3sgZ2V0RmFpbHVyZU1lc3NhZ2UoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRGF0YWJhc2UgRW52aXJvbm1lbnQgU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZGJDb25maWdcIiBjbGFzcz1cImNxYS1tYi0xLjVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1tYi0yXCI+RGF0YWJhc2UgZW52aXJvbm1lbnQ8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctd2hpdGUgY3FhLXJvdW5kZWQtbGcgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1weC00IGNxYS1weS0yIGNxYS1yZWxhdGl2ZSBjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1nYXAtM1wiPlxuICAgICAgICA8IS0tIEVudmlyb25tZW50IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNDU1NTZDXSBjcWEtbWItMVwiPkVudmlyb25tZW50PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC00XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyMwRjE3MkJdXCI+e3sgZGJDb25maWcubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJjb3B5RW52aXJvbm1lbnQoKVwiIGNsYXNzPVwiY3FhLWN1cnNvci1wb2ludGVyIGNxYS1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTUuMzMzMzIgMTAuNjY2N0gzLjk5OTk5QzMuNjQ2MzcgMTAuNjY2NyAzLjMwNzIzIDEwLjUyNjMgMy4wNTcxOCAxMC4yNzYyQzIuODA3MTMgMTAuMDI2MiAyLjY2NjY2IDkuNjg3MDQgMi42NjY2NiA5LjMzMzQxVjQuMDAwMDhDMi42NjY2NiAzLjY0NjQ2IDIuODA3MTMgMy4zMDczMiAzLjA1NzE4IDMuMDU3MjdDMy4zMDcyMyAyLjgwNzIyIDMuNjQ2MzcgMi42NjY3NSAzLjk5OTk5IDIuNjY2NzVIOS4zMzMzMkM5LjY4Njk1IDIuNjY2NzUgMTAuMDI2MSAyLjgwNzIyIDEwLjI3NjEgMy4wNTcyN0MxMC41MjYyIDMuMzA3MzIgMTAuNjY2NyAzLjY0NjQ2IDEwLjY2NjcgNC4wMDAwOFY1LjMzMzQxTTYuNjY2NjYgMTMuMzMzNEgxMkMxMi4zNTM2IDEzLjMzMzQgMTIuNjkyOCAxMy4xOTI5IDEyLjk0MjggMTIuOTQyOUMxMy4xOTI4IDEyLjY5MjggMTMuMzMzMyAxMi4zNTM3IDEzLjMzMzMgMTIuMDAwMVY2LjY2Njc1QzEzLjMzMzMgNi4zMTMxMyAxMy4xOTI4IDUuOTczOTkgMTIuOTQyOCA1LjcyMzk0QzEyLjY5MjggNS40NzM4OSAxMi4zNTM2IDUuMzMzNDEgMTIgNS4zMzM0MUg2LjY2NjY2QzYuMzEzMDMgNS4zMzM0MSA1Ljk3MzkgNS40NzM4OSA1LjcyMzg1IDUuNzIzOTRDNS40NzM4IDUuOTczOTkgNS4zMzMzMiA2LjMxMzEzIDUuMzMzMzIgNi42NjY3NVYxMi4wMDAxQzUuMzMzMzIgMTIuMzUzNyA1LjQ3MzggMTIuNjkyOCA1LjcyMzg1IDEyLjk0MjlDNS45NzM5IDEzLjE5MjkgNi4zMTMwMyAxMy4zMzM0IDYuNjY2NjYgMTMuMzMzNFpcIiBzdHJva2U9XCIjNjM2MzYzXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDwhLS0gQ29waWVkIFRvb2x0aXAgLS0+XG4gICAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RW52aXJvbm1lbnRDb3BpZWRcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcmlnaHQtMCBjcWEtdG9wLWZ1bGwgY3FhLW10LTEgY3FhLXB4LTIgY3FhLXB5LTEgY3FhLWJnLVsjMEIwQjBCXSBjcWEtdGV4dC13aGl0ZSBjcWEtdGV4dC1bMTBweF0gY3FhLXJvdW5kZWQgY3FhLXdoaXRlc3BhY2Utbm93cmFwIGNxYS16LTUwIGNxYS1zaGFkb3ctbGdcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiYW5pbWF0aW9uOiBmYWRlSW5PdXQgMC4ycyBlYXNlLWluLW91dDtcIj5cbiAgICAgICAgICAgICAgICBDb3BpZWQhXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM0NTU1NkNdIGNxYS1tYi0xXCI+VHlwZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10ZXh0LVsjMEYxNzJCXVwiPnt7IGRiQ29uZmlnLmRiVHlwZSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1tYi0xLjVcIiAqbmdJZj1cImNhY2hlZFF1ZXJ5UmVzdWx0cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLW1iLTJcIj5RdWVyeSBFeGVjdXRpb248L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1weC00IGNxYS1weS0yIGNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTBweF1cIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjA7XCI+XG4gICAgICAgIDxjcWEtZGItcXVlcnktZXhlY3V0aW9uLWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlcnlJdGVtIG9mIGNhY2hlZFF1ZXJ5UmVzdWx0czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVF1ZXJ5S2V5XCJcbiAgICAgICAgICBbcXVlcnlOdW1iZXJdPVwiaSArIDFcIlxuICAgICAgICAgIFtxdWVyeUtleV09XCJxdWVyeUl0ZW0ua2V5XCJcbiAgICAgICAgICBbcXVlcnlSZXN1bHRdPVwicXVlcnlJdGVtLnJlc3VsdFwiXG4gICAgICAgICAgW3N0YXR1c109XCJnZXRRdWVyeVN0YXR1cyhxdWVyeUl0ZW0ua2V5KVwiXG4gICAgICAgICAgW3ZhcmlhYmxlTmFtZV09XCJxdWVyeUl0ZW0ua2V5XCJcbiAgICAgICAgICBbb25Kc29uUGF0aENvcGllZEhhbmRsZXJdPVwib25Kc29uUGF0aENvcGllZEhhbmRsZXJcIj5cbiAgICAgICAgPC9jcWEtZGItcXVlcnktZXhlY3V0aW9uLWl0ZW0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVmVyaWZpY2F0aW9uIFNlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cyAmJiBkYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwQjBCMEJdIGNxYS1tYi0yXCI+VmVyaWZpY2F0aW9uPC9kaXY+ICAgICAgXG4gICAgICA8IS0tIFZlcmlmaWNhdGlvbiBUYWJsZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYmctd2hpdGUgY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1weC00IGNxYS1weS0yIGNxYS1vdmVyZmxvdy1oaWRkZW5cIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjA7XCI+XG4gICAgICAgIDwhLS0gU2VnbWVudCBDb250cm9sIGZvciBGaWx0ZXJzIC0tPlxuICAgICAgICA8Y3FhLXNlZ21lbnQtY29udHJvbFxuICAgICAgICAgIFtzZWdtZW50c109XCJmaWx0ZXJTZWdtZW50c1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInZlcmlmaWNhdGlvbkZpbHRlclwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9jcWEtc2VnbWVudC1jb250cm9sPlxuICAgICAgICA8Y3FhLXRhYmxlLXRlbXBsYXRlXG4gICAgICAgICAgW2NvbHVtbnNdPVwidmVyaWZpY2F0aW9uVGFibGVDb2x1bW5zXCJcbiAgICAgICAgICBbZGF0YV09XCJnZXRUYWJsZURhdGEoKVwiXG4gICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgW2lzRW1wdHlTdGF0ZV09XCJpc0VtcHR5VGFibGVcIlxuICAgICAgICAgIFtlbXB0eVN0YXRlQ29uZmlnXT1cImVtcHR5U3RhdGVDb25maWdcIlxuICAgICAgICAgIFtzaG93U2VhcmNoQmFyXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd0ZpbHRlckJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dTZXR0aW5nc0J1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dBdXRvUmVmcmVzaEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dPdGhlckJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dGaWx0ZXJQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgICAgW3NlcnZlclNpZGVQYWdpbmF0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L2NxYS10YWJsZS10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWxmIEhlYWwgQW5hbHlzaXMgLS0+XG4gICAgPGNxYS1zZWxmLWhlYWwtYW5hbHlzaXMgXG4gICAgICAqbmdJZj1cInNlbGZIZWFsQW5hbHlzaXNcIiBcbiAgICAgIFtpZF09XCJzdGVwPy50ZXN0U3RlcElkXCJcbiAgICAgIFtvcmlnaW5hbExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5vcmlnaW5hbExvY2F0b3JcIlxuICAgICAgW2hlYWxlZExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsZWRMb2NhdG9yXCJcbiAgICAgIFtjb25maWRlbmNlXT1cInNlbGZIZWFsQW5hbHlzaXMuY29uZmlkZW5jZVwiXG4gICAgICBbaGVhbE1ldGhvZF09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxNZXRob2RcIlxuICAgICAgW2lzTG9hZGluZ0FjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ0FjY2VwdD8uW3N0ZXA/LnRlc3RTdGVwSWRdIDogZmFsc2VcIlxuICAgICAgW2lzTG9hZGluZ01vZGlmeUFjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ01vZGlmeUFjY2VwdD8uW3N0ZXA/LnRlc3RTdGVwSWRdIDogZmFsc2VcIlxuICAgICAgKGFjdGlvbik9XCJvblNlbGZIZWFsQWN0aW9uKCRldmVudClcIj5cbiAgICA8L2NxYS1zZWxmLWhlYWwtYW5hbHlzaXM+XG5cbiAgICA8IS0tIFRpbWluZyBCcmVha2Rvd24gLS0+XG4gICAgPGRpdiAqbmdJZj1cInRpbWluZ0JyZWFrZG93blwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1lbmQgY3FhLWdhcC01IGNxYS1wdC00IGNxYS1weC00IGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8c3Bhbj5UaW1pbmcgYnJlYWtkb3duPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWRpYWxvZy1tdXRlZCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIEFwcCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMzc0MTUxXVwiPnt7IGZvcm1hdER1cmF0aW9uKHRpbWluZ0JyZWFrZG93bi5hcHApIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMVwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxIDExXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0tMy44MTQ3ZS0wNiAxMC4zMlYtNy4xNTI1NmUtMDdIMC45NTk5OTZWMTAuMzJILTMuODE0N2UtMDZaXCIgZmlsbD1cIiNFNUU3RUJcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgVG9vbCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMzc0MTUxXVwiPnt7IGZvcm1hdER1cmF0aW9uKHRpbWluZ0JyZWFrZG93bi50b29sKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFZpZXcgTW9yZSBGYWlsZWQgU3RlcCBCdXR0b24gLSBzaG93biB3aGVuIGV4cGFuZGVkIGFuZCBmYWlsdXJlIGRldGFpbHMgZXhpc3QgLS0+XG4gICAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvblwiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICAgIDxjcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvblxuICAgICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICAgIFtzdWJTdGVwc109XCJnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKVwiXG4gICAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICAgIFtpc0V4cGFuZGVkXT1cInNob3dGYWlsZWRTdGVwRGV0YWlsc1wiXG4gICAgICAgICh2aWV3TW9yZUNsaWNrKT1cIm9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgPC9jcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVXBkYXRlZCBGYWlsZWQgU3RlcCBDb21wb25lbnQgLSBzaG93biB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b24gJiYgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzICYmIGZhaWx1cmVEZXRhaWxzXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgICAgPGNxYS11cGRhdGVkLWZhaWxlZC1zdGVwXG4gICAgICAgIFt0ZXN0U3RlcFJlc3VsdElkXT1cInRlc3RTdGVwUmVzdWx0SWRcIlxuICAgICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICAgIFtleHBhbmRlZF09XCJ0cnVlXCJcbiAgICAgICAgW3N1YlN0ZXBzXT1cImdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpXCJcbiAgICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgICAgW3JlYXNvbmluZ109XCJyZWFzb25pbmdcIlxuICAgICAgICBbY29uZmlkZW5jZV09XCJjb25maWRlbmNlXCJcbiAgICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICAgIFtpc01ha2luZ0N1cnJlbnRCYXNlbGluZV09XCJpc01ha2luZ0N1cnJlbnRCYXNlbGluZVwiXG4gICAgICAgIFtpc0xpdmVdPVwiaXNMaXZlXCJcbiAgICAgICAgKG1ha2VDdXJyZW50QmFzZWxpbmUpPVwib25NYWtlQ3VycmVudEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgICAodXBsb2FkQmFzZWxpbmUpPVwib25VcGxvYWRCYXNlbGluZSgkZXZlbnQpXCJcbiAgICAgICAgKGFuYWx5emUpPVwib25BbmFseXplKClcIlxuICAgICAgICAodmlld0Z1bGxMb2dzKT1cIm9uVmlld0Z1bGxMb2dzKClcIj5cbiAgICAgIDwvY3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
802
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGItdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2RiLXZlcmlmaWNhdGlvbi1zdGVwL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9kYi12ZXJpZmljYXRpb24tc3RlcC9kYi12ZXJpZmljYXRpb24tc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsWUFBWSxFQUFFLE1BQU0sRUFBeUMsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFxTyw2QkFBNkIsRUFBc0IsOEJBQThCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoVyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFTaEYsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGlCQUFpQjtJQWdFaEUsWUFBb0IsR0FBc0I7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWxEakMsWUFBTyxHQUFhLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFhLEtBQUssQ0FBQztRQUNoQyxrQkFBYSxHQUFhLEtBQUssQ0FBQztRQUMvQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQy9DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3BDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQzVELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQy9ELHVCQUFrQixHQUF3Qiw2QkFBNkIsQ0FBQztRQUN4RSx3QkFBbUIsR0FBeUIsOEJBQThCLENBQUM7UUFLM0Usd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLDRCQUF1QixHQUFHLEVBQUUsQ0FBQztRQU03QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBZ0J4QixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBRWxDLHdGQUF3RjtRQUN4RixzQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFDdEIsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBQy9CLDBCQUFxQixHQUFlLElBQUksQ0FBQztRQUN6Qyx3QkFBbUIsR0FBUSxJQUFJLENBQUM7UUFDaEMseUJBQW9CLEdBQWUsSUFBSSxDQUFDO1FBRWhELDJGQUEyRjtRQUMzRixrQ0FBNkIsR0FBVSxFQUFFLENBQUM7UUFFMUMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBeUJ2QywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFHN0Isd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUluRSx1QkFBa0IsR0FBZ0MsS0FBSyxDQUFDO1FBRXhELG1CQUFjLEdBQUc7WUFDZixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUM5QixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtTQUMxQyxDQUFDO1FBRUYsNkJBQXdCLEdBQXlCLEVBQUUsQ0FBQztRQUVwRCxxQkFBZ0IsR0FBcUI7WUFDbkMsS0FBSyxFQUFFLGVBQWU7WUFDdEIsV0FBVyxFQUFFLDJEQUEyRDtZQUN4RSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsU0FBUztZQUN0QyxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFFRixjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsZ0ZBQWdGO1FBQ2hGLHVCQUFrQixHQUFrRCxFQUFFLENBQUM7SUFyRHZFLENBQUM7SUE5QkQsSUFBSSxVQUFVO1FBQ1osTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBb0JELG9HQUFvRztJQUNwRyxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxxR0FBcUc7SUFDckcsSUFBSSw0QkFBNEI7UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFMUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztRQUNuRCw2RkFBNkY7UUFDN0YsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixJQUFJLFlBQVksQ0FBQztRQUN2RSxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxXQUFXLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBb0NRLFFBQVE7UUFDZixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLG1DQUFtQztRQUNuQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN4SyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzthQUNqQztTQUNGO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDM0MsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO2FBQ3BDO1NBQ0Y7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO2FBQ3BDO1NBQ0Y7UUFFRCxtQ0FBbUM7UUFDbkMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3pCLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbkQsSUFBSSxhQUFhLEtBQUssSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzdDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUksU0FBUztZQUM5QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixXQUFXLEVBQUUsaUJBQWlCO1lBQzlCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRTtZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNJLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVk7UUFDNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM1QztTQUNGO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztTQUNwQztJQUNILENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFO1lBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7WUFDN0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxJQUE0QztRQUN6RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3ZFLE9BQU8sS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQjtZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQzFELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUMvRCxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEtBQUssUUFBUSxDQUNqRCxDQUFDO1FBQ0YsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUNsRCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEQsUUFBUSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDL0IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRSxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRTtnQkFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBbUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQW9DLENBQUM7SUFDakUsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsd0JBQXdCLEdBQUc7WUFDOUI7Z0JBQ0UsT0FBTyxFQUFFLFVBQVU7Z0JBQ25CLFNBQVMsRUFBRSxXQUFXO2dCQUN0QixVQUFVLEVBQUUsVUFBVTtnQkFDdEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxFQUFFLENBQUMsR0FBc0IsRUFBRSxFQUFFO29CQUNqQyxPQUFPOztnQkFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7O1dBRWxDLENBQUM7Z0JBQ0osQ0FBQzthQUNGO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsU0FBUyxFQUFFLG1CQUFtQjtnQkFDOUIsVUFBVSxFQUFFLGtCQUFrQjtnQkFDOUIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsTUFBTSxFQUFFLENBQUMsR0FBc0IsRUFBRSxFQUFFO29CQUNqQyxPQUFPOztnQkFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs7V0FFdkUsQ0FBQztnQkFDSixDQUFDO2FBQ0Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsU0FBUyxFQUFFLGNBQWM7Z0JBQ3pCLFVBQVUsRUFBRSxhQUFhO2dCQUN6QixNQUFNLEVBQUUsSUFBSTtnQkFDWixNQUFNLEVBQUUsR0FBRztnQkFDWCxNQUFNLEVBQUUsQ0FBQyxHQUFzQixFQUFFLEVBQUU7b0JBQ2pDLE1BQU0sS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM5RyxPQUFPOztnQkFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQzs7V0FFM0IsQ0FBQztnQkFDSixDQUFDO2FBQ0Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsU0FBUyxFQUFFLGdCQUFnQjtnQkFDM0IsVUFBVSxFQUFFLGVBQWU7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxHQUFHO2dCQUNYLE1BQU0sRUFBRSxDQUFDLEdBQXNCLEVBQUUsRUFBRTtvQkFDakMsTUFBTSxLQUFLLEdBQUcsT0FBTyxHQUFHLENBQUMsYUFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3BILE9BQU87O2dCQUVELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDOztXQUUzQixDQUFDO2dCQUNKLENBQUM7YUFDRjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxDQUFDO2dCQUNULE1BQU0sRUFBRSxDQUFDLEdBQXNCLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO3dCQUNkLE9BQU87Ozs7YUFJTixDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLE9BQU87Ozs7YUFJTixDQUFDO3FCQUNIO2dCQUNILENBQUM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVk7UUFDN0IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBOEM7UUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsV0FBMEI7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3ZCLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztnQkFFbEMsNkJBQTZCO2dCQUM3QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtvQkFDakMsWUFBWSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2lCQUM3QztnQkFFRCwrQkFBK0I7Z0JBQy9CLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUM5QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO2dCQUNyQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsbUJBQW1CO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFOUUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRixJQUFJLGVBQWUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDO1lBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRixPQUFPLDZCQUE2QixVQUFVLHFCQUFxQixlQUFlLENBQUMsYUFBYSxjQUFjLGVBQWUsQ0FBQyxXQUFXLElBQUksQ0FBQztTQUMvSTtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVk7UUFDakMsTUFBTSxPQUFPLEdBQThCO1lBQ3pDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFlBQVksRUFBRSxZQUFZO1lBQzFCLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLGNBQWMsRUFBRSxjQUFjO1lBQzlCLGNBQWMsRUFBRSxjQUFjO1lBQzlCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLHdCQUF3QixFQUFFLHdCQUF3QjtZQUNsRCxxQkFBcUIsRUFBRSxxQkFBcUI7WUFDNUMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsWUFBWSxFQUFFLFlBQVk7U0FDM0IsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBaUI7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLG1GQUFtRjtRQUNuRixNQUFNLFFBQVEsR0FBYyxFQUFFLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRTtZQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pFLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ1osRUFBRSxFQUFFLFNBQVMsS0FBSyxFQUFFO29CQUNwQixXQUFXLEVBQUUsU0FBUyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRTtvQkFDekMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVE7b0JBQ3BFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUM7aUJBQy9CLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUM5RCxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNaLEVBQUUsRUFBRSxhQUFhLEtBQUssRUFBRTtvQkFDeEIsV0FBVyxFQUFFLGNBQWMsU0FBUyxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7b0JBQzVHLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVE7b0JBQy9DLFFBQVEsRUFBRSxDQUFDO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3BELENBQ0UsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDdkUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7dUJBQzVJLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUNqSSxDQUFBO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQStCO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQTBCO1FBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBeUIsRUFBRSxLQUFZO1FBQzNELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUEwQixFQUFFLEtBQVk7UUFDN0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQTBCO1FBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFZO1FBQzVCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1lBQ3BKLE1BQU0sU0FBUyxHQUFHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEtBQUssUUFBUTtnQkFDN0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQjtnQkFDM0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO1lBQ3pDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDcEQ7U0FDRjtJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBVSxDQUFDO1FBRW5ELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDaEQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRSxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQVcsT0FBTyxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM5RCxNQUFNLE1BQU0sR0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFN0QsSUFBSSxNQUFNLEtBQUssa0JBQWtCLEVBQUU7Z0JBQ2pDLE1BQU0sY0FBYyxHQUFHLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRO29CQUN0RCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUs7b0JBQ2YsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXJELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMscUJBQXFCLEdBQUc7b0JBQzNCLEdBQUcsT0FBTztvQkFDVixnQkFBZ0IsRUFBRSxjQUFjO29CQUNoQyxNQUFNLEVBQUUsU0FBUztpQkFDbEIsQ0FBQztnQkFDRixJQUFJLENBQUMsa0NBQWtDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBRXhELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO29CQUMxQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTt3QkFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDM0csSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxFQUFFOzRCQUNwRCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQzs0QkFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzs0QkFDbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7NEJBQzNCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7eUJBQ25DO3FCQUNGO2dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUVWO2lCQUFNLElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRTtnQkFDcEMsSUFBSSxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7b0JBQy9DLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO3dCQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQzt3QkFDdEcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7cUJBQ25DO29CQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDL0Q7cUJBQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7b0JBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNyRSxJQUFJLE9BQU87d0JBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7b0JBQzlELElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDN0M7YUFFRjtpQkFBTSxJQUFJLE1BQU0sS0FBSyxlQUFlLEVBQUU7Z0JBQ3JDLElBQUksTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO29CQUMvQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTt3QkFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7d0JBQ3RHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO3dCQUMzQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO3FCQUNuQztvQkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7aUJBQy9EO3FCQUFNO29CQUNMLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO3dCQUM5QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQzt3QkFDckUsSUFBSSxPQUFPOzRCQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO3dCQUM5RCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQzt3QkFDOUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO3dCQUNuRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztxQkFDbkM7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztxQkFDN0M7aUJBQ0Y7YUFFRjtpQkFBTSxJQUFJLE1BQU0sS0FBSyxjQUFjLEVBQUU7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO29CQUM5QixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztvQkFDbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7aUJBQ25DO2dCQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRztvQkFDMUIsR0FBRyxPQUFPO29CQUNWLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksc0JBQXNCO29CQUMxRSxNQUFNLEVBQUUsU0FBUztvQkFDakIsTUFBTSxFQUFFLGNBQWM7aUJBQ3ZCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUV4RDtpQkFBTSxJQUFJLE1BQU0sS0FBSyxzQkFBc0IsSUFBSSxNQUFNLEtBQUsscUJBQXFCLEVBQUU7Z0JBQ2hGLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO29CQUM5QixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztvQkFDbkQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7aUJBQ25DO2dCQUVELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO29CQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztvQkFDckcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztpQkFDbEM7Z0JBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLHNCQUFzQixDQUFDO2dCQUNwRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNsRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO2dCQUMvRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFFckQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTO29CQUN4RSxDQUFDLENBQUMscUNBQXFDO29CQUN2QyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztvQkFDMUIsR0FBRyxPQUFPO29CQUNWLFdBQVcsRUFBRSxnQkFBZ0I7b0JBQzdCLEtBQUssRUFBRSxLQUFLO29CQUNaLFNBQVMsRUFBRSxJQUFJO29CQUNmLE1BQU0sRUFBRSxXQUFXO29CQUNuQixNQUFNLEVBQUUsb0JBQW9CO29CQUM1QixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsa0JBQWtCLEVBQUUsSUFBSTtpQkFDekIsQ0FBQyxDQUFDO2dCQUVILElBQUksU0FBUyxFQUFFO29CQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7d0JBQzFCLEdBQUcsT0FBTzt3QkFDVixXQUFXLEVBQUUsU0FBUzt3QkFDdEIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLE1BQU0sRUFBRSxXQUFXO3dCQUNuQixNQUFNLEVBQUUsd0JBQXdCO3dCQUNoQyxJQUFJLEVBQUUsd0JBQXdCO3dCQUM5QixRQUFRLEVBQUUsWUFBWTt3QkFDdEIsa0JBQWtCLEVBQUUsSUFBSTtxQkFDekIsQ0FBQyxDQUFDO2lCQUNKO2FBRUY7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtvQkFDL0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7b0JBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7b0JBQ25ELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO2lCQUNuQztnQkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RDO1NBQ0Y7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLEVBQUU7WUFDckMsYUFBYSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8sa0NBQWtDLENBQUMsT0FBWTtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELE1BQU0sV0FBVyxHQUFHLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDdEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUU7WUFDbkMsS0FBSyxHQUFHLFdBQVcsQ0FBQztTQUNyQjthQUFNLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUVELElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNkLE9BQU87U0FDUjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7UUFDdkQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQ2xDLE9BQU8sR0FBRyxVQUFVLENBQUM7U0FDdEI7YUFBTSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3JFLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDeEQsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFVLENBQUM7UUFDbkQsSUFBSSxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztRQUV4QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFdBQVcsRUFBRTtZQUNqQyxNQUFNLE1BQU0sR0FBVyxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBRTlELElBQUksTUFBTSxLQUFLLHNCQUFzQixJQUFJLE1BQU0sS0FBSyxxQkFBcUIsRUFBRTtnQkFDekUsTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLHNCQUFzQixDQUFDO2dCQUNwRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNsRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO2dCQUMvRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFFckQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFNBQVM7b0JBQ2pDLENBQUMsQ0FBQyxxQ0FBcUM7b0JBQ3ZDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDO29CQUN0QyxHQUFHLE9BQU87b0JBQ1YsV0FBVyxFQUFFLGdCQUFnQjtvQkFDN0IsS0FBSyxFQUFFLEtBQUs7b0JBQ1osU0FBUyxFQUFFLElBQUk7b0JBQ2YsTUFBTSxFQUFFLFdBQVc7b0JBQ25CLE1BQU0sRUFBRSxvQkFBb0I7b0JBQzVCLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixrQkFBa0IsRUFBRSxJQUFJO2lCQUN6QixDQUFDLENBQUM7Z0JBRUgsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQzt3QkFDdEMsR0FBRyxPQUFPO3dCQUNWLFdBQVcsRUFBRSxTQUFTO3dCQUN0QixLQUFLLEVBQUUsSUFBSTt3QkFDWCxTQUFTLEVBQUUsU0FBUzt3QkFDcEIsTUFBTSxFQUFFLFdBQVc7d0JBQ25CLE1BQU0sRUFBRSx3QkFBd0I7d0JBQ2hDLElBQUksRUFBRSx3QkFBd0I7d0JBQzlCLFFBQVEsRUFBRSxZQUFZO3dCQUN0QixrQkFBa0IsRUFBRSxJQUFJO3FCQUN6QixDQUFDLENBQUM7aUJBQ0o7YUFDRjtpQkFBTTtnQkFDTCxNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2hFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQztnQkFDN0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxLQUFLLGtCQUFrQixJQUFJLE1BQU0sS0FBSyxjQUFjLElBQUksTUFBTSxLQUFLLGVBQWUsQ0FBQztnQkFDL0csSUFBSSxhQUFhLElBQUksUUFBUSxFQUFFO29CQUM3QixNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsV0FBVyxJQUFJLE9BQU8sRUFBRSxJQUFJLElBQUksT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQy9FLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDO29CQUM5QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDO3dCQUN0QyxHQUFHLE9BQU87d0JBQ1YsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7cUJBQzVFLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNsRDthQUNGO1NBQ0Y7SUFDSCxDQUFDOzt3SEE3eEJVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDI0Q0NkeEMsa3QvQkFrWEE7MkZEcFdhLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSwwQkFBMEIsUUFHOUIsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7d0dBR2hDLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0Usa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLCtCQUErQjtzQkFBdkMsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQWVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBd0NJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBEb0NoZWNrLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJWZXJpZmljYXRpb25TdGVwQ29uZmlnLCBEYlRlc3RSZXN1bHQsIERiUXVlcnlSZXN1bHQsIERiQXNzZXJ0aW9uUmVzdWx0LCBTdGVwU3RhdHVzLCBUaW1pbmdCcmVha2Rvd24sIEZhaWx1cmVEZXRhaWxzLCBTdWJTdGVwLCBTZWxmSGVhbEFuYWx5c2lzRGF0YSwgU2VsZkhlYWxBY3Rpb24sIEV4ZWN1dGlvblN0ZXBDb25maWcsIFNlbGZIZWFsQWN0aW9uRXZlbnQsIEFkZFN0ZXBNZW51T3B0aW9uLCBERUZBVUxUX0FERF9TVEVQX01FTlVfT1BUSU9OUywgU3RlcE1vcmVNZW51T3B0aW9uLCBERUZBVUxUX1NURVBfTU9SRV9NRU5VX09QVElPTlMgfSBmcm9tICcuLi9leGVjdXRpb24tc3RlcC5tb2RlbHMnO1xuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29uZmlnIH0gZnJvbSAnLi4vLi4vZW1wdHktc3RhdGUvZW1wdHktc3RhdGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFTVBUWV9TVEFURV9JTUFHRVMgfSBmcm9tICcuLi8uLi9hc3NldHMvaW1hZ2VzL2ltYWdlLWFzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50LCB1cGxvYWRCYXNlbGluZUV2ZW50IH0gZnJvbSAnLi4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWRiLXZlcmlmaWNhdGlvbi1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290IGNxYS13LWZ1bGwnIH1cbn0pXG5leHBvcnQgY2xhc3MgRGJWZXJpZmljYXRpb25TdGVwQ29tcG9uZW50IGV4dGVuZHMgQmFzZVN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjaywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlc3RTdGVwUmVzdWx0SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0ZXBOdW1iZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGF0dXMhOiBTdGVwU3RhdHVzO1xuICBASW5wdXQoKSBkdXJhdGlvbiE6IG51bWJlcjtcbiAgQElucHV0KCkgdGltaW5nQnJlYWtkb3duPzogVGltaW5nQnJlYWtkb3duO1xuICBASW5wdXQoKSBleHBhbmRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRiVGVzdFJlc3VsdCE6IERiVGVzdFJlc3VsdDtcbiAgQElucHV0KCkgZGJDb25maWc/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRiVHlwZTogc3RyaW5nO1xuICB9O1xuICBASW5wdXQoKSBpc0RlYnVnPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWJ1Z1BvaW50U2V0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYXJlbnRTa2lwcGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZGVidWdQb2ludENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGVkaXRTdGVwID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcE9wdGlvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkU3RlcE1lbnVPcHRpb24+KCk7XG4gIEBPdXRwdXQoKSBzdGVwTW9yZU9wdGlvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcE1vcmVNZW51T3B0aW9uPigpO1xuICBASW5wdXQoKSBhZGRTdGVwTWVudU9wdGlvbnM6IEFkZFN0ZXBNZW51T3B0aW9uW10gPSBERUZBVUxUX0FERF9TVEVQX01FTlVfT1BUSU9OUztcbiAgQElucHV0KCkgc3RlcE1vcmVNZW51T3B0aW9uczogU3RlcE1vcmVNZW51T3B0aW9uW10gPSBERUZBVUxUX1NURVBfTU9SRV9NRU5VX09QVElPTlM7XG4gIEBJbnB1dCgpIGZhaWx1cmVEZXRhaWxzPzogRmFpbHVyZURldGFpbHM7XG4gIEBJbnB1dCgpIHJlYXNvbmluZz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBjb25maWRlbmNlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzdGVwRGVsZXRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgc2VsZkhlYWxBbmFseXNpcz86IFNlbGZIZWFsQW5hbHlzaXNEYXRhO1xuICBASW5wdXQoKSBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyPzogKCkgPT4geyBpc0xvYWRpbmdBY2NlcHQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9OyBpc0xvYWRpbmdNb2RpZnlBY2NlcHQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IH07XG4gIEBJbnB1dCgpIG9uU3RlcENsaWNrSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnLCBldmVudD86IEV2ZW50KSA9PiB2b2lkO1xuICBASW5wdXQoKSBqdW1wVG9UaW1lc3RhbXBIYW5kbGVyPzogKHRpbWVzdGFtcDogbnVtYmVyLCB0ZXN0U3RlcElkPzogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkpzb25QYXRoQ29waWVkSGFuZGxlcj86IChldmVudDogeyBwYXRoOiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nIH0pID0+IHZvaWQ7XG4gIEBJbnB1dCgpIGlzTGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGVwPzogYW55O1xuICBnZXQgc3RlcEJhZGdlcygpOiAoJ3NraXBwZWQnIHwgJ2VkaXRlZCcgfCAnYWRkZWQnIHwgJ3JlbW92ZWQnKVtdIHtcbiAgICBjb25zdCBiYWRnZSA9IHRoaXMuc3RlcD8uc3RlcEJhZGdlO1xuICAgIGlmICghYmFkZ2UpIHJldHVybiBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShiYWRnZSkgPyBiYWRnZSA6IFtiYWRnZV07XG4gIH1cblxuICBnZXQgaXNTa2lwcGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBCYWRnZXMuaW5jbHVkZXMoJ3NraXBwZWQnKTtcbiAgfVxuXG4gIGdldCBpc1N0ZXBEZWxldGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBCYWRnZXMuaW5jbHVkZXMoJ3JlbW92ZWQnKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHN1YlN0ZXBzOiBTdWJTdGVwW10gPSBbXTtcblxuICAvLyBQcm9jZXNzZWQgc3ViLXN0ZXBzIGZvciBsaXZlIG1vZGUgKFdBSVRfRk9SX0xPQ0FUT1IgY291bnRkb3duLCBBSV9BVVRPX0hFQUwgZ3JvdXBpbmcpXG4gIHByb2Nlc3NlZFN1YlN0ZXBzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGxhc3RQcm9jZXNzZWRJbmRleDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSB3YWl0TG9jYXRvckdyb3VwRW50cnk6IGFueSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvdW50ZG93bkludGVydmFsSWQ6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgYWlBdXRvSGVhbEdyb3VwRW50cnk6IGFueSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFByb2Nlc3NlZCBzdWItc3RlcHMgZm9yIHJ1biByZXN1bHQgc2NyZWVuIChmaWx0ZXIgYW5kIHNwbGl0IEFJX0FVVE9fSEVBTF9TVUNDRVNTL0ZBSUxFRClcbiAgcHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQ6IGFueVtdID0gW107XG5cbiAgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKiBTaG93IGRlYnVnIGljb24gb25seSB3aGVuIHRoaXMgc3RlcCBoYXMgbm8gY2hpbGQgc3RlcHMgKGxlYWYgc3RlcDogYWx3YXlzIHNob3cgd2hlbiBpc0RlYnVnKS4gKi9cbiAgZ2V0IHNob3dEZWJ1Z0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEZWJ1ZyA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBQZXItc3RlcCBmaWx0ZXJlZCB0aHJlZS1kb3QgbWVudSBvcHRpb25zIChlLmcuIGhpZGUgRHVwbGljYXRlL0RlbGV0ZSBmb3Igc3RlcC1ncm91cCBjaGlsZHJlbikuICovXG4gIGdldCBlZmZlY3RpdmVTdGVwTW9yZU1lbnVPcHRpb25zKCk6IFN0ZXBNb3JlTWVudU9wdGlvbltdIHtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5zdGVwTW9yZU1lbnVPcHRpb25zIHx8IFtdO1xuICAgIGNvbnN0IHN0ZXBSZWY6IGFueSA9IHRoaXMuc3RlcDtcbiAgICBpZiAoIXN0ZXBSZWYpIHJldHVybiBiYXNlO1xuXG4gICAgY29uc3QgaXNHcm91cENoaWxkID0gISFzdGVwUmVmLmlzU3RlcEdyb3VwQ2hpbGRyZW47XG4gICAgLy8gV2hlbiBzdGVwLnN0ZXBNb3JlTWVudU9wdGlvbnMgaXMgdHJ1dGh5IE9SIHN0ZXAgaXMgYSBzdGVwLWdyb3VwIGNoaWxkLCBoaWRlIG11dGF0aW5nIGl0ZW1zXG4gICAgY29uc3Qgc3VwcHJlc3NNdXRhdGluZyA9ICEhc3RlcFJlZi5zdGVwTW9yZU1lbnVPcHRpb25zIHx8IGlzR3JvdXBDaGlsZDtcbiAgICBpZiAoIXN1cHByZXNzTXV0YXRpbmcpIHJldHVybiBiYXNlO1xuXG4gICAgcmV0dXJuIGJhc2UuZmlsdGVyKG9wdCA9PiBvcHQuaWQgIT09ICdkdXBsaWNhdGUnICYmIG9wdC5pZCAhPT0gJ2RlbGV0ZScpO1xuICB9XG5cbiAgc2hvd0Vudmlyb25tZW50Q29waWVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgZW52aXJvbm1lbnRDb3BpZWRUaW1lb3V0PzogYW55O1xuXG4gIEBPdXRwdXQoKSBtYWtlQ3VycmVudEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjxtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8dXBsb2FkQmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFuYWx5emUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RnVsbExvZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxmSGVhbEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZkhlYWxBY3Rpb25FdmVudD4oKTtcblxuICBvdmVycmlkZSBjb25maWchOiBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWc7XG5cbiAgdmVyaWZpY2F0aW9uRmlsdGVyOiAnYWxsJyB8ICdmYWlsZWQnIHwgJ3Bhc3NlZCcgPSAnYWxsJztcblxuICBmaWx0ZXJTZWdtZW50cyA9IFtcbiAgICB7IGxhYmVsOiAnQWxsJywgdmFsdWU6ICdhbGwnIH0sXG4gICAgeyBsYWJlbDogJ0ZhaWxlZCBvbmx5JywgdmFsdWU6ICdmYWlsZWQnIH0sXG4gICAgeyBsYWJlbDogJ1Bhc3NlZCBvbmx5JywgdmFsdWU6ICdwYXNzZWQnIH0sXG4gIF07XG5cbiAgdmVyaWZpY2F0aW9uVGFibGVDb2x1bW5zOiBEeW5hbWljVGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gIGVtcHR5U3RhdGVDb25maWc6IEVtcHR5U3RhdGVDb25maWcgPSB7XG4gICAgdGl0bGU6ICdObyBBc3NlcnRpb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vIHZlcmlmaWNhdGlvbiBhc3NlcnRpb25zIGZvdW5kIGZvciB0aGlzIGRhdGFiYXNlIHF1ZXJ5LicsXG4gICAgaW1hZ2VVcmw6IEVNUFRZX1NUQVRFX0lNQUdFUy5EQVNIQk9BUkQsXG4gICAgYWN0aW9uczogW10sXG4gIH07XG5cbiAgcGFnZUluZGV4OiBudW1iZXIgPSAwO1xuICBwYWdlU2l6ZTogbnVtYmVyID0gMTA7XG5cbiAgLy8gQ2FjaGVkIHF1ZXJ5IHJlc3VsdHMgdG8gYXZvaWQgcmVjcmVhdGluZyBjb21wb25lbnRzIG9uIGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb25cbiAgY2FjaGVkUXVlcnlSZXN1bHRzOiBBcnJheTx7IGtleTogc3RyaW5nOyByZXN1bHQ6IERiUXVlcnlSZXN1bHQgfT4gPSBbXTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZygpO1xuICAgIHRoaXMuc2V0dXBUYWJsZUNvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUNhY2hlZFF1ZXJ5UmVzdWx0cygpO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc3ViU3RlcHMgJiYgdGhpcy5zdWJTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnN1YlN0ZXBzICYmIHRoaXMuc3ViU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXMoKTogU3RlcFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5zdGF0dXMgfHwgdGhpcy5zdGF0dXM7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIGNvbmZpZyB3aGVuIGlucHV0cyBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlc1snZGJUZXN0UmVzdWx0J10gfHwgY2hhbmdlc1snZGJDb25maWcnXSB8fCBjaGFuZ2VzWydleHBhbmRlZCddIHx8IGNoYW5nZXNbJ3N0YXR1cyddIHx8IGNoYW5nZXNbJ2R1cmF0aW9uJ10gfHwgY2hhbmdlc1snc3RlcERlbGV0ZWQnXSB8fCBjaGFuZ2VzWydzdGVwTnVtYmVyJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlQ29uZmlnKCk7XG4gICAgICBpZiAoY2hhbmdlc1snZGJUZXN0UmVzdWx0J10pIHtcbiAgICAgICAgdGhpcy5zZXR1cFRhYmxlQ29sdW1ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlZFF1ZXJ5UmVzdWx0cygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb25maWcgd2hlbiBzdWJTdGVwcyBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ3N1YlN0ZXBzJ10gJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnLnN1YlN0ZXBzID0gdGhpcy5zdWJTdGVwcyB8fCBbXTtcbiAgICAgIGlmICh0aGlzLmlzTGl2ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmUtcHJvY2VzcyB3aGVuIGlzTGl2ZSBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ2lzTGl2ZSddICYmIHRoaXMuc3ViU3RlcHMgJiYgdGhpcy5zdWJTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5pc0xpdmUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdWJTdGVwc0ZvclJ1blJlc3VsdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBleHBhbmRlZCBzdGF0ZSBpZiBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNMaXZlKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudExlbmd0aCA9ICh0aGlzLnN1YlN0ZXBzIHx8IFtdKS5sZW5ndGg7XG4gICAgaWYgKGN1cnJlbnRMZW5ndGggIT09IHRoaXMubGFzdFByb2Nlc3NlZEluZGV4KSB7XG4gICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb25maWcoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHRlc3RTdGVwSWQ6IHRoaXMuc3RlcD8udGVzdFN0ZXBJZCB8fCB1bmRlZmluZWQsXG4gICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICBzdGVwTnVtYmVyOiB0aGlzLnN0ZXBOdW1iZXIsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcbiAgICAgIGRpc3BsYXlUeXBlOiAnZGItdmVyaWZpY2F0aW9uJyxcbiAgICAgIGRiVGVzdFJlc3VsdDogdGhpcy5kYlRlc3RSZXN1bHQsXG4gICAgICBkYkNvbmZpZzogdGhpcy5kYkNvbmZpZyxcbiAgICAgIHN1YlN0ZXBzOiB0aGlzLnN1YlN0ZXBzIHx8IFtdLFxuICAgICAgc3RlcERlbGV0ZWQ6IHRoaXMuc3RlcERlbGV0ZWQsXG4gICAgICB0aW1pbmdCcmVha2Rvd246IHRoaXMudGltaW5nQnJlYWtkb3duLFxuICAgICAgZXhwYW5kZWQ6IHRoaXMuZXhwYW5kZWQsXG4gICAgfSBhcyBEYlZlcmlmaWNhdGlvblN0ZXBDb25maWc7XG4gIH1cblxuICBnZXQgaGFzU3ViU3RlcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU3RlcHMgJiYgdGhpcy5zdWJTdGVwcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgb25EZWJ1Z1BvaW50Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmRlYnVnUG9pbnRDaGFuZ2UuZW1pdCghdGhpcy5kZWJ1Z1BvaW50U2V0KTtcbiAgfVxuXG4gIHRvZ2dsZUhlYWRlcihldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgaWYgKHRoaXMub25TdGVwQ2xpY2tIYW5kbGVyKSB7XG4gICAgICBjb25zdCBzdGVwVG9QYXNzID0gdGhpcy5zdGVwIHx8IHRoaXMuY29uZmlnO1xuICAgICAgaWYgKHN0ZXBUb1Bhc3MpIHtcbiAgICAgICAgdGhpcy5vblN0ZXBDbGlja0hhbmRsZXIoc3RlcFRvUGFzcywgZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy5zaG93RmFpbGVkU3RlcERldGFpbHMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNhY2hlZFF1ZXJ5UmVzdWx0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGJUZXN0UmVzdWx0Py5yZXN1bHRzKSB7XG4gICAgICB0aGlzLmNhY2hlZFF1ZXJ5UmVzdWx0cyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNhY2hlZFF1ZXJ5UmVzdWx0cyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuZGJUZXN0UmVzdWx0LnJlc3VsdHMpLm1hcCgoW2tleSwgcmVzdWx0XSkgPT4gKHsga2V5LCByZXN1bHQgfSkpO1xuICB9XG5cbiAgZ2V0UXVlcnlSZXN1bHRzKCk6IEFycmF5PHsga2V5OiBzdHJpbmc7IHJlc3VsdDogRGJRdWVyeVJlc3VsdCB9PiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkUXVlcnlSZXN1bHRzO1xuICB9XG5cbiAgdHJhY2tCeVF1ZXJ5S2V5KGluZGV4OiBudW1iZXIsIGl0ZW06IHsga2V5OiBzdHJpbmc7IHJlc3VsdDogRGJRdWVyeVJlc3VsdCB9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS5rZXk7XG4gIH1cblxuICBnZXRUb3RhbFJvd3NSZXR1cm5lZCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5kYlRlc3RSZXN1bHQ/LnJlc3VsdHMpIHJldHVybiAwO1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuZGJUZXN0UmVzdWx0LnJlc3VsdHMpLnJlZHVjZSgodG90YWwsIHJlc3VsdCkgPT4ge1xuICAgICAgcmV0dXJuIHRvdGFsICsgKEFycmF5LmlzQXJyYXkocmVzdWx0LmRhdGEpID8gcmVzdWx0LmRhdGEubGVuZ3RoIDogMCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRRdWVyeVN0YXR1cyhxdWVyeUtleTogc3RyaW5nKTogJ3Bhc3NlZCcgfCAnZmFpbGVkJyB7XG4gICAgaWYgKCF0aGlzLmRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cykgcmV0dXJuICdwYXNzZWQnO1xuICAgIGNvbnN0IHF1ZXJ5QXNzZXJ0aW9ucyA9IHRoaXMuZGJUZXN0UmVzdWx0LmFzc2VydGlvblJlc3VsdHMuZmlsdGVyKFxuICAgICAgYXNzZXJ0aW9uID0+IGFzc2VydGlvbi52YXJpYWJsZU5hbWUgPT09IHF1ZXJ5S2V5XG4gICAgKTtcbiAgICBpZiAocXVlcnlBc3NlcnRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuICdwYXNzZWQnO1xuICAgIHJldHVybiBxdWVyeUFzc2VydGlvbnMuZXZlcnkoYSA9PiBhLnBhc3NlZCkgPyAncGFzc2VkJyA6ICdmYWlsZWQnO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRBc3NlcnRpb25zKCk6IERiQXNzZXJ0aW9uUmVzdWx0W10ge1xuICAgIGlmICghdGhpcy5kYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHMpIHJldHVybiBbXTtcbiAgICBzd2l0Y2ggKHRoaXMudmVyaWZpY2F0aW9uRmlsdGVyKSB7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5kYlRlc3RSZXN1bHQuYXNzZXJ0aW9uUmVzdWx0cy5maWx0ZXIoYSA9PiAhYS5wYXNzZWQpO1xuICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGJUZXN0UmVzdWx0LmFzc2VydGlvblJlc3VsdHMuZmlsdGVyKGEgPT4gYS5wYXNzZWQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGJUZXN0UmVzdWx0LmFzc2VydGlvblJlc3VsdHM7XG4gICAgfVxuICB9XG5cbiAgc2V0VmVyaWZpY2F0aW9uRmlsdGVyKGZpbHRlcjogJ2FsbCcgfCAnZmFpbGVkJyB8ICdwYXNzZWQnKSB7XG4gICAgdGhpcy52ZXJpZmljYXRpb25GaWx0ZXIgPSBmaWx0ZXI7XG4gIH1cblxuICBvbkZpbHRlckNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52ZXJpZmljYXRpb25GaWx0ZXIgPSB2YWx1ZSBhcyAnYWxsJyB8ICdmYWlsZWQnIHwgJ3Bhc3NlZCc7XG4gIH1cblxuICBwcml2YXRlIHNldHVwVGFibGVDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uVGFibGVDb2x1bW5zID0gW1xuICAgICAge1xuICAgICAgICBmaWVsZElkOiAnanNvblBhdGgnLFxuICAgICAgICBmaWVsZE5hbWU6ICdKU09OIHBhdGgnLFxuICAgICAgICBmaWVsZFZhbHVlOiAnanNvblBhdGgnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMixcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXSBjcWEtZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICR7dGhpcy5lc2NhcGVIdG1sKHJvdy5qc29uUGF0aCl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZElkOiAndmVyaWZpY2F0aW9uVHlwZScsXG4gICAgICAgIGZpZWxkTmFtZTogJ1ZlcmlmaWNhdGlvbiB0eXBlJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ3ZlcmlmaWNhdGlvblR5cGUnLFxuICAgICAgICBpc1Nob3c6IHRydWUsXG4gICAgICAgIHdlaWdodDogMS41LFxuICAgICAgICByZW5kZXI6IChyb3c6IERiQXNzZXJ0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM0QjU1NjNdXCI+XG4gICAgICAgICAgICAgICR7dGhpcy5lc2NhcGVIdG1sKHRoaXMuZm9ybWF0VmVyaWZpY2F0aW9uVHlwZShyb3cudmVyaWZpY2F0aW9uVHlwZSkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGRJZDogJ2FjdHVhbFZhbHVlJyxcbiAgICAgICAgZmllbGROYW1lOiAnQWN0dWFsIHZhbHVlJyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ2FjdHVhbFZhbHVlJyxcbiAgICAgICAgaXNTaG93OiB0cnVlLFxuICAgICAgICB3ZWlnaHQ6IDEuNSxcbiAgICAgICAgcmVuZGVyOiAocm93OiBEYkFzc2VydGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIHJvdy5hY3R1YWxWYWx1ZSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShyb3cuYWN0dWFsVmFsdWUpIDogU3RyaW5nKHJvdy5hY3R1YWxWYWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLXRleHQtWyM0QjU1NjNdXCI+XG4gICAgICAgICAgICAgICR7dGhpcy5lc2NhcGVIdG1sKHZhbHVlKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpZWxkSWQ6ICdleHBlY3RlZFZhbHVlJyxcbiAgICAgICAgZmllbGROYW1lOiAnRXhwZWN0ZWQgdmFsdWUnLFxuICAgICAgICBmaWVsZFZhbHVlOiAnZXhwZWN0ZWRWYWx1ZScsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLjUsXG4gICAgICAgIHJlbmRlcjogKHJvdzogRGJBc3NlcnRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiByb3cuZXhwZWN0ZWRWYWx1ZSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShyb3cuZXhwZWN0ZWRWYWx1ZSkgOiBTdHJpbmcocm93LmV4cGVjdGVkVmFsdWUpO1xuICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAke3RoaXMuZXNjYXBlSHRtbCh2YWx1ZSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBmaWVsZElkOiAncmVzdWx0JyxcbiAgICAgICAgZmllbGROYW1lOiAnUmVzdWx0JyxcbiAgICAgICAgZmllbGRWYWx1ZTogJ3Bhc3NlZCcsXG4gICAgICAgIGlzU2hvdzogdHJ1ZSxcbiAgICAgICAgd2VpZ2h0OiAxLFxuICAgICAgICByZW5kZXI6IChyb3c6IERiQXNzZXJ0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJvdy5wYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBgXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1ibG9jayBjcWEtdGV4dC1jZW50ZXIgY3FhLXctMTEgY3FhLXB4LTIgY3FhLXB5LTEgY3FhLXJvdW5kZWQtWzVweF0gY3FhLXRleHQtWzEycHhdIGNxYS1iZy1bIzJFN0QzMl0gY3FhLXRleHQtWyNGRkZGRkZdXCI+XG4gICAgICAgICAgICAgICAgUGFzc1xuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBgO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtYmxvY2sgY3FhLXRleHQtY2VudGVyIGNxYS13LTExIGNxYS1weC0yIGNxYS1weS0xIGNxYS1yb3VuZGVkLVs1cHhdIGNxYS10ZXh0LVsxMnB4XSBjcWEtYmctWyNEQzI2MjZdIGNxYS10ZXh0LVsjRkZGRkZGXVwiPlxuICAgICAgICAgICAgICAgIEZhaWxcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgYDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgZXNjYXBlSHRtbCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdi50ZXh0Q29udGVudCA9IHRleHQ7XG4gICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gIH1cblxuICBnZXRUYWJsZURhdGEoKTogRGJBc3NlcnRpb25SZXN1bHRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyZWRBc3NlcnRpb25zKCk7XG4gIH1cblxuICBnZXQgaXNFbXB0eVRhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFRhYmxlRGF0YSgpLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogeyBwYWdlSW5kZXg6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9KTogdm9pZCB7XG4gICAgdGhpcy5wYWdlSW5kZXggPSBldmVudC5wYWdlSW5kZXg7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuICB9XG5cbiAgY29weVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChxdWVyeSkudGhlbigoKSA9PiB7XG4gICAgfSk7XG4gIH1cblxuICBjb3B5UmVzcG9uc2UocXVlcnlSZXN1bHQ6IERiUXVlcnlSZXN1bHQpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IEpTT04uc3RyaW5naWZ5KHF1ZXJ5UmVzdWx0LmRhdGEsIG51bGwsIDIpO1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHJlc3BvbnNlKS50aGVuKCgpID0+IHtcbiAgICB9KTtcbiAgfVxuXG4gIGNvcHlFbnZpcm9ubWVudCgpIHtcbiAgICBpZiAodGhpcy5kYkNvbmZpZz8ubmFtZSkge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5kYkNvbmZpZy5uYW1lKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93RW52aXJvbm1lbnRDb3BpZWQgPSB0cnVlO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIHRpbWVvdXRcbiAgICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnRDb3BpZWRUaW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZW52aXJvbm1lbnRDb3BpZWRUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gSGlkZSB0b29sdGlwIGFmdGVyIDIgc2Vjb25kc1xuICAgICAgICB0aGlzLmVudmlyb25tZW50Q29waWVkVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0Vudmlyb25tZW50Q29waWVkID0gZmFsc2U7XG4gICAgICAgIH0sIDIwMDApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmFpbHVyZU1lc3NhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmRiVGVzdFJlc3VsdCB8fCB0aGlzLmRiVGVzdFJlc3VsdD8uYWxsQXNzZXJ0aW9uc1Bhc3NlZCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBmYWlsZWRBc3NlcnRpb24gPSB0aGlzLmRiVGVzdFJlc3VsdC5hc3NlcnRpb25SZXN1bHRzPy5maW5kKGEgPT4gIWEucGFzc2VkKTtcbiAgICBpZiAoZmFpbGVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBxdWVyeUtleSA9IGZhaWxlZEFzc2VydGlvbi52YXJpYWJsZU5hbWU7XG4gICAgICBjb25zdCBxdWVyeUluZGV4ID0gdGhpcy5nZXRRdWVyeVJlc3VsdHMoKS5maW5kSW5kZXgocSA9PiBxLmtleSA9PT0gcXVlcnlLZXkpICsgMTtcbiAgICAgIHJldHVybiBgQXNzZXJ0aW9uIGZhaWxlZCBpbiBRdWVyeSAke3F1ZXJ5SW5kZXh9LiBFeHBlY3RlZCB2YWx1ZSBcIiR7ZmFpbGVkQXNzZXJ0aW9uLmV4cGVjdGVkVmFsdWV9XCIgYnV0IGdvdCBcIiR7ZmFpbGVkQXNzZXJ0aW9uLmFjdHVhbFZhbHVlfVwiLmA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9ybWF0VmVyaWZpY2F0aW9uVHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAnZXF1YWxzJzogJ0VxdWFscycsXG4gICAgICAnbm90X2VxdWFscyc6ICdOb3QgRXF1YWxzJyxcbiAgICAgICdjb250YWlucyc6ICdDb250YWlucycsXG4gICAgICAnbm90X2NvbnRhaW5zJzogJ05vdCBDb250YWlucycsXG4gICAgICAnZ3JlYXRlcl90aGFuJzogJ0dyZWF0ZXIgVGhhbicsXG4gICAgICAnbGVzc190aGFuJzogJ0xlc3MgVGhhbicsXG4gICAgICAnZ3JlYXRlcl90aGFuX29yX2VxdWFscyc6ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWxzJyxcbiAgICAgICdsZXNzX3RoYW5fb3JfZXF1YWxzJzogJ0xlc3MgVGhhbiBPciBFcXVhbHMnLFxuICAgICAgJ2V4aXN0cyc6ICdFeGlzdHMnLFxuICAgICAgJ25vdF9leGlzdHMnOiAnTm90IEV4aXN0cycsXG4gICAgfTtcbiAgICByZXR1cm4gdHlwZU1hcFt0eXBlXSB8fCB0eXBlO1xuICB9XG5cbiAgb25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljayhleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZXhwYW5kZWQ7XG4gIH1cblxuICBnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKTogU3ViU3RlcFtdIHtcbiAgICAvLyBDb252ZXJ0IERCIHZlcmlmaWNhdGlvbiBxdWVyeSByZXN1bHRzIHRvIFN1YlN0ZXBbXSBmb3IgdGhlIGZhaWxlZCBzdGVwIGNvbXBvbmVudFxuICAgIGNvbnN0IHN1YlN0ZXBzOiBTdWJTdGVwW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmRiVGVzdFJlc3VsdD8ucmVzdWx0cykge1xuICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5kYlRlc3RSZXN1bHQucmVzdWx0cykuZm9yRWFjaCgoW2tleSwgcmVzdWx0XSwgaW5kZXgpID0+IHtcbiAgICAgICAgc3ViU3RlcHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGBxdWVyeS0ke2luZGV4fWAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBRdWVyeSAke2luZGV4ICsgMX06ICR7a2V5fWAsXG4gICAgICAgICAgc3RhdHVzOiB0aGlzLmdldFF1ZXJ5U3RhdHVzKGtleSkgPT09ICdwYXNzZWQnID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCcsXG4gICAgICAgICAgZHVyYXRpb246IHJlc3VsdC5kdXJhdGlvbiB8fCAwLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCBhc3NlcnRpb24gcmVzdWx0cyBhcyBzdWItc3RlcHNcbiAgICBpZiAodGhpcy5kYlRlc3RSZXN1bHQ/LmFzc2VydGlvblJlc3VsdHMpIHtcbiAgICAgIHRoaXMuZGJUZXN0UmVzdWx0LmFzc2VydGlvblJlc3VsdHMuZm9yRWFjaCgoYXNzZXJ0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBzdWJTdGVwcy5wdXNoKHtcbiAgICAgICAgICBpZDogYGFzc2VydGlvbi0ke2luZGV4fWAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBBc3NlcnRpb246ICR7YXNzZXJ0aW9uLmpzb25QYXRofSAtICR7dGhpcy5mb3JtYXRWZXJpZmljYXRpb25UeXBlKGFzc2VydGlvbi52ZXJpZmljYXRpb25UeXBlKX1gLFxuICAgICAgICAgIHN0YXR1czogYXNzZXJ0aW9uLnBhc3NlZCA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnLFxuICAgICAgICAgIGR1cmF0aW9uOiAwLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJTdGVwcztcbiAgfVxuXG4gIGdldCBzaG93Vmlld01vcmVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFeHBhbmRlZCAmJiBCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHMpICYmXG4gICAgICAoXG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmV4cGVjdGVkIHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LmFjdHVhbCkpIHx8XG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5jdXJyZW50IHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5iYXNlbGluZSB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uZGlmZmVyZW5jZSlcbiAgICAgICAgICB8fCBCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmxvZ3M/Lmxlbmd0aCkpIHx8IFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeEFwcGxpZWQgJiYgKHRoaXMuZmFpbHVyZURldGFpbHM/LmFpRml4TWVzc2FnZSB8fCB0aGlzLmNvbmZpZGVuY2UgfHwgdGhpcy5yZWFzb25pbmc/Lmxlbmd0aCkpKVxuICAgICAgKVxuICB9XG5cbiAgb25NYWtlQ3VycmVudEJhc2VsaW5lKGV2ZW50OiBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1ha2VDdXJyZW50QmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvblVwbG9hZEJhc2VsaW5lKGV2ZW50OiB1cGxvYWRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRCYXNlbGluZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQW5hbHl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5emUuZW1pdCgpO1xuICB9XG5cbiAgb25WaWV3RnVsbExvZ3MoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3RnVsbExvZ3MuZW1pdCgpO1xuICB9XG5cbiAgb25FZGl0U3RlcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZWRpdFN0ZXAuZW1pdCgpO1xuICB9XG5cbiAgb25BZGRTdGVwT3B0aW9uU2VsZWN0KG9wdGlvbjogQWRkU3RlcE1lbnVPcHRpb24sIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5hZGRTdGVwT3B0aW9uU2VsZWN0LmVtaXQob3B0aW9uKTtcbiAgfVxuXG4gIG9uU3RlcE1vcmVPcHRpb25TZWxlY3Qob3B0aW9uOiBTdGVwTW9yZU1lbnVPcHRpb24sIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zdGVwTW9yZU9wdGlvblNlbGVjdC5lbWl0KG9wdGlvbik7XG4gIH1cblxuICBvblNlbGZIZWFsQWN0aW9uKGV2ZW50OiBTZWxmSGVhbEFjdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWxmSGVhbEFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uSnVtcFRvVGltZXN0YW1wKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmp1bXBUb1RpbWVzdGFtcEhhbmRsZXIgJiYgdGhpcy5zdGVwPy5leGVjdXRlZFJlc3VsdD8udmlkZW9fc3RhcnRfdGltZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3RlcD8uZXhlY3V0ZWRSZXN1bHQ/LnZpZGVvX3N0YXJ0X3RpbWUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IHR5cGVvZiB0aGlzLnN0ZXAuZXhlY3V0ZWRSZXN1bHQudmlkZW9fc3RhcnRfdGltZSA9PT0gJ251bWJlcicgXG4gICAgICAgID8gdGhpcy5zdGVwLmV4ZWN1dGVkUmVzdWx0LnZpZGVvX3N0YXJ0X3RpbWUgXG4gICAgICAgIDogTnVtYmVyKHRoaXMuc3RlcC5leGVjdXRlZFJlc3VsdC52aWRlb19zdGFydF90aW1lKTtcbiAgICAgIGNvbnN0IHRlc3RTdGVwSWQgPSB0aGlzLnN0ZXA/LnRlc3RTdGVwSWQ7XG4gICAgICBpZiAoaXNGaW5pdGUodGltZXN0YW1wKSAmJiB0aW1lc3RhbXAgPj0gMCkge1xuICAgICAgICB0aGlzLmp1bXBUb1RpbWVzdGFtcEhhbmRsZXIodGltZXN0YW1wLCB0ZXN0U3RlcElkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NMaXZlU3ViU3RlcHMoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsU3ViU3RlcHMgPSAodGhpcy5zdWJTdGVwcyB8fCBbXSkgYXMgYW55W107XG5cbiAgICBpZiAoYWxsU3ViU3RlcHMubGVuZ3RoIDwgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXgpIHtcbiAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSB0aGlzLmxhc3RQcm9jZXNzZWRJbmRleDsgaSA8IGFsbFN1YlN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdWJTdGVwID0gYWxsU3ViU3RlcHNbaV07XG4gICAgICBjb25zdCB1aVR5cGU6IHN0cmluZyA9IHN1YlN0ZXA/LnVpVHlwZSB8fCBzdWJTdGVwPy50eXBlIHx8ICcnO1xuICAgICAgY29uc3Qgc3RhdHVzOiBzdHJpbmcgPSAoc3ViU3RlcD8uc3RhdHVzIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAodWlUeXBlID09PSAnV0FJVF9GT1JfTE9DQVRPUicpIHtcbiAgICAgICAgY29uc3QgdGltZW91dFNlY29uZHMgPSB0eXBlb2Ygc3ViU3RlcC52YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IHN1YlN0ZXAudmFsdWVcbiAgICAgICAgICA6IChzdWJTdGVwLnZhbHVlID8gcGFyc2VGbG9hdChzdWJTdGVwLnZhbHVlKSA6IDMwKTtcblxuICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcblxuICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIHJlbWFpbmluZ1NlY29uZHM6IHRpbWVvdXRTZWNvbmRzLFxuICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWRkRHVyYXRpb25Ub1dhaXRMb2NhdG9yR3JvdXBFbnRyeShzdWJTdGVwKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KTtcblxuICAgICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5yZW1haW5pbmdTZWNvbmRzID0gTWF0aC5tYXgoMCwgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyAtIDEpO1xuICAgICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPD0gMCkge1xuICAgICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5zdGF0dXMgPSAnZmFpbGVkJztcbiAgICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKTtcblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdGSU5EX0xPQ0FUT1InKSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goeyAuLi5zdWJTdGVwLCBzdGF0dXM6ICdmYWlsZWQnIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgY29uc3QgbmV3VGV4dCA9IHN1YlN0ZXAuZGVzY3JpcHRpb24gfHwgc3ViU3RlcC50ZXh0IHx8IHN1YlN0ZXAudGl0bGU7XG4gICAgICAgICAgaWYgKG5ld1RleHQpIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LmRlc2NyaXB0aW9uID0gbmV3VGV4dDtcbiAgICAgICAgICB0aGlzLmFkZER1cmF0aW9uVG9XYWl0TG9jYXRvckdyb3VwRW50cnkoc3ViU3RlcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHsgLi4uc3ViU3RlcCB9KTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKHVpVHlwZSA9PT0gJ0xPQ0FUT1JfRk9VTkQnKSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goeyAuLi5zdWJTdGVwLCBzdGF0dXM6ICdmYWlsZWQnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VGV4dCA9IHN1YlN0ZXAuZGVzY3JpcHRpb24gfHwgc3ViU3RlcC50ZXh0IHx8IHN1YlN0ZXAudGl0bGU7XG4gICAgICAgICAgICBpZiAobmV3VGV4dCkgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuZGVzY3JpcHRpb24gPSBuZXdUZXh0O1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgdGhpcy5hZGREdXJhdGlvblRvV2FpdExvY2F0b3JHcm91cEVudHJ5KHN1YlN0ZXApO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHsgLi4uc3ViU3RlcCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUwnKSB7XG4gICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnN0YXR1cyA9ICdmYWlsZWQnO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPSBudWxsO1xuICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWlBdXRvSGVhbEdyb3VwRW50cnkgPSB7XG4gICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc3ViU3RlcC5kZXNjcmlwdGlvbiB8fCBzdWJTdGVwLnRleHQgfHwgJ0FJIGF1dG8taGVhbCBzdGFydGVkJyxcbiAgICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUwnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5KTtcblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUxfU1VDQ0VTUycgfHwgdWlUeXBlID09PSAnQUlfQVVUT19IRUFMX0ZBSUxFRCcpIHtcbiAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuc3RhdHVzID0gJ2ZhaWxlZCc7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWlBdXRvSGVhbEdyb3VwRW50cnkpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHRoaXMuYWlBdXRvSGVhbEdyb3VwRW50cnkpO1xuICAgICAgICAgIHRoaXMuYWlBdXRvSGVhbEdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzU3VjY2VzcyA9IHVpVHlwZSA9PT0gJ0FJX0FVVE9fSEVBTF9TVUNDRVNTJztcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdWJTdGVwLnZhbHVlID8/IHN1YlN0ZXAudGV4dCA/PyAnJztcbiAgICAgICAgY29uc3QgcmVhc29uaW5nID0gc3ViU3RlcC5yZWFzb25pbmcgPz8gc3ViU3RlcC5SZWFzb25pbmcgPz8gJyc7XG4gICAgICAgIGNvbnN0IGJhc2VEdXJhdGlvbiA9IHN1YlN0ZXAuZHVyYXRpb24gfHwgMDtcbiAgICAgICAgY29uc3QgZmluYWxTdGF0dXMgPSBpc1N1Y2Nlc3MgPyAnc3VjY2VzcycgOiAnZmFpbGVkJztcblxuICAgICAgICBjb25zdCB2YWx1ZURlc2NyaXB0aW9uID0gc3ViU3RlcC50ZXh0IHx8IHN1YlN0ZXAuZGVzY3JpcHRpb24gfHwgKGlzU3VjY2Vzc1xuICAgICAgICAgID8gYEFJIGF1dG8taGVhbCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5YFxuICAgICAgICAgIDogYEFJIGF1dG8taGVhbCBmYWlsZWRgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZURlc2NyaXB0aW9uLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICByZWFzb25pbmc6IG51bGwsXG4gICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIHR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIGR1cmF0aW9uOiBiYXNlRHVyYXRpb24sXG4gICAgICAgICAgaXNBaUF1dG9IZWFsUmVzdWx0OiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZWFzb25pbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goe1xuICAgICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByZWFzb25pbmcsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIHJlYXNvbmluZzogcmVhc29uaW5nLFxuICAgICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICAgIHVpVHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgdHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgZHVyYXRpb246IGJhc2VEdXJhdGlvbixcbiAgICAgICAgICAgIGlzQWlBdXRvSGVhbFJlc3VsdDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgoc3RhdHVzID09PSAnZmFpbGVkJyB8fCBzdGF0dXMgPT09ICdmYWlsdXJlJykgJiYgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkpIHtcbiAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5zdGF0dXMgPSAnZmFpbGVkJztcbiAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5yZW1haW5pbmdTZWNvbmRzID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHN1YlN0ZXApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGFzdFByb2Nlc3NlZEluZGV4ID0gYWxsU3ViU3RlcHMubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldExpdmVQcm9jZXNzaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMgPSBbXTtcbiAgICB0aGlzLmxhc3RQcm9jZXNzZWRJbmRleCA9IDA7XG4gICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgIHRoaXMuYWlBdXRvSGVhbEdyb3VwRW50cnkgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNvdW50ZG93blRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvdW50ZG93bkludGVydmFsSWQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jb3VudGRvd25JbnRlcnZhbElkKTtcbiAgICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWxJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREdXJhdGlvblRvV2FpdExvY2F0b3JHcm91cEVudHJ5KHN1YlN0ZXA6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByYXdEdXJhdGlvbiA9IHN1YlN0ZXA/LmR1cmF0aW9uO1xuICAgIGxldCBkZWx0YSA9IDA7XG4gICAgaWYgKHR5cGVvZiByYXdEdXJhdGlvbiA9PT0gJ251bWJlcicpIHtcbiAgICAgIGRlbHRhID0gcmF3RHVyYXRpb247XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmF3RHVyYXRpb24gPT09ICdzdHJpbmcnICYmIHJhd0R1cmF0aW9uLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRmxvYXQocmF3RHVyYXRpb24pO1xuICAgICAgZGVsdGEgPSBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IDA7XG4gICAgfVxuXG4gICAgaWYgKGRlbHRhIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50UmF3ID0gdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuZHVyYXRpb247XG4gICAgbGV0IGN1cnJlbnQgPSAwO1xuICAgIGlmICh0eXBlb2YgY3VycmVudFJhdyA9PT0gJ251bWJlcicpIHtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50UmF3O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGN1cnJlbnRSYXcgPT09ICdzdHJpbmcnICYmIGN1cnJlbnRSYXcudHJpbSgpICE9PSAnJykge1xuICAgICAgY29uc3QgcGFyc2VkQ3VycmVudCA9IHBhcnNlRmxvYXQoY3VycmVudFJhdyk7XG4gICAgICBjdXJyZW50ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZEN1cnJlbnQpID8gcGFyc2VkQ3VycmVudCA6IDA7XG4gICAgfVxuXG4gICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuZHVyYXRpb24gPSBjdXJyZW50ICsgZGVsdGE7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdWJTdGVwc0ZvclJ1blJlc3VsdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxTdWJTdGVwcyA9ICh0aGlzLnN1YlN0ZXBzIHx8IFtdKSBhcyBhbnlbXTtcbiAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHN1YlN0ZXAgb2YgYWxsU3ViU3RlcHMpIHtcbiAgICAgIGNvbnN0IHVpVHlwZTogc3RyaW5nID0gc3ViU3RlcD8udWlUeXBlIHx8IHN1YlN0ZXA/LnR5cGUgfHwgJyc7XG5cbiAgICAgIGlmICh1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUxfU1VDQ0VTUycgfHwgdWlUeXBlID09PSAnQUlfQVVUT19IRUFMX0ZBSUxFRCcpIHtcbiAgICAgICAgY29uc3QgaXNTdWNjZXNzID0gdWlUeXBlID09PSAnQUlfQVVUT19IRUFMX1NVQ0NFU1MnO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHN1YlN0ZXAudmFsdWUgPz8gc3ViU3RlcC50ZXh0ID8/ICcnO1xuICAgICAgICBjb25zdCByZWFzb25pbmcgPSBzdWJTdGVwLnJlYXNvbmluZyA/PyBzdWJTdGVwLlJlYXNvbmluZyA/PyAnJztcbiAgICAgICAgY29uc3QgYmFzZUR1cmF0aW9uID0gc3ViU3RlcC5kdXJhdGlvbiB8fCAwO1xuICAgICAgICBjb25zdCBmaW5hbFN0YXR1cyA9IGlzU3VjY2VzcyA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlRGVzY3JpcHRpb24gPSAoaXNTdWNjZXNzXG4gICAgICAgICAgPyBgQUkgYXV0by1oZWFsIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlgXG4gICAgICAgICAgOiBgQUkgYXV0by1oZWFsIGZhaWxlZGApO1xuICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0LnB1c2goe1xuICAgICAgICAgIC4uLnN1YlN0ZXAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlRGVzY3JpcHRpb24sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHJlYXNvbmluZzogbnVsbCxcbiAgICAgICAgICBzdGF0dXM6IGZpbmFsU3RhdHVzLFxuICAgICAgICAgIHVpVHlwZTogJ0FJX0FVVE9fSEVBTF9WQUxVRScsXG4gICAgICAgICAgdHlwZTogJ0FJX0FVVE9fSEVBTF9WQUxVRScsXG4gICAgICAgICAgZHVyYXRpb246IGJhc2VEdXJhdGlvbixcbiAgICAgICAgICBpc0FpQXV0b0hlYWxSZXN1bHQ6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlYXNvbmluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHJlYXNvbmluZyxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgcmVhc29uaW5nOiByZWFzb25pbmcsXG4gICAgICAgICAgICBzdGF0dXM6IGZpbmFsU3RhdHVzLFxuICAgICAgICAgICAgdWlUeXBlOiAnQUlfQVVUT19IRUFMX1JFQVNPTklORycsXG4gICAgICAgICAgICB0eXBlOiAnQUlfQVVUT19IRUFMX1JFQVNPTklORycsXG4gICAgICAgICAgICBkdXJhdGlvbjogYmFzZUR1cmF0aW9uLFxuICAgICAgICAgICAgaXNBaUF1dG9IZWFsUmVzdWx0OiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IChzdWJTdGVwPy5zdGF0dXMgPz8gJycpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgaXNGYWlsZWQgPSBzdGF0dXMgPT09ICdmYWlsZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWx1cmUnO1xuICAgICAgICBjb25zdCBpc0xvY2F0b3JTdGVwID0gdWlUeXBlID09PSAnV0FJVF9GT1JfTE9DQVRPUicgfHwgdWlUeXBlID09PSAnRklORF9MT0NBVE9SJyB8fCB1aVR5cGUgPT09ICdMT0NBVE9SX0ZPVU5EJztcbiAgICAgICAgaWYgKGlzTG9jYXRvclN0ZXAgJiYgaXNGYWlsZWQpIHtcbiAgICAgICAgICBjb25zdCBiYXNlRGVzYyA9IHN1YlN0ZXA/LmRlc2NyaXB0aW9uID8/IHN1YlN0ZXA/LnRleHQgPz8gc3ViU3RlcD8udGl0bGUgPz8gJyc7XG4gICAgICAgICAgY29uc3Qgbm90Rm91bmRTdWZmaXggPSAnIC0gRWxlbWVudCBub3QgZm91bmQnO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IChiYXNlRGVzYyA/IGJhc2VEZXNjICsgbm90Rm91bmRTdWZmaXggOiBub3RGb3VuZFN1ZmZpeC50cmltKCkpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdC5wdXNoKHN1YlN0ZXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLXctZnVsbFwiIFtjbGFzcy5jcWEtb3BhY2l0eS01MF09XCJpc0RlYnVnICYmIGlzU2tpcHBlZCAmJiAhcGFyZW50U2tpcHBlZFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIiFpc0RlYnVnID8gbnVsbCA6IGdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdwYXVzZWQnID8gJyNGRkY5RTknIDogZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCcgPyAnI0ZFRjJGMicgOiBudWxsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXAtMiBjcWEtY3Vyc29yLXBvaW50ZXJcIlxuICAgIChjbGljayk9XCJ0b2dnbGVIZWFkZXIoJGV2ZW50KVwiXG4gICAgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI0YzRjRGNlwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVidWdJY29uXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnID8gJ0JyZWFrcG9pbnQgY2Fubm90IGJlIHNldCBvbiBhIHJ1bm5pbmcgc3RlcCcgOiAoaXNTdGVwRGVsZXRlZCA/ICdCcmVha3BvaW50IGNhbm5vdCBiZSBzZXQgb24gZGVsZXRlZCBzdGVwcycgOiAoKCEhcGFyZW50U2tpcHBlZCAmJiAhc3RlcD8uZGVidWdQb2ludERpc2FibGVkKSA/ICdCcmVha3BvaW50IGNhbm5vdCBiZSBzZXQgb24gYSBydW5uaW5nIHN0ZXAnIDogKCEhc3RlcD8uZGVidWdQb2ludERpc2FibGVkID8gJ0JyZWFrcG9pbnQgY2Fubm90IGJlIHNldCBvbiBza2lwcGVkIHN0ZXBzJyA6ICcnKSkpXCJcbiAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNxYS1wLTAgY3FhLWJvcmRlci0wIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtcm91bmRlZC1mdWxsIGNxYS10cmFuc2l0aW9uLW9wYWNpdHkgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZycgfHwgISFzdGVwPy5kZWJ1Z1BvaW50RGlzYWJsZWQgfHwgISFwYXJlbnRTa2lwcGVkIHx8IGlzU3RlcERlbGV0ZWQgPyAnY3FhLWN1cnNvci1ub3QtYWxsb3dlZCBjcWEtb3BhY2l0eS00MCBjcWEtcG9pbnRlci1ldmVudHMtbm9uZScgOiAnY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1vcGFjaXR5LTgwJ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnIHx8ICEhc3RlcD8uZGVidWdQb2ludERpc2FibGVkIHx8ICEhcGFyZW50U2tpcHBlZCB8fCBpc1N0ZXBEZWxldGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uRGVidWdQb2ludENsaWNrKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImRlYnVnUG9pbnRTZXQgPyAnUmVtb3ZlIGRlYnVnIHBvaW50JyA6ICdTZXQgZGVidWcgcG9pbnQnXCI+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJkZWJ1Z1BvaW50U2V0XCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjZcIiBbYXR0ci5maWxsXT1cIiEhc3RlcD8uZGVidWdQb2ludERpc2FibGVkIHx8ICEhcGFyZW50U2tpcHBlZCB8fCBpc1N0ZXBEZWxldGVkID8gJyM5RTlFOUUnIDogJyNDNjM1MzUnXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIiFkZWJ1Z1BvaW50U2V0XCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjZcIiBbYXR0ci5zdHJva2VdPVwiISFzdGVwPy5kZWJ1Z1BvaW50RGlzYWJsZWQgfHwgISFwYXJlbnRTa2lwcGVkIHx8IGlzU3RlcERlbGV0ZWQgPyAnIzlFOUU5RScgOiAnI0M2MzUzNSdcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFN0YXR1cyBJY29uIC0tPlxuICAgIDwhLS0gU3VjY2VzcyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZhaWx1cmUgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsdXJlJyB8fCBnZXRTdGF0dXMoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03LjUgNC41TDQuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDQuNUw3LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFBlbmRpbmcgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gUnVubmluZyAtIFNob3cgc3Bpbm5lciAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0U3RhdHVzKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnXCI+XG4gICAgICA8c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtdGV4dC1bIzNCODJGNl1cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIG9wYWNpdHk9XCIwLjI1XCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTYgMUE1IDUgMCAwIDEgMTEgNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdza2lwcGVkJ1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtdGV4dC1bMTJweF1cIj5cbiAgICAgICAgc2tpcF9uZXh0XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImdldFN0YXR1cygpLnRvTG93ZXJDYXNlKCkgPT09ICdwYXVzZWQnXCI+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk04LjUgMkg3LjVDNy4yMjM4NiAyIDcgMi4yMjM4NiA3IDIuNVY5LjVDNyA5Ljc3NjE0IDcuMjIzODYgMTAgNy41IDEwSDguNUM4Ljc3NjE0IDEwIDkgOS43NzYxNCA5IDkuNVYyLjVDOSAyLjIyMzg2IDguNzc2MTQgMiA4LjUgMlpcIiBzdHJva2U9XCIjRTE3MTAwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDJIMy41QzMuMjIzODYgMiAzIDIuMjIzODYgMyAyLjVWOS41QzMgOS43NzYxNCAzLjIyMzg2IDEwIDMuNSAxMEg0LjVDNC43NzYxNCAxMCA1IDkuNzc2MTQgNSA5LjVWMi41QzUgMi4yMjM4NiA0Ljc3NjE0IDIgNC41IDJaXCIgc3Ryb2tlPVwiI0UxNzEwMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cblxuICAgIDxkaXY+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiByeD1cIjRcIiBmaWxsPVwiI0YwRjBGMVwiLz5cbiAgICAgIDxwYXRoIGQ9XCJNMTMuNSAzLjVINi41QzUuOTUgMy41IDUuNSAzLjk1IDUuNSA0LjVWMTEuNUM1LjUgMTIuMDUgNS45NSAxMi41IDYuNSAxMi41SDEzLjVDMTQuMDUgMTIuNSAxNC41IDEyLjA1IDE0LjUgMTEuNVY0LjVDMTQuNSAzLjk1IDE0LjA1IDMuNSAxMy41IDMuNVpNMTMuNSA0LjVWNkg2LjVWNC41SDEzLjVaTTEzLjUgN1Y5SDYuNVY3SDEzLjVaTTYuNSAxMS41VjEwSDEzLjVWMTEuNUg2LjVaXCIgZmlsbD1cIiMyMTIxMjJcIi8+XG4gICAgICA8L3N2Zz48L2Rpdj5cblxuICAgIDwhLS0gU3RlcCBOdW1iZXIgYW5kIFRpdGxlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZCBjcWEtZmxleC0xIGNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS1mb250LWludGVyIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgPHNwYW4+e3sgc3RlcE51bWJlciB9fS4gPHNwYW4gW2lubmVySFRNTF09XCJ0aXRsZVwiPjwvc3Bhbj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1tbC0xIGNxYS1weC0xLjUgY3FhLXB5LTAuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzIxMjEyMl0gY3FhLWJnLVsjRjBGMEYxXSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1taW4tdy1tYXhcIj5cbiAgICAgICAgRGF0YWJhc2VcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLnN0ZXBEZWxldGVkXCIgY2xhc3M9XCJjcWEtcHgtMS41IGNxYS1weS1bMnB4XSBjcWEtcm91bmRlZC1bNHB4XSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzEycHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bI0I0MjMxOF0gY3FhLWJnLVsjRkVGM0YyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNGRUU0RTJdXCI+XG4gICAgICAgIERlbGV0ZWRcbiAgICAgIDwvc3Bhbj5cblxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtZm9udC1pbnRlclwiPlxuICAgICAgPCEtLSBTdGVwIENoYW5nZSBCYWRnZXMgKGRlYnVnIG9ubHkpIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVidWdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2Ygc3RlcEJhZGdlc1wiPlxuICAgICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICAgKm5nSWY9XCJiYWRnZSA9PT0gJ3NraXBwZWQnXCJcbiAgICAgICAgICBsYWJlbD1cIlNraXBwZWRcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW3RleHRDb2xvcl09XCInIzRBNTU2NSdcIlxuICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInIzk5QTFBRidcIlxuICAgICAgICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyNGRkZGRkYnXCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICAgKm5nSWY9XCJiYWRnZSA9PT0gJ2VkaXRlZCdcIlxuICAgICAgICAgIGxhYmVsPVwiRWRpdGVkXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFt0ZXh0Q29sb3JdPVwiJyNGQkJGMjQnXCJcbiAgICAgICAgICBbYm9yZGVyQ29sb3JdPVwiJyNGRERGOTInXCJcbiAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjRkZGOUU5J1wiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiYmFkZ2UgPT09ICdhZGRlZCdcIlxuICAgICAgICAgIGxhYmVsPVwiQWRkZWRcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW3RleHRDb2xvcl09XCInIzBEQkQ3RCdcIlxuICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInIzVFRDNBOCdcIlxuICAgICAgICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyNDRkYyRTUnXCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICAgKm5nSWY9XCJiYWRnZSA9PT0gJ3JlbW92ZWQnXCJcbiAgICAgICAgICBsYWJlbD1cIlJlbW92ZWRcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW3RleHRDb2xvcl09XCInI0VFM0YzRidcIlxuICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInI0Y0N0Y3RidcIlxuICAgICAgICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyNGQ0Q5RDknXCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW4gKm5nSWY9XCJzZWxmSGVhbEFuYWx5c2lzXCIgY2xhc3M9XCJjcWEtcHgtMS41IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMDk3RTUzXSBjcWEtYmctWyNDRkYyRTVdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLW1pbi13LW1heCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiIHZpZXdCb3g9XCIwIDAgOSA5XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQuNTA5NDEgMEM0LjU2NDg5IDAuMDIyNzM4NCA0LjU4ODU5IDAuMDc4MjY1MiA0LjYxMTMxIDAuMTI5ODQ2QzQuNjIyNjkgMC4xNTk5IDQuNjMzMTQgMC4xOTAxMTcgNC42NDMyOSAwLjIyMDU3NUM0LjY0NzI2IDAuMjMyMjQ3IDQuNjUxMjMgMC4yNDM5MTggNC42NTUzMiAwLjI1NTk0M0M0LjcwODA2IDAuNDEzMDA1IDQuNzU1MDQgMC41NzE3NDggNC44MDIyOSAwLjczMDM4QzQuODEyOTcgMC43NjYxOSA0LjgyMzY5IDAuODAxOTg3IDQuODM0NDIgMC44Mzc3ODNDNC44ODkwNSAxLjAyMDA0IDQuOTQzMjcgMS4yMDI0IDQuOTk3MTkgMS4zODQ4NEM1LjAwNDc2IDEuNDEwNDcgNS4wMTIzNCAxLjQzNjA5IDUuMDE5OTIgMS40NjE3MUM1LjA0MTI4IDEuNTMzOTUgNS4wNjI2MiAxLjYwNjE5IDUuMDgzODMgMS42Nzg0N0M1LjEyODY3IDEuODMxMiA1LjE3NDczIDEuOTgzNDcgNS4yMjM3OCAyLjEzNTAxQzUuMjI4MDcgMi4xNDgyNyA1LjIzMjM2IDIuMTYxNTIgNS4yMzY3NyAyLjE3NTE4QzUuMzY0MiAyLjU2NSA1LjU0NDgyIDIuOTE0MzcgNS44NDA5IDMuMjExOTZDNS44NDgyMyAzLjIxOTcgNS44NTU1NiAzLjIyNzQ0IDUuODYzMTIgMy4yMzU0MUM1Ljk4OTUgMy4zNjQzNyA2LjE1MTY5IDMuNDY3NzEgNi4zMTM4IDMuNTUxMTFDNi4zMjIwNiAzLjU1NTQyIDYuMzMwMzEgMy41NTk3NCA2LjMzODgyIDMuNTY0MTlDNi44MTU4NyAzLjgwOTI1IDcuMzg5NTEgMy45MTcwNCA3LjkwNjE5IDQuMDYwNUM4LjEzMjYgNC4xMjM0IDguMzU4MyA0LjE4ODI5IDguNTgzMTcgNC4yNTYwM0M4LjU5ODk3IDQuMjYwNzkgOC42MTQ3OCA0LjI2NTU0IDguNjMwNTggNC4yNzAyOEM4LjY3Nzg0IDQuMjg0NDUgOC43MjUgNC4yOTg4NyA4Ljc3MjExIDQuMzEzNDdDOC43ODMxIDQuMzE2NzkgOC43OTQwOCA0LjMyMDExIDguODA1MzkgNC4zMjM1M0M4Ljg3MDI5IDQuMzQ0MDYgOC45MzIzOSA0LjM2ODI5IDguOTg1NjYgNC40MTAyN0M5LjAwMTkxIDQuNDQ0MTggOS4wMDE5MSA0LjQ0NDE4IDguOTk3NDggNC40NzgxQzguOTQ1NjQgNC41MjczNiA4Ljg5NDIgNC41NTA0NiA4LjgyNTc4IDQuNTczQzguODE2IDQuNTc2MzIgOC44MDYyMiA0LjU3OTY1IDguNzk2MTQgNC41ODMwOEM4LjY4MDYxIDQuNjIxODMgOC41NjM1MSA0LjY1NTc1IDguNDQ2MjYgNC42ODkzNUM4LjQyMjIgNC42OTYzIDguMzk4MTQgNC43MDMyNiA4LjM3NDA4IDQuNzEwMjFDOC4yMjU3MSA0Ljc1MzAxIDguMDc3MDggNC43OTQ5IDcuOTI4MjkgNC44MzYzMkM3LjczMjMyIDQuODkwODggNy41MzY2MyA0Ljk0NjM0IDcuMzQxMTMgNS4wMDI0M0M3LjMwOTEgNS4wMTE2MiA3LjI3NzA2IDUuMDIwNzggNy4yNDUwMSA1LjAyOTkxQzcuMDc2NzEgNS4wNzc4NiA2LjkwOTIzIDUuMTI3NTMgNi43NDMxNCA1LjE4MjA4QzYuNzI5MzcgNS4xODY1OSA2LjcxNTU5IDUuMTkxMSA2LjcwMTM5IDUuMTk1NzRDNi4xNDUxMSA1LjM4MDgyIDUuNzIxMSA1LjcyNjA5IDUuNDU1NzEgNi4yMzA5OUM1LjMxMjYzIDYuNTE0NzUgNS4yMjgyMyA2LjgyMTYxIDUuMTQyMTQgNy4xMjQ0N0M1LjExODg0IDcuMjA2MTkgNS4wOTQwOSA3LjI4NzQ1IDUuMDY5MDUgNy4zNjg2OUM1LjA0OTQgNy40MzI2MSA1LjAzMDIgNy40OTY2MyA1LjAxMTQ5IDcuNTYwODFDNS4wMDkyNiA3LjU2ODQ0IDUuMDA3MDMgNy41NzYwOCA1LjAwNDczIDcuNTgzOTVDNC45OTM5NCA3LjYyMDk0IDQuOTgzMTkgNy42NTc5MyA0Ljk3MjUyIDcuNjk0OTVDNC45NDUxOSA3Ljc4ODc5IDQuOTE1NzggNy44ODE4NyA0Ljg4NTU1IDcuOTc0ODlDNC44MzE5MSA4LjE0MDIxIDQuNzgzMSA4LjMwNjc0IDQuNzM0NTkgOC40NzM1QzQuNjYxNDQgOC43MjQ1NyA0LjY2MTQ0IDguNzI0NTcgNC42MTk5NyA4Ljg0NTI3QzQuNjE3MjEgOC44NTMzNyA0LjYxNDQ2IDguODYxNDcgNC42MTE2MyA4Ljg2OTgyQzQuNTk2NDkgOC45MTI3OCA0LjU4MDkyIDguOTUyMzMgNC41NTIyNiA4Ljk4ODdDNC41MDg2NyA4Ljk5Nzg4IDQuNTA4NjcgOC45OTc4OCA0LjQ2OTUxIDlDNC40MjQ3MyA4LjkzNzU5IDQuMzk1MDggOC44NzcxMSA0LjM3MTMzIDguODA1MDhDNC4zNjc4NyA4Ljc5NDg3IDQuMzY0NDEgOC43ODQ2NiA0LjM2MDg1IDguNzc0MTVDNC4zMTY4NCA4LjY0MjQ4IDQuMjc3NTEgOC41MDk0NiA0LjIzODE3IDguMzc2NDZDNC4yMjkxNiA4LjM0NjA0IDQuMjIwMTEgOC4zMTU2NCA0LjIxMTA1IDguMjg1MjRDNC4xNDM2IDguMDU4NjMgNC4wNzcyNSA3LjgzMTc0IDQuMDExMDEgNy42MDQ4MUMzLjczNTA3IDYuNDgyMjQgMy43MzUwNyA2LjQ4MjI0IDMuMDM5IDUuNTc0NjZDMy4wMjc4NCA1LjU2NTk2IDMuMDE2NjkgNS41NTcyNiAzLjAwNTE5IDUuNTQ4M0MyLjU0OTEzIDUuMTk5MDIgMS45NDgzNCA1LjA2OTY5IDEuMzk4MTUgNC45MTgxM0MxLjI2MjA3IDQuODgwNjIgMS4xMjYwNSA0Ljg0MjkzIDAuOTkwMDMyIDQuODA1MjNDMC45NzgxMzggNC44MDE5MyAwLjk3ODEzOCA0LjgwMTkzIDAuOTY2MDAzIDQuNzk4NTdDMC43Njk4MTEgNC43NDQxNyAwLjU3MzY3NCA0LjY4OTYzIDAuMzc4MjI0IDQuNjMyODNDMC4zNjk5NTYgNC42MzA0NSAwLjM2MTY4OCA0LjYyODA2IDAuMzUzMTY5IDQuNjI1NjFDMC4wNTI4OTg5IDQuNTM4ODMgMC4wNTI4OTg5IDQuNTM4ODMgMC4wMDA2NDY1MzcgNC40NzgxQy0wLjAwMDgzMTI2MSA0LjQ1MDU0IC0wLjAwMDgzMTI2MSA0LjQ1MDU0IDAuMDEyNDY4OSA0LjQyMTU3QzAuMDY3MDgzNSA0LjM3MDQgMC4xMjAwNzcgNC4zNDg0OCAwLjE5MjE2IDQuMzI2MTlDMC4yMDI1OTcgNC4zMjI4NCAwLjIxMzAzNCA0LjMxOTQ4IDAuMjIzNzg3IDQuMzE2MDNDMC4yNTU3NTMgNC4zMDU4MiAwLjI4Nzc4OCA0LjI5NTg0IDAuMzE5ODUxIDQuMjg1OTJDMC4zMjkwMDEgNC4yODMwNSAwLjMzODE1MSA0LjI4MDE3IDAuMzQ3NTc4IDQuMjc3MjJDMC40MTIyODUgNC4yNTY5MyAwLjQ3NzIyNSA0LjIzNzQgMC41NDIyNTkgNC4yMTgwOUMwLjU1ODI0IDQuMjEzMzIgMC41NTgyNCA0LjIxMzMyIDAuNTc0NTQ0IDQuMjA4NDZDMC44NTIyNjkgNC4xMjU4NyAxLjEzMTgxIDQuMDQ5IDEuNDExMjYgMy45NzE5NkMxLjYxOTUgMy45MTQ1NSAxLjgyNzM4IDMuODU2MTggMi4wMzQ2IDMuNzk1NDhDMi4wNDQxMyAzLjc5MjcxIDIuMDUzNjUgMy43ODk5MyAyLjA2MzQ2IDMuNzg3MDdDMi41NDM1IDMuNjQ2OTYgMy4wMTI3OCAzLjQ0ODE2IDMuMzIyNzQgMy4wNTM3QzMuMzI3MzggMy4wNDc4NSAzLjMzMjAyIDMuMDQyIDMuMzM2OCAzLjAzNTk3QzMuNjgxOTcgMi41OTgxNSAzLjgxNjU4IDIuMDY1NzIgMy45NjY5NSAxLjU0NjIxQzQuMDE2NDMgMS4zNzUzNCA0LjA2NjQ5IDEuMjA0NjQgNC4xMTY3MyAxLjAzMzk5QzQuMTMwNjQgMC45ODY3MzMgNC4xNDQ1MyAwLjkzOTQ3MSA0LjE1ODM2IDAuODkyMTk0QzQuMjEzOTQgMC43MDIyODkgNC4yNzAzNSAwLjUxMjY0MiA0LjMzIDAuMzIzODY0QzQuMzM1NTggMC4zMDYxODYgNC4zNDExNCAwLjI4ODUwMSA0LjM0NjY2IDAuMjcwODA3QzQuNDMwMTcgMC4wMDM5ODc2MSA0LjQzMDE3IDAuMDAzOTg3NjEgNC41MDk0MSAwWlwiIGZpbGw9XCIjMERCRDdEXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNy4yMzU5NyAwLjU1NDg1OUM3LjI5MDI0IDAuNjEzNTk5IDcuMzAxMDkgMC42ODI2MzEgNy4zMTc5OSAwLjc1NzYzOEM3LjM3NDM2IDAuOTkzMjY5IDcuNDM5MjkgMS4yMDk5MyA3LjY2NDY3IDEuMzQ2ODFDNy44MDM3MSAxLjQyMDM1IDcuOTY5NDQgMS40NTM4MSA4LjEyMzUgMS40ODU0MUM4LjE4ODU0IDEuNDk5MDIgOC4yNDM0OCAxLjUxNzA5IDguMjk5MjQgMS41NTMyMUM4LjMxMTgxIDEuNTcyMjkgOC4zMTE4MSAxLjU3MjI5IDguMzExMDcgMS42MDU0OUM4LjI5ODE0IDEuNjQ1ODggOC4yODY3OCAxLjY1ODkgOC4yNTI2OSAxLjY4NTMzQzguMjE1NDMgMS42OTcyNiA4LjIxNTQzIDEuNjk3MjYgOC4xNzA2OCAxLjcwNjUzQzguMTUzNzUgMS43MTAyNSA4LjEzNjgzIDEuNzE0IDguMTE5OTIgMS43MTc3OUM4LjExMDg2IDEuNzE5OCA4LjEwMTgxIDEuNzIxODEgOC4wOTI0NyAxLjcyMzg4QzcuODE2OTYgMS43ODQ4MiA3LjgxNjk2IDEuNzg0ODIgNy41Nzg4MiAxLjkyMjczQzcuNTcxMDggMS45Mjg2OSA3LjU2MzMzIDEuOTM0NjYgNy41NTUzNiAxLjk0MDhDNy4zODUxNiAyLjA4NDMxIDcuMzQ5MTYgMi4zMjMwMyA3LjI5NzkzIDIuNTIzMDFDNy4yOTQ5OSAyLjUzMzk5IDcuMjkyMDYgMi41NDQ5NyA3LjI4OTAzIDIuNTU2MjlDNy4yODY0OSAyLjU2NjAxIDcuMjgzOTUgMi41NzU3MyA3LjI4MTMzIDIuNTg1NzVDNy4yNzAyOCAyLjYxNTQ0IDcuMjU4ODEgMi42MzQ3OSA3LjIzNTk3IDIuNjU3NTRDNy4xNzIzNCAyLjY2NTI3IDcuMTcyMzQgMi42NjUyNyA3LjE0MTM5IDIuNjU3NTRDNy4wOTIxNiAyLjYyMTA2IDcuMDgxMTQgMi41Nzk1IDcuMDY4MjggMi41MjM2NUM3LjA2NjEzIDIuNTE1MDEgNy4wNjM5OCAyLjUwNjM2IDcuMDYxNzYgMi40OTc0NUM3LjA1NDg5IDIuNDY5ODMgNy4wNDgyNCAyLjQ0MjE3IDcuMDQxNjQgMi40MTQ0OUM2Ljk4OTc5IDIuMTk4OTcgNi45MzEyNiAxLjk4NzUxIDYuNzI0NTEgMS44NjExOEM2LjU2MjkzIDEuNzc1MDEgNi4zNjY0NiAxLjczNDI2IDYuMTg1ODcgMS43MDEzNkM2LjEzNjM3IDEuNjkxNTEgNi4xMDgwMiAxLjY3OTExIDYuMDc3MzggMS42NDAxMkM2LjA3MDczIDEuNjAwNTUgNi4wNzA3MyAxLjYwMDU1IDYuMDc3MzggMS41NjA5OEM2LjEyNDQ3IDEuNTE0MzcgNi4xNzQwMiAxLjUwMjk5IDYuMjM3NzIgMS40ODg5MUM2LjI1Nzc4IDEuNDg0MTYgNi4yNzc4NCAxLjQ3OTM4IDYuMjk3ODkgMS40NzQ1NkM2LjMwODI1IDEuNDcyMDkgNi4zMTg2MSAxLjQ2OTYyIDYuMzI5MjkgMS40NjcwN0M2LjM4MjEyIDEuNDU0MDcgNi40MzQ0MyAxLjQzOTQ5IDYuNDg2NzMgMS40MjQ2MkM2LjQ5NjIzIDEuNDIxOTggNi41MDU3MyAxLjQxOTM1IDYuNTE1NTIgMS40MTY2M0M2LjYyMTgyIDEuMzg2MjQgNi43MTM1NiAxLjM0NzM3IDYuNzk4NTQgMS4yNzgzNkM2LjgwNjQ3IDEuMjcyMTMgNi44MTQzOSAxLjI2NTg5IDYuODIyNTUgMS4yNTk0NkM2Ljk1NDggMS4xNDU2NSA2Ljk5OTc0IDAuOTc0Njc0IDcuMDQwNTMgMC44MTUxMzRDNy4wNDM2NCAwLjgwMzAyMiA3LjA0Njc1IDAuNzkwOTEgNy4wNDk5NSAwLjc3ODQzMkM3LjA1NjE0IDAuNzU0MTAxIDcuMDYyMjIgMC43Mjk3NDMgNy4wNjgxNyAwLjcwNTM1OUM3LjA3MjQzIDAuNjg4Mzk0IDcuMDcyNDMgMC42ODgzOTQgNy4wNzY3OCAwLjY3MTA4NkM3LjA3OTI3IDAuNjYwOTUxIDcuMDgxNzUgMC42NTA4MTYgNy4wODQzMSAwLjY0MDM3M0M3LjA5NTIxIDAuNjA4MTA4IDcuMTA5NTIgMC41ODI3NzIgNy4xMjk1NyAwLjU1NDg1OUM3LjE2ODEgMC41MzY0MzUgNy4xOTUxNSAwLjU0NDc2NCA3LjIzNTk3IDAuNTU0ODU5WlwiIGZpbGw9XCIjMDc1RjNGXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMS43OTU0NSA2LjI0NzFDMS44MDk1MSA2LjI0NzE5IDEuODA5NTEgNi4yNDcxOSAxLjgyMzg2IDYuMjQ3MjlDMS45MjQ3NyA2LjI1MDIyIDEuOTkzMDQgNi4yODExNSAyLjA2NzM2IDYuMzQ2MDFDMi4xNTM4NCA2LjQzNTMzIDIuMTkzNzcgNi41MzYxMSAyLjE5MTUgNi42NTY1QzIuMTgxNzggNi43NTQxMiAyLjEyMTU4IDYuODM5MzUgMi4wNDc3MyA2LjkwNTMzQzEuOTYwODEgNi45NzI0MiAxLjg3MzEzIDYuOTk0NTkgMS43NjIwNiA2Ljk5MTQ5QzEuNjY4NDEgNi45ODEwNyAxLjU4MDMgNi45Mzg1MiAxLjUxMzkzIDYuODc0NTFDMS40MzEzOCA2Ljc2NjgxIDEuNDA3MjUgNi42NjgwMyAxLjQxOTM1IDYuNTM1MzdDMS40NDQzMyA2LjQzMDkyIDEuNTE2MzcgNi4zNDYxMyAxLjYwODUgNi4yODY2NkMxLjY3MjUxIDYuMjU1NjQgMS43MjM5OSA2LjI0NjUyIDEuNzk1NDUgNi4yNDcxWlwiIGZpbGw9XCIjMERCRDdEXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICBTZWxmLWhlYWxlZFxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS1yb3VuZGVkLVs0cHhdIGNxYS1weS0wLjUgY3FhLXB4LTEgY3FhLWJnLVsjNjM2NkYxMUFdIGNxYS1tbC0xIGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5XCIgXG4gICAgICAgICAgICpuZ0lmPVwic3RlcD8uZXhlY3V0ZWRSZXN1bHQ/LnZpZGVvX3N0YXJ0X3RpbWVcIiBcbiAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0p1bXAgdG8gdmlkZW8gdGltZSdcIiBcbiAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAoY2xpY2spPVwib25KdW1wVG9UaW1lc3RhbXAoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdGV4dC1bIzYzNjM2M10gIWNxYS10ZXh0LVsxMHB4XSAhY3FhLXctWzEwcHhdICFjcWEtaC1bMTBweF1cIj5cbiAgICAgICAgICBwbGF5X2Fycm93XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzhweF0gY3FhLWxlYWRpbmctWzEycHhdIGNxYS1mb250LW5vcm1hbCBjcWEtdGV4dC1bIzYzNjM2M11cIj5cbiAgICAgICAgICB7eyBmb3JtYXREdXJhdGlvbkNsb2NrKHN0ZXA/LmV4ZWN1dGVkUmVzdWx0Py52aWRlb19zdGFydF90aW1lIHx8IDApIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImlzRGVidWdcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0wLjUgY3FhLXRleHQtWyM5Q0EzQUZdXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXN0ZXA/LmlzU3RlcEdyb3VwQ2hpbGRyZW5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1vcGFjaXR5LTgwIGNxYS10cmFuc2l0aW9uLW9wYWNpdHkgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZVwiIGFyaWEtbGFiZWw9XCJFZGl0XCIgKGNsaWNrKT1cIm9uRWRpdFN0ZXAoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIiFjcWEtdGV4dC1bMTRweF0gIWNxYS13LVsxNHB4XSAhY3FhLWgtWzE0cHhdXCI+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXN0ZXA/LmlzU3RlcEdyb3VwQ2hpbGRyZW5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1vcGFjaXR5LTgwIGNxYS10cmFuc2l0aW9uLW9wYWNpdHkgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZVwiIGFyaWEtbGFiZWw9XCJBZGRcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWRkU3RlcE1lbnVcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIhY3FhLXRleHQtWzE0cHhdICFjcWEtdy1bMTRweF0gIWNxYS1oLVsxNHB4XVwiPmFkZDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LW1lbnUgI2FkZFN0ZXBNZW51PVwibWF0TWVudVwiIGNsYXNzPVwiY3FhLWFkZC1zdGVwLW1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIiB5UG9zaXRpb249XCJiZWxvd1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgb3B0IG9mIGFkZFN0ZXBNZW51T3B0aW9uc1wiIChjbGljayk9XCJvbkFkZFN0ZXBPcHRpb25TZWxlY3Qob3B0LCAkZXZlbnQpXCI+e3sgb3B0LmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJlZmZlY3RpdmVTdGVwTW9yZU1lbnVPcHRpb25zLmxlbmd0aFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNxYS1wLTAgY3FhLWJvcmRlci0wIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLW9wYWNpdHktODAgY3FhLXRyYW5zaXRpb24tb3BhY2l0eSBmb2N1czpjcWEtb3V0bGluZS1ub25lXCIgYXJpYS1sYWJlbD1cIk1vcmUgb3B0aW9uc1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJzdGVwTW9yZU1lbnVcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIhY3FhLXRleHQtWzE0cHhdICFjcWEtdy1bMTRweF0gIWNxYS1oLVsxNHB4XVwiPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LW1lbnUgI3N0ZXBNb3JlTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImNxYS1zdGVwLW1vcmUtbWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiIHlQb3NpdGlvbj1cImJlbG93XCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBvcHQgb2YgZWZmZWN0aXZlU3RlcE1vcmVNZW51T3B0aW9uc1wiIChjbGljayk9XCJvblN0ZXBNb3JlT3B0aW9uU2VsZWN0KG9wdCwgJGV2ZW50KVwiPnt7IG9wdC5sYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgICB7eyBmb3JtYXREdXJhdGlvbihkdXJhdGlvbikgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzdmcgKm5nSWY9XCJoYXNTdWJTdGVwcyB8fCAhaXNMaXZlXCIgW2NsYXNzLmNxYS1yb3RhdGUtMTgwXT1cImlzRXhwYW5kZWRcIiBjbGFzcz1cImNxYS10cmFuc2l0aW9uLXRyYW5zZm9ybVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTMuNSA1TDcgOC41TDEwLjUgNVwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIwLjgzMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBTdWItc3RlcHMgKGxvZ3MpIC0gc2hvd24gd2hlbiBleHBhbmRlZCBmb3IgYm90aCBsaXZlIGFuZCBydW4gcmVzdWx0IC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNFeHBhbmRlZCAmJiBoYXNTdWJTdGVwc1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMSBjcWEtcHQtMSBjcWEtcGwtOSBjcWEtcHItNiBjcWEtcGItMiBjcWEtYmctd2hpdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJTdGVwIG9mIChpc0xpdmUgPyBwcm9jZXNzZWRTdWJTdGVwcyA6IHByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0KVwiPlxuICAgICAgPGNxYS1haS1sb2dzLXdpdGgtcmVhc29uaW5nXG4gICAgICAgICpuZ0lmPVwiJGFueShzdWJTdGVwKS5pc0FpQXV0b0hlYWxSZXN1bHRcIlxuICAgICAgICBbc3RhdHVzXT1cInN1YlN0ZXAuc3RhdHVzXCJcbiAgICAgICAgW3RleHRdPVwiJGFueShzdWJTdGVwKS50ZXh0IHx8IHN1YlN0ZXA/LnZhbHVlXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIiRhbnkoc3ViU3RlcCkuZGVzY3JpcHRpb24gfHwgc3ViU3RlcD8udGV4dCB8fCBzdWJTdGVwPy52YWx1ZVwiXG4gICAgICAgIFtyZWFzb25pbmddPVwiJGFueShzdWJTdGVwKS5yZWFzb25pbmcgfHwgc3ViU3RlcD8ucmVhc29uaW5nXCJcbiAgICAgICAgW2R1cmF0aW9uXT1cInN1YlN0ZXAuZHVyYXRpb25cIj5cbiAgICAgIDwvY3FhLWFpLWxvZ3Mtd2l0aC1yZWFzb25pbmc+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhJGFueShzdWJTdGVwKS5pc0FpQXV0b0hlYWxSZXN1bHRcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS1bNS41cHhdIGNxYS1weC0zXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJyB8fCBzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdwYXNzZWQnXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMC45MDA1IDQuOTk5OTlDMTEuMTI4OSA2LjEyMDY0IDEwLjk2NjIgNy4yODU3MSAxMC40Mzk1IDguMzAwODlDOS45MTI3OSA5LjMxNjA4IDkuMDU0IDEwLjEyIDguMDA2MzEgMTAuNTc4N0M2Ljk1ODYyIDExLjAzNzMgNS43ODUzNiAxMS4xMjI5IDQuNjgyMiAxMC44MjEyQzMuNTc5MDQgMTAuNTE5NSAyLjYxMjY1IDkuODQ4NjkgMS45NDQxOSA4LjkyMDcxQzEuMjc1NzMgNy45OTI3MiAwLjk0NTYxMSA2Ljg2MzYxIDEuMDA4ODggNS43MjE2OUMxLjA3MjE1IDQuNTc5NzYgMS41MjQ5OSAzLjQ5NDA0IDIuMjkxODggMi42NDU1OEMzLjA1ODc2IDEuNzk3MTIgNC4wOTMzNCAxLjIzNzIxIDUuMjIzMDggMS4wNTkyMkM2LjM1MjgyIDAuODgxMjMzIDcuNTA5NDQgMS4wOTU5MiA4LjUwMDA1IDEuNjY3NDlcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDUuNUw2IDdMMTEgMlwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgc3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy41IDQuNUw0LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA0LjVMNy41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncGVuZGluZydcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIj5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtdGV4dC1bIzNCODJGNl1cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBvcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxQTUgNSAwIDAgMSAxMSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLXRleHQtWzEzcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bIzM2NDE1M11cIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtbGluZTsgd29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICB7eyAkYW55KHN1YlN0ZXApLmRlc2NyaXB0aW9uIHx8ICRhbnkoc3ViU3RlcCkudGV4dCB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNMaXZlICYmICRhbnkoc3ViU3RlcCkucmVtYWluaW5nU2Vjb25kcyAhPSBudWxsXCIgY2xhc3M9XCJjcWEtdGV4dC1bI0Y5NzMxNl0gY3FhLWZvbnQtbWVkaXVtIGNxYS1tbC0xXCI+KHt7ICRhbnkoc3ViU3RlcCkucmVtYWluaW5nU2Vjb25kcyB9fXMgcmVtYWluaW5nKTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtbWV0YWRhdGEta2V5XCI+XG4gICAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oc3ViU3RlcC5kdXJhdGlvbikgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRXhwYW5kZWQgQ29udGVudCAoZGIgcXVlcmllcywgYXNzZXJ0aW9ucywgZXRjLikgLSBydW4gcmVzdWx0IG9ubHkgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc0V4cGFuZGVkICYmICFpc0xpdmVcIiBjbGFzcz1cImNxYS1wLTIgIWNxYS1wbC05ICFjcWEtcHItNiBjcWEtYmctd2hpdGVcIiBzdHlsZT1cImJvcmRlci10b3A6IDFweCBzb2xpZCAjRTRFNEU0O1wiPlxuICAgIDwhLS0gU3VtbWFyeSBCYXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1tYi0xLjUgY3FhLXAtMyBjcWEtYmctWyNGQ0ZDRkNdIGNxYS1yb3VuZGVkLVs2cHhdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNFNUU3RUI7XCIgKm5nSWY9XCJnZXRTdGF0dXMoKSB8fCBkdXJhdGlvbiB8fCBjYWNoZWRRdWVyeVJlc3VsdHM/Lmxlbmd0aCA+IDAgfHwgZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzPy5sZW5ndGggPiAwIHx8IGdldFRvdGFsUm93c1JldHVybmVkKCkgPiAwIHx8IGdldEZhaWx1cmVNZXNzYWdlKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtNFwiPlxuICAgICAgICA8IS0tIFN0YXR1cyBCYWRnZSAtLT5cbiAgICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiZ2V0U3RhdHVzKCk/LnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsdXJlJyB8fCBnZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgIGxhYmVsPVwiRkFJTFwiXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiI0RDMjYyNlwiXG4gICAgICAgICAgdGV4dENvbG9yPVwiI0ZGRkZGRlwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICAgKm5nSWY9XCJnZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICBsYWJlbD1cIlBBU1NcIlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiMyMkM1NUVcIlxuICAgICAgICAgIHRleHRDb2xvcj1cIiNGRkZGRkZcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICA8L2NxYS1iYWRnZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWgtWzE5cHhdIGNxYS13LVsxcHhdIGNxYS1iZy1bI0U1RTdFQl1cIj48L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIDwhLS0gU3VtbWFyeSBTdGF0cyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC00IGNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJkdXJhdGlvblwiIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC1bIzExMTgyN11cIj5Ub3RhbCBUaW1lOiA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNEI1NTYzXVwiPnt7IGZvcm1hdER1cmF0aW9uKGR1cmF0aW9uKSB9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYWNoZWRRdWVyeVJlc3VsdHM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+UXVlcmllczogPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzRCNTU2M11cIj57eyBjYWNoZWRRdWVyeVJlc3VsdHM/Lmxlbmd0aCB8fCAwIH19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsxMHB4XSBjcWEtdGV4dC1bIzExMTgyN11cIj5Bc3NlcnRpb25zOiA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNEI1NTYzXVwiPnt7IGRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cz8ubGVuZ3RoIHx8IDAgfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0VG90YWxSb3dzUmV0dXJuZWQoKSA+IDBcIiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMTBweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+Um93cyBSZXR1cm5lZDogPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzRCNTU2M11cIj57eyBnZXRUb3RhbFJvd3NSZXR1cm5lZCgpIH19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGYWlsdXJlIEJhbm5lciAtLT5cbiAgICAgIDxkaXYgXG4gICAgICAgICpuZ0lmPVwiZ2V0RmFpbHVyZU1lc3NhZ2UoKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLXB4LTIgY3FhLXB5LTEgY3FhLWJnLVsjRkVGMkYyXSBjcWEtcm91bmRlZC1bNHB4XVwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0ZFRTJFMjtcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bI0I5MUMxQ11cIj5cbiAgICAgICAgICB7eyBnZXRGYWlsdXJlTWVzc2FnZSgpIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEYXRhYmFzZSBFbnZpcm9ubWVudCBTZWN0aW9uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJkYkNvbmZpZ1wiIGNsYXNzPVwiY3FhLW1iLTEuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLW1iLTJcIj5EYXRhYmFzZSBlbnZpcm9ubWVudDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1sZyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXB4LTQgY3FhLXB5LTIgY3FhLXJlbGF0aXZlIGNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0zXCI+XG4gICAgICAgIDwhLS0gRW52aXJvbm1lbnQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM0NTU1NkNdIGNxYS1tYi0xXCI+RW52aXJvbm1lbnQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bIzBGMTcyQl1cIj57eyBkYkNvbmZpZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImNvcHlFbnZpcm9ubWVudCgpXCIgY2xhc3M9XCJjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNS4zMzMzMiAxMC42NjY3SDMuOTk5OTlDMy42NDYzNyAxMC42NjY3IDMuMzA3MjMgMTAuNTI2MyAzLjA1NzE4IDEwLjI3NjJDMi44MDcxMyAxMC4wMjYyIDIuNjY2NjYgOS42ODcwNCAyLjY2NjY2IDkuMzMzNDFWNC4wMDAwOEMyLjY2NjY2IDMuNjQ2NDYgMi44MDcxMyAzLjMwNzMyIDMuMDU3MTggMy4wNTcyN0MzLjMwNzIzIDIuODA3MjIgMy42NDYzNyAyLjY2Njc1IDMuOTk5OTkgMi42NjY3NUg5LjMzMzMyQzkuNjg2OTUgMi42NjY3NSAxMC4wMjYxIDIuODA3MjIgMTAuMjc2MSAzLjA1NzI3QzEwLjUyNjIgMy4zMDczMiAxMC42NjY3IDMuNjQ2NDYgMTAuNjY2NyA0LjAwMDA4VjUuMzMzNDFNNi42NjY2NiAxMy4zMzM0SDEyQzEyLjM1MzYgMTMuMzMzNCAxMi42OTI4IDEzLjE5MjkgMTIuOTQyOCAxMi45NDI5QzEzLjE5MjggMTIuNjkyOCAxMy4zMzMzIDEyLjM1MzcgMTMuMzMzMyAxMi4wMDAxVjYuNjY2NzVDMTMuMzMzMyA2LjMxMzEzIDEzLjE5MjggNS45NzM5OSAxMi45NDI4IDUuNzIzOTRDMTIuNjkyOCA1LjQ3Mzg5IDEyLjM1MzYgNS4zMzM0MSAxMiA1LjMzMzQxSDYuNjY2NjZDNi4zMTMwMyA1LjMzMzQxIDUuOTczOSA1LjQ3Mzg5IDUuNzIzODUgNS43MjM5NEM1LjQ3MzggNS45NzM5OSA1LjMzMzMyIDYuMzEzMTMgNS4zMzMzMiA2LjY2Njc1VjEyLjAwMDFDNS4zMzMzMiAxMi4zNTM3IDUuNDczOCAxMi42OTI4IDUuNzIzODUgMTIuOTQyOUM1Ljk3MzkgMTMuMTkyOSA2LjMxMzAzIDEzLjMzMzQgNi42NjY2NiAxMy4zMzM0WlwiIHN0cm9rZT1cIiM2MzYzNjNcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPCEtLSBDb3BpZWQgVG9vbHRpcCAtLT5cbiAgICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFbnZpcm9ubWVudENvcGllZFwiIFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yaWdodC0wIGNxYS10b3AtZnVsbCBjcWEtbXQtMSBjcWEtcHgtMiBjcWEtcHktMSBjcWEtYmctWyMwQjBCMEJdIGNxYS10ZXh0LXdoaXRlIGNxYS10ZXh0LVsxMHB4XSBjcWEtcm91bmRlZCBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLXotNTAgY3FhLXNoYWRvdy1sZ1wiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJhbmltYXRpb246IGZhZGVJbk91dCAwLjJzIGVhc2UtaW4tb3V0O1wiPlxuICAgICAgICAgICAgICAgIENvcGllZCFcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzQ1NTU2Q10gY3FhLW1iLTFcIj5UeXBlPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyMwRjE3MkJdXCI+e3sgZGJDb25maWcuZGJUeXBlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTEuNVwiICpuZ0lmPVwiY2FjaGVkUXVlcnlSZXN1bHRzPy5sZW5ndGggPiAwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMEIwQjBCXSBjcWEtbWItMlwiPlF1ZXJ5IEV4ZWN1dGlvbjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLXB4LTQgY3FhLXB5LTIgY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLVsxMHB4XVwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0UyRThGMDtcIj5cbiAgICAgICAgPGNxYS1kYi1xdWVyeS1leGVjdXRpb24taXRlbVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVyeUl0ZW0gb2YgY2FjaGVkUXVlcnlSZXN1bHRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5UXVlcnlLZXlcIlxuICAgICAgICAgIFtxdWVyeU51bWJlcl09XCJpICsgMVwiXG4gICAgICAgICAgW3F1ZXJ5S2V5XT1cInF1ZXJ5SXRlbS5rZXlcIlxuICAgICAgICAgIFtxdWVyeVJlc3VsdF09XCJxdWVyeUl0ZW0ucmVzdWx0XCJcbiAgICAgICAgICBbc3RhdHVzXT1cImdldFF1ZXJ5U3RhdHVzKHF1ZXJ5SXRlbS5rZXkpXCJcbiAgICAgICAgICBbdmFyaWFibGVOYW1lXT1cInF1ZXJ5SXRlbS5rZXlcIlxuICAgICAgICAgIFtvbkpzb25QYXRoQ29waWVkSGFuZGxlcl09XCJvbkpzb25QYXRoQ29waWVkSGFuZGxlclwiPlxuICAgICAgICA8L2NxYS1kYi1xdWVyeS1leGVjdXRpb24taXRlbT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBWZXJpZmljYXRpb24gU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZGJUZXN0UmVzdWx0Py5hc3NlcnRpb25SZXN1bHRzICYmIGRiVGVzdFJlc3VsdD8uYXNzZXJ0aW9uUmVzdWx0cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBCMEIwQl0gY3FhLW1iLTJcIj5WZXJpZmljYXRpb248L2Rpdj4gICAgICBcbiAgICAgIDwhLS0gVmVyaWZpY2F0aW9uIFRhYmxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTIgY3FhLW92ZXJmbG93LWhpZGRlblwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0UyRThGMDtcIj5cbiAgICAgICAgPCEtLSBTZWdtZW50IENvbnRyb2wgZm9yIEZpbHRlcnMgLS0+XG4gICAgICAgIDxjcWEtc2VnbWVudC1jb250cm9sXG4gICAgICAgICAgW3NlZ21lbnRzXT1cImZpbHRlclNlZ21lbnRzXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmVyaWZpY2F0aW9uRmlsdGVyXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L2NxYS1zZWdtZW50LWNvbnRyb2w+XG4gICAgICAgIDxjcWEtdGFibGUtdGVtcGxhdGVcbiAgICAgICAgICBbY29sdW1uc109XCJ2ZXJpZmljYXRpb25UYWJsZUNvbHVtbnNcIlxuICAgICAgICAgIFtkYXRhXT1cImdldFRhYmxlRGF0YSgpXCJcbiAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXG4gICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICBbaXNFbXB0eVN0YXRlXT1cImlzRW1wdHlUYWJsZVwiXG4gICAgICAgICAgW2VtcHR5U3RhdGVDb25maWddPVwiZW1wdHlTdGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgW3Nob3dTZWFyY2hCYXJdPVwiZmFsc2VcIlxuICAgICAgICAgIFtzaG93RmlsdGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd1NldHRpbmdzQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd0F1dG9SZWZyZXNoQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd090aGVyQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd0ZpbHRlclBhbmVsXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2VydmVyU2lkZVBhZ2luYXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLXRhYmxlLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlbGYgSGVhbCBBbmFseXNpcyAtLT5cbiAgICA8Y3FhLXNlbGYtaGVhbC1hbmFseXNpcyBcbiAgICAgICpuZ0lmPVwic2VsZkhlYWxBbmFseXNpc1wiIFxuICAgICAgW2lkXT1cInN0ZXA/LnRlc3RTdGVwSWRcIlxuICAgICAgW29yaWdpbmFsTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLm9yaWdpbmFsTG9jYXRvclwiXG4gICAgICBbaGVhbGVkTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxlZExvY2F0b3JcIlxuICAgICAgW2NvbmZpZGVuY2VdPVwic2VsZkhlYWxBbmFseXNpcy5jb25maWRlbmNlXCJcbiAgICAgIFtoZWFsTWV0aG9kXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbE1ldGhvZFwiXG4gICAgICBbaXNMb2FkaW5nQWNjZXB0XT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIgPyBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyKCkuaXNMb2FkaW5nQWNjZXB0Py5bc3RlcD8udGVzdFN0ZXBJZF0gOiBmYWxzZVwiXG4gICAgICBbaXNMb2FkaW5nTW9kaWZ5QWNjZXB0XT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIgPyBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyKCkuaXNMb2FkaW5nTW9kaWZ5QWNjZXB0Py5bc3RlcD8udGVzdFN0ZXBJZF0gOiBmYWxzZVwiXG4gICAgICAoYWN0aW9uKT1cIm9uU2VsZkhlYWxBY3Rpb24oJGV2ZW50KVwiPlxuICAgIDwvY3FhLXNlbGYtaGVhbC1hbmFseXNpcz5cblxuICAgIDwhLS0gVGltaW5nIEJyZWFrZG93biAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwidGltaW5nQnJlYWtkb3duXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLTUgY3FhLXB0LTQgY3FhLXB4LTQgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM5Q0EzQUZdXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxzcGFuPlRpbWluZyBicmVha2Rvd248L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtZGlhbG9nLW11dGVkIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgQXBwIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMzNzQxNTFdXCI+e3sgZm9ybWF0RHVyYXRpb24odGltaW5nQnJlYWtkb3duLmFwcCkgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEgMTFcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTS0zLjgxNDdlLTA2IDEwLjMyVi03LjE1MjU2ZS0wN0gwLjk1OTk5NlYxMC4zMkgtMy44MTQ3ZS0wNlpcIiBmaWxsPVwiI0U1RTdFQlwiLz48L3N2Zz48L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBUb29sIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMzNzQxNTFdXCI+e3sgZm9ybWF0RHVyYXRpb24odGltaW5nQnJlYWtkb3duLnRvb2wpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVmlldyBNb3JlIEZhaWxlZCBTdGVwIEJ1dHRvbiAtIHNob3duIHdoZW4gZXhwYW5kZWQgYW5kIGZhaWx1cmUgZGV0YWlscyBleGlzdCAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdNb3JlQnV0dG9uXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgICAgPGNxYS12aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uXG4gICAgICAgIFt0aW1pbmdCcmVha2Rvd25dPVwidGltaW5nQnJlYWtkb3duXCJcbiAgICAgICAgW3N1YlN0ZXBzXT1cImdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpXCJcbiAgICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgICAgW2lzRXhwYW5kZWRdPVwic2hvd0ZhaWxlZFN0ZXBEZXRhaWxzXCJcbiAgICAgICAgKHZpZXdNb3JlQ2xpY2spPVwib25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljaygkZXZlbnQpXCI+XG4gICAgICA8L2NxYS12aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBVcGRhdGVkIEZhaWxlZCBTdGVwIENvbXBvbmVudCAtIHNob3duIHdoZW4gYnV0dG9uIGlzIGNsaWNrZWQgLS0+XG4gICAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvbiAmJiBzaG93RmFpbGVkU3RlcERldGFpbHMgJiYgZmFpbHVyZURldGFpbHNcIiBjbGFzcz1cImNxYS1tdC0yIGNxYS1weC00XCI+XG4gICAgICA8Y3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXBcbiAgICAgICAgW3Rlc3RTdGVwUmVzdWx0SWRdPVwidGVzdFN0ZXBSZXN1bHRJZFwiXG4gICAgICAgIFt0aW1pbmdCcmVha2Rvd25dPVwidGltaW5nQnJlYWtkb3duXCJcbiAgICAgICAgW2V4cGFuZGVkXT1cInRydWVcIlxuICAgICAgICBbc3ViU3RlcHNdPVwiZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKClcIlxuICAgICAgICBbZmFpbHVyZURldGFpbHNdPVwiZmFpbHVyZURldGFpbHNcIlxuICAgICAgICBbcmVhc29uaW5nXT1cInJlYXNvbmluZ1wiXG4gICAgICAgIFtjb25maWRlbmNlXT1cImNvbmZpZGVuY2VcIlxuICAgICAgICBbaXNVcGxvYWRpbmdCYXNlbGluZV09XCJpc1VwbG9hZGluZ0Jhc2VsaW5lXCJcbiAgICAgICAgW2lzTWFraW5nQ3VycmVudEJhc2VsaW5lXT1cImlzTWFraW5nQ3VycmVudEJhc2VsaW5lXCJcbiAgICAgICAgW2lzTGl2ZV09XCJpc0xpdmVcIlxuICAgICAgICAobWFrZUN1cnJlbnRCYXNlbGluZSk9XCJvbk1ha2VDdXJyZW50QmFzZWxpbmUoJGV2ZW50KVwiXG4gICAgICAgICh1cGxvYWRCYXNlbGluZSk9XCJvblVwbG9hZEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgICAoYW5hbHl6ZSk9XCJvbkFuYWx5emUoKVwiXG4gICAgICAgICh2aWV3RnVsbExvZ3MpPVwib25WaWV3RnVsbExvZ3MoKVwiPlxuICAgICAgPC9jcWEtdXBkYXRlZC1mYWlsZWQtc3RlcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19