@eo-sdk/client 7.16.19 → 7.16.20

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 (33) hide show
  1. package/app/eo-framework-core/agent/agent.service.d.ts +3 -2
  2. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +4199 -4167
  3. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  4. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  5. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  6. package/bundles/eo-sdk-client.umd.js +11 -9
  7. package/bundles/eo-sdk-client.umd.js.map +1 -1
  8. package/bundles/eo-sdk-client.umd.min.js +1 -1
  9. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  10. package/eo-sdk-client.metadata.json +1 -1
  11. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  12. package/esm2015/app/eo-client/result-state/result-state.component.js +3 -3
  13. package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +2 -2
  14. package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +3 -3
  15. package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +4 -4
  16. package/esm2015/app/eo-framework-core/agent/agent.service.js +7 -5
  17. package/esm2015/projects/eo-sdk/core/lib/config/core-config.js +3 -1
  18. package/esm2015/projects/eo-sdk/core/lib/config/core-init.service.js +4 -2
  19. package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +4 -3
  20. package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +11 -7
  21. package/esm2015/projects/eo-sdk/core/lib/service/upload/upload.service.js +8 -4
  22. package/esm2015/projects/eo-sdk/core/lib/util/utils.js +25 -1
  23. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +3703 -3671
  24. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  25. package/fesm2015/eo-sdk-client.js +13 -11
  26. package/fesm2015/eo-sdk-client.js.map +1 -1
  27. package/package.json +2 -2
  28. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  29. package/projects/eo-sdk/core/lib/config/core-config.d.ts +1 -0
  30. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +3 -1
  31. package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +3 -1
  32. package/projects/eo-sdk/core/lib/util/utils.d.ts +3 -0
  33. package/projects/eo-sdk/core/package.json +1 -1
@@ -6,10 +6,10 @@ export class AboutStateComponent {
6
6
  this.http = http;
7
7
  this.userService = userService;
8
8
  this.config = config;
9
- this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "22.1.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "22.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/common", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/core", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/forms", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/router", "version": "11.2.0", "license": "MIT" }, { "name": "@eo-sdk/core", "version": "7.16.19", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "11.1.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "13.0.0", "license": "MIT" }, { "name": "@types/lodash", "version": "4.14.88", "license": "MIT" }, { "name": "core-js", "version": "2.5.7", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "keyboardevent-key-polyfill", "version": "1.1.0", "license": "CC0-1.0" }, { "name": "keycode-js", "version": "0.0.4", "license": "MIT" }, { "name": "mobile-drag-drop", "version": "2.2.0", "license": "MIT" }, { "name": "moment", "version": "2.22.2", "license": "MIT" }, { "name": "ngx-toastr", "version": "13.2.0", "license": "MIT" }, { "name": "primeicons", "version": "1.0.0-beta.6", "license": "MIT" }, { "name": "primeng", "version": "6.0.0-beta.1", "license": "MIT" }, { "name": "reflect-metadata", "version": "0.1.10", "license": "Apache-2.0" }, { "name": "rxjs", "version": "6.6.3", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.1.0", "license": "0BSD" }, { "name": "zone.js", "version": "0.10.3", "license": "MIT" }];
9
+ this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "22.1.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "22.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/common", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/core", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/forms", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/router", "version": "11.2.0", "license": "MIT" }, { "name": "@eo-sdk/core", "version": "7.16.20", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "11.1.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "13.0.0", "license": "MIT" }, { "name": "@types/lodash", "version": "4.14.88", "license": "MIT" }, { "name": "core-js", "version": "2.5.7", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "keyboardevent-key-polyfill", "version": "1.1.0", "license": "CC0-1.0" }, { "name": "keycode-js", "version": "0.0.4", "license": "MIT" }, { "name": "mobile-drag-drop", "version": "2.2.0", "license": "MIT" }, { "name": "moment", "version": "2.22.2", "license": "MIT" }, { "name": "ngx-toastr", "version": "13.2.0", "license": "MIT" }, { "name": "primeicons", "version": "1.0.0-beta.6", "license": "MIT" }, { "name": "primeng", "version": "6.0.0-beta.1", "license": "MIT" }, { "name": "reflect-metadata", "version": "0.1.10", "license": "Apache-2.0" }, { "name": "rxjs", "version": "6.6.3", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.1.0", "license": "0BSD" }, { "name": "zone.js", "version": "0.10.3", "license": "MIT" }];
10
10
  this.ctrl = {
11
11
  productName: 'yuuvis® RAD client',
12
- clientVersion: '7.16.19'
12
+ clientVersion: '7.16.20'
13
13
  };
14
14
  this.licenses = {
15
15
  'MIT': {
@@ -78,4 +78,4 @@ AboutStateComponent.ctorParameters = () => [
78
78
  { type: UserService },
79
79
  { type: Config }
80
80
  ];
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvYWJvdXQtc3RhdGUvYWJvdXQtc3RhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQUUsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBT2pELE1BQU0sT0FBTyxtQkFBbUI7SUFvRDlCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0IsRUFBVSxNQUFjO1FBQTFFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFoRDlGLGtCQUFhLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBQyw0QkFBNEIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywwQ0FBMEMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx5QkFBeUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywrQkFBK0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsbUJBQW1CLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGdCQUFnQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLDJCQUEyQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLG1DQUFtQyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGlCQUFpQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxlQUFlLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsbUJBQW1CLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyw0QkFBNEIsRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGtCQUFrQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxZQUFZLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7UUFJdjlELFNBQUksR0FBRztZQUNMLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsYUFBYSxFQUFFLFNBQVM7U0FDekIsQ0FBQztRQUVGLGFBQVEsR0FBRztZQUNULEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsb0NBQW9DO2FBQzVDO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixLQUFLLEVBQUUsNENBQTRDO2FBQ3BEO1lBQ0Qsb0JBQW9CLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixLQUFLLEVBQUUsNkNBQTZDO2FBQ3JEO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE9BQU8sRUFBRSxTQUFTO2dCQUNsQixLQUFLLEVBQUUsb0RBQW9EO2FBQzVEO1lBQ0QsbUJBQW1CLEVBQUU7Z0JBQ25CLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxvQ0FBb0M7YUFDNUM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsS0FBSyxFQUFFLGdDQUFnQzthQUN4QztZQUNELFlBQVksRUFBRTtnQkFDWixPQUFPLEVBQUUsWUFBWTthQUN0QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxPQUFPLEVBQUUsMkRBQTJEO2dCQUNwRSxLQUFLLEVBQUUsc0VBQXNFO2FBQzlFO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxxQ0FBcUM7YUFDN0M7U0FDRixDQUFDO1FBSUEsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQztJQUM3RSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLElBQUksbUNBQU8sSUFBSSxLQUFFLElBQUksR0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVc7YUFDYixLQUFLO2FBQ0wsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUE3RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLDRvU0FBMkM7O2FBRTVDOzs7WUFQTyxVQUFVO1lBQ1YsV0FBVztZQUFFLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlLCBDb25maWd9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWFib3V0LXN0YXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWJvdXQtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fib3V0LXN0YXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFib3V0U3RhdGVDb21wb25lbnQge1xyXG5cclxuICBiYWNrZ3JvdW5kSW1hZ2U6IHN0cmluZztcclxuICBsaWNlbnNlU2hvdzogYm9vbGVhbjtcclxuICBfX2xpYnJhcmllc19fID0gW3tcIm5hbWVcIjpcIkBhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyXCIsXCJ2ZXJzaW9uXCI6XCIyMi4xLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsXCIsXCJ2ZXJzaW9uXCI6XCIyMi4xLjFcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY29yZVwiLFwidmVyc2lvblwiOlwiMjIuMS4xXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFnLWdyaWQtY29tbXVuaXR5L2Nzdi1leHBvcnRcIixcInZlcnNpb25cIjpcIjIyLjEuMVwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIixcInZlcnNpb25cIjpcIjExLjIuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2Nka1wiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29tbW9uXCIsXCJ2ZXJzaW9uXCI6XCIxMS4yLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYW5ndWxhci9jb21waWxlclwiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29yZVwiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvZm9ybXNcIixcInZlcnNpb25cIjpcIjExLjIuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIixcInZlcnNpb25cIjpcIjExLjIuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pY1wiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvcm91dGVyXCIsXCJ2ZXJzaW9uXCI6XCIxMS4yLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAZW8tc2RrL2NvcmVcIixcInZlcnNpb25cIjpcIjcuMTYuMTlcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAbmd4LXB3YS9sb2NhbC1zdG9yYWdlXCIsXCJ2ZXJzaW9uXCI6XCIxMS4xLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCIsXCJ2ZXJzaW9uXCI6XCIxMy4wLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAdHlwZXMvbG9kYXNoXCIsXCJ2ZXJzaW9uXCI6XCI0LjE0Ljg4XCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiY29yZS1qc1wiLFwidmVyc2lvblwiOlwiMi41LjdcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJmaWxlLXNhdmVyXCIsXCJ2ZXJzaW9uXCI6XCIyLjAuNVwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcImZvbnQtYXdlc29tZVwiLFwidmVyc2lvblwiOlwiNC43LjBcIixcImxpY2Vuc2VcIjpcIihPRkwtMS4xIEFORCBNSVQpXCJ9LHtcIm5hbWVcIjpcImtleWJvYXJkZXZlbnQta2V5LXBvbHlmaWxsXCIsXCJ2ZXJzaW9uXCI6XCIxLjEuMFwiLFwibGljZW5zZVwiOlwiQ0MwLTEuMFwifSx7XCJuYW1lXCI6XCJrZXljb2RlLWpzXCIsXCJ2ZXJzaW9uXCI6XCIwLjAuNFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIm1vYmlsZS1kcmFnLWRyb3BcIixcInZlcnNpb25cIjpcIjIuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwibW9tZW50XCIsXCJ2ZXJzaW9uXCI6XCIyLjIyLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJuZ3gtdG9hc3RyXCIsXCJ2ZXJzaW9uXCI6XCIxMy4yLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJwcmltZWljb25zXCIsXCJ2ZXJzaW9uXCI6XCIxLjAuMC1iZXRhLjZcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJwcmltZW5nXCIsXCJ2ZXJzaW9uXCI6XCI2LjAuMC1iZXRhLjFcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJyZWZsZWN0LW1ldGFkYXRhXCIsXCJ2ZXJzaW9uXCI6XCIwLjEuMTBcIixcImxpY2Vuc2VcIjpcIkFwYWNoZS0yLjBcIn0se1wibmFtZVwiOlwicnhqc1wiLFwidmVyc2lvblwiOlwiNi42LjNcIixcImxpY2Vuc2VcIjpcIkFwYWNoZS0yLjBcIn0se1wibmFtZVwiOlwidHNsaWJcIixcInZlcnNpb25cIjpcIjIuMS4wXCIsXCJsaWNlbnNlXCI6XCIwQlNEXCJ9LHtcIm5hbWVcIjpcInpvbmUuanNcIixcInZlcnNpb25cIjpcIjAuMTAuM1wiLFwibGljZW5zZVwiOlwiTUlUXCJ9XTtcclxuICB1c2VyTGFuZzogc3RyaW5nO1xyXG4gIGRvY3U6IHsgbGluazogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH07XHJcblxyXG4gIGN0cmwgPSB7XHJcbiAgICBwcm9kdWN0TmFtZTogJ3l1dXZpc8KuIFJBRCBjbGllbnQnLFxyXG4gICAgY2xpZW50VmVyc2lvbjogJzcuMTYuMTknXHJcbiAgfTtcclxuXHJcbiAgbGljZW5zZXMgPSB7XHJcbiAgICAnTUlUJzoge1xyXG4gICAgICAnbGFiZWwnOiAnTUlUJyxcclxuICAgICAgJ3VybCc6ICdodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUJ1xyXG4gICAgfSxcclxuICAgICdBcGFjaGUtMi4wJzoge1xyXG4gICAgICAnbGFiZWwnOiAnQXBhY2hlIDIuMCcsXHJcbiAgICAgICd1cmwnOiAnaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wJ1xyXG4gICAgfSxcclxuICAgICdCU0QtMy1DbGF1c2UtQ2xlYXInOiB7XHJcbiAgICAgICdsYWJlbCc6ICdCU0QgMy1DbGF1c2UnLFxyXG4gICAgICAndXJsJzogJ2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UnXHJcbiAgICB9LFxyXG4gICAgJ0NDMC0xLjAnOiB7XHJcbiAgICAgICdsYWJlbCc6ICdDQzAgMS4wJyxcclxuICAgICAgJ3VybCc6ICdodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLydcclxuICAgIH0sXHJcbiAgICAnKE9GTC0xLjEgQU5EIE1JVCknOiB7XHJcbiAgICAgICdsYWJlbCc6ICdNSVQnLFxyXG4gICAgICAndXJsJzogJ2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQnXHJcbiAgICB9LFxyXG4gICAgJ1NJTE9GTC0xLjEnOiB7XHJcbiAgICAgICdsYWJlbCc6ICdTSUwgT3BlbiBGb250IExpY2Vuc2UgMS4xJyxcclxuICAgICAgJ3VybCc6ICdodHRwOi8vc2NyaXB0cy5zaWwub3JnL09GTF93ZWInXHJcbiAgICB9LFxyXG4gICAgJ0NvbW1lcmNpYWwnOiB7XHJcbiAgICAgICdsYWJlbCc6ICdDb21tZXJjaWFsJ1xyXG4gICAgfSxcclxuICAgICdhZy1ncmlkJzoge1xyXG4gICAgICAnbGFiZWwnOiAnYWctR3JpZC1FbnRlcnByaXNlIFNvZnR3YXJlIExpY2VuY2UgQWdyZWVtZW50IFZlcnNpb24gMS43JyxcclxuICAgICAgJ3VybCc6ICdodHRwczovL2dpdGh1Yi5jb20vY2VvbHRlci9hZy1ncmlkLWVudGVycHJpc2UvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZCdcclxuICAgIH0sXHJcbiAgICAnMEJTRCc6IHtcclxuICAgICAgJ2xhYmVsJzogJ1plcm8tQ2xhdXNlIEJTRCcsXHJcbiAgICAgICd1cmwnOiAnaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzLzBCU0QnXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcclxuICAgIHRoaXMuZ2V0VXNlckxhbmcoKTtcclxuICAgIHRoaXMuZ2V0RG9jdW1lbnRhdGlvbigpO1xyXG4gICAgdGhpcy5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dGhpcy5jb25maWcuZ2V0RGFzaGJvYXJkQmFja2dyb3VuZEltYWdlKCl9KWA7XHJcbiAgfVxyXG5cclxuICBnZXREb2N1bWVudGF0aW9uKCkge1xyXG4gICAgY29uc3QgZG9jdSA9IHRoaXMuY29uZmlnLmdldFJhdygnYWJvdXQuZG9jdScpO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3UubGluay5yZXBsYWNlKCcjIyN1c2VyTGFuZyMjIycsIHRoaXMudXNlckxhbmcuc3Vic3RyaW5nKDAsIDIpKTtcclxuICAgIHRoaXMuZG9jdSA9IHsuLi5kb2N1LCBsaW5rfTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJMYW5nKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAudXNlciRcclxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHRoaXMudXNlckxhbmcgPSBkYXRhLnVzZXJTZXR0aW5ncy5jbGllbnRsb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbn1cclxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvYWJvdXQtc3RhdGUvYWJvdXQtc3RhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQUUsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBT2pELE1BQU0sT0FBTyxtQkFBbUI7SUFvRDlCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0IsRUFBVSxNQUFjO1FBQTFFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFoRDlGLGtCQUFhLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBQyw0QkFBNEIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywwQ0FBMEMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx5QkFBeUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywrQkFBK0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsbUJBQW1CLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGdCQUFnQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLDJCQUEyQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLG1DQUFtQyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGlCQUFpQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxlQUFlLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsbUJBQW1CLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyw0QkFBNEIsRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGtCQUFrQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxZQUFZLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7UUFJdjlELFNBQUksR0FBRztZQUNMLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsYUFBYSxFQUFFLFNBQVM7U0FDekIsQ0FBQztRQUVGLGFBQVEsR0FBRztZQUNULEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsb0NBQW9DO2FBQzVDO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixLQUFLLEVBQUUsNENBQTRDO2FBQ3BEO1lBQ0Qsb0JBQW9CLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixLQUFLLEVBQUUsNkNBQTZDO2FBQ3JEO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE9BQU8sRUFBRSxTQUFTO2dCQUNsQixLQUFLLEVBQUUsb0RBQW9EO2FBQzVEO1lBQ0QsbUJBQW1CLEVBQUU7Z0JBQ25CLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxvQ0FBb0M7YUFDNUM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsS0FBSyxFQUFFLGdDQUFnQzthQUN4QztZQUNELFlBQVksRUFBRTtnQkFDWixPQUFPLEVBQUUsWUFBWTthQUN0QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxPQUFPLEVBQUUsMkRBQTJEO2dCQUNwRSxLQUFLLEVBQUUsc0VBQXNFO2FBQzlFO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxxQ0FBcUM7YUFDN0M7U0FDRixDQUFDO1FBSUEsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQztJQUM3RSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLElBQUksbUNBQU8sSUFBSSxLQUFFLElBQUksR0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVc7YUFDYixLQUFLO2FBQ0wsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUE3RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLDRvU0FBMkM7O2FBRTVDOzs7WUFQTyxVQUFVO1lBQ1YsV0FBVztZQUFFLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlLCBDb25maWd9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWFib3V0LXN0YXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWJvdXQtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fib3V0LXN0YXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFib3V0U3RhdGVDb21wb25lbnQge1xyXG5cclxuICBiYWNrZ3JvdW5kSW1hZ2U6IHN0cmluZztcclxuICBsaWNlbnNlU2hvdzogYm9vbGVhbjtcclxuICBfX2xpYnJhcmllc19fID0gW3tcIm5hbWVcIjpcIkBhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyXCIsXCJ2ZXJzaW9uXCI6XCIyMi4xLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsXCIsXCJ2ZXJzaW9uXCI6XCIyMi4xLjFcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY29yZVwiLFwidmVyc2lvblwiOlwiMjIuMS4xXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFnLWdyaWQtY29tbXVuaXR5L2Nzdi1leHBvcnRcIixcInZlcnNpb25cIjpcIjIyLjEuMVwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIixcInZlcnNpb25cIjpcIjExLjIuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2Nka1wiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29tbW9uXCIsXCJ2ZXJzaW9uXCI6XCIxMS4yLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYW5ndWxhci9jb21waWxlclwiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29yZVwiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvZm9ybXNcIixcInZlcnNpb25cIjpcIjExLjIuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIixcInZlcnNpb25cIjpcIjExLjIuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pY1wiLFwidmVyc2lvblwiOlwiMTEuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvcm91dGVyXCIsXCJ2ZXJzaW9uXCI6XCIxMS4yLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAZW8tc2RrL2NvcmVcIixcInZlcnNpb25cIjpcIjcuMTYuMjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAbmd4LXB3YS9sb2NhbC1zdG9yYWdlXCIsXCJ2ZXJzaW9uXCI6XCIxMS4xLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCIsXCJ2ZXJzaW9uXCI6XCIxMy4wLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAdHlwZXMvbG9kYXNoXCIsXCJ2ZXJzaW9uXCI6XCI0LjE0Ljg4XCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiY29yZS1qc1wiLFwidmVyc2lvblwiOlwiMi41LjdcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJmaWxlLXNhdmVyXCIsXCJ2ZXJzaW9uXCI6XCIyLjAuNVwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcImZvbnQtYXdlc29tZVwiLFwidmVyc2lvblwiOlwiNC43LjBcIixcImxpY2Vuc2VcIjpcIihPRkwtMS4xIEFORCBNSVQpXCJ9LHtcIm5hbWVcIjpcImtleWJvYXJkZXZlbnQta2V5LXBvbHlmaWxsXCIsXCJ2ZXJzaW9uXCI6XCIxLjEuMFwiLFwibGljZW5zZVwiOlwiQ0MwLTEuMFwifSx7XCJuYW1lXCI6XCJrZXljb2RlLWpzXCIsXCJ2ZXJzaW9uXCI6XCIwLjAuNFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIm1vYmlsZS1kcmFnLWRyb3BcIixcInZlcnNpb25cIjpcIjIuMi4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwibW9tZW50XCIsXCJ2ZXJzaW9uXCI6XCIyLjIyLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJuZ3gtdG9hc3RyXCIsXCJ2ZXJzaW9uXCI6XCIxMy4yLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJwcmltZWljb25zXCIsXCJ2ZXJzaW9uXCI6XCIxLjAuMC1iZXRhLjZcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJwcmltZW5nXCIsXCJ2ZXJzaW9uXCI6XCI2LjAuMC1iZXRhLjFcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJyZWZsZWN0LW1ldGFkYXRhXCIsXCJ2ZXJzaW9uXCI6XCIwLjEuMTBcIixcImxpY2Vuc2VcIjpcIkFwYWNoZS0yLjBcIn0se1wibmFtZVwiOlwicnhqc1wiLFwidmVyc2lvblwiOlwiNi42LjNcIixcImxpY2Vuc2VcIjpcIkFwYWNoZS0yLjBcIn0se1wibmFtZVwiOlwidHNsaWJcIixcInZlcnNpb25cIjpcIjIuMS4wXCIsXCJsaWNlbnNlXCI6XCIwQlNEXCJ9LHtcIm5hbWVcIjpcInpvbmUuanNcIixcInZlcnNpb25cIjpcIjAuMTAuM1wiLFwibGljZW5zZVwiOlwiTUlUXCJ9XTtcclxuICB1c2VyTGFuZzogc3RyaW5nO1xyXG4gIGRvY3U6IHsgbGluazogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH07XHJcblxyXG4gIGN0cmwgPSB7XHJcbiAgICBwcm9kdWN0TmFtZTogJ3l1dXZpc8KuIFJBRCBjbGllbnQnLFxyXG4gICAgY2xpZW50VmVyc2lvbjogJzcuMTYuMjAnXHJcbiAgfTtcclxuXHJcbiAgbGljZW5zZXMgPSB7XHJcbiAgICAnTUlUJzoge1xyXG4gICAgICAnbGFiZWwnOiAnTUlUJyxcclxuICAgICAgJ3VybCc6ICdodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUJ1xyXG4gICAgfSxcclxuICAgICdBcGFjaGUtMi4wJzoge1xyXG4gICAgICAnbGFiZWwnOiAnQXBhY2hlIDIuMCcsXHJcbiAgICAgICd1cmwnOiAnaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wJ1xyXG4gICAgfSxcclxuICAgICdCU0QtMy1DbGF1c2UtQ2xlYXInOiB7XHJcbiAgICAgICdsYWJlbCc6ICdCU0QgMy1DbGF1c2UnLFxyXG4gICAgICAndXJsJzogJ2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UnXHJcbiAgICB9LFxyXG4gICAgJ0NDMC0xLjAnOiB7XHJcbiAgICAgICdsYWJlbCc6ICdDQzAgMS4wJyxcclxuICAgICAgJ3VybCc6ICdodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLydcclxuICAgIH0sXHJcbiAgICAnKE9GTC0xLjEgQU5EIE1JVCknOiB7XHJcbiAgICAgICdsYWJlbCc6ICdNSVQnLFxyXG4gICAgICAndXJsJzogJ2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQnXHJcbiAgICB9LFxyXG4gICAgJ1NJTE9GTC0xLjEnOiB7XHJcbiAgICAgICdsYWJlbCc6ICdTSUwgT3BlbiBGb250IExpY2Vuc2UgMS4xJyxcclxuICAgICAgJ3VybCc6ICdodHRwOi8vc2NyaXB0cy5zaWwub3JnL09GTF93ZWInXHJcbiAgICB9LFxyXG4gICAgJ0NvbW1lcmNpYWwnOiB7XHJcbiAgICAgICdsYWJlbCc6ICdDb21tZXJjaWFsJ1xyXG4gICAgfSxcclxuICAgICdhZy1ncmlkJzoge1xyXG4gICAgICAnbGFiZWwnOiAnYWctR3JpZC1FbnRlcnByaXNlIFNvZnR3YXJlIExpY2VuY2UgQWdyZWVtZW50IFZlcnNpb24gMS43JyxcclxuICAgICAgJ3VybCc6ICdodHRwczovL2dpdGh1Yi5jb20vY2VvbHRlci9hZy1ncmlkLWVudGVycHJpc2UvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZCdcclxuICAgIH0sXHJcbiAgICAnMEJTRCc6IHtcclxuICAgICAgJ2xhYmVsJzogJ1plcm8tQ2xhdXNlIEJTRCcsXHJcbiAgICAgICd1cmwnOiAnaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzLzBCU0QnXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcclxuICAgIHRoaXMuZ2V0VXNlckxhbmcoKTtcclxuICAgIHRoaXMuZ2V0RG9jdW1lbnRhdGlvbigpO1xyXG4gICAgdGhpcy5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dGhpcy5jb25maWcuZ2V0RGFzaGJvYXJkQmFja2dyb3VuZEltYWdlKCl9KWA7XHJcbiAgfVxyXG5cclxuICBnZXREb2N1bWVudGF0aW9uKCkge1xyXG4gICAgY29uc3QgZG9jdSA9IHRoaXMuY29uZmlnLmdldFJhdygnYWJvdXQuZG9jdScpO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3UubGluay5yZXBsYWNlKCcjIyN1c2VyTGFuZyMjIycsIHRoaXMudXNlckxhbmcuc3Vic3RyaW5nKDAsIDIpKTtcclxuICAgIHRoaXMuZG9jdSA9IHsuLi5kb2N1LCBsaW5rfTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJMYW5nKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAudXNlciRcclxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHRoaXMudXNlckxhbmcgPSBkYXRhLnVzZXJTZXR0aW5ncy5jbGllbnRsb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbn1cclxuIl19
@@ -1,6 +1,6 @@
1
1
  import { takeUntil } from 'rxjs/operators';
2
2
  import { Component } from '@angular/core';
3
- import { NotificationsService } from '@eo-sdk/core';
3
+ import { NotificationsService, Utils } from '@eo-sdk/core';
4
4
  import { TranslateService } from '@eo-sdk/core';
5
5
  import { ActivatedRoute, Router } from '@angular/router';
6
6
  import { PageTitleService } from '../../eo-framework-core/title/page-title.service';
@@ -26,7 +26,7 @@ export class ResultStateComponent extends UnsubscribeOnDestroy {
26
26
  if (params.query) {
27
27
  if (!!this.pendingChanges.check())
28
28
  return;
29
- this.query = JSON.parse(decodeURIComponent(params.query));
29
+ this.query = Utils.formDataParse(decodeURIComponent(params.query));
30
30
  this.typeName = this.query.types && this.query.types.length === 1 ? this.query.types[0] : 'default';
31
31
  this.clearAfterExecute = params.silent;
32
32
  this.searchTerm = this.query.term;
@@ -70,4 +70,4 @@ ResultStateComponent.ctorParameters = () => [
70
70
  { type: NotificationsService },
71
71
  { type: TranslateService }
72
72
  ];
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXN0YXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L3Jlc3VsdC1zdGF0ZS9yZXN1bHQtc3RhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBZSxvQkFBb0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFDLGNBQWMsRUFBb0IsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDbEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFFL0YsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDdEcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFPckYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG9CQUFvQjtJQVE1RCxZQUFvQixjQUFxQyxFQUMvQyxLQUFxQixFQUNyQixZQUE4QixFQUM5QixTQUEyQixFQUMzQixNQUFjLEVBQ2QsTUFBNEIsRUFDN0IsU0FBMkI7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFQVSxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDL0MsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVRwQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixhQUFRLEdBQUcsU0FBUyxDQUFDO1FBVW5CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUUxRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7YUFDbkIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FDcEM7YUFDQSxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFO29CQUFFLE9BQU87Z0JBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNwRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNuQztZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDZixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDcEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFvQjtRQUMzQixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BELE1BQU0sV0FBVyxHQUFxQixFQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxFQUFDLENBQUM7WUFDbkYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzFFO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUE1REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDQvQkFBNEM7O2FBRTdDOzs7WUFQTyxxQkFBcUI7WUFKckIsY0FBYztZQUNkLGdCQUFnQjtZQUloQixnQkFBZ0I7WUFMa0IsTUFBTTtZQUYxQixvQkFBb0I7WUFDbEMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VGl0bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge1NlYXJjaFJlc3VsdCwgTm90aWZpY2F0aW9uc1NlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3RpdGxlL3BhZ2UtdGl0bGUuc2VydmljZSc7XHJcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMtY29tcG9uZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLXJlc3VsdC1zdGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0LXN0YXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3VsdFN0YXRlQ29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50IHtcclxuXHJcbiAgcXVlcnk6IGFueTtcclxuICBjbGVhckFmdGVyRXhlY3V0ZTogYm9vbGVhbjtcclxuICBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgb3BlbkltbWVkaWF0ZWx5ID0gZmFsc2U7XHJcbiAgdHlwZU5hbWUgPSAnZGVmYXVsdCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG5vdGlmeTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0QmFzZVRpdGxlKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC50aXRsZScpKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocGFyYW1zLnF1ZXJ5KSB7XHJcbiAgICAgICAgICBpZiAoISF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrKCkpIHJldHVybjtcclxuICAgICAgICAgIHRoaXMucXVlcnkgPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChwYXJhbXMucXVlcnkpKTtcclxuICAgICAgICAgIHRoaXMudHlwZU5hbWUgPSB0aGlzLnF1ZXJ5LnR5cGVzICYmIHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID09PSAxID8gdGhpcy5xdWVyeS50eXBlc1swXSA6ICdkZWZhdWx0JztcclxuICAgICAgICAgIHRoaXMuY2xlYXJBZnRlckV4ZWN1dGUgPSBwYXJhbXMuc2lsZW50O1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gdGhpcy5xdWVyeS50ZXJtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyYW1zLm9wZW4pIHtcclxuICAgICAgICAgIHRoaXMub3BlbkltbWVkaWF0ZWx5ID0gcGFyYW1zLm9wZW47XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhc1BlbmRpbmdDaGFuZ2VzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2soKTtcclxuICB9XHJcblxyXG4gIG9uUmVzdWx0KHJlc3VsdDogU2VhcmNoUmVzdWx0KSB7XHJcbiAgICBpZiAocmVzdWx0LmNvdW50LnZhbHVlID09PSAxICYmIHRoaXMub3BlbkltbWVkaWF0ZWx5KSB7XHJcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3R5cGUnOiByZXN1bHQuaGl0c1swXS50eXBlfX07XHJcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCByZXN1bHQuaGl0c1swXS5pZF0sIHF1ZXJ5UGFyYW1zKTtcclxuICAgIH1cclxuICAgIHRoaXMub3BlbkltbWVkaWF0ZWx5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblF1ZXJ5SW52YWxpZCgpIHtcclxuICAgIHRoaXMubm90aWZ5Lndhcm5pbmcodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnF1ZXJ5LmludmFsaWQnKSk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXN0YXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L3Jlc3VsdC1zdGF0ZS9yZXN1bHQtc3RhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBZSxvQkFBb0IsRUFBRSxLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBQyxjQUFjLEVBQW9CLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBRS9GLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBT3JGLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFRNUQsWUFBb0IsY0FBcUMsRUFDL0MsS0FBcUIsRUFDckIsWUFBOEIsRUFDOUIsU0FBMkIsRUFDM0IsTUFBYyxFQUNkLE1BQTRCLEVBQzdCLFNBQTJCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBUFUsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQy9DLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFUcEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsYUFBUSxHQUFHLFNBQVMsQ0FBQztRQVVuQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO2FBQ25CLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQ3BDO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDekIsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUNoQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRTtvQkFBRSxPQUFPO2dCQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDcEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDbkM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBb0I7UUFDM0IsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwRCxNQUFNLFdBQVcsR0FBcUIsRUFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsRUFBQyxDQUFDO1lBQ25GLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMxRTtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7O1lBNURGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQiw0L0JBQTRDOzthQUU3Qzs7O1lBUE8scUJBQXFCO1lBSnJCLGNBQWM7WUFDZCxnQkFBZ0I7WUFJaEIsZ0JBQWdCO1lBTGtCLE1BQU07WUFGMUIsb0JBQW9CO1lBQ2xDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RpdGxlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtTZWFyY2hSZXN1bHQsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvdGl0bGUvcGFnZS10aXRsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcclxuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy1jb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XHJcbmltcG9ydCB7U2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZW8tcmVzdWx0LXN0YXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0LXN0YXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN1bHQtc3RhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdWx0U3RhdGVDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgUGVuZGluZ0NoYW5nZXNDb21wb25lbnQge1xyXG5cclxuICBxdWVyeTogYW55O1xyXG4gIGNsZWFyQWZ0ZXJFeGVjdXRlOiBib29sZWFuO1xyXG4gIHNlYXJjaFRlcm06IHN0cmluZztcclxuICBvcGVuSW1tZWRpYXRlbHkgPSBmYWxzZTtcclxuICB0eXBlTmFtZSA9ICdkZWZhdWx0JztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcclxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbm90aWZ5OiBOb3RpZmljYXRpb25zU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRCYXNlVGl0bGUodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnRpdGxlJykpO1xyXG5cclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChwYXJhbXMucXVlcnkpIHtcclxuICAgICAgICAgIGlmICghIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2soKSkgcmV0dXJuO1xyXG4gICAgICAgICAgdGhpcy5xdWVyeSA9IFV0aWxzLmZvcm1EYXRhUGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHBhcmFtcy5xdWVyeSkpO1xyXG4gICAgICAgICAgdGhpcy50eXBlTmFtZSA9IHRoaXMucXVlcnkudHlwZXMgJiYgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDEgPyB0aGlzLnF1ZXJ5LnR5cGVzWzBdIDogJ2RlZmF1bHQnO1xyXG4gICAgICAgICAgdGhpcy5jbGVhckFmdGVyRXhlY3V0ZSA9IHBhcmFtcy5zaWxlbnQ7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSB0aGlzLnF1ZXJ5LnRlcm07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJhbXMub3Blbikge1xyXG4gICAgICAgICAgdGhpcy5vcGVuSW1tZWRpYXRlbHkgPSBwYXJhbXMub3BlbjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFzUGVuZGluZ0NoYW5nZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzaygpO1xyXG4gIH1cclxuXHJcbiAgb25SZXN1bHQocmVzdWx0OiBTZWFyY2hSZXN1bHQpIHtcclxuICAgIGlmIChyZXN1bHQuY291bnQudmFsdWUgPT09IDEgJiYgdGhpcy5vcGVuSW1tZWRpYXRlbHkpIHtcclxuICAgICAgY29uc3QgcXVlcnlQYXJhbXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsndHlwZSc6IHJlc3VsdC5oaXRzWzBdLnR5cGV9fTtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIHJlc3VsdC5oaXRzWzBdLmlkXSwgcXVlcnlQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVuSW1tZWRpYXRlbHkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uUXVlcnlJbnZhbGlkKCkge1xyXG4gICAgdGhpcy5ub3RpZnkud2FybmluZyh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2gucXVlcnkuaW52YWxpZCcpKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -505,7 +505,7 @@ export class AppSearchComponent {
505
505
  // query and display the results
506
506
  triggerSearch() {
507
507
  this.query.resolveReference = true;
508
- const uriParam = encodeURIComponent(JSON.stringify(this.query.getQueryJson()));
508
+ const uriParam = encodeURIComponent(Utils.formDataStringify(this.query.getQueryJson()));
509
509
  this.router.navigate([{ outlets: { modal: null } }]).then(() => {
510
510
  const uriParamQuery = { queryParams: { query: uriParam } };
511
511
  this.router.navigate(['/result'], uriParamQuery);
@@ -721,4 +721,4 @@ AppSearchComponent.propDecorators = {
721
721
  contextForm: [{ type: ViewChild, args: ['ctxform',] }],
722
722
  onExecuteSearch: [{ type: Output }]
723
723
  };
724
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9hcHAtc2hlbGwvYXBwLWJhci9hcHAtc2VhcmNoL2FwcC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLElBQUksa0JBQWtCLEVBQzlCLElBQUksSUFBSSxjQUFjLEVBQ3RCLEVBQUUsSUFBSSxZQUFZLEVBRWxCLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUdULFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLE1BQU0sRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQVF4RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDekYsT0FBTyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsVUFBVSxFQUVWLFlBQVksRUFDWixXQUFXLEVBRVgsYUFBYSxFQUNiLGFBQWEsRUFDYixNQUFNLEVBQ04sbUJBQW1CLEVBRW5CLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsS0FBSyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFFakIsTUFBTSxjQUFjLENBQUM7QUFXdEIsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQixrQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBRlcs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SFosU0FBUztZQUNULGlCQUFpQjtZQTBCakIsb0JBQW9CO1lBRnBCLG1CQUFtQjtZQVZuQixXQUFXO1lBZVgsY0FBYztZQU5kLE1BQU07OzswQkFxQ0wsU0FBUyxTQUFDLGFBQWE7MEJBQ3ZCLFNBQVMsU0FBQyxTQUFTOzRCQUNuQixTQUFTLFNBQUMsU0FBUzswQkFDbkIsU0FBUyxTQUFDLFNBQVM7OEJBaURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sXHJcbiAgZnJvbSBhcyBvYnNlcnZhYmxlRnJvbSxcclxuICBvZiBhcyBvYnNlcnZhYmxlT2YsXHJcbiAgU3Vic2NyaXB0aW9uLFxyXG4gIFN1YmplY3RcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtwbHVjaywgc3dpdGNoTWFwLCB3aXRoTGF0ZXN0RnJvbSwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXIsIE5hdmlnYXRpb25FeHRyYXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvdGl0bGUvcGFnZS10aXRsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIE9iamVjdEZvcm1PcHRpb25zLFxyXG4gIEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnRcclxufSBmcm9tICcuLi8uLi8uLi9vYmplY3QtZm9ybS9pbmRleCc7XHJcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdwcmltZW5nL3ByaW1lbmcnO1xyXG5pbXBvcnQge05nRm9ybX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0xvY2FsZURhdGVQaXBlfSBmcm9tICcuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcclxuaW1wb3J0IHtBcHBTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBVc2VyU2VydmljZSxcclxuICBTdG9yZWRRdWVyeSxcclxuICBSYW5nZVZhbHVlLFxyXG4gIE9iamVjdFR5cGUsXHJcbiAgU2VhcmNoRmlsdGVyLFxyXG4gIFNlYXJjaFF1ZXJ5LFxyXG4gIFNlYXJjaFN0YXRlLFxyXG4gIFNlYXJjaFNlcnZpY2UsXHJcbiAgU3lzdGVtU2VydmljZSxcclxuICBMb2dnZXIsXHJcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcclxuICBDYXBhYmlsaXRpZXMsXHJcbiAgU3RvcmVkUXVlcmllc1NlcnZpY2UsXHJcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgVXRpbHMsXHJcbiAgUHJlcGFyZVNlcnZpY2UsXHJcbiAgVHJhbnNsYXRlU2VydmljZSxcclxuICBRdWVyeVNjb3BlXHJcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWR4U2VhcmNoIHtcclxuICB0eXBlOiBPYmplY3RUeXBlO1xyXG4gIGNvbnRleHRGb2xkZXJUeXBlOiBPYmplY3RUeXBlO1xyXG4gIGNvbnRleHRNb2RlbHM/OiBhbnlbXTtcclxuICBjb250ZXh0QWdncmVnYXRpb25zPzoge307XHJcbiAgY29udGV4dEZvcm1PcHRpb25zPzogT2JqZWN0Rm9ybU9wdGlvbnM7XHJcbiAgZm9ybU9wdGlvbnM/OiBPYmplY3RGb3JtT3B0aW9ucztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQ29udGV4dFR5cGUge1xyXG4gICdzeXNyb290JyA9ICdzeXNyb290J1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWFwcC1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG4gIC8vIHRvZG86IGFwcGx5IG9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIChhZ2cgc2VhcmNoIHJlc3VsdCByaWdodCBub3cgZG9lc24ndCB1cGRhdGUpXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBQQVJBTVMgPSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUztcclxuICBPUEVSQVRPUiA9IFNlYXJjaEZpbHRlci5PUEVSQVRPUjtcclxuICBxdWVyeVNjb3BlOiBRdWVyeVNjb3BlO1xyXG5cclxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0OiBBdXRvQ29tcGxldGU7XHJcbiAgQFZpZXdDaGlsZCgneHBpbnB1dCcpIGV4cGVydElucHV0OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2lkeGZvcm0nKSBpbmRleGRhdGFGb3JtOiBPYmplY3RGb3JtQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2N0eGZvcm0nKSBjb250ZXh0Rm9ybTogT2JqZWN0Rm9ybUNvbXBvbmVudDtcclxuXHJcbiAgcHJpdmF0ZSBxdWVyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcXVlcnlTdGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHF1ZXJ5OiBTZWFyY2hRdWVyeTtcclxuICBxdWVyeVN0YXRlOiBTZWFyY2hTdGF0ZTtcclxuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcclxuICBhY3RpdmVUYWJJbmRleDogbnVtYmVyID0gMDtcclxuICBsb2FkaW5nOiBib29sZWFuO1xyXG5cclxuICBpc1N0b3JlZFF1ZXJ5OiBib29sZWFuO1xyXG4gIGlzT3duUXVlcnkgPSBmYWxzZTtcclxuICBvYmplY3RUeXBlR3JvdXBzID0gW107XHJcbiAgdHlwZUdyb3VwVHJlZSA9IFtdO1xyXG4gIGF1dG9jb21wbGV0ZVJlc3VsdHM6IHN0cmluZ1tdO1xyXG5cclxuICBpZHhTZWFyY2g6IElkeFNlYXJjaDtcclxuICBjdXJyZW50Q29udGV4dEZvbGRlck5hbWU7XHJcblxyXG4gIGV4cGVydE1vZGVRdWVyeUVtcHR5ID0gZmFsc2U7XHJcbiAgZXhwZXJ0TW9kZVN1cHBvcnQgPSB7XHJcbiAgICBiYXNlUGFyYW1zOiBbXSxcclxuICAgIHNlbGVjdGVkR3JvdXA6IG51bGwsXHJcbiAgICBzZWxlY3RlZFR5cGU6IG51bGxcclxuICB9O1xyXG5cclxuICBmaWx0ZXJzTW9kZWwgPSB7fTtcclxuICBhZ2dyZWdhdGlvbnNNb2RlbCA9IHt9O1xyXG4gIGRhdGVQaXBlOiBMb2NhbGVEYXRlUGlwZTtcclxuICBzeXNSb290Q29udGV4dCA9IHtcclxuICAgIGlkOiBudWxsLFxyXG4gICAgbmFtZTogQ29udGV4dFR5cGUuc3lzcm9vdCxcclxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5hZGQudGl0bGUubG9jYXRpb24uY29tbW9uJyksXHJcbiAgICBzaXR1YXRpb246ICdTRUFSQ0gnLFxyXG4gICAgbW9kZTogJ0NPTlRFWFQnLFxyXG4gICAgY29udGV4dEZvcm1PcHRpb25zOiB7XHJcbiAgICAgIGZvcm1Nb2RlbDoge25hbWU6IENvbnRleHRUeXBlLnN5c3Jvb3R9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgX3NlbGVjdGVkOiBudW1iZXIgPSBudWxsO1xyXG4gIHNldCBzZWxlY3RlZChpbmRleCkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZCA9PT0gaW5kZXggPyBudWxsIDogaW5kZXg7XHJcbiAgfVxyXG5cclxuICBnZXQgc2VsZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25FeGVjdXRlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBnZXQgc3RvcmVkUXVlcnkoKTogU3RvcmVkUXVlcnkge1xyXG4gICAgcmV0dXJuIHRoaXMucXVlcnkgYXMgU3RvcmVkUXVlcnk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBwU2VhcmNoU2VydmljZTogQXBwU2VhcmNoU2VydmljZSxcclxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FwYWJpbGl0eVNlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclxyXG4gICkge1xyXG5cclxuICAgIHRoaXMuZGF0ZVBpcGUgPSBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKTtcclxuXHJcbiAgICB0aGlzLmV4cGVydE1vZGVTdXBwb3J0LmJhc2VQYXJhbXMgPSBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykubWFwKGsgPT4ge1xyXG4gICAgICBsZXQgZGF0YSA9IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5nbG9iYWwuYmFzZXBhcmFtLicgKyBkYXRhKSxcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFURURdID0gT2JqZWN0LmtleXMoXHJcbiAgICAgIFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNcclxuICAgICkubWFwKGsgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGtleTogU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1trXSxcclxuICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAnZW8uc2VhcmNoLmFnZy50aW1lLicgKyBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTW2tdXHJcbiAgICAgICAgKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFRF0gPSBPYmplY3Qua2V5cyhcclxuICAgICAgU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1xyXG4gICAgKS5tYXAoayA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5OiBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTW2tdLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICdlby5zZWFyY2guYWdnLnRpbWUuJyArIFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNba11cclxuICAgICAgICApXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1JTUVUWVBFR1JPVVBdID0gT2JqZWN0LmtleXMoXHJcbiAgICAgIFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUU1xyXG4gICAgKS5tYXAoayA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5OiBTZWFyY2hRdWVyeS5NSU1FVFlQRUdST1VQX0JVQ0tFVFNba10sXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIGxhYmVsOiBTZWFyY2hRdWVyeS5NSU1FVFlQRUdST1VQX0JVQ0tFVFNba11cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkVdID0gT2JqZWN0LmtleXMoXHJcbiAgICAgIFNlYXJjaFF1ZXJ5LkZJTEVfU0laRV9CVUNLRVRTXHJcbiAgICApLm1hcChrID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IFNlYXJjaFF1ZXJ5LkZJTEVfU0laRV9CVUNLRVRTW2tdLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBTZWFyY2hRdWVyeS5GSUxFX1NJWkVfQlVDS0VUU1trXVxyXG4gICAgICAgIClcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25UYWJDaGFuZ2UodGFiSW5kZXgpIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0YWJJbmRleDtcclxuICAgIGlmICh0YWJJbmRleCA9PT0gMCkgey8vIHR5cGVzXHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRBZ2dzKHtcclxuICAgICAgICB0eXBlOiB7fVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodGFiSW5kZXggPT09IDEpIHsvLyBjcmVhdGVkXHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRBZ2dzKHtcclxuICAgICAgICB0eXBlOiB7fSxcclxuICAgICAgICBjcmVhdGVkOiB7fVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodGFiSW5kZXggPT09IDIpIHsvLyBtb2RpZmllZFxyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0QWdncyh7XHJcbiAgICAgICAgdHlwZToge30sXHJcbiAgICAgICAgbW9kaWZpZWQ6IHt9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0YWJJbmRleCA9PT0gMykgey8vIGZpbGVcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xyXG4gICAgICAgIHR5cGU6IHt9LFxyXG4gICAgICAgIG1pbWV0eXBlZ3JvdXA6IHt9LFxyXG4gICAgICAgIGZpbGVzaXplOiB7fVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc1F1ZXJ5KHF1ZXJ5OiBTZWFyY2hRdWVyeSkge1xyXG4gICAgLy8gSU1QT1JUQU5UOiBuZXZlciBjaGFuZ2UgdGhlIGxvY2FsIHF1ZXJ5IGRpcmVjdGx5XHJcbiAgICAvLyB1c2Ugc2VhcmNoU2VydmljZSwgc28gZXZlcnkgY29tcG9uZW50cyBzdWJzY3JpYmVkIHRvIHRoZSBxdWVyeVxyXG4gICAgLy8gd2lsbCBnZXQgdGhlIG5ldyB2YWx1ZVxyXG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xyXG4gICAgdGhpcy5jdXJyZW50Q29udGV4dEZvbGRlck5hbWUgPSB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGhcclxuICAgICAgPyB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5uYW1lXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHRoaXMuaXNTdG9yZWRRdWVyeSA9IHF1ZXJ5IGluc3RhbmNlb2YgU3RvcmVkUXVlcnk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdG9yZWRRdWVyeSkge1xyXG4gICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICB0aGlzLmlzT3duUXVlcnkgPVxyXG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkudXNlci50b0xvd2VyQ2FzZSgpID09PSB1c2VyLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykuZm9yRWFjaChrID0+IHRoaXMucHJvY2Vzc0ZpbHRlcnMoaykpO1xyXG4gICAgLy8gaWYgd2UgaGF2ZSBhbiBpbmRleGRhdGEgc2VhcmNoIHVzaW5nIGEgY29udGV4dCBidXQgdGhlIGNvbnRleHQgd2FzIHJlbW92ZWRcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLmlkeFNlYXJjaCAmJlxyXG4gICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9ybU9wdGlvbnNcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9ybU9wdGlvbnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9sZGVyVHlwZSA9IG51bGw7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoRmlsdGVyRnJvbUZvcm1EYXRhKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBzZXR1cCBhbiBpbmRleGRhdGEgc2VhcmNoXHJcbiAgICBjb25zdCB1cGRhdGVDYXVzZWRCeVR5cGVUb2dnbGUgPSB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPT09IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX1RZUEU7XHJcbiAgICBpZiAodGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDEgJiYgIXVwZGF0ZUNhdXNlZEJ5VHlwZVRvZ2dsZSkge1xyXG4gICAgICAvLyBoYXZpbmcganVzdCBvbmUgdGFyZ2V0IHR5cGUgYW5kIGEgY29udGV4dCB0eXBlIHNldHVwIG1lYW5zLCB0aGF0IHdlIGFyZSB1c2luZyBpbmRleGRhdGEgc2VhcmNoXHJcbiAgICAgIHRoaXMuaW5kZXhkYXRhU2VhcmNoKFxyXG4gICAgICAgIHRoaXMucXVlcnkudHlwZXNbMF0sXHJcbiAgICAgICAgdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoID4gMCA/IHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdIDogbnVsbFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmdldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKHRoaXMucXVlcnkpLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICAvLyBoYXZpbmcganVzdCBvbmUgdGFyZ2V0IHR5cGUgYW5kIGluZGV4ZGF0YSBmaWx0ZXJzIGFsc28gbWVhbnMsIHRoYXQgd2UgYXJlIHVzaW5nIGluZGV4ZGF0YSBzZWFyY2hcclxuICAgICAgdGhpcy5pbmRleGRhdGFTZWFyY2godGhpcy5xdWVyeS50eXBlc1swXSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAvLyByZXNldCBpbmRleGRhdGEgc2VhcmNoIG90aGVyd2lzZSwgYmVjYXVzZSB0aGUgY3VycmVudCBxdWVyeSBtYXkgYmUgcmVzZXQgZnJvbSBvdXQgc2lkZSAoZS5nLiBieSBhIHN0b3JlZCBxdWVyeSlcclxuICAgICAgdGhpcy5pZHhTZWFyY2ggPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChxdWVyeS5leHBlcnRNb2RlKSB7XHJcbiAgICAgIHRoaXMudHlwZUdyb3VwVHJlZSA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5idWlsZFR5cGVHcm91cFRyZWUoKTtcclxuICAgIH1cclxuICAgIHRoaXMucXVlcnlTY29wZSA9IHF1ZXJ5LnNjb3BlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE9iamVjdFR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xyXG4gICAgLyoqIHNldCB1cCB0aGUgcmlnaHQgdHlwZSBmaWx0ZXIgaWYgbm90IGFscmVhZHkgZG9uZSAqL1xyXG4gICAgY29uc3QgcXVlcnlUeXBlc0xlbmd0aCA9XHJcbiAgICAgIHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID4gMSB8fCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMDtcclxuICAgIGNvbnN0IHF1ZXJ5VHlwZXNMZW5ndGhBbmROYW1lID1cclxuICAgICAgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5xdWVyeS50eXBlc1swXS5uYW1lICE9PSB0eXBlLm5hbWU7XHJcbiAgICBpZiAocXVlcnlUeXBlc0xlbmd0aCB8fCBxdWVyeVR5cGVzTGVuZ3RoQW5kTmFtZSkge1xyXG4gICAgICAvLyBzZXR0aW5nIG9iamVjdCB0eXBlcyB3aWxsIGVtaXQgYSBuZXcgcXVlcnkuIFRoaXMgd2lsbCB0aGVuIHRha2UgY2FyZSBvZlxyXG4gICAgICAvLyBzZXR0aW5nIHVwIHRoZSBpbmRleGRhdGEgZm9ybVxyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0UXVlcnlUeXBlcyhbdHlwZV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB1cCBpbmRleGRhdGEgc2VhcmNoIGZvciBhIGdpdmVuIG9iamVjdCB0eXBlXHJcbiAgICogQHBhcmFtIHR5cGUgLSBhbiBvYmplY3QgdHlwZVxyXG4gICAqIEBwYXJhbSBjb250ZXh0Rm9sZGVyVHlwZSAtIGNvbnRleHQgZm9sZGVyIHR5cGVcclxuICAgKi9cclxuICBwdWJsaWMgaW5kZXhkYXRhU2VhcmNoKHR5cGU6IE9iamVjdFR5cGUsIGNvbnRleHRGb2xkZXJUeXBlPzogT2JqZWN0VHlwZSkge1xyXG4gICAgaWYgKCF0eXBlIHx8IHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5xdWVyeS50eXBlc1swXS5uYW1lID09PSB0eXBlLm5hbWUpIHtcclxuICAgICAgLyoqIGV2ZW4gaWYgd2Ugc2VsZWN0IGEgdHlwZSB0aGF0IGlzIGFscmVhZHkgc2VsZWN0ZWQsIHdlIG5lZWQgdG8gY2FsbCBhZ2dyZWdhdGUgYXMgdGhlcmUgbWF5IGJlIGNvbnRleHQgdHlwZXMgaW52b2x2ZWQgKi9cclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xyXG4gICAgICAgIHR5cGU6IHtcclxuICAgICAgICAgIHN1Yjoge1xyXG4gICAgICAgICAgICBjb250ZXh0Zm9sZGVydHlwZToge31cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRydWUpO1xyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXNSb290VHlwZSA9ICEhdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnR5cGVzQWxsb3dlZFVuZGVyU3lzcm9vdC5maW5kKHJUID0+IHJULnFuYW1lID09PSB0eXBlLnFuYW1lKTtcclxuXHJcbiAgICB0aGlzLmlkeFNlYXJjaCA9IHtcclxuICAgICAgdHlwZSxcclxuICAgICAgY29udGV4dEZvbGRlclR5cGUsXHJcbiAgICAgIGNvbnRleHRNb2RlbHM6IGlzUm9vdFR5cGUgPyBbdGhpcy5zeXNSb290Q29udGV4dF0gOiBbXSxcclxuICAgICAgZm9ybU9wdGlvbnM6IG51bGxcclxuICAgIH07XHJcblxyXG4gICAgLyoqIGZldGNoIGNvbnRleHQgdHlwZSBtb2RlbHMgKi9cclxuICAgIGlmICh0eXBlLmFsbG93ZWRjb250ZXh0dHlwZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHRvRmV0Y2ggPSBbXTtcclxuICAgICAgdHlwZS5hbGxvd2VkY29udGV4dHR5cGVzLmZvckVhY2goY29udGV4dFR5cGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9iamVjdFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShjb250ZXh0VHlwZS5uYW1lKTtcclxuICAgICAgICBpZiAob2JqZWN0VHlwZSkge1xyXG4gICAgICAgICAgdG9GZXRjaC5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZUZvcm0oXHJcbiAgICAgICAgICAgICAgY29udGV4dFR5cGUubmFtZSxcclxuICAgICAgICAgICAgICAnU0VBUkNIJyxcclxuICAgICAgICAgICAgICAnQ09OVEVYVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodG9GZXRjaC5sZW5ndGgpIHtcclxuICAgICAgICBvYnNlcnZhYmxlRm9ya0pvaW4odG9GZXRjaCkuc3Vic2NyaWJlKGZvcm1Nb2RlbHMgPT4ge1xyXG4gICAgICAgICAgLyoqIGFic3RyYWN0IGNvbnRleHQgdHlwZXMgc2hvdWxkIG5vdCBiZSB1c2VkICovXHJcbiAgICAgICAgICB0aGlzLmFkZENvbnRleHRNb2RlbChmb3JtTW9kZWxzKTtcclxuICAgICAgICAgIC8qKiBpZiB0aGVyZSB3YXMgYSBjb250ZXh0IHR5cGUgcHJvdmlkZWQgYnkgdGhlIHF1ZXJ5LCB3ZSdsbCBzZXR1cCB0aGUgcmlnaHQgbW9kZWwgYXMgd2VsbCAqL1xyXG4gICAgICAgICAgaWYgKGNvbnRleHRGb2xkZXJUeXBlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gdGhpcy5pZHhTZWFyY2guY29udGV4dE1vZGVscy5maW5kKFxyXG4gICAgICAgICAgICAgIG0gPT4gbS5uYW1lID09PSBjb250ZXh0Rm9sZGVyVHlwZS5uYW1lXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBpZiAobW9kZWwpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdENvbnRleHQobW9kZWwpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHRGb2xkZXJUeXBlLm5hbWUgPT09IENvbnRleHRUeXBlLnN5c3Jvb3QpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdENvbnRleHQodGhpcy5zeXNSb290Q29udGV4dCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLyoqIHRoZSBwcm92aWRlZCBjb250ZXh0IHR5cGUgZG9lcyBub3QgZXhpc3QgYW55IG1vcmUsIHNvIGp1c3QgcmVtb3ZlIGl0ICovXHJcbiAgICAgICAgICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEZvbGRlclR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgZm9ybURhdGE7XHJcbiAgICBsZXQgaWR4RmlsdGVycyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycygpO1xyXG4gICAgaWYgKGlkeEZpbHRlcnMgJiYgaWR4RmlsdGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vIHNldCB1cCBmb3JtIGRhdGEgZnJvbSBpbmRleGRhdGEgcXVlcnkgZmlsdGVyc1xyXG4gICAgICBmb3JtRGF0YSA9IGlkeEZpbHRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zeXN0ZW1TZXJ2aWNlXHJcbiAgICAgIC5nZXRPYmplY3RUeXBlRm9ybSh0eXBlLm5hbWUsICdTRUFSQ0gnKVxyXG4gICAgICAuc3Vic2NyaWJlKG1vZGVsID0+IHtcclxuICAgICAgICB0aGlzLmlkeFNlYXJjaC5mb3JtT3B0aW9ucyA9IHtcclxuICAgICAgICAgIGZvcm1Nb2RlbDogbW9kZWwsXHJcbiAgICAgICAgICBkYXRhOiBmb3JtRGF0YVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUXVlcnlTdGF0ZShxdWVyeVN0YXRlOiBTZWFyY2hTdGF0ZSkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnF1ZXJ5U3RhdGUgPSBxdWVyeVN0YXRlO1xyXG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoKSB7XHJcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRBZ2dyZWdhdGlvbnMgPSB7fTtcclxuICAgICAgaWYgKHF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLmNvbnRleHRUeXBlLnNpemUpIHtcclxuICAgICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0QWdncmVnYXRpb25zID0gdGhpcy5idWlsZENvbnRleHRBZ2dyZWdhdGlvbnMocXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMuY29udGV4dFR5cGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2F2ZSBhZ2dyZWdhdGlvbnMgdmFsdWVzXHJcbiAgICBpZiAoIXRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRV0gfHwgIXRoaXMucXVlcnkudHlwZXMubGVuZ3RoIHx8IHF1ZXJ5U3RhdGUubGFzdENoYW5nZSAhPT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSkge1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEVdID0gbmV3IE1hcChxdWVyeVN0YXRlLmFnZ3JlZ2F0aW9ucy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN5bmNBZ2dyZWdhdGlvbnMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRCwgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFKTtcclxuICAgIHRoaXMuc3luY0FnZ3JlZ2F0aW9ucyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFRCwgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFKTtcclxuICAgIHRoaXMuc3luY0FnZ3JlZ2F0aW9ucyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQLCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU4pO1xyXG4gICAgdGhpcy5zeW5jQWdncmVnYXRpb25zKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkZJTEVTSVpFLCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0UpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRDb250ZXh0QWdncmVnYXRpb25zKGNvbnRleHRUeXBlKSB7XHJcbiAgICBsZXQgY29udGV4dEFnZ3JlZ2F0aW9ucyA9IHt9O1xyXG4gICAgY29udGV4dFR5cGUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gY29udGV4dEFnZ3JlZ2F0aW9uc1trZXldID0gdmFsdWUpO1xyXG4gICAgcmV0dXJuIGNvbnRleHRBZ2dyZWdhdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzRmlsdGVycyhrOiBzdHJpbmcpIHtcclxuICAgIGxldCBmOiBTZWFyY2hGaWx0ZXIgPSB0aGlzLnF1ZXJ5LmZpbHRlcnMuZmluZChmZiA9PiBmZi5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba10pO1xyXG4gICAgaWYgKCFmKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdXSA9IHtcclxuICAgICAgICB2YWx1ZTogbnVsbCxcclxuICAgICAgICBtdWx0aVZhbHVlOiBbXSxcclxuICAgICAgICBpbm5lclZhbHVlOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgIXRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldIHx8XHJcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmZpbHRlciAhPT0gZlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldID0ge307XHJcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmZpbHRlciA9IGY7XHJcbiAgICAgIGxldCB2YWx1ZTogYW55ID1cclxuICAgICAgICB0eXBlb2YgZi5maXJzdFZhbHVlID09PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgICAgZi5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOXHJcbiAgICAgICAgICA/IEpTT04ucGFyc2UoZi5maXJzdFZhbHVlKVxyXG4gICAgICAgICAgOiBmLmZpcnN0VmFsdWUuY29uY2F0KFtdKTtcclxuICAgICAgaWYgKGYub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLm11bHRpVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS52YWx1ZSA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZi5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRCB8fFxyXG4gICAgICAgICAgZi5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRURcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHZhbHVlID0gbmV3IFJhbmdlVmFsdWUoZi5vcGVyYXRvciwgZi5maXJzdFZhbHVlLCBmLnNlY29uZFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0udmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5tdWx0aVZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5pbm5lclZhbHVlID1cclxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5sYWJlbCA9IFtdO1xyXG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5pbm5lclZhbHVlLmZvckVhY2goKHY6IGFueSwgaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZi5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRPUiB8fFxyXG4gICAgICAgICAgZi5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRVJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmxhYmVsW2ldID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubGFiZWxbaV0gPSBvYnNlcnZhYmxlT2YoXHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRmlsdGVyKGYsIHYpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzeW5jQWdncmVnYXRpb25zKG5hbWUsIG9wZXJhdG9yKSB7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW25hbWVdLmZvckVhY2goYWdnID0+IHtcclxuICAgICAgbGV0IGEgPSB0aGlzLnF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zW25hbWVdLmZpbmQoYWEgPT4gYWEua2V5ID09PSBhZ2cua2V5KTtcclxuICAgICAgaWYgKGEgJiYgYS52YWx1ZSAhPT0gYWdnLnZhbHVlKSB7XHJcbiAgICAgICAgYWdnLnZhbHVlID0gYS52YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmICghYSAmJiB0aGlzLnF1ZXJ5U3RhdGUubGFzdENoYW5nZSAhPT0gbmFtZSkge1xyXG4gICAgICAgIGFnZy52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGFnZy5zZWxlY3RlZCA9IHRoaXMuaXNGaWx0ZXJBY3RpdmUobmFtZSwgb3BlcmF0b3IsIGFnZy5rZXkpO1xyXG4gICAgICBhZ2cuc2F2ZWQgPSAhYSAmJiB0aGlzLnF1ZXJ5U3RhdGUubGFzdENoYW5nZSA9PT0gbmFtZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTUlNRVRZUEVHUk9VUF0uc29ydChVdGlscy5zb3J0VmFsdWVzKCd2YWx1ZScsICdkZXNjJykpO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyLCB2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGVSZXN0cmljdGlvbihmaWx0ZXIpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbZmlsdGVyLnByb3BlcnR5XSkge1xyXG4gICAgICBsZXQgYWdnID0gdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtmaWx0ZXIucHJvcGVydHldLmZpbmQoYSA9PiBhLmtleSA9PT0gdmFsdWUpO1xyXG4gICAgICByZXR1cm4gYWdnLmxhYmVsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRGF0ZVJlc3RyaWN0aW9uKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XHJcbiAgICBzd2l0Y2ggKGZpbHRlci5vcGVyYXRvcikge1xyXG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRTpcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgZW8uc2VhcmNoLmFnZy50aW1lLiR7ZmlsdGVyLmZpcnN0VmFsdWV9YCk7XHJcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMOlxyXG4gICAgICAgIHJldHVybiBgPSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xyXG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEg6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydCcpfSAtICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLnNlY29uZFZhbHVlLCAnZW9TaG9ydCcpfWA7XHJcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkdSRUFURVJfT1JfRVFVQUw6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS5zcGFuLnNpbmNlJyl9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0Jyl9YDtcclxuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTEVTU19PUl9FUVVBTDpcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4udW50aWwnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnQnKX1gO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgKCR7ZmlsdGVyLm9wZXJhdG9yfSkgJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnQnKX1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZUxhYmVsKG1vZGVsOiBhbnksIHZhbHVlOiBhbnlbXSkge1xyXG4gICAgbW9kZWwubGFiZWwuZm9yRWFjaCgobCwgaSkgPT4gbC5uZXh0KHZhbHVlW2ldLnRpdGxlKSk7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlU2VsZWN0aW9uKGFnZ3M6IGFueVtdLCBrZXk6IHN0cmluZywgc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBhZ2dzXHJcbiAgICAgIC5maWx0ZXIoYSA9PiBzZWxlY3RlZCA/IGEua2V5ICE9PSBrZXkgJiYgYS5zZWxlY3RlZCA6IGEua2V5ID09PSBrZXkgfHwgYS5zZWxlY3RlZClcclxuICAgICAgLm1hcChhID0+IGEua2V5KTtcclxuICB9XHJcblxyXG4gIHJlc2V0RXhwZXJ0TW9kZUlucHV0KCkge1xyXG4gICAgdGhpcy5xdWVyeS50ZXJtID0gJyc7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlRXhwZXJ0TW9kZSgpIHtcclxuICAgIGlmICh0aGlzLnR5cGVHcm91cFRyZWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMudHlwZUdyb3VwVHJlZSA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5idWlsZFR5cGVHcm91cFRyZWUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVFeHBlcnRNb2RlKCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuY2hhbmdlU2VhcmNoSW5wdXRGb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRRdWVyeVNjb3BlKHNjb3BlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB4cFNlbGVjdEdyb3VwKGdyb3VwKSB7XHJcbiAgICB0aGlzLmV4cGVydE1vZGVTdXBwb3J0LnNlbGVjdGVkR3JvdXAgPSBncm91cDtcclxuICAgIHRoaXMuZXhwZXJ0TW9kZVN1cHBvcnQuc2VsZWN0ZWRUeXBlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB4cFNlbGVjdFR5cGUodHlwZSkge1xyXG4gICAgdGhpcy5leHBlcnRNb2RlU3VwcG9ydC5zZWxlY3RlZFR5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHhwQWRkVG9UZXJtKHN0cikge1xyXG4gICAgbGV0IHRlcm07XHJcbiAgICBpZiAoIXRoaXMucXVlcnkudGVybSkge1xyXG4gICAgICB0ZXJtID0gc3RyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGVybSA9IHRoaXMucXVlcnkudGVybSArICcgJyArIHN0cjtcclxuICAgIH1cclxuICAgIHRoaXMucXVlcnkudGVybSA9IHRlcm0gKyAnOic7XHJcbiAgICB0aGlzLmV4cGVydElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVUeXBlKF90eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICAvLyBkbyBub3QgZGlyZWN0bHkgdG9nZ2xlIF90eXBlIG9uIHRoZSBxdWVyeSwgaW5zdGVhZCB1c2UgdGhlXHJcbiAgICAvLyBzZWFyY2hTZXJ2aWNlIHRvIHVwZGF0ZSB0aGUgcXVlcnkgc3RvcmVcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVRdWVyeVR5cGUoX3R5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzVHlwZUFjdGl2ZShfdHlwZTogT2JqZWN0VHlwZSkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5xdWVyeS50eXBlcy5maW5kKHQgPT4gdC5pZCA9PT0gX3R5cGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzVHlwZVNhdmVkKF90eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICByZXR1cm4gKCF0aGlzLnF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLnR5cGUuZ2V0KF90eXBlLm5hbWUpICYmIHRoaXMucXVlcnlTdGF0ZS5sYXN0Q2hhbmdlID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFKTtcclxuICB9XHJcblxyXG4gIGdldEFnZ3JlZ2F0aW9uQ291bnQoX3R5cGU6IE9iamVjdFR5cGUpIHtcclxuICAgIHJldHVybiAoKHRoaXMuaXNUeXBlU2F2ZWQoX3R5cGUpID8gdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFXS5nZXQoX3R5cGUubmFtZSkgOiB0aGlzLnF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLnR5cGUuZ2V0KF90eXBlLm5hbWUpKSB8fCAnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRmlsdGVyKGZpbHRlclR5cGUsIG9wZXJhdG9yLCBrZXkpIHtcclxuICAgIGlmIChrZXkgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBuZXcgU2VhcmNoRmlsdGVyKGZpbHRlclR5cGUsIGtleS5vcGVyYXRvciwga2V5LmZpcnN0VmFsdWUsIGtleS5zZWNvbmRWYWx1ZSwge3RpbWU6IGtleS5vcGVyYXRvciAhPT0gdGhpcy5PUEVSQVRPUi5FUVVBTCwgdGltZXpvbmU6IGZhbHNlfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IFNlYXJjaEZpbHRlcihmaWx0ZXJUeXBlLCBvcGVyYXRvciwga2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRGaWx0ZXIoZmlsdGVyVHlwZTogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nLCBrZXk6IGFueSwgZm9ybT86IE5nRm9ybSkge1xyXG4gICAgbGV0IGZpbHRlciA9IHRoaXMuYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XHJcbiAgICBsZXQgZW1wdHkgPSB0aGlzLmlzRW1wdHkoZmlsdGVyKTtcclxuICAgIGxldCBhY3RpdmVGaWx0ZXIgPSB0aGlzLnF1ZXJ5LmZpbHRlcnMuZmluZChmZiA9PiBmZi5wcm9wZXJ0eSA9PT0gZmlsdGVyLnByb3BlcnR5KTtcclxuICAgIGxldCBkdXBsaWNhdGUgPSB0aGlzLmlzRmlsdGVyQWN0aXZlKGZpbHRlclR5cGUsIG9wZXJhdG9yLCBrZXkpO1xyXG5cclxuICAgIGlmIChlbXB0eSAmJiBhY3RpdmVGaWx0ZXIgJiYgYWN0aXZlRmlsdGVyLm9wZXJhdG9yICE9PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0UpIHtcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlbW92ZVF1ZXJ5RmlsdGVyKGZpbHRlcik7XHJcbiAgICB9IGVsc2UgaWYgKCFlbXB0eSAmJiAhZHVwbGljYXRlKSB7XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZGRRdWVyeUZpbHRlcihmaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZUZpbHRlcihmaWx0ZXJUeXBlOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcsIGtleTogYW55LCBzZWxlY3RlZDogYm9vbGVhbikge1xyXG4gICAgbGV0IGZpbHRlciA9IHRoaXMuYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UudG9nZ2xlUXVlcnlGaWx0ZXIoZmlsdGVyLCAhc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzRW1wdHkodmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKCh2YWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUgfHwgdmFsdWUgaW5zdGFuY2VvZiBTZWFyY2hGaWx0ZXIpICYmXHJcbiAgICAgICAgdGhpcy5pc0VtcHR5KHZhbHVlLmZpcnN0VmFsdWUpICYmXHJcbiAgICAgICAgdGhpcy5pc0VtcHR5KHZhbHVlLnNlY29uZFZhbHVlKSkgfHxcclxuICAgICAgKHZhbHVlID09IG51bGwgfHwgdmFsdWUubGVuZ3RoID09PSAwKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0ZpbHRlckFjdGl2ZShmaWx0ZXJUeXBlOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcsIGtleTogYW55KSB7XHJcbiAgICBsZXQgZiA9IHRoaXMuYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XHJcbiAgICByZXR1cm4gISF0aGlzLnF1ZXJ5LmZpbHRlcnMuZmluZChmZiA9PiBmZi5tYXRjaChmLnByb3BlcnR5LCBmLm9wZXJhdG9yLCBmLmZpcnN0VmFsdWUsIGYuc2Vjb25kVmFsdWUpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldEZpbHRlcihtb2RlbDogYW55LCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAobW9kZWwuaW5uZXJWYWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIG1vZGVsLmlubmVyVmFsdWUubGVuZ3RoID4gMSkge1xyXG4gICAgICBsZXQgZmlsdGVyID0gdGhpcy5idWlsZEZpbHRlcihtb2RlbC5maWx0ZXIucHJvcGVydHksIG1vZGVsLmZpbHRlci5vcGVyYXRvciwgbW9kZWwuaW5uZXJWYWx1ZS5maWx0ZXIoZiA9PiBmICE9PSB2YWx1ZSkpO1xyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWRkUXVlcnlGaWx0ZXIoZmlsdGVyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5yZW1vdmVRdWVyeUZpbHRlcihtb2RlbC5maWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGF1dG9jb21wbGV0ZVN1Z2dlc3QoZXZ0Pykge1xyXG4gICAgbGV0IHYgPSBbXTtcclxuICAgIC8vIGFsc28gdHJpZ2dlciBhZ2dyZWdhdGlvbnMgc2VhcmNoXHJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVNlbGVjdCgpO1xyXG4gICAgaWYgKGV2dCAmJiBldnQucXVlcnkpIHtcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlXHJcbiAgICAgICAgLmF1dG9jb21wbGV0ZShldnQucXVlcnkpXHJcbiAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHJlcyA9PiBvYnNlcnZhYmxlRnJvbShyZXMpLnBpcGUocGx1Y2soJ3ZhbHVlJykpKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB2LnB1c2gocmVzKSwgKCkgPT4ge30sICgpID0+ICh0aGlzLmF1dG9jb21wbGV0ZVJlc3VsdHMgPSB2KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBlcnRUZXJtQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuZXhwZXJ0TW9kZVF1ZXJ5RW1wdHkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhdXRvY29tcGxldGVTZWxlY3QoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XHJcbiAgfVxyXG5cclxuICBhdXRvY29tcGxldGVQYXN0ZShlKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5xdWVyeS50ZXJtID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VsZWN0KCk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleGVjdXRlU2VhcmNoKCkge1xyXG4gICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMucXVlcnkuZXhwZXJ0TW9kZSkge1xyXG4gICAgICAvLyBpbiBleHBlcnQgc2VhcmNoIG1vZGUgd2UgcHJlLWZldGNoIHJlc3VsdHMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgYWN0dWFsIHNlYXJjaFxyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoU3RhdGUoe2FnZ3M6IHt0eXBlOiB7fX0sIC4uLnRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKCl9KS5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XHJcbiAgICAgICAgLy8gb25seSBleGVjdXRlIHRoZSBhY3R1YWwgcXVlcnkgd2hlbiB3ZSd2ZSBmb3VuZCBzb21ldGhpbmdcclxuICAgICAgICBpZiAoIXF1ZXJ5U3RhdGUuaXNFbXB0eSkge1xyXG4gICAgICAgICAgdGhpcy50cmlnZ2VyU2VhcmNoKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXhwZXJ0TW9kZVF1ZXJ5RW1wdHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciBmZXRjaGluZyBzZWFyY2ggcmVzdWx0Jyk7XHJcbiAgICAgICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IHRydWU7XHJcbiAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyaWdnZXJTZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGV4ZWN1dGUgdGhlIGFjdHVhbCBzZWFyY2ggYnkgcm91dGluZyB0byB0aGUgcmVzdWx0IHN0YXRlIHdoaWNoIHRoZW4gd2lsbCBleGVjdXRlIHRoZVxyXG4gIC8vIHF1ZXJ5IGFuZCBkaXNwbGF5IHRoZSByZXN1bHRzXHJcbiAgcHJpdmF0ZSB0cmlnZ2VyU2VhcmNoKCkge1xyXG4gICAgdGhpcy5xdWVyeS5yZXNvbHZlUmVmZXJlbmNlID0gdHJ1ZTtcclxuICAgIGNvbnN0IHVyaVBhcmFtID0gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKCkpKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogbnVsbH19XSkudGhlbigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHtxdWVyeTogdXJpUGFyYW19fTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcmVzdWx0J10sIHVyaVBhcmFtUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlVGVybSgpIHtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRUZXJtKCcnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcclxuICAgIGlmICh0aGlzLmlkeFNlYXJjaCkge1xyXG4gICAgICB0aGlzLmV4aXRJbmRleGRhdGFTZWFyY2goKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVRdWVyeVR5cGUodHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlQ29udGV4dFR5cGUoKSB7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucmVtb3ZlUXVlcnlGaWx0ZXIoZmlsdGVyKTtcclxuXHJcbiAgICAvLyBpZiB3ZSBhcmUgaW4gaW5kZXNkYXRhIHNlYXJjaCBtb2RlLCByZW1vdmluZyBhIGZpbHRlciB0aGF0IGlzIG5vIGJhc2VwYXJhbSBmaWx0ZXJcclxuICAgIC8vIHJlcXVpcmVzIHRoZSBmcm9tIG1vZGVsIHRvIGJlIHVwZGF0ZWRcclxuICAgIGlmICh0aGlzLmlkeFNlYXJjaCAmJiAhdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmlzQmFzZVBhcmFtRmlsdGVyKGZpbHRlcikpIHtcclxuICAgICAgLy8gdG9kbzogdXBkYXRlIGZvcm0gbW9kZWwvZGF0YVxyXG4gICAgICBsZXQgaWR4RmlsdGVycyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycygpO1xyXG4gICAgICBpZiAoaWR4RmlsdGVycyAmJiBpZHhGaWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBzZXQgdXAgZm9ybSBkYXRhIGZyb20gaW5kZXhkYXRhIHF1ZXJ5IGZpbHRlcnNcclxuICAgICAgICB0aGlzLmlkeFNlYXJjaC5mb3JtT3B0aW9ucy5kYXRhID0gaWR4RmlsdGVycztcclxuICAgICAgICB0aGlzLmluZGV4ZGF0YUZvcm0uc2V0Rm9ybURhdGEoaWR4RmlsdGVycyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gaWYgbm8gZmlsdGVycyBhcmUgcHJlc2VudCByZXNldCB0aGUgZm9ybVxyXG4gICAgICAgIHRoaXMuaWR4U2VhcmNoLmZvcm1PcHRpb25zLmRhdGEgPSB7fTtcclxuICAgICAgICB0aGlzLmluZGV4ZGF0YUZvcm0ucmVzZXRGb3JtKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZENvbnRleHRNb2RlbChmb3JtTW9kZWxzKTogdm9pZCB7XHJcbiAgICBsZXQgbW9kZWxzID0gWy4uLmZvcm1Nb2RlbHNdO1xyXG4gICAgdGhpcy5pZHhTZWFyY2guY29udGV4dE1vZGVscy5wdXNoKC4uLm1vZGVscyk7XHJcbiAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0TW9kZWxzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhpdEluZGV4ZGF0YVNlYXJjaCgpIHtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5leGl0SW5kZXhkYXRhU2VhcmNoKCk7XHJcbiAgICB0aGlzLmlkeFNlYXJjaCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXRDb250ZXh0KGNvbnRleHRGb2xkZXJOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChjb250ZXh0Rm9sZGVyTmFtZSAmJiB0aGlzLmN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZSAhPT0gY29udGV4dEZvbGRlck5hbWUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Q29udGV4dEZvbGRlck5hbWUgPSBjb250ZXh0Rm9sZGVyTmFtZTtcclxuICAgICAgY29uc3QgY29udGV4dFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShjb250ZXh0Rm9sZGVyTmFtZSk7XHJcbiAgICAgIGlmIChjb250ZXh0Rm9sZGVyTmFtZSA9PT0gQ29udGV4dFR5cGUuc3lzcm9vdCkge1xyXG4gICAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZSh7bmFtZTogQ29udGV4dFR5cGUuc3lzcm9vdCwgbGFiZWw6IENvbnRleHRUeXBlLnN5c3Jvb3R9IGFzIE9iamVjdFR5cGUpO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHRUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldENvbnRleHRUeXBlKGNvbnRleHRUeXBlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQ29udGV4dCB0eXBlICcke2NvbnRleHRGb2xkZXJOYW1lfScgbm90IGZvdW5kLmApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUobnVsbCk7XHJcbiAgICAgIHRoaXMuY3VycmVudENvbnRleHRGb2xkZXJOYW1lID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgYSBjb250ZXh0IHR5cGUgZm9yIHRoZSBjdXJyZW50IHNlYXJjaFxyXG4gICAqIEBwYXJhbSBjdHggVGhlIGNvbnRleHQgZm9ybSBtb2RlbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2VsZWN0Q29udGV4dChjdHgpIHtcclxuICAgIGlmICh0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9ybU9wdGlvbnMgJiYgdGhpcy5pZHhTZWFyY2guY29udGV4dEZvcm1PcHRpb25zLmZvcm1Nb2RlbC5uYW1lID09PSBjdHgubmFtZSkge1xyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgY29udGV4dDtcclxuICAgICAgaWYgKGN0eC5uYW1lID09PSBDb250ZXh0VHlwZS5zeXNyb290KSB7XHJcbiAgICAgICAgY29udGV4dCA9IGN0eDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0ID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoY3R4Lm5hbWUpO1xyXG4gICAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb2xkZXJUeXBlID0gY29udGV4dDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUoY29udGV4dCk7XHJcblxyXG4gICAgICBsZXQgZm9ybURhdGEgPSB7fTtcclxuICAgICAgbGV0IGlkeEZpbHRlcnMgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoKTtcclxuICAgICAgaWYgKGlkeEZpbHRlcnMgJiYgaWR4RmlsdGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9ybURhdGEgPSBpZHhGaWx0ZXJzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9ybU9wdGlvbnMgPSB7Zm9ybU1vZGVsOiBjdHgsIGRhdGE6IGZvcm1EYXRhfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkluZGV4RGF0YUNoYW5nZWQoZXZlbnQ6IEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQpIHtcclxuICAgIC8vIG9ubHkgdHJpZ2dlciB3aGVuIHZhbHVlcyBhcmUgY2hhbmdlZCBhcyBjaGFuZ2VzIG1heSBhbHNvIGFwcGVhciB3aGVuIHNjcmlwdHNcclxuICAgIC8vIGNoYW5nZSBvdGhlciBmb3JtIGVsZW1lbnQgcHJvcGVydGllcyAoZWcuIHJlYWRvbmx5LCByZXF1aXJlZCBmbGFnKVxyXG4gICAgaWYgKGV2ZW50LmluZGV4ZGF0YUNoYW5nZWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWFyY2hGaWx0ZXJGcm9tRm9ybURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VhcmNoRmlsdGVyRnJvbUZvcm1EYXRhKCkge1xyXG4gICAgaWYgKCF0aGlzLmluZGV4ZGF0YUZvcm0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBtZXRhZGF0YSBmaWx0ZXJzIGZvciBlYWNoIGZvcm0gZGF0YSBlbnRyeVxyXG4gICAgbGV0IGlkeEZpbHRlcnM6IFNlYXJjaEZpbHRlcltdID0gW107XHJcbiAgICBsZXQgZm9ybURhdGEgPSB0aGlzLmluZGV4ZGF0YUZvcm0uZ2V0Rm9ybURhdGEoKTtcclxuICAgIGlmICh0aGlzLmNvbnRleHRGb3JtKSB7XHJcbiAgICAgIGZvcm1EYXRhID0gT2JqZWN0LmFzc2lnbihmb3JtRGF0YSwgdGhpcy5jb250ZXh0Rm9ybS5nZXRGb3JtRGF0YSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoZm9ybURhdGEpKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFNlYXJjaEZpbHRlcih0aGlzLnF1ZXJ5LnR5cGVzLCBrZXksIGZvcm1EYXRhW2tleV0pO1xyXG5cclxuICAgICAgZmlsdGVycy5mb3JFYWNoKGYgPT4gaWR4RmlsdGVycy5wdXNoKGYpKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycyhpZHhGaWx0ZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIG9iamVjdCB0eXBlIGVsZW1lbnQgZm9yIGEgZmlsdGVyLCB0byBiZSBhYmxlIHRvIHNob3cgdGhlXHJcbiAgICogbGFiZWwgZm9yIGEgZmlsdGVyIGluIHRoZSBzZWFyY2ggc3VtbWFyeS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSB0aGUgZmlsdGVyIHRvIGZldGNoIG9iamVjdCB0eXBlIGVsZW1lbnQgZm9yXHJcbiAgICovXHJcbiAgcHVibGljIGdldE9iamVjdFR5cGVFbGVtZW50TGFiZWwoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcclxuICAgIGxldCBvdCA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRUYXJnZXRUeXBlRWxlbWVudEJ5TmFtZShmaWx0ZXIucHJvcGVydHkpO1xyXG4gICAgcmV0dXJuIG90ID8gb3QubGFiZWwgOiBmaWx0ZXIucHJvcGVydHkgKyAnIC0gJyArIGZpbHRlci5maXJzdFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVRdWVyeSgpIHtcclxuICAgIC8vIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zSGFuZGxpbmcgOiAncHJlc2VydmUnfTtcclxuICAgIHRoaXMucm91dGVyXHJcbiAgICAgIC5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogbnVsbH19XSwge3JlcGxhY2VVcmw6IHRydWV9KVxyXG4gICAgICAudGhlbigoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zdG9yZWQtcXVlcmllcyddLCB7cXVlcnlQYXJhbXM6IHtjcmVhdGU6IHRydWV9fSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVN0b3JlZFF1ZXJ5KCkge1xyXG4gICAgaWYgKHRoaXMucXVlcnkgaW5zdGFuY2VvZiBTdG9yZWRRdWVyeSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogbnVsbH19XSwge3JlcGxhY2VVcmw6IHRydWV9KTtcclxuICAgICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5zYXZlU3RvcmVkUXVlcnkodGhpcy5xdWVyeSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnN1Y2Nlc3ModGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuc3VjY2VzcycpKTtcclxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0UXVlcnkoKSB7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucmVzZXQoKTtcclxuICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLmlkeFNlYXJjaCkge1xyXG4gICAgICB0aGlzLmV4aXRJbmRleGRhdGFTZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlU2VhcmNoTWVudShldnQ/KSB7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtczogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnfTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dLCBxdWVyeVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvY3VzU2VhcmNoSW5wdXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xyXG4gICAgICB0aGlzLnNlYXJjaElucHV0LmlucHV0RUwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlU2VhcmNoSW5wdXRGb2N1cygpIHtcclxuICAgIGlmICh0aGlzLnF1ZXJ5LmV4cGVydE1vZGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCgnLmV4cGVydC1zZWFyY2hfX2lucHV0JykuZm9jdXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0eVNlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XHJcbiAgICB0aGlzLm9iamVjdFR5cGVHcm91cHMgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uub2JqZWN0VHlwZUdyb3VwcztcclxuICAgIHRoaXMucXVlcnlTdWJzY3JpcHRpb24gPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnkkLnN1YnNjcmliZShcclxuICAgICAgKHF1ZXJ5OiBTZWFyY2hRdWVyeSkgPT4gdGhpcy5wcm9jZXNzUXVlcnkocXVlcnkpKTtcclxuICAgIC8vIHN1YnNjcmliZSB0byBxdWVyeSBzdGF0ZSBhcyB3ZWxsIHRvIGZldGNoIHJlc3VsdCBjb3VudCBhbmQgYWdncmVnYXRpb25zIGFzIHRoZXkgY2hhbmdlXHJcbiAgICB0aGlzLnF1ZXJ5U3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnlTdGF0ZSQuc3Vic2NyaWJlKChxdWVyeVN0YXRlOiBTZWFyY2hTdGF0ZSkgPT4gdGhpcy5wcm9jZXNzUXVlcnlTdGF0ZShxdWVyeVN0YXRlKSk7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlc2V0QWdncygpO1xyXG4gICAgdGhpcy5xdWVyeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5xdWVyeVN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
724
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9hcHAtc2hlbGwvYXBwLWJhci9hcHAtc2VhcmNoL2FwcC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLElBQUksa0JBQWtCLEVBQzlCLElBQUksSUFBSSxjQUFjLEVBQ3RCLEVBQUUsSUFBSSxZQUFZLEVBRWxCLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUdULFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLE1BQU0sRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQVF4RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDekYsT0FBTyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsVUFBVSxFQUVWLFlBQVksRUFDWixXQUFXLEVBRVgsYUFBYSxFQUNiLGFBQWEsRUFDYixNQUFNLEVBQ04sbUJBQW1CLEVBRW5CLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsS0FBSyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFFakIsTUFBTSxjQUFjLENBQUM7QUFXdEIsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQixrQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBRlcs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WUFIWixTQUFTO1lBQ1QsaUJBQWlCO1lBMEJqQixvQkFBb0I7WUFGcEIsbUJBQW1CO1lBVm5CLFdBQVc7WUFlWCxjQUFjO1lBTmQsTUFBTTs7OzBCQXFDTCxTQUFTLFNBQUMsYUFBYTswQkFDdkIsU0FBUyxTQUFDLFNBQVM7NEJBQ25CLFNBQVMsU0FBQyxTQUFTOzBCQUNuQixTQUFTLFNBQUMsU0FBUzs4QkFpRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbixcclxuICBmcm9tIGFzIG9ic2VydmFibGVGcm9tLFxyXG4gIG9mIGFzIG9ic2VydmFibGVPZixcclxuICBTdWJzY3JpcHRpb24sXHJcbiAgU3ViamVjdFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge3BsdWNrLCBzd2l0Y2hNYXAsIHdpdGhMYXRlc3RGcm9tLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBWaWV3Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIFJlbmRlcmVyMixcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1JvdXRlciwgTmF2aWdhdGlvbkV4dHJhc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS90aXRsZS9wYWdlLXRpdGxlLnNlcnZpY2UnO1xyXG5pbXBvcnQge09iamVjdEZvcm1Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgT2JqZWN0Rm9ybU9wdGlvbnMsXHJcbiAgRm9ybVN0YXR1c0NoYW5nZWRFdmVudFxyXG59IGZyb20gJy4uLy4uLy4uL29iamVjdC1mb3JtL2luZGV4JztcclxuaW1wb3J0IHtBdXRvQ29tcGxldGV9IGZyb20gJ3ByaW1lbmcvcHJpbWVuZyc7XHJcbmltcG9ydCB7TmdGb3JtfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xyXG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFVzZXJTZXJ2aWNlLFxyXG4gIFN0b3JlZFF1ZXJ5LFxyXG4gIFJhbmdlVmFsdWUsXHJcbiAgT2JqZWN0VHlwZSxcclxuICBTZWFyY2hGaWx0ZXIsXHJcbiAgU2VhcmNoUXVlcnksXHJcbiAgU2VhcmNoU3RhdGUsXHJcbiAgU2VhcmNoU2VydmljZSxcclxuICBTeXN0ZW1TZXJ2aWNlLFxyXG4gIExvZ2dlcixcclxuICBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxyXG4gIENhcGFiaWxpdGllcyxcclxuICBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICBOb3RpZmljYXRpb25zU2VydmljZSxcclxuICBVdGlscyxcclxuICBQcmVwYXJlU2VydmljZSxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIFF1ZXJ5U2NvcGVcclxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJZHhTZWFyY2gge1xyXG4gIHR5cGU6IE9iamVjdFR5cGU7XHJcbiAgY29udGV4dEZvbGRlclR5cGU6IE9iamVjdFR5cGU7XHJcbiAgY29udGV4dE1vZGVscz86IGFueVtdO1xyXG4gIGNvbnRleHRBZ2dyZWdhdGlvbnM/OiB7fTtcclxuICBjb250ZXh0Rm9ybU9wdGlvbnM/OiBPYmplY3RGb3JtT3B0aW9ucztcclxuICBmb3JtT3B0aW9ucz86IE9iamVjdEZvcm1PcHRpb25zO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb250ZXh0VHlwZSB7XHJcbiAgJ3N5c3Jvb3QnID0gJ3N5c3Jvb3QnXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZW8tYXBwLXNlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FwcC1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbiAgLy8gdG9kbzogYXBwbHkgb25QdXNoIGNoYW5nZSBkZXRlY3Rpb24gKGFnZyBzZWFyY2ggcmVzdWx0IHJpZ2h0IG5vdyBkb2Vzbid0IHVwZGF0ZSlcclxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIFBBUkFNUyA9IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TO1xyXG4gIE9QRVJBVE9SID0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SO1xyXG4gIHF1ZXJ5U2NvcGU6IFF1ZXJ5U2NvcGU7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQ6IEF1dG9Db21wbGV0ZTtcclxuICBAVmlld0NoaWxkKCd4cGlucHV0JykgZXhwZXJ0SW5wdXQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaWR4Zm9ybScpIGluZGV4ZGF0YUZvcm06IE9iamVjdEZvcm1Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnY3R4Zm9ybScpIGNvbnRleHRGb3JtOiBPYmplY3RGb3JtQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIHF1ZXJ5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBxdWVyeVN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcXVlcnk6IFNlYXJjaFF1ZXJ5O1xyXG4gIHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlO1xyXG4gIGNhcGFiaWxpdGllczogQ2FwYWJpbGl0aWVzO1xyXG4gIGFjdGl2ZVRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG4gIGlzU3RvcmVkUXVlcnk6IGJvb2xlYW47XHJcbiAgaXNPd25RdWVyeSA9IGZhbHNlO1xyXG4gIG9iamVjdFR5cGVHcm91cHMgPSBbXTtcclxuICB0eXBlR3JvdXBUcmVlID0gW107XHJcbiAgYXV0b2NvbXBsZXRlUmVzdWx0czogc3RyaW5nW107XHJcblxyXG4gIGlkeFNlYXJjaDogSWR4U2VhcmNoO1xyXG4gIGN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZTtcclxuXHJcbiAgZXhwZXJ0TW9kZVF1ZXJ5RW1wdHkgPSBmYWxzZTtcclxuICBleHBlcnRNb2RlU3VwcG9ydCA9IHtcclxuICAgIGJhc2VQYXJhbXM6IFtdLFxyXG4gICAgc2VsZWN0ZWRHcm91cDogbnVsbCxcclxuICAgIHNlbGVjdGVkVHlwZTogbnVsbFxyXG4gIH07XHJcblxyXG4gIGZpbHRlcnNNb2RlbCA9IHt9O1xyXG4gIGFnZ3JlZ2F0aW9uc01vZGVsID0ge307XHJcbiAgZGF0ZVBpcGU6IExvY2FsZURhdGVQaXBlO1xyXG4gIHN5c1Jvb3RDb250ZXh0ID0ge1xyXG4gICAgaWQ6IG51bGwsXHJcbiAgICBuYW1lOiBDb250ZXh0VHlwZS5zeXNyb290LFxyXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmFkZC50aXRsZS5sb2NhdGlvbi5jb21tb24nKSxcclxuICAgIHNpdHVhdGlvbjogJ1NFQVJDSCcsXHJcbiAgICBtb2RlOiAnQ09OVEVYVCcsXHJcbiAgICBjb250ZXh0Rm9ybU9wdGlvbnM6IHtcclxuICAgICAgZm9ybU1vZGVsOiB7bmFtZTogQ29udGV4dFR5cGUuc3lzcm9vdH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBfc2VsZWN0ZWQ6IG51bWJlciA9IG51bGw7XHJcbiAgc2V0IHNlbGVjdGVkKGluZGV4KSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkID09PSBpbmRleCA/IG51bGwgOiBpbmRleDtcclxuICB9XHJcblxyXG4gIGdldCBzZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBvbkV4ZWN1dGVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGdldCBzdG9yZWRRdWVyeSgpOiBTdG9yZWRRdWVyeSB7XHJcbiAgICByZXR1cm4gdGhpcy5xdWVyeSBhcyBTdG9yZWRRdWVyeTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgc3RvcmVkUXVlcmllc1NlcnZpY2U6IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXR5U2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyXHJcbiAgKSB7XHJcblxyXG4gICAgdGhpcy5kYXRlUGlwZSA9IG5ldyBMb2NhbGVEYXRlUGlwZSh0cmFuc2xhdGUpO1xyXG5cclxuICAgIHRoaXMuZXhwZXJ0TW9kZVN1cHBvcnQuYmFzZVBhcmFtcyA9IE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5tYXAoayA9PiB7XHJcbiAgICAgIGxldCBkYXRhID0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba107XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmdsb2JhbC5iYXNlcGFyYW0uJyArIGRhdGEpLFxyXG4gICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRF0gPSBPYmplY3Qua2V5cyhcclxuICAgICAgU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1xyXG4gICAgKS5tYXAoayA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5OiBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTW2tdLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICdlby5zZWFyY2guYWdnLnRpbWUuJyArIFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNba11cclxuICAgICAgICApXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEXSA9IE9iamVjdC5rZXlzKFxyXG4gICAgICBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTXHJcbiAgICApLm1hcChrID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNba10sXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2VvLnNlYXJjaC5hZ2cudGltZS4nICsgU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1trXVxyXG4gICAgICAgIClcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTUlNRVRZUEVHUk9VUF0gPSBPYmplY3Qua2V5cyhcclxuICAgICAgU2VhcmNoUXVlcnkuTUlNRVRZUEVHUk9VUF9CVUNLRVRTXHJcbiAgICApLm1hcChrID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUU1trXSxcclxuICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgbGFiZWw6IFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUU1trXVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFU0laRV0gPSBPYmplY3Qua2V5cyhcclxuICAgICAgU2VhcmNoUXVlcnkuRklMRV9TSVpFX0JVQ0tFVFNcclxuICAgICkubWFwKGsgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGtleTogU2VhcmNoUXVlcnkuRklMRV9TSVpFX0JVQ0tFVFNba10sXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2VvLnNlYXJjaC5hZ2cuZmlsZXNpemUuJyArIFNlYXJjaFF1ZXJ5LkZJTEVfU0laRV9CVUNLRVRTW2tdXHJcbiAgICAgICAgKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblRhYkNoYW5nZSh0YWJJbmRleCkge1xyXG4gICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRhYkluZGV4O1xyXG4gICAgaWYgKHRhYkluZGV4ID09PSAwKSB7Ly8gdHlwZXNcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xyXG4gICAgICAgIHR5cGU6IHt9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0YWJJbmRleCA9PT0gMSkgey8vIGNyZWF0ZWRcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xyXG4gICAgICAgIHR5cGU6IHt9LFxyXG4gICAgICAgIGNyZWF0ZWQ6IHt9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0YWJJbmRleCA9PT0gMikgey8vIG1vZGlmaWVkXHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRBZ2dzKHtcclxuICAgICAgICB0eXBlOiB7fSxcclxuICAgICAgICBtb2RpZmllZDoge31cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRhYkluZGV4ID09PSAzKSB7Ly8gZmlsZVxyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0QWdncyh7XHJcbiAgICAgICAgdHlwZToge30sXHJcbiAgICAgICAgbWltZXR5cGVncm91cDoge30sXHJcbiAgICAgICAgZmlsZXNpemU6IHt9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KSB7XHJcbiAgICAvLyBJTVBPUlRBTlQ6IG5ldmVyIGNoYW5nZSB0aGUgbG9jYWwgcXVlcnkgZGlyZWN0bHlcclxuICAgIC8vIHVzZSBzZWFyY2hTZXJ2aWNlLCBzbyBldmVyeSBjb21wb25lbnRzIHN1YnNjcmliZWQgdG8gdGhlIHF1ZXJ5XHJcbiAgICAvLyB3aWxsIGdldCB0aGUgbmV3IHZhbHVlXHJcbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XHJcbiAgICB0aGlzLmN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZSA9IHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aFxyXG4gICAgICA/IHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdLm5hbWVcclxuICAgICAgOiBudWxsO1xyXG4gICAgdGhpcy5pc1N0b3JlZFF1ZXJ5ID0gcXVlcnkgaW5zdGFuY2VvZiBTdG9yZWRRdWVyeTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0b3JlZFF1ZXJ5KSB7XHJcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICAgIHRoaXMuaXNPd25RdWVyeSA9XHJcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS51c2VyLnRvTG93ZXJDYXNlKCkgPT09IHVzZXIubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5mb3JFYWNoKGsgPT4gdGhpcy5wcm9jZXNzRmlsdGVycyhrKSk7XHJcbiAgICAvLyBpZiB3ZSBoYXZlIGFuIGluZGV4ZGF0YSBzZWFyY2ggdXNpbmcgYSBjb250ZXh0IGJ1dCB0aGUgY29udGV4dCB3YXMgcmVtb3ZlZFxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoICYmXHJcbiAgICAgIHRoaXMuaWR4U2VhcmNoICYmXHJcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9uc1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9ucyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb2xkZXJUeXBlID0gbnVsbDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hGaWx0ZXJGcm9tRm9ybURhdGEoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIHNldHVwIGFuIGluZGV4ZGF0YSBzZWFyY2hcclxuICAgIGNvbnN0IHVwZGF0ZUNhdXNlZEJ5VHlwZVRvZ2dsZSA9IHRoaXMucXVlcnkuX191cGRhdGVDYXVzZSA9PT0gU2VhcmNoUXVlcnkuVVBEQVRFX0NBVVNFLlRPR0dMRURfVFlQRTtcclxuICAgIGlmICh0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJiAhdXBkYXRlQ2F1c2VkQnlUeXBlVG9nZ2xlKSB7XHJcbiAgICAgIC8vIGhhdmluZyBqdXN0IG9uZSB0YXJnZXQgdHlwZSBhbmQgYSBjb250ZXh0IHR5cGUgc2V0dXAgbWVhbnMsIHRoYXQgd2UgYXJlIHVzaW5nIGluZGV4ZGF0YSBzZWFyY2hcclxuICAgICAgdGhpcy5pbmRleGRhdGFTZWFyY2goXHJcbiAgICAgICAgdGhpcy5xdWVyeS50eXBlc1swXSxcclxuICAgICAgICB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPiAwID8gdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0gOiBudWxsXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnModGhpcy5xdWVyeSkubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIC8vIGhhdmluZyBqdXN0IG9uZSB0YXJnZXQgdHlwZSBhbmQgaW5kZXhkYXRhIGZpbHRlcnMgYWxzbyBtZWFucywgdGhhdCB3ZSBhcmUgdXNpbmcgaW5kZXhkYXRhIHNlYXJjaFxyXG4gICAgICB0aGlzLmluZGV4ZGF0YVNlYXJjaCh0aGlzLnF1ZXJ5LnR5cGVzWzBdKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIC8vIHJlc2V0IGluZGV4ZGF0YSBzZWFyY2ggb3RoZXJ3aXNlLCBiZWNhdXNlIHRoZSBjdXJyZW50IHF1ZXJ5IG1heSBiZSByZXNldCBmcm9tIG91dCBzaWRlIChlLmcuIGJ5IGEgc3RvcmVkIHF1ZXJ5KVxyXG4gICAgICB0aGlzLmlkeFNlYXJjaCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHF1ZXJ5LmV4cGVydE1vZGUpIHtcclxuICAgICAgdGhpcy50eXBlR3JvdXBUcmVlID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmJ1aWxkVHlwZUdyb3VwVHJlZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5xdWVyeVNjb3BlID0gcXVlcnkuc2NvcGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0T2JqZWN0VHlwZSh0eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICAvKiogc2V0IHVwIHRoZSByaWdodCB0eXBlIGZpbHRlciBpZiBub3QgYWxyZWFkeSBkb25lICovXHJcbiAgICBjb25zdCBxdWVyeVR5cGVzTGVuZ3RoID1cclxuICAgICAgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPiAxIHx8IHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID09PSAwO1xyXG4gICAgY29uc3QgcXVlcnlUeXBlc0xlbmd0aEFuZE5hbWUgPVxyXG4gICAgICB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLnF1ZXJ5LnR5cGVzWzBdLm5hbWUgIT09IHR5cGUubmFtZTtcclxuICAgIGlmIChxdWVyeVR5cGVzTGVuZ3RoIHx8IHF1ZXJ5VHlwZXNMZW5ndGhBbmROYW1lKSB7XHJcbiAgICAgIC8vIHNldHRpbmcgb2JqZWN0IHR5cGVzIHdpbGwgZW1pdCBhIG5ldyBxdWVyeS4gVGhpcyB3aWxsIHRoZW4gdGFrZSBjYXJlIG9mXHJcbiAgICAgIC8vIHNldHRpbmcgdXAgdGhlIGluZGV4ZGF0YSBmb3JtXHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRRdWVyeVR5cGVzKFt0eXBlXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHVwIGluZGV4ZGF0YSBzZWFyY2ggZm9yIGEgZ2l2ZW4gb2JqZWN0IHR5cGVcclxuICAgKiBAcGFyYW0gdHlwZSAtIGFuIG9iamVjdCB0eXBlXHJcbiAgICogQHBhcmFtIGNvbnRleHRGb2xkZXJUeXBlIC0gY29udGV4dCBmb2xkZXIgdHlwZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbmRleGRhdGFTZWFyY2godHlwZTogT2JqZWN0VHlwZSwgY29udGV4dEZvbGRlclR5cGU/OiBPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAoIXR5cGUgfHwgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLnF1ZXJ5LnR5cGVzWzBdLm5hbWUgPT09IHR5cGUubmFtZSkge1xyXG4gICAgICAvKiogZXZlbiBpZiB3ZSBzZWxlY3QgYSB0eXBlIHRoYXQgaXMgYWxyZWFkeSBzZWxlY3RlZCwgd2UgbmVlZCB0byBjYWxsIGFnZ3JlZ2F0ZSBhcyB0aGVyZSBtYXkgYmUgY29udGV4dCB0eXBlcyBpbnZvbHZlZCAqL1xyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0QWdncyh7XHJcbiAgICAgICAgdHlwZToge1xyXG4gICAgICAgICAgc3ViOiB7XHJcbiAgICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlOiB7fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc1Jvb3RUeXBlID0gISF0aGlzLmFwcFNlYXJjaFNlcnZpY2UudHlwZXNBbGxvd2VkVW5kZXJTeXNyb290LmZpbmQoclQgPT4gclQucW5hbWUgPT09IHR5cGUucW5hbWUpO1xyXG5cclxuICAgIHRoaXMuaWR4U2VhcmNoID0ge1xyXG4gICAgICB0eXBlLFxyXG4gICAgICBjb250ZXh0Rm9sZGVyVHlwZSxcclxuICAgICAgY29udGV4dE1vZGVsczogaXNSb290VHlwZSA/IFt0aGlzLnN5c1Jvb3RDb250ZXh0XSA6IFtdLFxyXG4gICAgICBmb3JtT3B0aW9uczogbnVsbFxyXG4gICAgfTtcclxuXHJcbiAgICAvKiogZmV0Y2ggY29udGV4dCB0eXBlIG1vZGVscyAqL1xyXG4gICAgaWYgKHR5cGUuYWxsb3dlZGNvbnRleHR0eXBlcy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgdG9GZXRjaCA9IFtdO1xyXG4gICAgICB0eXBlLmFsbG93ZWRjb250ZXh0dHlwZXMuZm9yRWFjaChjb250ZXh0VHlwZSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGNvbnRleHRUeXBlLm5hbWUpO1xyXG4gICAgICAgIGlmIChvYmplY3RUeXBlKSB7XHJcbiAgICAgICAgICB0b0ZldGNoLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlRm9ybShcclxuICAgICAgICAgICAgICBjb250ZXh0VHlwZS5uYW1lLFxyXG4gICAgICAgICAgICAgICdTRUFSQ0gnLFxyXG4gICAgICAgICAgICAgICdDT05URVhUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh0b0ZldGNoLmxlbmd0aCkge1xyXG4gICAgICAgIG9ic2VydmFibGVGb3JrSm9pbih0b0ZldGNoKS5zdWJzY3JpYmUoZm9ybU1vZGVscyA9PiB7XHJcbiAgICAgICAgICAvKiogYWJzdHJhY3QgY29udGV4dCB0eXBlcyBzaG91bGQgbm90IGJlIHVzZWQgKi9cclxuICAgICAgICAgIHRoaXMuYWRkQ29udGV4dE1vZGVsKGZvcm1Nb2RlbHMpO1xyXG4gICAgICAgICAgLyoqIGlmIHRoZXJlIHdhcyBhIGNvbnRleHQgdHlwZSBwcm92aWRlZCBieSB0aGUgcXVlcnksIHdlJ2xsIHNldHVwIHRoZSByaWdodCBtb2RlbCBhcyB3ZWxsICovXHJcbiAgICAgICAgICBpZiAoY29udGV4dEZvbGRlclR5cGUpIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLmlkeFNlYXJjaC5jb250ZXh0TW9kZWxzLmZpbmQoXHJcbiAgICAgICAgICAgICAgbSA9PiBtLm5hbWUgPT09IGNvbnRleHRGb2xkZXJUeXBlLm5hbWVcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChtb2RlbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29udGV4dChtb2RlbCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGV4dEZvbGRlclR5cGUubmFtZSA9PT0gQ29udGV4dFR5cGUuc3lzcm9vdCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29udGV4dCh0aGlzLnN5c1Jvb3RDb250ZXh0KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvKiogdGhlIHByb3ZpZGVkIGNvbnRleHQgdHlwZSBkb2VzIG5vdCBleGlzdCBhbnkgbW9yZSwgc28ganVzdCByZW1vdmUgaXQgKi9cclxuICAgICAgICAgICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9sZGVyVHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBmb3JtRGF0YTtcclxuICAgIGxldCBpZHhGaWx0ZXJzID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmdldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKCk7XHJcbiAgICBpZiAoaWR4RmlsdGVycyAmJiBpZHhGaWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gc2V0IHVwIGZvcm0gZGF0YSBmcm9tIGluZGV4ZGF0YSBxdWVyeSBmaWx0ZXJzXHJcbiAgICAgIGZvcm1EYXRhID0gaWR4RmlsdGVycztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN5c3RlbVNlcnZpY2VcclxuICAgICAgLmdldE9iamVjdFR5cGVGb3JtKHR5cGUubmFtZSwgJ1NFQVJDSCcpXHJcbiAgICAgIC5zdWJzY3JpYmUobW9kZWwgPT4ge1xyXG4gICAgICAgIHRoaXMuaWR4U2VhcmNoLmZvcm1PcHRpb25zID0ge1xyXG4gICAgICAgICAgZm9ybU1vZGVsOiBtb2RlbCxcclxuICAgICAgICAgIGRhdGE6IGZvcm1EYXRhXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NRdWVyeVN0YXRlKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucXVlcnlTdGF0ZSA9IHF1ZXJ5U3RhdGU7XHJcbiAgICBpZiAodGhpcy5pZHhTZWFyY2gpIHtcclxuICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEFnZ3JlZ2F0aW9ucyA9IHt9O1xyXG4gICAgICBpZiAocXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMuY29udGV4dFR5cGUuc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRBZ2dyZWdhdGlvbnMgPSB0aGlzLmJ1aWxkQ29udGV4dEFnZ3JlZ2F0aW9ucyhxdWVyeVN0YXRlLmFnZ3JlZ2F0aW9ucy5jb250ZXh0VHlwZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBzYXZlIGFnZ3JlZ2F0aW9ucyB2YWx1ZXNcclxuICAgIGlmICghdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFXSB8fCAhdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggfHwgcXVlcnlTdGF0ZS5sYXN0Q2hhbmdlICE9PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFKSB7XHJcbiAgICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRV0gPSBuZXcgTWFwKHF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLnR5cGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3luY0FnZ3JlZ2F0aW9ucyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVEVELCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0UpO1xyXG4gICAgdGhpcy5zeW5jQWdncmVnYXRpb25zKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVELCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0UpO1xyXG4gICAgdGhpcy5zeW5jQWdncmVnYXRpb25zKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1JTUVUWVBFR1JPVVAsIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTik7XHJcbiAgICB0aGlzLnN5bmNBZ2dyZWdhdGlvbnMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkUsIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRSk7XHJcbiAgfVxyXG5cclxuICBidWlsZENvbnRleHRBZ2dyZWdhdGlvbnMoY29udGV4dFR5cGUpIHtcclxuICAgIGxldCBjb250ZXh0QWdncmVnYXRpb25zID0ge307XHJcbiAgICBjb250ZXh0VHlwZS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiBjb250ZXh0QWdncmVnYXRpb25zW2tleV0gPSB2YWx1ZSk7XHJcbiAgICByZXR1cm4gY29udGV4dEFnZ3JlZ2F0aW9ucztcclxuICB9XHJcblxyXG4gIHByb2Nlc3NGaWx0ZXJzKGs6IHN0cmluZykge1xyXG4gICAgbGV0IGY6IFNlYXJjaEZpbHRlciA9IHRoaXMucXVlcnkuZmlsdGVycy5maW5kKGZmID0+IGZmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1trXSk7XHJcbiAgICBpZiAoIWYpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba11dID0ge1xyXG4gICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgIG11bHRpVmFsdWU6IFtdLFxyXG4gICAgICAgIGlubmVyVmFsdWU6IFtdXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAhdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0gfHxcclxuICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0uZmlsdGVyICE9PSBmXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0gPSB7fTtcclxuICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0uZmlsdGVyID0gZjtcclxuICAgICAgbGV0IHZhbHVlOiBhbnkgPVxyXG4gICAgICAgIHR5cGVvZiBmLmZpcnN0VmFsdWUgPT09ICdzdHJpbmcnICYmXHJcbiAgICAgICAgICBmLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5cclxuICAgICAgICAgID8gSlNPTi5wYXJzZShmLmZpcnN0VmFsdWUpXHJcbiAgICAgICAgICA6IGYuZmlyc3RWYWx1ZS5jb25jYXQoW10pO1xyXG4gICAgICBpZiAoZi5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubXVsdGlWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLnZhbHVlID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVEVEIHx8XHJcbiAgICAgICAgICBmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFRFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdmFsdWUgPSBuZXcgUmFuZ2VWYWx1ZShmLm9wZXJhdG9yLCBmLmZpcnN0VmFsdWUsIGYuc2Vjb25kVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLm11bHRpVmFsdWUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmlubmVyVmFsdWUgPVxyXG4gICAgICAgIHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmxhYmVsID0gW107XHJcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmlubmVyVmFsdWUuZm9yRWFjaCgodjogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVE9SIHx8XHJcbiAgICAgICAgICBmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFUlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubGFiZWxbaV0gPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5sYWJlbFtpXSA9IG9ic2VydmFibGVPZihcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJGaWx0ZXIoZiwgdilcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN5bmNBZ2dyZWdhdGlvbnMobmFtZSwgb3BlcmF0b3IpIHtcclxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbbmFtZV0uZm9yRWFjaChhZ2cgPT4ge1xyXG4gICAgICBsZXQgYSA9IHRoaXMucXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnNbbmFtZV0uZmluZChhYSA9PiBhYS5rZXkgPT09IGFnZy5rZXkpO1xyXG4gICAgICBpZiAoYSAmJiBhLnZhbHVlICE9PSBhZ2cudmFsdWUpIHtcclxuICAgICAgICBhZ2cudmFsdWUgPSBhLnZhbHVlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFhICYmIHRoaXMucXVlcnlTdGF0ZS5sYXN0Q2hhbmdlICE9PSBuYW1lKSB7XHJcbiAgICAgICAgYWdnLnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgYWdnLnNlbGVjdGVkID0gdGhpcy5pc0ZpbHRlckFjdGl2ZShuYW1lLCBvcGVyYXRvciwgYWdnLmtleSk7XHJcbiAgICAgIGFnZy5zYXZlZCA9ICFhICYmIHRoaXMucXVlcnlTdGF0ZS5sYXN0Q2hhbmdlID09PSBuYW1lO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQXS5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ3ZhbHVlJywgJ2Rlc2MnKSk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIsIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVJlc3RyaWN0aW9uKGZpbHRlcik7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtmaWx0ZXIucHJvcGVydHldKSB7XHJcbiAgICAgIGxldCBhZ2cgPSB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW2ZpbHRlci5wcm9wZXJ0eV0uZmluZChhID0+IGEua2V5ID09PSB2YWx1ZSk7XHJcbiAgICAgIHJldHVybiBhZ2cubGFiZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVEYXRlUmVzdHJpY3Rpb24oZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcclxuICAgIHN3aXRjaCAoZmlsdGVyLm9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5zZWFyY2guYWdnLnRpbWUuJHtmaWx0ZXIuZmlyc3RWYWx1ZX1gKTtcclxuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUw6XHJcbiAgICAgICAgcmV0dXJuIGA9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XHJcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USDpcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0Jyl9IC0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuc2Vjb25kVmFsdWUsICdlb1Nob3J0Jyl9YDtcclxuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuR1JFQVRFUl9PUl9FUVVBTDpcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4uc2luY2UnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnQnKX1gO1xyXG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5MRVNTX09SX0VRVUFMOlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLnRpbWUuc3Bhbi51bnRpbCcpfSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydCcpfWA7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGAoJHtmaWx0ZXIub3BlcmF0b3J9KSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydCcpfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNvbHZlTGFiZWwobW9kZWw6IGFueSwgdmFsdWU6IGFueVtdKSB7XHJcbiAgICBtb2RlbC5sYWJlbC5mb3JFYWNoKChsLCBpKSA9PiBsLm5leHQodmFsdWVbaV0udGl0bGUpKTtcclxuICB9XHJcblxyXG4gIHJlc29sdmVTZWxlY3Rpb24oYWdnczogYW55W10sIGtleTogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGFnZ3NcclxuICAgICAgLmZpbHRlcihhID0+IHNlbGVjdGVkID8gYS5rZXkgIT09IGtleSAmJiBhLnNlbGVjdGVkIDogYS5rZXkgPT09IGtleSB8fCBhLnNlbGVjdGVkKVxyXG4gICAgICAubWFwKGEgPT4gYS5rZXkpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRFeHBlcnRNb2RlSW5wdXQoKSB7XHJcbiAgICB0aGlzLnF1ZXJ5LnRlcm0gPSAnJztcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVFeHBlcnRNb2RlKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZUdyb3VwVHJlZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy50eXBlR3JvdXBUcmVlID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmJ1aWxkVHlwZUdyb3VwVHJlZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnRvZ2dsZUV4cGVydE1vZGUoKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5jaGFuZ2VTZWFyY2hJbnB1dEZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UXVlcnlTY29wZShzY29wZTogUXVlcnlTY29wZSkge1xyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFF1ZXJ5U2NvcGUoc2NvcGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHhwU2VsZWN0R3JvdXAoZ3JvdXApIHtcclxuICAgIHRoaXMuZXhwZXJ0TW9kZVN1cHBvcnQuc2VsZWN0ZWRHcm91cCA9IGdyb3VwO1xyXG4gICAgdGhpcy5leHBlcnRNb2RlU3VwcG9ydC5zZWxlY3RlZFR5cGUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHhwU2VsZWN0VHlwZSh0eXBlKSB7XHJcbiAgICB0aGlzLmV4cGVydE1vZGVTdXBwb3J0LnNlbGVjdGVkVHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgeHBBZGRUb1Rlcm0oc3RyKSB7XHJcbiAgICBsZXQgdGVybTtcclxuICAgIGlmICghdGhpcy5xdWVyeS50ZXJtKSB7XHJcbiAgICAgIHRlcm0gPSBzdHI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0ZXJtID0gdGhpcy5xdWVyeS50ZXJtICsgJyAnICsgc3RyO1xyXG4gICAgfVxyXG4gICAgdGhpcy5xdWVyeS50ZXJtID0gdGVybSArICc6JztcclxuICAgIHRoaXMuZXhwZXJ0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVR5cGUoX3R5cGU6IE9iamVjdFR5cGUpIHtcclxuICAgIC8vIGRvIG5vdCBkaXJlY3RseSB0b2dnbGUgX3R5cGUgb24gdGhlIHF1ZXJ5LCBpbnN0ZWFkIHVzZSB0aGVcclxuICAgIC8vIHNlYXJjaFNlcnZpY2UgdG8gdXBkYXRlIHRoZSBxdWVyeSBzdG9yZVxyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnRvZ2dsZVF1ZXJ5VHlwZShfdHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNUeXBlQWN0aXZlKF90eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLnF1ZXJ5LnR5cGVzLmZpbmQodCA9PiB0LmlkID09PSBfdHlwZS5pZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNUeXBlU2F2ZWQoX3R5cGU6IE9iamVjdFR5cGUpIHtcclxuICAgIHJldHVybiAoIXRoaXMucXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMudHlwZS5nZXQoX3R5cGUubmFtZSkgJiYgdGhpcy5xdWVyeVN0YXRlLmxhc3RDaGFuZ2UgPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWdncmVnYXRpb25Db3VudChfdHlwZTogT2JqZWN0VHlwZSkge1xyXG4gICAgcmV0dXJuICgodGhpcy5pc1R5cGVTYXZlZChfdHlwZSkgPyB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEVdLmdldChfdHlwZS5uYW1lKSA6IHRoaXMucXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMudHlwZS5nZXQoX3R5cGUubmFtZSkpIHx8ICcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSkge1xyXG4gICAgaWYgKGtleSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBTZWFyY2hGaWx0ZXIoZmlsdGVyVHlwZSwga2V5Lm9wZXJhdG9yLCBrZXkuZmlyc3RWYWx1ZSwga2V5LnNlY29uZFZhbHVlLCB7dGltZToga2V5Lm9wZXJhdG9yICE9PSB0aGlzLk9QRVJBVE9SLkVRVUFMLCB0aW1lem9uZTogZmFsc2V9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgU2VhcmNoRmlsdGVyKGZpbHRlclR5cGUsIG9wZXJhdG9yLCBrZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEZpbHRlcihmaWx0ZXJUeXBlOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcsIGtleTogYW55LCBmb3JtPzogTmdGb3JtKSB7XHJcbiAgICBsZXQgZmlsdGVyID0gdGhpcy5idWlsZEZpbHRlcihmaWx0ZXJUeXBlLCBvcGVyYXRvciwga2V5KTtcclxuICAgIGxldCBlbXB0eSA9IHRoaXMuaXNFbXB0eShmaWx0ZXIpO1xyXG4gICAgbGV0IGFjdGl2ZUZpbHRlciA9IHRoaXMucXVlcnkuZmlsdGVycy5maW5kKGZmID0+IGZmLnByb3BlcnR5ID09PSBmaWx0ZXIucHJvcGVydHkpO1xyXG4gICAgbGV0IGR1cGxpY2F0ZSA9IHRoaXMuaXNGaWx0ZXJBY3RpdmUoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XHJcblxyXG4gICAgaWYgKGVtcHR5ICYmIGFjdGl2ZUZpbHRlciAmJiBhY3RpdmVGaWx0ZXIub3BlcmF0b3IgIT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRSkge1xyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucmVtb3ZlUXVlcnlGaWx0ZXIoZmlsdGVyKTtcclxuICAgIH0gZWxzZSBpZiAoIWVtcHR5ICYmICFkdXBsaWNhdGUpIHtcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFkZFF1ZXJ5RmlsdGVyKGZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlRmlsdGVyKGZpbHRlclR5cGU6IHN0cmluZywgb3BlcmF0b3I6IHN0cmluZywga2V5OiBhbnksIHNlbGVjdGVkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgZmlsdGVyID0gdGhpcy5idWlsZEZpbHRlcihmaWx0ZXJUeXBlLCBvcGVyYXRvciwga2V5KTtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVRdWVyeUZpbHRlcihmaWx0ZXIsICFzZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNFbXB0eSh2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIFNlYXJjaEZpbHRlcikgJiZcclxuICAgICAgICB0aGlzLmlzRW1wdHkodmFsdWUuZmlyc3RWYWx1ZSkgJiZcclxuICAgICAgICB0aGlzLmlzRW1wdHkodmFsdWUuc2Vjb25kVmFsdWUpKSB8fFxyXG4gICAgICAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZS5sZW5ndGggPT09IDApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzRmlsdGVyQWN0aXZlKGZpbHRlclR5cGU6IHN0cmluZywgb3BlcmF0b3I6IHN0cmluZywga2V5OiBhbnkpIHtcclxuICAgIGxldCBmID0gdGhpcy5idWlsZEZpbHRlcihmaWx0ZXJUeXBlLCBvcGVyYXRvciwga2V5KTtcclxuICAgIHJldHVybiAhIXRoaXMucXVlcnkuZmlsdGVycy5maW5kKGZmID0+IGZmLm1hdGNoKGYucHJvcGVydHksIGYub3BlcmF0b3IsIGYuZmlyc3RWYWx1ZSwgZi5zZWNvbmRWYWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0RmlsdGVyKG1vZGVsOiBhbnksIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmIChtb2RlbC5pbm5lclZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgbW9kZWwuaW5uZXJWYWx1ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCBmaWx0ZXIgPSB0aGlzLmJ1aWxkRmlsdGVyKG1vZGVsLmZpbHRlci5wcm9wZXJ0eSwgbW9kZWwuZmlsdGVyLm9wZXJhdG9yLCBtb2RlbC5pbm5lclZhbHVlLmZpbHRlcihmID0+IGYgIT09IHZhbHVlKSk7XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZGRRdWVyeUZpbHRlcihmaWx0ZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlbW92ZVF1ZXJ5RmlsdGVyKG1vZGVsLmZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXV0b2NvbXBsZXRlU3VnZ2VzdChldnQ/KSB7XHJcbiAgICBsZXQgdiA9IFtdO1xyXG4gICAgLy8gYWxzbyB0cmlnZ2VyIGFnZ3JlZ2F0aW9ucyBzZWFyY2hcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VsZWN0KCk7XHJcbiAgICBpZiAoZXZ0ICYmIGV2dC5xdWVyeSkge1xyXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2VcclxuICAgICAgICAuYXV0b2NvbXBsZXRlKGV2dC5xdWVyeSlcclxuICAgICAgICAucGlwZShzd2l0Y2hNYXAocmVzID0+IG9ic2VydmFibGVGcm9tKHJlcykucGlwZShwbHVjaygndmFsdWUnKSkpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHYucHVzaChyZXMpLCAoKSA9PiB7fSwgKCkgPT4gKHRoaXMuYXV0b2NvbXBsZXRlUmVzdWx0cyA9IHYpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cGVydFRlcm1DaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGF1dG9jb21wbGV0ZVNlbGVjdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcclxuICB9XHJcblxyXG4gIGF1dG9jb21wbGV0ZVBhc3RlKGUpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnF1ZXJ5LnRlcm0gPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy5hdXRvY29tcGxldGVTZWxlY3QoKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4ZWN1dGVTZWFyY2goKSB7XHJcbiAgICB0aGlzLmV4cGVydE1vZGVRdWVyeUVtcHR5ID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5xdWVyeS5leHBlcnRNb2RlKSB7XHJcbiAgICAgIC8vIGluIGV4cGVydCBzZWFyY2ggbW9kZSB3ZSBwcmUtZmV0Y2ggcmVzdWx0cyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3R1YWwgc2VhcmNoXHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRTZWFyY2hTdGF0ZSh7YWdnczoge3R5cGU6IHt9fSwgLi4udGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKX0pLnN1YnNjcmliZSgocXVlcnlTdGF0ZTogU2VhcmNoU3RhdGUpID0+IHtcclxuICAgICAgICAvLyBvbmx5IGV4ZWN1dGUgdGhlIGFjdHVhbCBxdWVyeSB3aGVuIHdlJ3ZlIGZvdW5kIHNvbWV0aGluZ1xyXG4gICAgICAgIGlmICghcXVlcnlTdGF0ZS5pc0VtcHR5KSB7XHJcbiAgICAgICAgICB0aGlzLnRyaWdnZXJTZWFyY2goKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHNlYXJjaCByZXN1bHQnKTtcclxuICAgICAgICB0aGlzLmV4cGVydE1vZGVRdWVyeUVtcHR5ID0gdHJ1ZTtcclxuICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudHJpZ2dlclNlYXJjaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZXhlY3V0ZSB0aGUgYWN0dWFsIHNlYXJjaCBieSByb3V0aW5nIHRvIHRoZSByZXN1bHQgc3RhdGUgd2hpY2ggdGhlbiB3aWxsIGV4ZWN1dGUgdGhlXHJcbiAgLy8gcXVlcnkgYW5kIGRpc3BsYXkgdGhlIHJlc3VsdHNcclxuICBwcml2YXRlIHRyaWdnZXJTZWFyY2goKSB7XHJcbiAgICB0aGlzLnF1ZXJ5LnJlc29sdmVSZWZlcmVuY2UgPSB0cnVlO1xyXG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoVXRpbHMuZm9ybURhdGFTdHJpbmdpZnkodGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKSkpO1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dKS50aGVuKCgpID0+IHtcclxuICAgICAgY29uc3QgdXJpUGFyYW1RdWVyeTogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczoge3F1ZXJ5OiB1cmlQYXJhbX19O1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9yZXN1bHQnXSwgdXJpUGFyYW1RdWVyeSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVUZXJtKCkge1xyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFRlcm0oJycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xyXG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoKSB7XHJcbiAgICAgIHRoaXMuZXhpdEluZGV4ZGF0YVNlYXJjaCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnRvZ2dsZVF1ZXJ5VHlwZSh0eXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVDb250ZXh0VHlwZSgpIHtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5yZW1vdmVRdWVyeUZpbHRlcihmaWx0ZXIpO1xyXG5cclxuICAgIC8vIGlmIHdlIGFyZSBpbiBpbmRlc2RhdGEgc2VhcmNoIG1vZGUsIHJlbW92aW5nIGEgZmlsdGVyIHRoYXQgaXMgbm8gYmFzZXBhcmFtIGZpbHRlclxyXG4gICAgLy8gcmVxdWlyZXMgdGhlIGZyb20gbW9kZWwgdG8gYmUgdXBkYXRlZFxyXG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoICYmICF0aGlzLmFwcFNlYXJjaFNlcnZpY2UuaXNCYXNlUGFyYW1GaWx0ZXIoZmlsdGVyKSkge1xyXG4gICAgICAvLyB0b2RvOiB1cGRhdGUgZm9ybSBtb2RlbC9kYXRhXHJcbiAgICAgIGxldCBpZHhGaWx0ZXJzID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmdldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKCk7XHJcbiAgICAgIGlmIChpZHhGaWx0ZXJzICYmIGlkeEZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIHNldCB1cCBmb3JtIGRhdGEgZnJvbSBpbmRleGRhdGEgcXVlcnkgZmlsdGVyc1xyXG4gICAgICAgIHRoaXMuaWR4U2VhcmNoLmZvcm1PcHRpb25zLmRhdGEgPSBpZHhGaWx0ZXJzO1xyXG4gICAgICAgIHRoaXMuaW5kZXhkYXRhRm9ybS5zZXRGb3JtRGF0YShpZHhGaWx0ZXJzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBpZiBubyBmaWx0ZXJzIGFyZSBwcmVzZW50IHJlc2V0IHRoZSBmb3JtXHJcbiAgICAgICAgdGhpcy5pZHhTZWFyY2guZm9ybU9wdGlvbnMuZGF0YSA9IHt9O1xyXG4gICAgICAgIHRoaXMuaW5kZXhkYXRhRm9ybS5yZXNldEZvcm0oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQ29udGV4dE1vZGVsKGZvcm1Nb2RlbHMpOiB2b2lkIHtcclxuICAgIGxldCBtb2RlbHMgPSBbLi4uZm9ybU1vZGVsc107XHJcbiAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0TW9kZWxzLnB1c2goLi4ubW9kZWxzKTtcclxuICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRNb2RlbHMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleGl0SW5kZXhkYXRhU2VhcmNoKCkge1xyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmV4aXRJbmRleGRhdGFTZWFyY2goKTtcclxuICAgIHRoaXMuaWR4U2VhcmNoID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHNldENvbnRleHQoY29udGV4dEZvbGRlck5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnRleHRGb2xkZXJOYW1lICYmIHRoaXMuY3VycmVudENvbnRleHRGb2xkZXJOYW1lICE9PSBjb250ZXh0Rm9sZGVyTmFtZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZSA9IGNvbnRleHRGb2xkZXJOYW1lO1xyXG4gICAgICBjb25zdCBjb250ZXh0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGNvbnRleHRGb2xkZXJOYW1lKTtcclxuICAgICAgaWYgKGNvbnRleHRGb2xkZXJOYW1lID09PSBDb250ZXh0VHlwZS5zeXNyb290KSB7XHJcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldENvbnRleHRUeXBlKHtuYW1lOiBDb250ZXh0VHlwZS5zeXNyb290LCBsYWJlbDogQ29udGV4dFR5cGUuc3lzcm9vdH0gYXMgT2JqZWN0VHlwZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dFR5cGUpIHtcclxuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUoY29udGV4dFR5cGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBDb250ZXh0IHR5cGUgJyR7Y29udGV4dEZvbGRlck5hbWV9JyBub3QgZm91bmQuYCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShudWxsKTtcclxuICAgICAgdGhpcy5jdXJyZW50Q29udGV4dEZvbGRlck5hbWUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0cyBhIGNvbnRleHQgdHlwZSBmb3IgdGhlIGN1cnJlbnQgc2VhcmNoXHJcbiAgICogQHBhcmFtIGN0eCBUaGUgY29udGV4dCBmb3JtIG1vZGVsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZWxlY3RDb250ZXh0KGN0eCkge1xyXG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9ucyAmJiB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9ybU9wdGlvbnMuZm9ybU1vZGVsLm5hbWUgPT09IGN0eC5uYW1lKSB7XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBjb250ZXh0O1xyXG4gICAgICBpZiAoY3R4Lm5hbWUgPT09IENvbnRleHRUeXBlLnN5c3Jvb3QpIHtcclxuICAgICAgICBjb250ZXh0ID0gY3R4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRleHQgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShjdHgubmFtZSk7XHJcbiAgICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEZvbGRlclR5cGUgPSBjb250ZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShjb250ZXh0KTtcclxuXHJcbiAgICAgIGxldCBmb3JtRGF0YSA9IHt9O1xyXG4gICAgICBsZXQgaWR4RmlsdGVycyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycygpO1xyXG4gICAgICBpZiAoaWR4RmlsdGVycyAmJiBpZHhGaWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3JtRGF0YSA9IGlkeEZpbHRlcnM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9ucyA9IHtmb3JtTW9kZWw6IGN0eCwgZGF0YTogZm9ybURhdGF9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSW5kZXhEYXRhQ2hhbmdlZChldmVudDogRm9ybVN0YXR1c0NoYW5nZWRFdmVudCkge1xyXG4gICAgLy8gb25seSB0cmlnZ2VyIHdoZW4gdmFsdWVzIGFyZSBjaGFuZ2VkIGFzIGNoYW5nZXMgbWF5IGFsc28gYXBwZWFyIHdoZW4gc2NyaXB0c1xyXG4gICAgLy8gY2hhbmdlIG90aGVyIGZvcm0gZWxlbWVudCBwcm9wZXJ0aWVzIChlZy4gcmVhZG9ubHksIHJlcXVpcmVkIGZsYWcpXHJcbiAgICBpZiAoZXZlbnQuaW5kZXhkYXRhQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlYXJjaEZpbHRlckZyb21Gb3JtRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWFyY2hGaWx0ZXJGcm9tRm9ybURhdGEoKSB7XHJcbiAgICBpZiAoIXRoaXMuaW5kZXhkYXRhRm9ybSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIG1ldGFkYXRhIGZpbHRlcnMgZm9yIGVhY2ggZm9ybSBkYXRhIGVudHJ5XHJcbiAgICBsZXQgaWR4RmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSBbXTtcclxuICAgIGxldCBmb3JtRGF0YSA9IHRoaXMuaW5kZXhkYXRhRm9ybS5nZXRGb3JtRGF0YSgpO1xyXG4gICAgaWYgKHRoaXMuY29udGV4dEZvcm0pIHtcclxuICAgICAgZm9ybURhdGEgPSBPYmplY3QuYXNzaWduKGZvcm1EYXRhLCB0aGlzLmNvbnRleHRGb3JtLmdldEZvcm1EYXRhKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhmb3JtRGF0YSkpIHtcclxuICAgICAgY29uc3QgZmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoRmlsdGVyKHRoaXMucXVlcnkudHlwZXMsIGtleSwgZm9ybURhdGFba2V5XSk7XHJcblxyXG4gICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiBpZHhGaWx0ZXJzLnB1c2goZikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKGlkeEZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgb2JqZWN0IHR5cGUgZWxlbWVudCBmb3IgYSBmaWx0ZXIsIHRvIGJlIGFibGUgdG8gc2hvdyB0aGVcclxuICAgKiBsYWJlbCBmb3IgYSBmaWx0ZXIgaW4gdGhlIHNlYXJjaCBzdW1tYXJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gZmV0Y2ggb2JqZWN0IHR5cGUgZWxlbWVudCBmb3JcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0T2JqZWN0VHlwZUVsZW1lbnRMYWJlbChmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xyXG4gICAgbGV0IG90ID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmdldFRhcmdldFR5cGVFbGVtZW50QnlOYW1lKGZpbHRlci5wcm9wZXJ0eSk7XHJcbiAgICByZXR1cm4gb3QgPyBvdC5sYWJlbCA6IGZpbHRlci5wcm9wZXJ0eSArICcgLSAnICsgZmlsdGVyLmZpcnN0VmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZVF1ZXJ5KCkge1xyXG4gICAgLy8gY29uc3QgcXVlcnlQYXJhbXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXNIYW5kbGluZyA6ICdwcmVzZXJ2ZSd9O1xyXG4gICAgdGhpcy5yb3V0ZXJcclxuICAgICAgLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dLCB7cmVwbGFjZVVybDogdHJ1ZX0pXHJcbiAgICAgIC50aGVuKCgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N0b3JlZC1xdWVyaWVzJ10sIHtxdWVyeVBhcmFtczoge2NyZWF0ZTogdHJ1ZX19KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlU3RvcmVkUXVlcnkoKSB7XHJcbiAgICBpZiAodGhpcy5xdWVyeSBpbnN0YW5jZW9mIFN0b3JlZFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dLCB7cmVwbGFjZVVybDogdHJ1ZX0pO1xyXG4gICAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnF1ZXJ5KS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcnkuc2F2ZS5zdWNjZXNzJykpO1xyXG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcnkuc2F2ZS5lcnJvcicpKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRRdWVyeSgpIHtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5yZXNldCgpO1xyXG4gICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoKSB7XHJcbiAgICAgIHRoaXMuZXhpdEluZGV4ZGF0YVNlYXJjaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VTZWFyY2hNZW51KGV2dD8pIHtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZSd9O1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6IG51bGx9fV0sIHF1ZXJ5UGFyYW1zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNTZWFyY2hJbnB1dCgpIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuaW5wdXRFTC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VTZWFyY2hJbnB1dEZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMucXVlcnkuZXhwZXJ0TW9kZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcuZXhwZXJ0LXNlYXJjaF9faW5wdXQnKS5mb2N1cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXR5U2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcclxuICAgIHRoaXMub2JqZWN0VHlwZUdyb3VwcyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5vYmplY3RUeXBlR3JvdXBzO1xyXG4gICAgdGhpcy5xdWVyeVN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5xdWVyeSQuc3Vic2NyaWJlKFxyXG4gICAgICAocXVlcnk6IFNlYXJjaFF1ZXJ5KSA9PiB0aGlzLnByb2Nlc3NRdWVyeShxdWVyeSkpO1xyXG4gICAgLy8gc3Vic2NyaWJlIHRvIHF1ZXJ5IHN0YXRlIGFzIHdlbGwgdG8gZmV0Y2ggcmVzdWx0IGNvdW50IGFuZCBhZ2dyZWdhdGlvbnMgYXMgdGhleSBjaGFuZ2VcclxuICAgIHRoaXMucXVlcnlTdGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5xdWVyeVN0YXRlJC5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB0aGlzLnByb2Nlc3NRdWVyeVN0YXRlKHF1ZXJ5U3RhdGUpKTtcclxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucmVzZXRBZ2dzKCk7XHJcbiAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnF1ZXJ5U3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19