vcomply-workflow-engine 3.0.278 → 3.0.279

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 (32) hide show
  1. package/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -2
  2. package/esm2020/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +310 -123
  3. package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +128 -64
  4. package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +2 -2
  5. package/esm2020/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +2 -2
  6. package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +2 -2
  7. package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +2 -2
  8. package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +2 -2
  9. package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +2 -2
  10. package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +2 -2
  11. package/esm2020/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +26 -11
  12. package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +2 -2
  13. package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +2 -2
  14. package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +21 -8
  15. package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +2 -2
  16. package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +5 -3
  17. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +113 -23
  18. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +60 -21
  19. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +53 -43
  20. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +64 -25
  21. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +63 -20
  22. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +65 -23
  23. package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +2 -2
  24. package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +2 -2
  25. package/esm2020/lib/workflow-risk/workflow-risk.component.mjs +365 -131
  26. package/fesm2015/vcomply-workflow-engine.mjs +1304 -537
  27. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  28. package/fesm2020/vcomply-workflow-engine.mjs +1320 -541
  29. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  30. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +1 -1
  31. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -1
  32. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { cloneDeep } from 'lodash-es';
3
- import * as moment from 'moment';
3
+ import moment from 'moment/moment';
4
4
  import * as XLSX from 'xlsx';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "../workflow-services/add-risk.service";
@@ -769,4 +769,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
769
769
  type: Input,
770
770
  args: ['uploadedFile']
771
771
  }] } });
772
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5L2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFjN0IsTUFBTSxPQUFPLGtDQUFrQztJQTJEN0MsWUFDVSxXQUEyQixFQUMzQixxQkFBNEMsRUFDNUMsV0FBd0IsRUFDeEIsZ0JBQXNDLEVBQ3RDLFFBQXlCO1FBSnpCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUEvRHpCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxD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QTFDLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZFJpc2tTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYWRkLXJpc2suc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5QnVsa1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5cclxudHlwZSBBT0EgPSBhbnlbXVtdO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBmZWF0dXJlZmxhZyA6YW55XHJcbiAgdXJsID0ncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSdcclxuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0nJztcclxuICByZWNlbnRSZXNwb25zaWJpbGl0eVVybDogYW55ID0ge1wiYnlSZXNwb25zaWJpbGl0aWVzXCI6e1widHlwZVwiOltcInJlY2VudF9yZXNwb25zaWJpbGl0aWVzXCJdLFwic3ViVHlwZVwiOltcIkNDXCJdfSxcImJ5U3RhdHVzXCI6e1widHlwZVwiOltdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifTtcclxuXHJcbiAgQElucHV0KCd1cGxvYWRlZEZpbGUnKSBzZXQgdXBsb2FkZWRGaWxlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkOiBhbnkgPSB7XHJcbiAgICBoZWFkZXI6IFtdLFxyXG4gICAgcmVwb3J0czogW10sXHJcbiAgfVxyXG5cclxuICB0ZW1wbGF0ZUluZm86IGFueSA9IHtcclxuXHJcbiAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgcmNMaXN0OiBbXSxcclxuICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxyXG4gICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICBtZW1iZXJJZDogJydcclxuICB9XHJcbiAgaXNMb2FkZXIgPSBmYWxzZTtcclxuICBzaG93Q2F0ZWdvcnlMaXN0ID0gZmFsc2U7XHJcbiAgdGVtcGxhdGVEb3dubG9hZGVkID0gZmFsc2U7XHJcbiAgZG93bmxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICBmaWxlTmFtZTogYW55O1xyXG4gIGRhdGE6IGFueTtcclxuICBzaG93RXhjZWwgPSBmYWxzZTtcclxuICB1cGxvYWRlZEZpbGVzOiBhbnkgPSBbXTtcclxuICBmaWxlUmVzcG9uc2U6IGFueSA9IFtdO1xyXG4gIGZpbGVWYWx1ZTogYW55O1xyXG4gIG1lbWJlcklkID0gMDtcclxuICBvcmdhbml6YXRpb25JZCA9IDA7XHJcbiAgZXJyb3JNZXNzYWdlID0gXCIgaW52YWxpZCBmaWxlIGVycm9yXCJcclxuICBkb3dubG9hZFN0YXR1czogc3RyaW5nID0gJ05PVF9ET1dOTE9BRElORyc7XHJcbiAgZG93bmxvYWRQZXJjZW50ID0gMDtcclxuICBkZWZhdWx0T3duZXIgPSAnJ1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhIFdlJ3JlIHByb2Nlc3NpbmcgeW91ciByZXF1ZXN0IGFuZCB5b3Ugd2lsbCBiZSBub3RpZmllZCB2aWEgZW1haWwgdXBvbiBjb21wbGV0aW9uLmA7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHsgYnV0dG9uVGV4dDogJ0VudHJ1c3QgTW9yZSBSZXNwb25zaWJpbGl0aWVzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgICB7IGJ1dHRvblRleHQ6ICh0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZykgPyAnVmlldyBSZXNwb25zaWJpbGl0aWVzIEluIFF1ZXVlJyA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3JyB9LFxyXG4gIF07XHJcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcclxuICByaXNrQ2xhc3NFbmFibGVkOiBhbnk7XHJcbiAgdXNlckluZm8gITogYW55O1xyXG4gIHJlc3BvbnNpYmlsaXR5RGF0YSAhOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJpc2tTZXJ2aWNlOiBBZGRSaXNrU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5QnVsa1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gY29uc3QgdGVzdCA9IHRoaXMuY29tcGFyZVdpdGhDdXJyZW50RGF0ZSgxLCBcIkp1bHknMjFcIikgO1xyXG4gICAgLy8gZGVidWdnZXJcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgICB0aGlzLmRlZmF1bHRPd25lciA9ICh0aGlzLnVzZXJJbmZvKSA/IHRoaXMudXNlckluZm8ubmFtZSArICcgKCcgKyB0aGlzLnVzZXJJbmZvLmVtYWlsICsgJyknIDogJyc7XHJcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmlza0NsYXNzRW5hYmxlZCA9IHJlcy5lbmFibGVfcmlza2NsYXNzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJCcm93c2VGaWxlKCkge1xyXG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcclxuICAgIGlmIChnZXRGaWxlKSB7XHJcbiAgICAgIGdldEZpbGUuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyA9IHJlcy5ub3RpZmljYXRpb25fcGVuZGluZ19mbGFnO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHVwbG9hZGVkRmlsZShldmVudDogYW55KSB7XHJcbiAgICAvLyB0aGlzLnRlc3RhcnJheT1bXTtcclxuICAgIHRyeSB7XHJcblxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICAgICAgbWVtYmVySWQ6ICcnXHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xyXG4gICAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XHJcbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcclxuICAgICAgICByZWZlcmVuY2Uuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2goZXZlbnQudGFyZ2V0LmZpbGVzKTtcclxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGN1cmx5XHJcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3NuYW1lMTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1sxXTtcclxuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lMV07XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3cywge1xyXG4gICAgICAgICAgaGVhZGVyOiAxLCByYXc6IGZhbHNlLFxyXG4gICAgICAgIH0pIGFzIEFPQTtcclxuXHJcbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcclxuICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArICcgUkVUUlknO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIgPSBjbG9uZURlZXAodGhpcy5kYXRhWzBdLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlci5zcGxpY2UodGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyLmxlbmd0aCAtIDEsIDEpXHJcblxyXG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5zbGljZSgyKTtcclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzBdICE9PSAnRW50ZXIgUmVzcG9uc2liaWxpdHkgTmFtZSonKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICsgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsyNV1cclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICsgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbMl0gJiYgZWxlbWVudFsyXSE9JyAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMl0sXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGVsZW1lbnRbM11cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3QucHVzaChjYXRlZ29yeSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudFs5XSAmJiBlbGVtZW50WzldIT0nICcpIHtcclxuICAgICAgICAgICAgY29uc3QgcmMgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFs5XSxcclxuICAgICAgICAgICAgICByY19pZDogZWxlbWVudFsxMF0sXHJcbiAgICAgICAgICAgICAgcGFyZW50SWRzOiBKU09OLnBhcnNlKGVsZW1lbnRbMTNdKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50WzExXSAmJiBlbGVtZW50WzExXSE9JyAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0ge1xyXG4gICAgICAgICAgICAgIG5hbWVBbmRFbWFpbDogZWxlbWVudFsxMV0sXHJcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFsxMV0uc3BsaXQoJyAoJylbMF0sXHJcbiAgICAgICAgICAgICAgZW1haWw6IGVsZW1lbnRbMTFdLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJyksXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVfaWQ6IGVsZW1lbnRbMTJdLFxyXG4gICAgICAgICAgICAgIG15X21lbWJlcl9pZDogZWxlbWVudFsxNl1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LnB1c2goYXNzaWduZWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbMTRdICYmIGVsZW1lbnRbMTRdIT0nICcpIHtcclxuICAgICAgICAgICAgY29uc3QgYXNzaWdub3IgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzE0XSxcclxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50WzE0XS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgICAgICBlbWFpbDogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcclxuICAgICAgICAgICAgICBtZW1iZXJfaWQ6IGVsZW1lbnRbMTVdLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QucHVzaChhc3NpZ25vcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmNoZWNrRW1wdHlGaWxlKCk7XHJcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ1lvdSBoYXZlIHVwbG9hZGVkIGEgYmxhbmsgdGVtcGxhdGUuIFBsZWFzZSBhZGQgZGV0YWlscyBmb3IgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQoKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5RGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDApO1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5RGF0YS5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbGlkRGF0ZTtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkRmllbGRzID0gdGhpcy5jaGVja1ZhbGlkaXR5KHJlcG9ydCk7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZFVzZXIgPSB0aGlzLnJldHVybklkcyhyZXBvcnRbMl0sICdlbnRydXN0ZWRfdG8nKSA/IHRydWUgOiBmYWxzZVxyXG4gICAgICAgICAgbGV0IG9iajogYW55O1xyXG4gICAgICAgICAgaWYodGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIT09J1NlbGVjdCBhIFByb2dyYW0nKXtcclxuICAgICAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcclxuICAgICAgICAgICAgb2JqPSB7XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSA/PyAnJyxcclxuICAgICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzJdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbM10gPz8gJycsXHJcbiAgICAgICAgICAgICAgZGF5OiByZXBvcnRbNF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgbW9udGg6IHJlcG9ydFs1XSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eVdpbmRvdzogcmVwb3J0WzZdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbN10gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFs4XSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzldID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMTBdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxMV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxMl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxM10gPz8gJycsXHJcbiAgICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNF0/LnRvU3RyaW5nKCkgPz8gJycsXHJcbiAgICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTVdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGFsd2F5c05vdGlmeTogcmVwb3J0WzE2XSA/PyAnJyxcclxuICAgICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxN10gPz8gJycsXHJcbiAgICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMTldPy50b1N0cmluZygpID8/ICcnLFxyXG5cclxuICAgICAgICAgICAgICBpc1ZhbGlkRHVlRGF0ZTogdmFsaWREYXRlLFxyXG4gICAgICAgICAgICAgIGlzUGFzdERhdGU6IHRoaXMuaXNQYXN0RGF0ZShyZXBvcnRbNF0sIHJlcG9ydFs1XSksXHJcbiAgICAgICAgICAgICAgY2hlY2tWYWxpZGl0eTogdmFsaWRGaWVsZHMsXHJcbiAgICAgICAgICAgICAgaXNWYWxpZDogKHZhbGlkRGF0ZSkgJiYgKHZhbGlkRmllbGRzKSAmJiAodmFsaWRVc2VyKSxcclxuICAgICAgICAgICAgICBpc1ZhbGlkVXNlcjogKHZhbGlkVXNlcilcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xyXG4gICAgICAgICAgICBvYmo9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0gPz8gJycsXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0gPz8gJycsXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0gPz8gJycsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IHJlcG9ydFszXSA/PyAnJyxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbNF0gPz8gJycsXHJcbiAgICAgICAgICAgIGRheTogcmVwb3J0WzVdID8/ICcnLFxyXG4gICAgICAgICAgICBtb250aDogcmVwb3J0WzZdID8/ICcnLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eVdpbmRvdzogcmVwb3J0WzddID8/ICcnLFxyXG4gICAgICAgICAgICBmYWlsZWRBZnRlcjogcmVwb3J0WzhdID8/ICcnLFxyXG4gICAgICAgICAgICByZXBvcnRDbGFzczogcmVwb3J0WzldID8/ICcnLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzEwXSA/PyAnJyxcclxuICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxMV0gPz8gJycsXHJcbiAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxMl0gPz8gJycsXHJcbiAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMTNdID8/ICcnLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE0XSA/PyAnJyxcclxuICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNV0/LnRvU3RyaW5nKCkgPz8gJycsXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE2XSA/PyAnJyxcclxuICAgICAgICAgICAgYWx3YXlzTm90aWZ5OiByZXBvcnRbMTddID8/ICcnLFxyXG4gICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxOF0gPz8gJycsXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTldID8/ICcnLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsyMF0/LnRvU3RyaW5nKCkgPz8gJycsXHJcblxyXG4gICAgICAgICAgICBpc1ZhbGlkRHVlRGF0ZTogdmFsaWREYXRlLFxyXG4gICAgICAgICAgICBpc1Bhc3REYXRlOiB0aGlzLmlzUGFzdERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pLFxyXG4gICAgICAgICAgICBjaGVja1ZhbGlkaXR5OiB2YWxpZEZpZWxkcyxcclxuICAgICAgICAgICAgaXNWYWxpZDogKHZhbGlkRGF0ZSkgJiYgKHZhbGlkRmllbGRzKSAmJiAodmFsaWRVc2VyKSxcclxuICAgICAgICAgICAgaXNWYWxpZFVzZXI6ICh2YWxpZFVzZXIpXHJcbiAgICAgICAgICB9O31cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnJlcG9ydHMucHVzaChvYmopO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnJlcG9ydHMpXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy50ZXN0YXJyYXkpXHJcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maWxlVmFsdWUgPSAnJztcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2hlY2tFbXB0eUZpbGUoKSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XHJcbiAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA8IDEpIHtcclxuICAgICAgaXNFbXB0eSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNFbXB0eTtcclxuICB9XHJcblxyXG4gIC8vIHRlc3RhcnJheTphbnlbXT1bXVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KHJlcG9ydDogYW55KSB7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgaWYgKHJlcG9ydFswXSkge1xyXG4gICAgICB2YXIgdHJpbW1lZE5hbWUgPSByZXBvcnRbMF0udG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG4gICAgICB0cmltbWVkTmFtZSA9IHRyaW1tZWROYW1lLnJlcGxhY2UoLyAgKy9nLCAnICcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIGluZGV4ICAgICAgICAgICBrZXkgZm9yICAgICAgICAgICAgICAgY29uZGl0aW9uXHJcbiAgICAgKlxyXG4gICAgICogIHJlcG9ydFsxXSAgICAgICBPbiBCZWhhbGYgb2YgdXNlclxyXG4gICAgICogIHJlcG9ydFsxMV0gICAgICBSZXZpZXdlciAgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxMF0gICAgICBSZXZpZXdlciAgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxNl0gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxOF0gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5XHJcbiAgICAgKiAgcmVwb3J0WzE4XSAgICAgIE5vdGlmeSBPbiBGYWlsdXJlXHJcbiAgICAgKiAgcmVwb3J0WzJdICAgICAgIEFzc2lnbmVlXHJcbiAgICAgKiAgcmVwb3J0WzRdICAgICAgIGZyZXF1ZW5jeSAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXHJcbiAgICAgKiAgcmVwb3J0WzNdICAgICAgIGZyZXF1ZW5jeSAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXHJcbiAgICAgKiAgdHJpbW1lZE5hbWUgICAgIFJlcG9ydCBuYW1lXHJcbiAgICAgKiAgZGVmYXVsdE93bmVyICAgIERlZmF1bHQgQXNzaWdub3JcclxuICAgICAqL1xyXG4gICAgIGNvbnN0IGZyZXF1ZW5jeT0gKHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpPT0nc2VsZWN0IGEgcHJvZ3JhbScpID8gcmVwb3J0WzRdOnJlcG9ydFszXSA7XHJcbiAgICAgY29uc3QgcmV2aWV3ZXIgPSh0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKT09J3NlbGVjdCBhIHByb2dyYW0nKSA/IHJlcG9ydFsxMV06cmVwb3J0WzEwXSA7XHJcbiAgICAgY29uc3QgTm90aWZ5QWx3YXlzID0odGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCk9PSdzZWxlY3QgYSBwcm9ncmFtJykgPyByZXBvcnRbMTddOnJlcG9ydFsxNl07XHJcbiAgICAgY29uc3QgTm90aWZ5T25GYWlsdXJlID0gKHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpPT0nc2VsZWN0IGEgcHJvZ3JhbScpID8gcmVwb3J0WzE4XTpyZXBvcnRbMTddO1xyXG5cclxuICAgICBpZiAoKCFmcmVxdWVuY3kpIHx8XHJcbiAgICAgICAoIXRyaW1tZWROYW1lKSB8fCBcclxuICAgICAgIChyZXBvcnRbMV0gJiYgKCAocmVwb3J0WzFdID09IE5vdGlmeUFsd2F5cykgfHwgKHJlcG9ydFsxXSA9PSBOb3RpZnlPbkZhaWx1cmUpKSkgfHwgXHJcbiAgICAgICAoKCFyZXBvcnRbMV0pICYmICggKHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeUFsd2F5cykgfHwgKHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeU9uRmFpbHVyZSkpKSB8fCBcclxuICAgICAgIChyZXBvcnRbMl0gJiYgKChyZXBvcnRbMl0gPT0gcmV2aWV3ZXIpIHx8IChyZXBvcnRbMl0gPT0gTm90aWZ5QWx3YXlzKSB8fCAocmVwb3J0WzJdID09IE5vdGlmeU9uRmFpbHVyZSkpKSB8fCBcclxuICAgICAgICgoIXJlcG9ydFsyXSkgJiYgKCh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlBbHdheXMpIHx8ICh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlPbkZhaWx1cmUpKSkgfHwgXHJcbiAgICAgICAocmV2aWV3ZXIgJiYgKChyZXZpZXdlciA9PSBOb3RpZnlBbHdheXMpIHx8IChyZXZpZXdlciA9PSBOb3RpZnlPbkZhaWx1cmUpKSkgfHwgXHJcbiAgICAgICAoIXJlcG9ydFsyXSkpIHsgICAgICAgICAgXHJcbiAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICB9IGVsc2UgeyByZXR1cm4gdHJ1ZSB9XHJcbiAgfVxyXG4gIGNvbXBhcmVXaXRoQ3VycmVudERhdGUoZGF5OiBhbnksIG1vbnRoOiBhbnkpIHtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbXHJcbiAgICAgIHsgdmFsdWU6IDEsIG1vbnRoOiAnSmFuJyB9LFxyXG4gICAgICB7IHZhbHVlOiAyLCBtb250aDogJ0ZlYicgfSxcclxuICAgICAgeyB2YWx1ZTogMywgbW9udGg6ICdNYXInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDQsIG1vbnRoOiAnQXByJyB9LFxyXG4gICAgICB7IHZhbHVlOiA1LCBtb250aDogJ01heScgfSxcclxuICAgICAgeyB2YWx1ZTogNiwgbW9udGg6ICdKdW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDcsIG1vbnRoOiAnSnVsJyB9LFxyXG4gICAgICB7IHZhbHVlOiA4LCBtb250aDogJ0F1ZycgfSxcclxuICAgICAgeyB2YWx1ZTogOSwgbW9udGg6ICdTZXAnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEwLCBtb250aDogJ09jdCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTEsIG1vbnRoOiAnTm92JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMiwgbW9udGg6ICdEZWMnIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmICghKGRheSB8fCBtb250aCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBtb250aEFuZFllYXIgPSBtb250aC5zcGxpdChcIidcIik7XHJcblxyXG4gICAgICBjb25zdCBzdGFydERhdGUgPSBtb21lbnQoZGF5ICsgJy0nICsgbW9udGhBbmRZZWFyWzBdICsgJy0nICsgMjAgKyBtb250aEFuZFllYXJbMV0gKyAnIDAwOjAwOjAwJywgJ0RELU1NTU0tWVlZWSBISDptbTpzcycpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpO1xyXG4gICAgICBpZiAoc3RhcnREYXRlID09IFwiSW52YWxpZCBkYXRlXCIpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgfSwgNSk7XHJcbiAgICAgIGNvbnN0IGRhdGVfdmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgZGF0ZV92YWx1ZS5zZXRNb250aCh0eXBlb2YgbW9udGggIT09ICdudW1iZXInID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdPy52YWx1ZSAtIDEgOiBtb250aCk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoTnVtYmVyKDIwICsgbW9udGguc3BsaXQoXCInXCIpWzFdKSk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShOdW1iZXIoZGF5KSk7XHJcbiAgICAgIC8vIGNvbnN0IHJlcG9ydERhdGUgPSBuZXcgRGF0ZShkYXkgKyBtb250aC5zcGxpdChcIidcIikpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygoY3VycmVudERhdGUudG9KU09OKCkuc3BsaXQoJ1QnKVswXSkrXCImJlwiKyhkYXRlX3ZhbHVlLnRvSlNPTigpLnNwbGl0KCdUJylbMF0pKVxyXG4gICAgICAvLyBkZWJ1Z2dlclxyXG4gICAgICBpZiAoKChjdXJyZW50RGF0ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdKSAhPSAoZGF0ZV92YWx1ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdKSkgJiYgKGN1cnJlbnREYXRlID4gZGF0ZV92YWx1ZSkpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBpc1Bhc3REYXRlKGRheTogYW55LCBtb250aDogYW55KSB7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKCEoZGF5ICYmIG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zdCByZXBvcnREYXRlID0gbmV3IERhdGUoZGF5ICsgbW9udGguc3BsaXQoXCInXCIpKTtcclxuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0TW9udGgodHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJyA/IG1vbnRoTmFtZXMuZmlsdGVyKCh4KSA9PiB4Lm1vbnRoID09PSBtb250aD8uc3Vic3RyaW5nKDAsIDMpKVswXT8udmFsdWUgLSAxIDogbW9udGgpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKE51bWJlcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSkpO1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldERhdGUoTnVtYmVyKGRheSkpO1xyXG4gICAgICBpZiAoY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRUZW1wbGF0ZSgpIHtcclxuICAgIHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURJTkcnO1xyXG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xyXG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgRW50cnVzdCBSZXNwb25zaWJpbGl0aWVzLSR7ZG93bmxvYWREYXRlWzJdfS0ke2Rvd25sb2FkRGF0ZVsxXX0tJHtkb3dubG9hZERhdGVbM119Lnhsc3hgO1xyXG5cclxuICAgIHRoaXMucmlza1NlcnZpY2UuZG93bmxvYWRSZXNwb25zaWJpbGl0eVRlbXBsYXRlKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDEwMCAqIChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKGRhdGEuYm9keSwgJ2FwcGxpY2F0aW9uL3hsc3gnLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICB9LCAxNTAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ0RPV05MT0FERUQnO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKCkge1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0gW107XHJcbiAgICBjb25zdCBmcmVxdWVuY3lUeXBlQXJyYXkgPSBbJzEnLCAnMicsICczJywgJzQnLCAnNycsICcwJ107XHJcbiAgICBjb25zdCBkZWZhdWx0V2luZG93ID0gWzAsIDIsIDcsIDMwLCA3LCAxNV07XHJcbiAgICBjb25zdCBkZWZhdWx0RmFpbGVkRGF5ID0gWzEsIDIsIDUsIDUsIDUsIDVdO1xyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnJlcG9ydHMuZm9yRWFjaCgocmVwb3J0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcG9ydC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgaWYocmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPT09IG51bGwpe1xyXG4gICAgICAgICAgcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnkgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmNEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhyZXBvcnQucmVzcG9uc2liaWxpdHlDZW50ZXIsICdyY19pZCcpO1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0LnJldmlld2VyLCAncmV2aWV3ZXInKTtcclxuICAgICAgICBjb25zdCBhc3NpZ25vckRldGFpbHM6IGFueSA9IChyZXBvcnQuYXNzaWdub3IpID8gdGhpcy5yZXR1cm5JZHMocmVwb3J0LmFzc2lnbm9yLCAnYXNzaWdub3InKSA6ICcnO1xyXG4gICAgICAgIGNvbnN0IGNjRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0LmFsd2F5c05vdGlmeSwgJ2NjJyk7XHJcbiAgICAgICAgY29uc3QgY2NGYWlsdXJlRGV0YWlsczogYW55ID0gdGhpcy5yZXR1cm5JZHMocmVwb3J0Lm5vdGlmeU9uRmFpbHVyZSwgJ2NjRmFpbHVyZScpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5TmFtZSA9IChyZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeS5pbmNsdWRlcygnW1dJVEhJTl0nKSkgPyByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeS5zcGxpdCgnIFsnKVswXSA6IHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5XHJcbiAgICAgICAgY29uc3QgZnJlcXVlbmN5VmFsdWUgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwocmVwb3J0LmZyZXF1ZW5jeSwgcmVwb3J0LmRheSwgcmVwb3J0Lm1vbnRoKTtcclxuICAgICAgICBjb25zdCBkYXRlQW5kTW9udGggPSByZXBvcnQubW9udGguc3BsaXQoXCInXCIpO1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChyZXBvcnQuZGF5ICsgJy0nICsgZGF0ZUFuZE1vbnRoWzBdICsgJy0nICsgMjAgKyBkYXRlQW5kTW9udGhbMV0gKyAnIDAwOjAwOjAwJywgJ0RELU1NTU0tWVlZWSBISDptbTpzcycpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpO1xyXG5cclxuICAgICAgICBsZXQgY29tcGxldGVEYXlzO1xyXG4gICAgICAgIGxldCBub3RDb21wbGV0ZURheXNcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lUeXBlID0gZnJlcXVlbmN5VmFsdWUuc3BsaXQoJ34nKVswXTtcclxuICAgICAgICBpZiAocmVwb3J0LnJlc3BvbnNpYmlsaXR5V2luZG93ICE9PSAnJykge1xyXG4gICAgICAgICAgY29tcGxldGVEYXlzID0gcmVwb3J0LnJlc3BvbnNpYmlsaXR5V2luZG93O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5VHlwZUFycmF5LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleE9mQXJyYXkgPSBmcmVxdWVuY3lUeXBlQXJyYXkuaW5kZXhPZihmcmVxdWVuY3lUeXBlKTtcclxuICAgICAgICAgIGNvbXBsZXRlRGF5cyA9IGRlZmF1bHRXaW5kb3dbaW5kZXhPZkFycmF5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcG9ydC5mYWlsZWRBZnRlciAhPT0gJycpIHtcclxuICAgICAgICAgIG5vdENvbXBsZXRlRGF5cyA9IHJlcG9ydC5mYWlsZWRBZnRlcjtcclxuICAgICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeVR5cGVBcnJheS5pbmNsdWRlcyhmcmVxdWVuY3lUeXBlKSkge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXhPZkFycmF5ID0gZnJlcXVlbmN5VHlwZUFycmF5LmluZGV4T2YoZnJlcXVlbmN5VHlwZSk7XHJcbiAgICAgICAgICBub3RDb21wbGV0ZURheXMgPSBkZWZhdWx0RmFpbGVkRGF5W2luZGV4T2ZBcnJheV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICAgIHVzZXJJZDogdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQsXHJcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXHJcbiAgICAgICAgICBtZW1iZXJfaWQ6IChhc3NpZ25vckRldGFpbHMpID8gYXNzaWdub3JEZXRhaWxzLm1lbWJlcklkIDogdGhpcy5tZW1iZXJJZCxcclxuICAgICAgICAgIG1lbWJlcl9uYW1lOiAoYXNzaWdub3JEZXRhaWxzKSA/ICgocmVwb3J0LmFzc2lnbm9yKSA/IHJlcG9ydC5hc3NpZ25vci5zcGxpdCgnICgnKVswXSA6ICcnKSA6ICgodGhpcy5kZWZhdWx0T3duZXIpID8gdGhpcy5kZWZhdWx0T3duZXIuc3BsaXQoJyAoJylbMF0gOiAnJyksXHJcbiAgICAgICAgICBtZW1iZXJfZW1haWw6IChhc3NpZ25vckRldGFpbHMpID8gKChyZXBvcnQuYXNzaWdub3IpID8gcmVwb3J0LmFzc2lnbm9yLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJykgOiAnJykgOiAoKHRoaXMuZGVmYXVsdE93bmVyKSA/IHRoaXMuZGVmYXVsdE93bmVyLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJykgOiAnJyksXHJcbiAgICAgICAgICBjcmVhdGVkX2J5OiAoYXNzaWdub3JEZXRhaWxzKSA/IHRoaXMubWVtYmVySWQgOiAwLFxyXG4gICAgICAgICAgcmVwb3J0X25hbWU6IHJlcG9ydC5yZXNwb25zaWJpbGl0eU5hbWUgPz8gJycsXHJcbiAgICAgICAgICBlbnRydXN0ZWRfdG86IHJlcG9ydC5hc3NpZ25lZS5zcGxpdCgnICgnKVswXSA/PyAnJyxcclxuICAgICAgICAgIGVudHJ1c3RlZF90b19pZDogdGhpcy5yZXR1cm5JZHMocmVwb3J0LmFzc2lnbmVlLCAnZW50cnVzdGVkX3RvJyksXHJcbiAgICAgICAgICBlbWFpbF9hZGRyZXNzOiByZXBvcnQuYXNzaWduZWUuc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSA/PyAnJyxcclxuICAgICAgICAgIGNhdGVnb3J5X25hbWU6IGNhdGVnb3J5TmFtZSxcclxuICAgICAgICAgIGNhdGVnb3J5X25hbWVfd2l0aF90cmVlOiAnJyxcclxuICAgICAgICAgIGNhdGVnb3J5X2lkOiB0aGlzLnJldHVybklkcyhyZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeSwgJ2NhdGVnb3J5X2lkJyksXHJcbiAgICAgICAgICByY19uYW1lOiByY0RldGFpbHMgPyByY0RldGFpbHMubmFtZSA6ICcnLFxyXG4gICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5yY0lkIDogMCxcclxuICAgICAgICAgIGVudGl0eV90cmVlOiAocmNEZXRhaWxzICYmIHJjRGV0YWlscy5yY0lkICkgPyBbe1xyXG4gICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByY0RldGFpbHMgPyByY0RldGFpbHMucGFyZW50SWRzIDogW10sXHJcbiAgICAgICAgICAgIHJjX2lkOiByY0RldGFpbHMgPyByY0RldGFpbHMucmNJZCA6IDBcclxuICAgICAgICAgIH1dOltdLFxyXG4gICAgICAgICAgZnJlcXVlbmN5X2hhbmRsZXI6IGZyZXF1ZW5jeVZhbHVlLFxyXG4gICAgICAgICAgY29tcGxpYW5jZV90eXBlOiBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdLFxyXG4gICAgICAgICAgZnJlcXVlbmN5X2Rlc2NyaXB0aW9uOiByZXBvcnQuZnJlcXVlbmN5LFxyXG4gICAgICAgICAgc3RhcnRfZGF0ZTogKHJlcG9ydC5kYXkpID8gc3RhcnREYXRlIDogY3VycmVudERhdGUgKyAnIDAwOjAwOjAwJyxcclxuICAgICAgICAgIHJpc2tfY2xhc3M6IHJlcG9ydC5yZXBvcnRDbGFzcyA/PyAnJyxcclxuICAgICAgICAgIHJpc2tfY2xhc3NJZDogKHJlcG9ydC5yZXBvcnRDbGFzcykgPyB0aGlzLnJldHVybklkcyhyZXBvcnQucmVwb3J0Q2xhc3MsICdyaXNrX2NsYXNzJykgOiAoKHRoaXMucmlza0NsYXNzRW5hYmxlZCkgPyAxIDogMiksXHJcbiAgICAgICAgICBkb2NfdXRjOiAwLFxyXG4gICAgICAgICAgY29tbWVudDogcmVwb3J0Lm5vdGVzID8/ICcnLFxyXG4gICAgICAgICAgY2NfbWFpbDogY2NEZXRhaWxzID8gY2NEZXRhaWxzLmVtYWlsIDogJycsXHJcbiAgICAgICAgICBjY19tYWlsX2lkOiBjY0RldGFpbHMgPyBjY0RldGFpbHMuZW1wbG95ZWVJZCA6ICcnLFxyXG4gICAgICAgICAgY2NfZmFpbGVkX21haWw6IGNjRmFpbHVyZURldGFpbHMgPyBjY0ZhaWx1cmVEZXRhaWxzLmVtYWlsIDogJycsXHJcbiAgICAgICAgICBjY19mYWlsdXJlX2lkOiBjY0ZhaWx1cmVEZXRhaWxzID8gY2NGYWlsdXJlRGV0YWlscy5lbXBsb3llZUlkIDogMCxcclxuICAgICAgICAgIHNlbmRfcmVtaW5kZXI6IFwiXCIsXHJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eVdpbmRvdzogKGZyZXF1ZW5jeVR5cGUgPT09ICcxJykgPyAwIDogY29tcGxldGVEYXlzLFxyXG4gICAgICAgICAgZmFpbGVkX2FmdGVyOiBub3RDb21wbGV0ZURheXMsXHJcbiAgICAgICAgICBleGNlbF9zaGVldF9uYW1lOiBcIlwiLFxyXG4gICAgICAgICAgcmVwb3J0X3VwbG9hZF9mbGFnOiAocmVwb3J0LmRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZCA9PT0gJ1llcycpID8gMSA6IDAsXHJcbiAgICAgICAgICByZXBvcnRfaWQ6IDAsXHJcbiAgICAgICAgICBpc19hc3NpZ25lZF9mbGFnOiAwLFxyXG4gICAgICAgICAgcHJpdmF0ZV9saWJyYXJ5X2lkOiAwLFxyXG4gICAgICAgICAga2V5Y29tcGxpYW5jZTogKHJlcG9ydC5rZXlSZXNwb25zaWJpbGl0eSA9PT0gJ1llcycpID8gJ1llcycgOiAnTm8nLFxyXG4gICAgICAgICAga2V5X2NvbXBsaWFuY2U6IChyZXBvcnQua2V5UmVzcG9uc2liaWxpdHkgPT09ICdZZXMnKSA/IDEgOiAwLFxyXG4gICAgICAgICAgcmV2aWV3ZXJJZDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzLmVtcGxveWVlSWQgOiAwLFxyXG4gICAgICAgICAgcmV2aWV3ZXJfYXJyOiAoIHJldmlld2VyRGV0YWlscyAmJiByZXZpZXdlckRldGFpbHMuZW1wbG95ZWVJZCApPyB7XHJcbiAgICAgICAgICAgIGxldmVsMToge1xyXG4gICAgICAgICAgICAgIHJldmlld2VyczogW3tcclxuICAgICAgICAgICAgICAgIG1lbWJlcl9pZDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzLmVtcGxveWVlSWQgOiAwLFxyXG4gICAgICAgICAgICAgICAgcmV2aWV3ZXJfYWNjZXB0OiAwXHJcbiAgICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgICAgdHlwZTogXCJTRVFVRU5USUFMXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTp7fVxyXG4gICAgICAgICAgLFxyXG4gICAgICAgICAgcmV2aWV3ZXJXaW5kb3c6IHJlcG9ydC5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluID09PSAnJyA/IDIgOiByZXBvcnQucmV2aWV3VG9CZUNvbXBsZXRlZFdpdGhpbixcclxuICAgICAgICAgIHJldmlld2VyRmFpbHVyZTogcmVwb3J0LnJldmlld1dpbGxCZUZhaWxlZEFmdGVyID09PSAnJyA/IDIgOiByZXBvcnQucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIsXHJcbiAgICAgICAgICByZXZpZXdlcl9lbWFpbDogcmV2aWV3ZXJEZXRhaWxzID8gcmV2aWV3ZXJEZXRhaWxzLmVtYWlsIDogJycsXHJcbiAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5ID8gcmVwb3J0LmZvcm1hdEZvclJlc3BvbnNpYmlsaXR5IDogJycsXHJcbiAgICAgICAgICBkb2N1bWVudGFyeUV2aWRlbmNlOiByZXBvcnQubm90ZXMgPz8gJycsXHJcbiAgICAgICAgICBpc2RvY3VtZW50YXJ5RXZpZGVuY2U6IChyZXBvcnQuZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkID09PSAnWWVzJykgPyAxIDogMCxcclxuICAgICAgICAgIG9iamVjdGl2ZTogcmVwb3J0Lm9iamVjdGl2ZSA/PyAnJyxcclxuICAgICAgICAgIGV4Y2VsX3NoZWV0X2luZm86IHRoaXMuZmlsZVJlc3BvbnNlLFxyXG4gICAgICAgICAgc2hvd0xpc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgY3VzdG9tX3RhZ3M6ICdbXScsXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBwYXlsb2FkLnB1c2gob2JqKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmFkZEJ1bGtSZXNwb25zaWJpbGl0eShwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0gcmVzO1xyXG5cclxuICAgIH0sXHJcbiAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLCAnYWxlcnQnKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICByZXR1cm5JZHMoaXRlbTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSAncmNfaWQnOlxyXG4gICAgICAgIGxldCByY09iaiA9IHsgbmFtZTogJycsIHJjSWQ6IDAsIHBhcmVudElkczogW10gfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5yY0xpc3QuZm9yRWFjaCgocmNfZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5uYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgbGV0IG5hbWU7XHJcbiAgICAgICAgICAgIGlmIChyY19lbGVtZW50Lm5hbWUuaW5jbHVkZXMoJ1tXSVRISU5dJykpIHtcclxuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lLnNwbGl0KCcgW1dJVEhJTl0gJylbMF1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBuYW1lID0gcmNfZWxlbWVudC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJjT2JqID0geyBuYW1lLCByY0lkOiByY19lbGVtZW50LnJjX2lkLCBwYXJlbnRJZHM6IHJjX2VsZW1lbnQucGFyZW50SWRzIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJjT2JqXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcclxuICAgICAgICBsZXQgcmV2aWV3ZXJPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKHJldmlld2VyRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmV2aWV3ZXJFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIHJldmlld2VyT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IHJldmlld2VyRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtcGxveWVlSWQ6IHJldmlld2VyRWxlbWVudC5teV9tZW1iZXJfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IHJldmlld2VyRWxlbWVudC5lbWFpbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJldmlld2VyT2JqO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYXNzaWdub3InOlxyXG4gICAgICAgIGxldCBhc3NpZ25vck9iaiA9IHsgbmFtZTogJycsIG1lbWJlcklkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25vcnNMaXN0LmZvckVhY2goKGFzc2lnbm9yRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYXNzaWdub3JFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGFzc2lnbm9yT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGFzc2lnbm9yRWxlbWVudC5uYW1lLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBhc3NpZ25vckVsZW1lbnQuZW1haWwsXHJcbiAgICAgICAgICAgICAgbWVtYmVySWQ6IGFzc2lnbm9yRWxlbWVudC5tZW1iZXJfaWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhc3NpZ25vck9iajtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NjJzpcclxuICAgICAgICBsZXQgY2NPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfVxyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgoY2NFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjY0VsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgY2NPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogY2NFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVJZDogY2NFbGVtZW50LmVtcGxveWVlX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBjY0VsZW1lbnQuZW1haWxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjY09iajtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2NGYWlsdXJlJzpcclxuICAgICAgICBsZXQgY2NmT2JqID0geyBuYW1lOiAnJywgZW1wbG95ZWVJZDogMCwgZW1haWw6ICcnIH07XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChjY2ZFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjY2ZFbGVtZW50Lm5hbWVBbmRFbWFpbCA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGNjZk9iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBjY2ZFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVJZDogY2NmRWxlbWVudC5lbXBsb3llZV9pZCxcclxuICAgICAgICAgICAgICBlbWFpbDogY2NmRWxlbWVudC5lbWFpbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNjZk9iajtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2VudHJ1c3RlZF90byc6XHJcbiAgICAgICAgbGV0IGVtcElkID0gMFxyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgoZW5FbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuXHJcbiAgICAgICAgICAgIGVtcElkID0gZW5FbGVtZW50LmVtcGxveWVlX2lkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBlbXBJZFxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXRlZ29yeV9pZCc6XHJcbiAgICAgICAgbGV0IGNhdElkID0gMFxyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5TGlzdC5mb3JFYWNoKChjYXRlZ29yeTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2F0ZWdvcnkubmFtZSA9PSBpdGVtKSB7XHJcbiAgICAgICAgICAgIGNhdElkID0gY2F0ZWdvcnkuY2F0ZWdvcnlfaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNhdElkO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmlza19jbGFzcyc6XHJcblxyXG4gICAgICAgIGlmIChpdGVtID09ICdMb3cnKSB7XHJcbiAgICAgICAgICByZXR1cm4gMVxyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PSAnTG93LU1lZGl1bScpIHtcclxuICAgICAgICAgIHJldHVybiAyXHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdNZWRpdW0tSGlnaCcpIHtcclxuICAgICAgICAgIHJldHVybiAzXHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdIaWdoJykge1xyXG4gICAgICAgICAgcmV0dXJuIDRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIDBcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHtcclxuICAgICAgaGVhZGVyOiBbXSxcclxuICAgICAgcmVwb3J0czogW10sXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XHJcbiAgICAgIGNhdGVnb3J5TGlzdDogW10sXHJcbiAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxyXG4gICAgICBhc3NpZ25lZXNMaXN0OiBbXSxcclxuICAgICAgbWVtYmVySWQ6ICcnXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZGF0YSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMuY2xvc2VBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5LmVtaXQoKTtcclxuXHJcbiAgfVxyXG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlldyc6XHJcbiAgICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdGllcygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgdmlld1Jlc3BvbnNpYmlsaXRpZXMoKTogdm9pZCB7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBsZXQgdXJsU3Vic3RyaW5nID0gJyc7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nKSB7XHJcbiAgICAgIGlmKHRoaXMuZmVhdHVyZWZsYWcpe1xyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT8nKyB0aGlzLnVybFxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMvcmVzcG9uc2liaWxpdGllcy1xdWV1ZSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuZmVhdHVyZWZsYWcpe1xyXG4gICAgICAgIHRoaXMucXVlcnlQYXJhbSA9ICBKU09OPy5zdHJpbmdpZnkodGhpcy5yZWNlbnRSZXNwb25zaWJpbGl0eVVybClcclxuICAgICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdHk/cT0nKyB0aGlzLnF1ZXJ5UGFyYW0gO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXRpZXMnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9jb21wbGlhbmNlLyMvJyArIHVybFN1YnN0cmluZztcclxuICAgIH1cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBsb2FkIEZpbGUgdG8gdGhlIHNlcnZlclxyXG4gIGZpbGVVcGxvYWQoKSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgY29uc3QgZmlsZSA9IHRoaXMudXBsb2FkZWRGaWxlc1swXVswXTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnc291cmNlZmlsZScsIGZpbGUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdkZXN0aW5hdGlvbicsICdidWxrdXBsb2FkL2VudHJ1c3QvJyArIHRoaXMudXNlckluZm8uZW1haWwpO1xyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZmlsZVVwbG9hZChmb3JtRGF0YSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzPy5maWxlbmFtZSkge1xyXG4gICAgICAgIHRoaXMuZmlsZVJlc3BvbnNlLnB1c2gocmVzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLCAnYWxlcnQnKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrXCIgW2F0dHIuaWRdPVwiJ3Njcm9sbFJlZmVyZW5jZSdcIiA+XHJcbiAgICA8IS0gLSBtYWluIGNvbnRhaW5lciBzdGFydHMgaGVyZSAtIC0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9zcHJlYWRzaGVldC1tdWx0aXBsZS1jYXRlZ29yeS5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGg0PllvdSBjYW4gZW50cnVzdCBtdWx0aXBsZSByZXNwb25zaWJpbGl0aWVzIGluIGp1c3QgdHdvIGVhc3kgc3RlcHM6PC9oND5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpPkRvd25sb2FkIHRoZSB0ZW1wbGF0ZSBhbmQgZmlsbCBpbiB0aGUgZGV0YWlscy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlVwbG9hZCB0aGUgLnhsc3ggZmlsZSBhbmQgeW914oCZcmUgZ29vZCB0byBnbyE8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRvd25sb2FkXCIgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ05PVF9ET1dOTE9BRElORydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgVGVtcGxhdGU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCIgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FESU5HJ1wiPlxyXG4gICAgICAgICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcclxuICAgICAgICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FERUQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1hZ2FpblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXNXcm9uZ0ZpbGUgfHwgaXNXcm9uZ0Zvcm1hdHx8IGlzRmlsZUVtcHR5XCJcclxuICAgICAgICAgICAgPnt7ZXJyb3JNZXNzYWdlfX08L3A+ICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcbjxhcHAtYnVsay1yZXNwb25zaWJpbGl0eS12aWV3ICpuZ0lmPVwic2hvd0V4Y2VsXCJcclxuW3Jlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZF09XCJyZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWRcIlxyXG5bZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxyXG5bbG9hZGVyXT1cImxvYWRlclwiXHJcbltkZWZhdWx0T3duZXJdPVwiZGVmYXVsdE93bmVyXCJcclxuKHN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCk9XCJzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQoKVwiXHJcbihjYW5jZWwpPVwicmVzZXQoKVwiXHJcbltyZXNwb25zaWJpbGl0eVR5cGVdPVwiJ3NpbmdsZVRhYidcIj48L2FwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXc+XHJcbjxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcblxyXG48aW5wdXQgdHlwZT1cImZpbGVcIiBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiIGlkPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJoaWRkZW4taW5wdXRcIiBhY2NlcHQ9XCIueGxzeFwiIChjaGFuZ2UpPVwidXBsb2FkZWRGaWxlKCRldmVudClcIiBtdWx0aXBsZSAvPlxyXG48YXBwLXNtaWxleS1kaWFsb2ctaW5saW5lICpuZ0lmPVwic2hvd1NtaWxleVwiIFttZXNzYWdlXT1cInNtaWxleU1lc3NhZ2VcIiBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCIgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCI+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XHJcbiJdfQ==
772
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5L2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBYzdCLE1BQU0sT0FBTyxrQ0FBa0M7SUEyRDdDLFlBQ1UsV0FBMkIsRUFDM0IscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3hCLGdCQUFzQyxFQUN0QyxRQUF5QjtRQUp6QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBL0R6QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztR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QUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZFJpc2tTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYWRkLXJpc2suc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5QnVsa1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5cclxudHlwZSBBT0EgPSBhbnlbXVtdO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBmZWF0dXJlZmxhZyA6YW55XHJcbiAgdXJsID0ncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSdcclxuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0nJztcclxuICByZWNlbnRSZXNwb25zaWJpbGl0eVVybDogYW55ID0ge1wiYnlSZXNwb25zaWJpbGl0aWVzXCI6e1widHlwZVwiOltcInJlY2VudF9yZXNwb25zaWJpbGl0aWVzXCJdLFwic3ViVHlwZVwiOltcIkNDXCJdfSxcImJ5U3RhdHVzXCI6e1widHlwZVwiOltdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifTtcclxuXHJcbiAgQElucHV0KCd1cGxvYWRlZEZpbGUnKSBzZXQgdXBsb2FkZWRGaWxlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkOiBhbnkgPSB7XHJcbiAgICBoZWFkZXI6IFtdLFxyXG4gICAgcmVwb3J0czogW10sXHJcbiAgfVxyXG5cclxuICB0ZW1wbGF0ZUluZm86IGFueSA9IHtcclxuXHJcbiAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgcmNMaXN0OiBbXSxcclxuICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxyXG4gICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICBtZW1iZXJJZDogJydcclxuICB9XHJcbiAgaXNMb2FkZXIgPSBmYWxzZTtcclxuICBzaG93Q2F0ZWdvcnlMaXN0ID0gZmFsc2U7XHJcbiAgdGVtcGxhdGVEb3dubG9hZGVkID0gZmFsc2U7XHJcbiAgZG93bmxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgaXNGaWxlRW1wdHkgPSBmYWxzZTtcclxuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gIGlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICBmaWxlTmFtZTogYW55O1xyXG4gIGRhdGE6IGFueTtcclxuICBzaG93RXhjZWwgPSBmYWxzZTtcclxuICB1cGxvYWRlZEZpbGVzOiBhbnkgPSBbXTtcclxuICBmaWxlUmVzcG9uc2U6IGFueSA9IFtdO1xyXG4gIGZpbGVWYWx1ZTogYW55O1xyXG4gIG1lbWJlcklkID0gMDtcclxuICBvcmdhbml6YXRpb25JZCA9IDA7XHJcbiAgZXJyb3JNZXNzYWdlID0gXCIgaW52YWxpZCBmaWxlIGVycm9yXCJcclxuICBkb3dubG9hZFN0YXR1czogc3RyaW5nID0gJ05PVF9ET1dOTE9BRElORyc7XHJcbiAgZG93bmxvYWRQZXJjZW50ID0gMDtcclxuICBkZWZhdWx0T3duZXIgPSAnJ1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhIFdlJ3JlIHByb2Nlc3NpbmcgeW91ciByZXF1ZXN0IGFuZCB5b3Ugd2lsbCBiZSBub3RpZmllZCB2aWEgZW1haWwgdXBvbiBjb21wbGV0aW9uLmA7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHsgYnV0dG9uVGV4dDogJ0VudHJ1c3QgTW9yZSBSZXNwb25zaWJpbGl0aWVzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgICB7IGJ1dHRvblRleHQ6ICh0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZykgPyAnVmlldyBSZXNwb25zaWJpbGl0aWVzIEluIFF1ZXVlJyA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3JyB9LFxyXG4gIF07XHJcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcclxuICByaXNrQ2xhc3NFbmFibGVkOiBhbnk7XHJcbiAgdXNlckluZm8gITogYW55O1xyXG4gIHJlc3BvbnNpYmlsaXR5RGF0YSAhOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJpc2tTZXJ2aWNlOiBBZGRSaXNrU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5QnVsa1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gY29uc3QgdGVzdCA9IHRoaXMuY29tcGFyZVdpdGhDdXJyZW50RGF0ZSgxLCBcIkp1bHknMjFcIikgO1xyXG4gICAgLy8gZGVidWdnZXJcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpO1xyXG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcclxuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgICB0aGlzLmRlZmF1bHRPd25lciA9ICh0aGlzLnVzZXJJbmZvKSA/IHRoaXMudXNlckluZm8ubmFtZSArICcgKCcgKyB0aGlzLnVzZXJJbmZvLmVtYWlsICsgJyknIDogJyc7XHJcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmlza0NsYXNzRW5hYmxlZCA9IHJlcy5lbmFibGVfcmlza2NsYXNzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJCcm93c2VGaWxlKCkge1xyXG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcclxuICAgIGlmIChnZXRGaWxlKSB7XHJcbiAgICAgIGdldEZpbGUuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyA9IHJlcy5ub3RpZmljYXRpb25fcGVuZGluZ19mbGFnO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHVwbG9hZGVkRmlsZShldmVudDogYW55KSB7XHJcbiAgICAvLyB0aGlzLnRlc3RhcnJheT1bXTtcclxuICAgIHRyeSB7XHJcblxyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IHtcclxuICAgICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICAgIHJlcG9ydHM6IFtdLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxyXG4gICAgICAgIHJjTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgICAgYXNzaWduZWVzTGlzdDogW10sXHJcbiAgICAgICAgbWVtYmVySWQ6ICcnXHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xyXG4gICAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XHJcbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcclxuICAgICAgICByZWZlcmVuY2Uuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2goZXZlbnQudGFyZ2V0LmZpbGVzKTtcclxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGN1cmx5XHJcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcclxuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3NuYW1lMTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1sxXTtcclxuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lMV07XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3cywge1xyXG4gICAgICAgICAgaGVhZGVyOiAxLCByYXc6IGZhbHNlLFxyXG4gICAgICAgIH0pIGFzIEFPQTtcclxuXHJcbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcclxuICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArICcgUkVUUlknO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXIgPSBjbG9uZURlZXAodGhpcy5kYXRhWzBdLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlci5zcGxpY2UodGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyLmxlbmd0aCAtIDEsIDEpXHJcblxyXG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5zbGljZSgyKTtcclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzBdICE9PSAnRW50ZXIgUmVzcG9uc2liaWxpdHkgTmFtZSonKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICsgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsyNV1cclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICsgJyBSRVRSWSc7XHJcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbMl0gJiYgZWxlbWVudFsyXSE9JyAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbMl0sXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGVsZW1lbnRbM11cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUxpc3QucHVzaChjYXRlZ29yeSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudFs5XSAmJiBlbGVtZW50WzldIT0nICcpIHtcclxuICAgICAgICAgICAgY29uc3QgcmMgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFs5XSxcclxuICAgICAgICAgICAgICByY19pZDogZWxlbWVudFsxMF0sXHJcbiAgICAgICAgICAgICAgcGFyZW50SWRzOiBKU09OLnBhcnNlKGVsZW1lbnRbMTNdKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50WzExXSAmJiBlbGVtZW50WzExXSE9JyAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0ge1xyXG4gICAgICAgICAgICAgIG5hbWVBbmRFbWFpbDogZWxlbWVudFsxMV0sXHJcbiAgICAgICAgICAgICAgbmFtZTogZWxlbWVudFsxMV0uc3BsaXQoJyAoJylbMF0sXHJcbiAgICAgICAgICAgICAgZW1haWw6IGVsZW1lbnRbMTFdLnNwbGl0KCcgKCcpWzFdLnJlcGxhY2UoJyknLCAnJyksXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVfaWQ6IGVsZW1lbnRbMTJdLFxyXG4gICAgICAgICAgICAgIG15X21lbWJlcl9pZDogZWxlbWVudFsxNl1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LnB1c2goYXNzaWduZWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnRbMTRdICYmIGVsZW1lbnRbMTRdIT0nICcpIHtcclxuICAgICAgICAgICAgY29uc3QgYXNzaWdub3IgPSB7XHJcbiAgICAgICAgICAgICAgbmFtZUFuZEVtYWlsOiBlbGVtZW50WzE0XSxcclxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50WzE0XS5zcGxpdCgnICgnKVswXSxcclxuICAgICAgICAgICAgICBlbWFpbDogZWxlbWVudFsxNF0uc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSxcclxuICAgICAgICAgICAgICBtZW1iZXJfaWQ6IGVsZW1lbnRbMTVdLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QucHVzaChhc3NpZ25vcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmNoZWNrRW1wdHlGaWxlKCk7XHJcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ1lvdSBoYXZlIHVwbG9hZGVkIGEgYmxhbmsgdGVtcGxhdGUuIFBsZWFzZSBhZGQgZGV0YWlscyBmb3IgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIFJFVFJZJztcclxuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQoKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5RGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDApO1xyXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5RGF0YS5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbGlkRGF0ZTtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkRmllbGRzID0gdGhpcy5jaGVja1ZhbGlkaXR5KHJlcG9ydCk7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZFVzZXIgPSB0aGlzLnJldHVybklkcyhyZXBvcnRbMl0sICdlbnRydXN0ZWRfdG8nKSA/IHRydWUgOiBmYWxzZVxyXG4gICAgICAgICAgbGV0IG9iajogYW55O1xyXG4gICAgICAgICAgaWYodGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIT09J1NlbGVjdCBhIFByb2dyYW0nKXtcclxuICAgICAgICAgICAgdmFsaWREYXRlID0gdGhpcy5jb21wYXJlV2l0aEN1cnJlbnREYXRlKHJlcG9ydFs0XSwgcmVwb3J0WzVdKTtcclxuICAgICAgICAgICAgb2JqPSB7XHJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgYXNzaWdub3I6IHJlcG9ydFsxXSA/PyAnJyxcclxuICAgICAgICAgICAgICBhc3NpZ25lZTogcmVwb3J0WzJdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IG51bGwsXHJcbiAgICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbM10gPz8gJycsXHJcbiAgICAgICAgICAgICAgZGF5OiByZXBvcnRbNF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgbW9udGg6IHJlcG9ydFs1XSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eVdpbmRvdzogcmVwb3J0WzZdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZhaWxlZEFmdGVyOiByZXBvcnRbN10gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmVwb3J0Q2xhc3M6IHJlcG9ydFs4XSA/PyAnJyxcclxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzldID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJldmlld2VyOiByZXBvcnRbMTBdID8/ICcnLFxyXG4gICAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxMV0gPz8gJycsXHJcbiAgICAgICAgICAgICAgcmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXI6IHJlcG9ydFsxMl0gPz8gJycsXHJcbiAgICAgICAgICAgICAgZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxM10gPz8gJycsXHJcbiAgICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNF0/LnRvU3RyaW5nKCkgPz8gJycsXHJcbiAgICAgICAgICAgICAgZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkOiByZXBvcnRbMTVdID8/ICcnLFxyXG4gICAgICAgICAgICAgIGFsd2F5c05vdGlmeTogcmVwb3J0WzE2XSA/PyAnJyxcclxuICAgICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxN10gPz8gJycsXHJcbiAgICAgICAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcG9ydFsxOF0gPz8gJycsXHJcbiAgICAgICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnRbMTldPy50b1N0cmluZygpID8/ICcnLFxyXG5cclxuICAgICAgICAgICAgICBpc1ZhbGlkRHVlRGF0ZTogdmFsaWREYXRlLFxyXG4gICAgICAgICAgICAgIGlzUGFzdERhdGU6IHRoaXMuaXNQYXN0RGF0ZShyZXBvcnRbNF0sIHJlcG9ydFs1XSksXHJcbiAgICAgICAgICAgICAgY2hlY2tWYWxpZGl0eTogdmFsaWRGaWVsZHMsXHJcbiAgICAgICAgICAgICAgaXNWYWxpZDogKHZhbGlkRGF0ZSkgJiYgKHZhbGlkRmllbGRzKSAmJiAodmFsaWRVc2VyKSxcclxuICAgICAgICAgICAgICBpc1ZhbGlkVXNlcjogKHZhbGlkVXNlcilcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YWxpZERhdGUgPSB0aGlzLmNvbXBhcmVXaXRoQ3VycmVudERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pO1xyXG4gICAgICAgICAgICBvYmo9IHtcclxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlOYW1lOiByZXBvcnRbMF0gPz8gJycsXHJcbiAgICAgICAgICAgIGFzc2lnbm9yOiByZXBvcnRbMV0gPz8gJycsXHJcbiAgICAgICAgICAgIGFzc2lnbmVlOiByZXBvcnRbMl0gPz8gJycsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IHJlcG9ydFszXSA/PyAnJyxcclxuICAgICAgICAgICAgZnJlcXVlbmN5OiByZXBvcnRbNF0gPz8gJycsXHJcbiAgICAgICAgICAgIGRheTogcmVwb3J0WzVdID8/ICcnLFxyXG4gICAgICAgICAgICBtb250aDogcmVwb3J0WzZdID8/ICcnLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eVdpbmRvdzogcmVwb3J0WzddID8/ICcnLFxyXG4gICAgICAgICAgICBmYWlsZWRBZnRlcjogcmVwb3J0WzhdID8/ICcnLFxyXG4gICAgICAgICAgICByZXBvcnRDbGFzczogcmVwb3J0WzldID8/ICcnLFxyXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogcmVwb3J0WzEwXSA/PyAnJyxcclxuICAgICAgICAgICAgcmV2aWV3ZXI6IHJlcG9ydFsxMV0gPz8gJycsXHJcbiAgICAgICAgICAgIHJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW46IHJlcG9ydFsxMl0gPz8gJycsXHJcbiAgICAgICAgICAgIHJldmlld1dpbGxCZUZhaWxlZEFmdGVyOiByZXBvcnRbMTNdID8/ICcnLFxyXG4gICAgICAgICAgICBmb3JtYXRGb3JSZXNwb25zaWJpbGl0eTogcmVwb3J0WzE0XSA/PyAnJyxcclxuICAgICAgICAgICAgbm90ZXM6IHJlcG9ydFsxNV0/LnRvU3RyaW5nKCkgPz8gJycsXHJcbiAgICAgICAgICAgIGRvY3VtZW50RXZpZGVuY2VSZXF1aXJlZDogcmVwb3J0WzE2XSA/PyAnJyxcclxuICAgICAgICAgICAgYWx3YXlzTm90aWZ5OiByZXBvcnRbMTddID8/ICcnLFxyXG4gICAgICAgICAgICBub3RpZnlPbkZhaWx1cmU6IHJlcG9ydFsxOF0gPz8gJycsXHJcbiAgICAgICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiByZXBvcnRbMTldID8/ICcnLFxyXG4gICAgICAgICAgICBvYmplY3RpdmU6IHJlcG9ydFsyMF0/LnRvU3RyaW5nKCkgPz8gJycsXHJcblxyXG4gICAgICAgICAgICBpc1ZhbGlkRHVlRGF0ZTogdmFsaWREYXRlLFxyXG4gICAgICAgICAgICBpc1Bhc3REYXRlOiB0aGlzLmlzUGFzdERhdGUocmVwb3J0WzVdLCByZXBvcnRbNl0pLFxyXG4gICAgICAgICAgICBjaGVja1ZhbGlkaXR5OiB2YWxpZEZpZWxkcyxcclxuICAgICAgICAgICAgaXNWYWxpZDogKHZhbGlkRGF0ZSkgJiYgKHZhbGlkRmllbGRzKSAmJiAodmFsaWRVc2VyKSxcclxuICAgICAgICAgICAgaXNWYWxpZFVzZXI6ICh2YWxpZFVzZXIpXHJcbiAgICAgICAgICB9O31cclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnJlcG9ydHMucHVzaChvYmopO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnJlcG9ydHMpXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy50ZXN0YXJyYXkpXHJcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maWxlVmFsdWUgPSAnJztcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2hlY2tFbXB0eUZpbGUoKSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XHJcbiAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA8IDEpIHtcclxuICAgICAgaXNFbXB0eSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNFbXB0eTtcclxuICB9XHJcblxyXG4gIC8vIHRlc3RhcnJheTphbnlbXT1bXVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KHJlcG9ydDogYW55KSB7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgaWYgKHJlcG9ydFswXSkge1xyXG4gICAgICB2YXIgdHJpbW1lZE5hbWUgPSByZXBvcnRbMF0udG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG4gICAgICB0cmltbWVkTmFtZSA9IHRyaW1tZWROYW1lLnJlcGxhY2UoLyAgKy9nLCAnICcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIGluZGV4ICAgICAgICAgICBrZXkgZm9yICAgICAgICAgICAgICAgY29uZGl0aW9uXHJcbiAgICAgKlxyXG4gICAgICogIHJlcG9ydFsxXSAgICAgICBPbiBCZWhhbGYgb2YgdXNlclxyXG4gICAgICogIHJlcG9ydFsxMV0gICAgICBSZXZpZXdlciAgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxMF0gICAgICBSZXZpZXdlciAgICAgICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxNl0gICAgICBBbHdheXMgTm90aWZ5ICAgICAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxOF0gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzICdTZWxlY3QgYSBQcm9ncmFtJ1xyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBOb3RpZnkgT24gRmFpbHVyZSAgICAgd2hlbiByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdIGlzIG5vdCAnU2VsZWN0IGEgUHJvZ3JhbScoZGlzYWJsZWQgZm9yIHVzZXJzIHdpdGhvdXQgcHJvZ3JhbSBwZXJtaXNzaW9uKVxyXG4gICAgICogIHJlcG9ydFsxN10gICAgICBBbHdheXMgTm90aWZ5XHJcbiAgICAgKiAgcmVwb3J0WzE4XSAgICAgIE5vdGlmeSBPbiBGYWlsdXJlXHJcbiAgICAgKiAgcmVwb3J0WzJdICAgICAgIEFzc2lnbmVlXHJcbiAgICAgKiAgcmVwb3J0WzRdICAgICAgIGZyZXF1ZW5jeSAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgJ1NlbGVjdCBhIFByb2dyYW0nXHJcbiAgICAgKiAgcmVwb3J0WzNdICAgICAgIGZyZXF1ZW5jeSAgICAgICAgICAgICB3aGVuIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10gaXMgbm90ICdTZWxlY3QgYSBQcm9ncmFtJyhkaXNhYmxlZCBmb3IgdXNlcnMgd2l0aG91dCBwcm9ncmFtIHBlcm1pc3Npb24pXHJcbiAgICAgKiAgdHJpbW1lZE5hbWUgICAgIFJlcG9ydCBuYW1lXHJcbiAgICAgKiAgZGVmYXVsdE93bmVyICAgIERlZmF1bHQgQXNzaWdub3JcclxuICAgICAqL1xyXG4gICAgIGNvbnN0IGZyZXF1ZW5jeT0gKHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpPT0nc2VsZWN0IGEgcHJvZ3JhbScpID8gcmVwb3J0WzRdOnJlcG9ydFszXSA7XHJcbiAgICAgY29uc3QgcmV2aWV3ZXIgPSh0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC5oZWFkZXJbM10udG9Mb3dlckNhc2UoKT09J3NlbGVjdCBhIHByb2dyYW0nKSA/IHJlcG9ydFsxMV06cmVwb3J0WzEwXSA7XHJcbiAgICAgY29uc3QgTm90aWZ5QWx3YXlzID0odGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuaGVhZGVyWzNdLnRvTG93ZXJDYXNlKCk9PSdzZWxlY3QgYSBwcm9ncmFtJykgPyByZXBvcnRbMTddOnJlcG9ydFsxNl07XHJcbiAgICAgY29uc3QgTm90aWZ5T25GYWlsdXJlID0gKHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLmhlYWRlclszXS50b0xvd2VyQ2FzZSgpPT0nc2VsZWN0IGEgcHJvZ3JhbScpID8gcmVwb3J0WzE4XTpyZXBvcnRbMTddO1xyXG5cclxuICAgICBpZiAoKCFmcmVxdWVuY3kpIHx8XHJcbiAgICAgICAoIXRyaW1tZWROYW1lKSB8fFxyXG4gICAgICAgKHJlcG9ydFsxXSAmJiAoIChyZXBvcnRbMV0gPT0gTm90aWZ5QWx3YXlzKSB8fCAocmVwb3J0WzFdID09IE5vdGlmeU9uRmFpbHVyZSkpKSB8fFxyXG4gICAgICAgKCghcmVwb3J0WzFdKSAmJiAoICh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlBbHdheXMpIHx8ICh0aGlzLmRlZmF1bHRPd25lciA9PSBOb3RpZnlPbkZhaWx1cmUpKSkgfHxcclxuICAgICAgIChyZXBvcnRbMl0gJiYgKChyZXBvcnRbMl0gPT0gcmV2aWV3ZXIpIHx8IChyZXBvcnRbMl0gPT0gTm90aWZ5QWx3YXlzKSB8fCAocmVwb3J0WzJdID09IE5vdGlmeU9uRmFpbHVyZSkpKSB8fFxyXG4gICAgICAgKCghcmVwb3J0WzJdKSAmJiAoKHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeUFsd2F5cykgfHwgKHRoaXMuZGVmYXVsdE93bmVyID09IE5vdGlmeU9uRmFpbHVyZSkpKSB8fFxyXG4gICAgICAgKHJldmlld2VyICYmICgocmV2aWV3ZXIgPT0gTm90aWZ5QWx3YXlzKSB8fCAocmV2aWV3ZXIgPT0gTm90aWZ5T25GYWlsdXJlKSkpIHx8XHJcbiAgICAgICAoIXJlcG9ydFsyXSkpIHtcclxuICAgICByZXR1cm4gZmFsc2U7XHJcbiAgIH0gZWxzZSB7IHJldHVybiB0cnVlIH1cclxuICB9XHJcbiAgY29tcGFyZVdpdGhDdXJyZW50RGF0ZShkYXk6IGFueSwgbW9udGg6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6IDIsIG1vbnRoOiAnRmViJyB9LFxyXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcclxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDUsIG1vbnRoOiAnTWF5JyB9LFxyXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcclxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDgsIG1vbnRoOiAnQXVnJyB9LFxyXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcclxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMSwgbW9udGg6ICdOb3YnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEoZGF5IHx8IG1vbnRoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoQW5kWWVhciA9IG1vbnRoLnNwbGl0KFwiJ1wiKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChkYXkgKyAnLScgKyBtb250aEFuZFllYXJbMF0gKyAnLScgKyAyMCArIG1vbnRoQW5kWWVhclsxXSArICcgMDA6MDA6MDAnLCAnREQtTU1NTS1ZWVlZIEhIOm1tOnNzJykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcbiAgICAgIGlmIChzdGFydERhdGUgPT0gXCJJbnZhbGlkIGRhdGVcIikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB9LCA1KTtcclxuICAgICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKHR5cGVvZiBtb250aCAhPT0gJ251bWJlcicgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF0/LnZhbHVlIC0gMSA6IG1vbnRoKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcihOdW1iZXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXREYXRlKE51bWJlcihkYXkpKTtcclxuICAgICAgLy8gY29uc3QgcmVwb3J0RGF0ZSA9IG5ldyBEYXRlKGRheSArIG1vbnRoLnNwbGl0KFwiJ1wiKSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKChjdXJyZW50RGF0ZS50b0pTT04oKS5zcGxpdCgnVCcpWzBdKStcIiYmXCIrKGRhdGVfdmFsdWUudG9KU09OKCkuc3BsaXQoJ1QnKVswXSkpXHJcbiAgICAgIC8vIGRlYnVnZ2VyXHJcbiAgICAgIGlmICgoKGN1cnJlbnREYXRlLnRvSlNPTigpLnNwbGl0KCdUJylbMF0pICE9IChkYXRlX3ZhbHVlLnRvSlNPTigpLnNwbGl0KCdUJylbMF0pKSAmJiAoY3VycmVudERhdGUgPiBkYXRlX3ZhbHVlKSkge1xyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlzUGFzdERhdGUoZGF5OiBhbnksIG1vbnRoOiBhbnkpIHtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICBjb25zdCBtb250aE5hbWVzID0gW1xyXG4gICAgICB7IHZhbHVlOiAxLCBtb250aDogJ0phbicgfSxcclxuICAgICAgeyB2YWx1ZTogMiwgbW9udGg6ICdGZWInIH0sXHJcbiAgICAgIHsgdmFsdWU6IDMsIG1vbnRoOiAnTWFyJyB9LFxyXG4gICAgICB7IHZhbHVlOiA0LCBtb250aDogJ0FwcicgfSxcclxuICAgICAgeyB2YWx1ZTogNSwgbW9udGg6ICdNYXknIH0sXHJcbiAgICAgIHsgdmFsdWU6IDYsIG1vbnRoOiAnSnVuJyB9LFxyXG4gICAgICB7IHZhbHVlOiA3LCBtb250aDogJ0p1bCcgfSxcclxuICAgICAgeyB2YWx1ZTogOCwgbW9udGg6ICdBdWcnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDksIG1vbnRoOiAnU2VwJyB9LFxyXG4gICAgICB7IHZhbHVlOiAxMCwgbW9udGg6ICdPY3QnIH0sXHJcbiAgICAgIHsgdmFsdWU6IDExLCBtb250aDogJ05vdicgfSxcclxuICAgICAgeyB2YWx1ZTogMTIsIG1vbnRoOiAnRGVjJyB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoIShkYXkgfHwgbW9udGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoIShkYXkgJiYgbW9udGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGNvbnN0IHJlcG9ydERhdGUgPSBuZXcgRGF0ZShkYXkgKyBtb250aC5zcGxpdChcIidcIikpO1xyXG4gICAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRNb250aCh0eXBlb2YgbW9udGggIT09ICdudW1iZXInID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdPy52YWx1ZSAtIDEgOiBtb250aCk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoTnVtYmVyKDIwICsgbW9udGguc3BsaXQoXCInXCIpWzFdKSk7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShOdW1iZXIoZGF5KSk7XHJcbiAgICAgIGlmIChjdXJyZW50RGF0ZSA+IGRhdGVfdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlKCkge1xyXG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XHJcbiAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDA7XHJcbiAgICBjb25zdCBkb3dubG9hZERhdGUgPSBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGBFbnRydXN0IFJlc3BvbnNpYmlsaXRpZXMtJHtkb3dubG9hZERhdGVbMl19LSR7ZG93bmxvYWREYXRlWzFdfS0ke2Rvd25sb2FkRGF0ZVszXX0ueGxzeGA7XHJcblxyXG4gICAgdGhpcy5yaXNrU2VydmljZS5kb3dubG9hZFJlc3BvbnNpYmlsaXR5VGVtcGxhdGUoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZG93bmxvYWRQZXJjZW50ID0gMTAwICogKGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkYXRhLmJvZHkpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gdGhpcy5yaXNrU2VydmljZS5kb3duTG9hZEZpbGUoZGF0YS5ib2R5LCAnYXBwbGljYXRpb24veGxzeCcsIGZpbGVOYW1lKTtcclxuICAgICAgICAgIH0sIDE1MDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURFRCc7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQoKSB7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGVBcnJheSA9IFsnMScsICcyJywgJzMnLCAnNCcsICc3JywgJzAnXTtcclxuICAgIGNvbnN0IGRlZmF1bHRXaW5kb3cgPSBbMCwgMiwgNywgMzAsIDcsIDE1XTtcclxuICAgIGNvbnN0IGRlZmF1bHRGYWlsZWREYXkgPSBbMSwgMiwgNSwgNSwgNSwgNV07XHJcblxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQucmVwb3J0cy5mb3JFYWNoKChyZXBvcnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVwb3J0LmlzVmFsaWQpIHtcclxuICAgICAgICBpZihyZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeSA9PT0gbnVsbCl7XHJcbiAgICAgICAgICByZXBvcnQucmVzcG9uc2liaWxpdHlDYXRlZ29yeSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByY0RldGFpbHM6IGFueSA9IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5yZXNwb25zaWJpbGl0eUNlbnRlciwgJ3JjX2lkJyk7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhyZXBvcnQucmV2aWV3ZXIsICdyZXZpZXdlcicpO1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbm9yRGV0YWlsczogYW55ID0gKHJlcG9ydC5hc3NpZ25vcikgPyB0aGlzLnJldHVybklkcyhyZXBvcnQuYXNzaWdub3IsICdhc3NpZ25vcicpIDogJyc7XHJcbiAgICAgICAgY29uc3QgY2NEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhyZXBvcnQuYWx3YXlzTm90aWZ5LCAnY2MnKTtcclxuICAgICAgICBjb25zdCBjY0ZhaWx1cmVEZXRhaWxzOiBhbnkgPSB0aGlzLnJldHVybklkcyhyZXBvcnQubm90aWZ5T25GYWlsdXJlLCAnY2NGYWlsdXJlJyk7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuXHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlOYW1lID0gKHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5LmluY2x1ZGVzKCdbV0lUSElOXScpKSA/IHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5LnNwbGl0KCcgWycpWzBdIDogcmVwb3J0LnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcclxuICAgICAgICBjb25zdCBmcmVxdWVuY3lWYWx1ZSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChyZXBvcnQuZnJlcXVlbmN5LCByZXBvcnQuZGF5LCByZXBvcnQubW9udGgpO1xyXG4gICAgICAgIGNvbnN0IGRhdGVBbmRNb250aCA9IHJlcG9ydC5tb250aC5zcGxpdChcIidcIik7XHJcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KHJlcG9ydC5kYXkgKyAnLScgKyBkYXRlQW5kTW9udGhbMF0gKyAnLScgKyAyMCArIGRhdGVBbmRNb250aFsxXSArICcgMDA6MDA6MDAnLCAnREQtTU1NTS1ZWVlZIEhIOm1tOnNzJykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJyk7XHJcblxyXG4gICAgICAgIGxldCBjb21wbGV0ZURheXM7XHJcbiAgICAgICAgbGV0IG5vdENvbXBsZXRlRGF5c1xyXG4gICAgICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGUgPSBmcmVxdWVuY3lWYWx1ZS5zcGxpdCgnficpWzBdO1xyXG4gICAgICAgIGlmIChyZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3cgIT09ICcnKSB7XHJcbiAgICAgICAgICBjb21wbGV0ZURheXMgPSByZXBvcnQucmVzcG9uc2liaWxpdHlXaW5kb3c7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3lUeXBlQXJyYXkuaW5jbHVkZXMoZnJlcXVlbmN5VHlwZSkpIHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4T2ZBcnJheSA9IGZyZXF1ZW5jeVR5cGVBcnJheS5pbmRleE9mKGZyZXF1ZW5jeVR5cGUpO1xyXG4gICAgICAgICAgY29tcGxldGVEYXlzID0gZGVmYXVsdFdpbmRvd1tpbmRleE9mQXJyYXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVwb3J0LmZhaWxlZEFmdGVyICE9PSAnJykge1xyXG4gICAgICAgICAgbm90Q29tcGxldGVEYXlzID0gcmVwb3J0LmZhaWxlZEFmdGVyO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5VHlwZUFycmF5LmluY2x1ZGVzKGZyZXF1ZW5jeVR5cGUpKSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleE9mQXJyYXkgPSBmcmVxdWVuY3lUeXBlQXJyYXkuaW5kZXhPZihmcmVxdWVuY3lUeXBlKTtcclxuICAgICAgICAgIG5vdENvbXBsZXRlRGF5cyA9IGRlZmF1bHRGYWlsZWREYXlbaW5kZXhPZkFycmF5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgdXNlcklkOiB0aGlzLnRlbXBsYXRlSW5mby5tZW1iZXJJZCxcclxuICAgICAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5vcmdhbml6YXRpb25JZCxcclxuICAgICAgICAgIG1lbWJlcl9pZDogKGFzc2lnbm9yRGV0YWlscykgPyBhc3NpZ25vckRldGFpbHMubWVtYmVySWQgOiB0aGlzLm1lbWJlcklkLFxyXG4gICAgICAgICAgbWVtYmVyX25hbWU6IChhc3NpZ25vckRldGFpbHMpID8gKChyZXBvcnQuYXNzaWdub3IpID8gcmVwb3J0LmFzc2lnbm9yLnNwbGl0KCcgKCcpWzBdIDogJycpIDogKCh0aGlzLmRlZmF1bHRPd25lcikgPyB0aGlzLmRlZmF1bHRPd25lci5zcGxpdCgnICgnKVswXSA6ICcnKSxcclxuICAgICAgICAgIG1lbWJlcl9lbWFpbDogKGFzc2lnbm9yRGV0YWlscykgPyAoKHJlcG9ydC5hc3NpZ25vcikgPyByZXBvcnQuYXNzaWdub3Iuc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSA6ICcnKSA6ICgodGhpcy5kZWZhdWx0T3duZXIpID8gdGhpcy5kZWZhdWx0T3duZXIuc3BsaXQoJyAoJylbMV0ucmVwbGFjZSgnKScsICcnKSA6ICcnKSxcclxuICAgICAgICAgIGNyZWF0ZWRfYnk6IChhc3NpZ25vckRldGFpbHMpID8gdGhpcy5tZW1iZXJJZCA6IDAsXHJcbiAgICAgICAgICByZXBvcnRfbmFtZTogcmVwb3J0LnJlc3BvbnNpYmlsaXR5TmFtZSA/PyAnJyxcclxuICAgICAgICAgIGVudHJ1c3RlZF90bzogcmVwb3J0LmFzc2lnbmVlLnNwbGl0KCcgKCcpWzBdID8/ICcnLFxyXG4gICAgICAgICAgZW50cnVzdGVkX3RvX2lkOiB0aGlzLnJldHVybklkcyhyZXBvcnQuYXNzaWduZWUsICdlbnRydXN0ZWRfdG8nKSxcclxuICAgICAgICAgIGVtYWlsX2FkZHJlc3M6IHJlcG9ydC5hc3NpZ25lZS5zcGxpdCgnICgnKVsxXS5yZXBsYWNlKCcpJywgJycpID8/ICcnLFxyXG4gICAgICAgICAgY2F0ZWdvcnlfbmFtZTogY2F0ZWdvcnlOYW1lLFxyXG4gICAgICAgICAgY2F0ZWdvcnlfbmFtZV93aXRoX3RyZWU6ICcnLFxyXG4gICAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5yZXNwb25zaWJpbGl0eUNhdGVnb3J5LCAnY2F0ZWdvcnlfaWQnKSxcclxuICAgICAgICAgIHJjX25hbWU6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5uYW1lIDogJycsXHJcbiAgICAgICAgICByY19pZDogcmNEZXRhaWxzID8gcmNEZXRhaWxzLnJjSWQgOiAwLFxyXG4gICAgICAgICAgZW50aXR5X3RyZWU6IChyY0RldGFpbHMgJiYgcmNEZXRhaWxzLnJjSWQgKSA/IFt7XHJcbiAgICAgICAgICAgIHBhcmVudF9yY19pZHM6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5wYXJlbnRJZHMgOiBbXSxcclxuICAgICAgICAgICAgcmNfaWQ6IHJjRGV0YWlscyA/IHJjRGV0YWlscy5yY0lkIDogMFxyXG4gICAgICAgICAgfV06W10sXHJcbiAgICAgICAgICBmcmVxdWVuY3lfaGFuZGxlcjogZnJlcXVlbmN5VmFsdWUsXHJcbiAgICAgICAgICBjb21wbGlhbmNlX3R5cGU6IGZyZXF1ZW5jeVZhbHVlLnNwbGl0KCd+JylbMF0sXHJcbiAgICAgICAgICBmcmVxdWVuY3lfZGVzY3JpcHRpb246IHJlcG9ydC5mcmVxdWVuY3ksXHJcbiAgICAgICAgICBzdGFydF9kYXRlOiAocmVwb3J0LmRheSkgPyBzdGFydERhdGUgOiBjdXJyZW50RGF0ZSArICcgMDA6MDA6MDAnLFxyXG4gICAgICAgICAgcmlza19jbGFzczogcmVwb3J0LnJlcG9ydENsYXNzID8/ICcnLFxyXG4gICAgICAgICAgcmlza19jbGFzc0lkOiAocmVwb3J0LnJlcG9ydENsYXNzKSA/IHRoaXMucmV0dXJuSWRzKHJlcG9ydC5yZXBvcnRDbGFzcywgJ3Jpc2tfY2xhc3MnKSA6ICgodGhpcy5yaXNrQ2xhc3NFbmFibGVkKSA/IDEgOiAyKSxcclxuICAgICAgICAgIGRvY191dGM6IDAsXHJcbiAgICAgICAgICBjb21tZW50OiByZXBvcnQubm90ZXMgPz8gJycsXHJcbiAgICAgICAgICBjY19tYWlsOiBjY0RldGFpbHMgPyBjY0RldGFpbHMuZW1haWwgOiAnJyxcclxuICAgICAgICAgIGNjX21haWxfaWQ6IGNjRGV0YWlscyA/IGNjRGV0YWlscy5lbXBsb3llZUlkIDogJycsXHJcbiAgICAgICAgICBjY19mYWlsZWRfbWFpbDogY2NGYWlsdXJlRGV0YWlscyA/IGNjRmFpbHVyZURldGFpbHMuZW1haWwgOiAnJyxcclxuICAgICAgICAgIGNjX2ZhaWx1cmVfaWQ6IGNjRmFpbHVyZURldGFpbHMgPyBjY0ZhaWx1cmVEZXRhaWxzLmVtcGxveWVlSWQgOiAwLFxyXG4gICAgICAgICAgc2VuZF9yZW1pbmRlcjogXCJcIixcclxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5V2luZG93OiAoZnJlcXVlbmN5VHlwZSA9PT0gJzEnKSA/IDAgOiBjb21wbGV0ZURheXMsXHJcbiAgICAgICAgICBmYWlsZWRfYWZ0ZXI6IG5vdENvbXBsZXRlRGF5cyxcclxuICAgICAgICAgIGV4Y2VsX3NoZWV0X25hbWU6IFwiXCIsXHJcbiAgICAgICAgICByZXBvcnRfdXBsb2FkX2ZsYWc6IChyZXBvcnQuZG9jdW1lbnRFdmlkZW5jZVJlcXVpcmVkID09PSAnWWVzJykgPyAxIDogMCxcclxuICAgICAgICAgIHJlcG9ydF9pZDogMCxcclxuICAgICAgICAgIGlzX2Fzc2lnbmVkX2ZsYWc6IDAsXHJcbiAgICAgICAgICBwcml2YXRlX2xpYnJhcnlfaWQ6IDAsXHJcbiAgICAgICAgICBrZXljb21wbGlhbmNlOiAocmVwb3J0LmtleVJlc3BvbnNpYmlsaXR5ID09PSAnWWVzJykgPyAnWWVzJyA6ICdObycsXHJcbiAgICAgICAgICBrZXlfY29tcGxpYW5jZTogKHJlcG9ydC5rZXlSZXNwb25zaWJpbGl0eSA9PT0gJ1llcycpID8gMSA6IDAsXHJcbiAgICAgICAgICByZXZpZXdlcklkOiByZXZpZXdlckRldGFpbHMgPyByZXZpZXdlckRldGFpbHMuZW1wbG95ZWVJZCA6IDAsXHJcbiAgICAgICAgICByZXZpZXdlcl9hcnI6ICggcmV2aWV3ZXJEZXRhaWxzICYmIHJldmlld2VyRGV0YWlscy5lbXBsb3llZUlkICk/IHtcclxuICAgICAgICAgICAgbGV2ZWwxOiB7XHJcbiAgICAgICAgICAgICAgcmV2aWV3ZXJzOiBbe1xyXG4gICAgICAgICAgICAgICAgbWVtYmVyX2lkOiByZXZpZXdlckRldGFpbHMgPyByZXZpZXdlckRldGFpbHMuZW1wbG95ZWVJZCA6IDAsXHJcbiAgICAgICAgICAgICAgICByZXZpZXdlcl9hY2NlcHQ6IDBcclxuICAgICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgICB0eXBlOiBcIlNFUVVFTlRJQUxcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9Ont9XHJcbiAgICAgICAgICAsXHJcbiAgICAgICAgICByZXZpZXdlcldpbmRvdzogcmVwb3J0LnJldmlld1RvQmVDb21wbGV0ZWRXaXRoaW4gPT09ICcnID8gMiA6IHJlcG9ydC5yZXZpZXdUb0JlQ29tcGxldGVkV2l0aGluLFxyXG4gICAgICAgICAgcmV2aWV3ZXJGYWlsdXJlOiByZXBvcnQucmV2aWV3V2lsbEJlRmFpbGVkQWZ0ZXIgPT09ICcnID8gMiA6IHJlcG9ydC5yZXZpZXdXaWxsQmVGYWlsZWRBZnRlcixcclxuICAgICAgICAgIHJldmlld2VyX2VtYWlsOiByZXZpZXdlckRldGFpbHMgPyByZXZpZXdlckRldGFpbHMuZW1haWwgOiAnJyxcclxuICAgICAgICAgIGZvcm1hdEZvclJlc3BvbnNpYmlsaXR5OiByZXBvcnQuZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHkgPyByZXBvcnQuZm9ybWF0Rm9yUmVzcG9uc2liaWxpdHkgOiAnJyxcclxuICAgICAgICAgIGRvY3VtZW50YXJ5RXZpZGVuY2U6IHJlcG9ydC5ub3RlcyA/PyAnJyxcclxuICAgICAgICAgIGlzZG9jdW1lbnRhcnlFdmlkZW5jZTogKHJlcG9ydC5kb2N1bWVudEV2aWRlbmNlUmVxdWlyZWQgPT09ICdZZXMnKSA/IDEgOiAwLFxyXG4gICAgICAgICAgb2JqZWN0aXZlOiByZXBvcnQub2JqZWN0aXZlID8/ICcnLFxyXG4gICAgICAgICAgZXhjZWxfc2hlZXRfaW5mbzogdGhpcy5maWxlUmVzcG9uc2UsXHJcbiAgICAgICAgICBzaG93TGlzdDogZmFsc2UsXHJcbiAgICAgICAgICBjdXN0b21fdGFnczogJ1tdJyxcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBheWxvYWQucHVzaChvYmopO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuYWRkQnVsa1Jlc3BvbnNpYmlsaXR5KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XHJcblxyXG4gICAgfSxcclxuICAgICAgZXJyID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsICdhbGVydCcpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIHJldHVybklkcyhpdGVtOiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlICdyY19pZCc6XHJcbiAgICAgICAgbGV0IHJjT2JqID0geyBuYW1lOiAnJywgcmNJZDogMCwgcGFyZW50SWRzOiBbXSB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChyY19lbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyY19lbGVtZW50Lm5hbWUgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBsZXQgbmFtZTtcclxuICAgICAgICAgICAgaWYgKHJjX2VsZW1lbnQubmFtZS5pbmNsdWRlcygnW1dJVEhJTl0nKSkge1xyXG4gICAgICAgICAgICAgIG5hbWUgPSByY19lbGVtZW50Lm5hbWUuc3BsaXQoJyBbV0lUSElOXSAnKVswXVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG5hbWUgPSByY19lbGVtZW50Lm5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmNPYmogPSB7IG5hbWUsIHJjSWQ6IHJjX2VsZW1lbnQucmNfaWQsIHBhcmVudElkczogcmNfZWxlbWVudC5wYXJlbnRJZHMgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmNPYmpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxyXG4gICAgICAgIGxldCByZXZpZXdlck9iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbmVlc0xpc3QuZm9yRWFjaCgocmV2aWV3ZXJFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXZpZXdlckVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgcmV2aWV3ZXJPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogcmV2aWV3ZXJFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1wbG95ZWVJZDogcmV2aWV3ZXJFbGVtZW50Lm15X21lbWJlcl9pZCxcclxuICAgICAgICAgICAgICBlbWFpbDogcmV2aWV3ZXJFbGVtZW50LmVtYWlsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmV2aWV3ZXJPYmo7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhc3NpZ25vcic6XHJcbiAgICAgICAgbGV0IGFzc2lnbm9yT2JqID0geyBuYW1lOiAnJywgbWVtYmVySWQ6IDAsIGVtYWlsOiAnJyB9O1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmFzc2lnbm9yc0xpc3QuZm9yRWFjaCgoYXNzaWdub3JFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChhc3NpZ25vckVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgYXNzaWdub3JPYmogPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogYXNzaWdub3JFbGVtZW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGFzc2lnbm9yRWxlbWVudC5lbWFpbCxcclxuICAgICAgICAgICAgICBtZW1iZXJJZDogYXNzaWdub3JFbGVtZW50Lm1lbWJlcl9pZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFzc2lnbm9yT2JqO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY2MnOlxyXG4gICAgICAgIGxldCBjY09iaiA9IHsgbmFtZTogJycsIGVtcGxveWVlSWQ6IDAsIGVtYWlsOiAnJyB9XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChjY0VsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNjRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBjY09iaiA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBjY0VsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiBjY0VsZW1lbnQuZW1wbG95ZWVfaWQsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGNjRWxlbWVudC5lbWFpbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNjT2JqO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjY0ZhaWx1cmUnOlxyXG4gICAgICAgIGxldCBjY2ZPYmogPSB7IG5hbWU6ICcnLCBlbXBsb3llZUlkOiAwLCBlbWFpbDogJycgfTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5hc3NpZ25lZXNMaXN0LmZvckVhY2goKGNjZkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNjZkVsZW1lbnQubmFtZUFuZEVtYWlsID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgY2NmT2JqID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGNjZkVsZW1lbnQubmFtZSxcclxuICAgICAgICAgICAgICBlbXBsb3llZUlkOiBjY2ZFbGVtZW50LmVtcGxveWVlX2lkLFxyXG4gICAgICAgICAgICAgIGVtYWlsOiBjY2ZFbGVtZW50LmVtYWlsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY2NmT2JqO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnZW50cnVzdGVkX3RvJzpcclxuICAgICAgICBsZXQgZW1wSWQgPSAwXHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uYXNzaWduZWVzTGlzdC5mb3JFYWNoKChlbkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVuRWxlbWVudC5uYW1lQW5kRW1haWwgPT0gaXRlbSkge1xyXG5cclxuICAgICAgICAgICAgZW1wSWQgPSBlbkVsZW1lbnQuZW1wbG95ZWVfaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGVtcElkXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5X2lkJzpcclxuICAgICAgICBsZXQgY2F0SWQgPSAwXHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8uY2F0ZWdvcnlMaXN0LmZvckVhY2goKGNhdGVnb3J5OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjYXRlZ29yeS5uYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgY2F0SWQgPSBjYXRlZ29yeS5jYXRlZ29yeV9pZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY2F0SWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdyaXNrX2NsYXNzJzpcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0gPT0gJ0xvdycpIHtcclxuICAgICAgICAgIHJldHVybiAxXHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09ICdMb3ctTWVkaXVtJykge1xyXG4gICAgICAgICAgcmV0dXJuIDJcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ01lZGl1bS1IaWdoJykge1xyXG4gICAgICAgICAgcmV0dXJuIDNcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT0gJ0hpZ2gnKSB7XHJcbiAgICAgICAgICByZXR1cm4gNFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMFxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xyXG4gICAgICBoZWFkZXI6IFtdLFxyXG4gICAgICByZXBvcnRzOiBbXSxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRlbXBsYXRlSW5mbyA9IHtcclxuICAgICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgICAgcmNMaXN0OiBbXSxcclxuICAgICAgYXNzaWdub3JzTGlzdDogW10sXHJcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxyXG4gICAgICBtZW1iZXJJZDogJydcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmZpbGVOYW1lID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkuZW1pdCgpO1xyXG5cclxuICB9XHJcbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQpIHtcclxuICAgICAgY2FzZSAnYWRkTW9yZSc6XHJcbiAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd2aWV3JzpcclxuICAgICAgICB0aGlzLnZpZXdSZXNwb25zaWJpbGl0aWVzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSwgY29uZmlybTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICB2aWV3UmVzcG9uc2liaWxpdGllcygpOiB2b2lkIHtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGxldCB1cmxTdWJzdHJpbmcgPSAnJztcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcpIHtcclxuICAgICAgaWYodGhpcy5mZWF0dXJlZmxhZyl7XHJcbiAgICAgICAgdXJsU3Vic3RyaW5nID0gJ2NvbXBsaWFuY2UvbWFuYWdlLXJlc3BvbnNpYmlsaXR5PycrIHRoaXMudXJsXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcy9yZXNwb25zaWJpbGl0aWVzLXF1ZXVlJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYodGhpcy5mZWF0dXJlZmxhZyl7XHJcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtID0gIEpTT04/LnN0cmluZ2lmeSh0aGlzLnJlY2VudFJlc3BvbnNpYmlsaXR5VXJsKVxyXG4gICAgICAgIHVybFN1YnN0cmluZyA9ICdjb21wbGlhbmNlL21hbmFnZS1yZXNwb25zaWJpbGl0eT9xPScrIHRoaXMucXVlcnlQYXJhbSA7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICB1cmxTdWJzdHJpbmcgPSAnY29tcGxpYW5jZS9tYW5hZ2UtcmVzcG9uc2liaWxpdGllcyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvY29tcGxpYW5jZS8jLycgKyB1cmxTdWJzdHJpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2NvbXBsaWFuY2UvIy8nICsgdXJsU3Vic3RyaW5nO1xyXG4gICAgfVxyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgfVxyXG5cclxuICAvLyBVcGxvYWQgRmlsZSB0byB0aGUgc2VydmVyXHJcbiAgZmlsZVVwbG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBjb25zdCBmaWxlID0gdGhpcy51cGxvYWRlZEZpbGVzWzBdWzBdO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdzb3VyY2VmaWxlJywgZmlsZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2Rlc3RpbmF0aW9uJywgJ2J1bGt1cGxvYWQvZW50cnVzdC8nICsgdGhpcy51c2VySW5mby5lbWFpbCk7XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5maWxlVXBsb2FkKGZvcm1EYXRhKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXM/LmZpbGVuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5maWxlUmVzcG9uc2UucHVzaChyZXMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcblxyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsICdhbGVydCcpO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2tcIiBbYXR0ci5pZF09XCInc2Nyb2xsUmVmZXJlbmNlJ1wiID5cclxuICAgIDwhLSAtIG1haW4gY29udGFpbmVyIHN0YXJ0cyBoZXJlIC0gLT5cclxuICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NwcmVhZHNoZWV0LW11bHRpcGxlLWNhdGVnb3J5LnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aDQ+WW91IGNhbiBlbnRydXN0IG11bHRpcGxlIHJlc3BvbnNpYmlsaXRpZXMgaW4ganVzdCB0d28gZWFzeSBzdGVwczo8L2g0PlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGFuZCBmaWxsIGluIHRoZSBkZXRhaWxzLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+VXBsb2FkIHRoZSAueGxzeCBmaWxlIGFuZCB5b3XigJlyZSBnb29kIHRvIGdvITwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZG93bmxvYWRcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBUZW1wbGF0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCI+XHJcbiAgICAgICAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xyXG4gICAgICAgICAgICAgICAgPGFwcC1saW5lLWxvYWRlciBbbG9hZGVySGVpZ2h0XT1cIicyJ1wiPjwvYXBwLWxpbmUtbG9hZGVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURFRCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpc1dyb25nRmlsZSB8fCBpc1dyb25nRm9ybWF0fHwgaXNGaWxlRW1wdHlcIlxyXG4gICAgICAgICAgICA+e3tlcnJvck1lc3NhZ2V9fTwvcD4gIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuPGFwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXcgKm5nSWY9XCJzaG93RXhjZWxcIlxyXG5bcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkXT1cInJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZFwiXHJcbltmaWxlTmFtZV09XCJmaWxlTmFtZVwiXHJcbltsb2FkZXJdPVwibG9hZGVyXCJcclxuW2RlZmF1bHRPd25lcl09XCJkZWZhdWx0T3duZXJcIlxyXG4oc3VibWl0UmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkKT1cInN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCgpXCJcclxuKGNhbmNlbCk9XCJyZXNldCgpXCJcclxuW3Jlc3BvbnNpYmlsaXR5VHlwZV09XCInc2luZ2xlVGFiJ1wiPjwvYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz5cclxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuXHJcbjxpbnB1dCB0eXBlPVwiZmlsZVwiIFsobmdNb2RlbCldPVwiZmlsZVZhbHVlXCIgaWQ9XCJmaWxlSW5wdXRcIiBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIGFjY2VwdD1cIi54bHN4XCIgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiIG11bHRpcGxlIC8+XHJcbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmUgKm5nSWY9XCJzaG93U21pbGV5XCIgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIiAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCIgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cclxuIl19