@netgrif/components-core 6.4.0 → 6.5.0-rc.1

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 (90) hide show
  1. package/commons/schema.d.ts +3 -0
  2. package/esm2020/assets/i18n/de.json +4 -2
  3. package/esm2020/assets/i18n/en.json +4 -2
  4. package/esm2020/assets/i18n/sk.json +4 -2
  5. package/esm2020/commons/schema.mjs +1 -1
  6. package/esm2020/lib/admin/role-assignment/abstract-role-assignment.component.mjs +11 -2
  7. package/esm2020/lib/admin/role-assignment/services/ProcessList.mjs +5 -2
  8. package/esm2020/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.mjs +11 -2
  9. package/esm2020/lib/admin/user-invite/abstract-user-invite.component.mjs +16 -3
  10. package/esm2020/lib/allowed-nets/services/factory/allowed-nets-service-factory.mjs +4 -1
  11. package/esm2020/lib/changed-fields/services/changed-fields.service.mjs +2 -2
  12. package/esm2020/lib/configuration/configuration.service.mjs +2 -2
  13. package/esm2020/lib/dialog/components/confirm-dialog/confirm-dialog.component.mjs +2 -2
  14. package/esm2020/lib/event/public-api.mjs +2 -1
  15. package/esm2020/lib/event/services/event.service.mjs +4 -4
  16. package/esm2020/lib/header/services/overflow.service.mjs +2 -2
  17. package/esm2020/lib/logger/services/log-publisher.service.mjs +2 -2
  18. package/esm2020/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +3 -3
  19. package/esm2020/lib/navigation/dashboard/abstract-dashboard.component.mjs +228 -0
  20. package/esm2020/lib/navigation/model/group-navigation-constants.mjs +27 -19
  21. package/esm2020/lib/navigation/model/navigation-configs.mjs +2 -2
  22. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +104 -348
  23. package/esm2020/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.mjs +458 -0
  24. package/esm2020/lib/navigation/navigation-double-drawer/util/double-drawer-utils.mjs +43 -0
  25. package/esm2020/lib/navigation/public-api.mjs +4 -1
  26. package/esm2020/lib/navigation/service/uri.service.mjs +2 -2
  27. package/esm2020/lib/navigation/utility/filter-extraction.service.mjs +16 -5
  28. package/esm2020/lib/navigation/utility/navigation-item-task-utility-methods.mjs +13 -1
  29. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +3 -3
  30. package/esm2020/lib/resources/engine-endpoint/petri-net-resource.service.mjs +12 -1
  31. package/esm2020/lib/resources/interface/petri-net-request-body.mjs +1 -1
  32. package/esm2020/lib/resources/resource-provider.service.mjs +6 -6
  33. package/esm2020/lib/routing/redirect-service/redirect.service.mjs +6 -3
  34. package/esm2020/lib/search/models/category/case/case-dataset.mjs +2 -2
  35. package/esm2020/lib/search/models/operator/operator.mjs +2 -2
  36. package/esm2020/lib/search/models/operator/substring.mjs +2 -2
  37. package/esm2020/lib/search/search-service/search.service.mjs +2 -2
  38. package/esm2020/lib/task/services/task-data.service.mjs +4 -4
  39. package/esm2020/lib/task-content/model/subgrid.mjs +2 -2
  40. package/esm2020/lib/task-content/services/field-converter.service.mjs +2 -2
  41. package/esm2020/lib/task-content/services/task-content.service.mjs +4 -4
  42. package/esm2020/lib/toolbar/abstract-toolbar.component.mjs +48 -11
  43. package/esm2020/lib/toolbar/public-api.mjs +2 -1
  44. package/esm2020/lib/toolbar/toolbar-config.mjs +2 -0
  45. package/esm2020/lib/user/services/user-comparator.service.mjs +2 -2
  46. package/esm2020/lib/utility/contains.pipe.mjs +2 -2
  47. package/esm2020/lib/utility/navigation-item-task-filter-factory.mjs +4 -3
  48. package/esm2020/lib/utility/navigation-item-task-search-categories-factory.mjs +4 -1
  49. package/esm2020/lib/view/abstract/view-with-headers.mjs +1 -1
  50. package/esm2020/lib/view/public-api.mjs +2 -1
  51. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +9 -26
  52. package/esm2020/lib/view/task-view/abstract-tabbed-single-task-view.component.mjs +32 -0
  53. package/esm2020/lib/view/workflow-view/abstract-workflow-view.component.mjs +14 -1
  54. package/esm2020/lib/view/workflow-view/workflow-view.service.mjs +17 -2
  55. package/fesm2015/netgrif-components-core.mjs +1064 -434
  56. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  57. package/fesm2020/netgrif-components-core.mjs +1041 -426
  58. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  59. package/lib/admin/role-assignment/abstract-role-assignment.component.d.ts +4 -1
  60. package/lib/admin/role-assignment/services/ProcessList.d.ts +1 -1
  61. package/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.d.ts +4 -1
  62. package/lib/admin/user-invite/abstract-user-invite.component.d.ts +9 -3
  63. package/lib/allowed-nets/services/factory/allowed-nets-service-factory.d.ts +1 -1
  64. package/lib/event/public-api.d.ts +1 -0
  65. package/lib/navigation/dashboard/abstract-dashboard.component.d.ts +73 -0
  66. package/lib/navigation/model/group-navigation-constants.d.ts +27 -19
  67. package/lib/navigation/model/navigation-configs.d.ts +1 -0
  68. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +22 -57
  69. package/lib/navigation/navigation-double-drawer/service/double-drawer-navigation.service.d.ts +137 -0
  70. package/lib/navigation/navigation-double-drawer/util/double-drawer-utils.d.ts +16 -0
  71. package/lib/navigation/public-api.d.ts +3 -0
  72. package/lib/navigation/utility/filter-extraction.service.d.ts +3 -2
  73. package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +6 -0
  74. package/lib/resources/engine-endpoint/petri-net-resource.service.d.ts +8 -0
  75. package/lib/resources/interface/petri-net-request-body.d.ts +1 -0
  76. package/lib/toolbar/abstract-toolbar.component.d.ts +16 -6
  77. package/lib/toolbar/public-api.d.ts +1 -0
  78. package/lib/toolbar/toolbar-config.d.ts +11 -0
  79. package/lib/utility/navigation-item-task-filter-factory.d.ts +3 -1
  80. package/lib/utility/navigation-item-task-search-categories-factory.d.ts +1 -1
  81. package/lib/view/abstract/view-with-headers.d.ts +1 -1
  82. package/lib/view/public-api.d.ts +1 -0
  83. package/lib/view/task-view/abstract-single-task-view.component.d.ts +5 -16
  84. package/lib/view/task-view/abstract-tabbed-single-task-view.component.d.ts +15 -0
  85. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +5 -2
  86. package/lib/view/workflow-view/workflow-view.service.d.ts +2 -0
  87. package/package.json +1 -1
  88. package/src/assets/i18n/de.json +4 -2
  89. package/src/assets/i18n/en.json +4 -2
  90. package/src/assets/i18n/sk.json +4 -2
@@ -137,6 +137,17 @@ export class PetriNetResourceService extends AbstractResourceService {
137
137
  return this._resourceProvider.post$('petrinet/search', this.SERVER_URL, body, params)
138
138
  .pipe(map(r => this.getResourcePage(r, 'petriNetReferences')));
139
139
  }
140
+ /**
141
+ * search PetriNets
142
+ *
143
+ * **Request Type:** POST
144
+ *
145
+ * **Request URL:** {{baseUrl}}/api/petrinet/search
146
+ */
147
+ searchElasticPetriNets(body, params) {
148
+ return this._resourceProvider.post$('petrinet/search_elastic', this.SERVER_URL, body, params)
149
+ .pipe(map(r => this.getResourcePage(r, 'petriNetReferences')));
150
+ }
140
151
  /**
141
152
  * delete PetriNet
142
153
  *
@@ -159,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
159
170
  providedIn: 'root'
160
171
  }]
161
172
  }], ctorParameters: function () { return [{ type: i1.ResourceProvider }, { type: i2.ConfigurationService }]; } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGV0cmktbmV0LXJlc291cmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvcGV0cmktbmV0LXJlc291cmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQTJCLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHeEYsT0FBTyxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQU0vRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQzs7OztBQU12RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsdUJBQXVCO0lBRWhFLFlBQVksUUFBMEIsRUFBRSxhQUFtQztRQUN2RSxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLE1BQWU7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQzthQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWUsQ0FB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QUFDLGVBQWUsQ0FBb0IsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLGNBQWMsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBa0IsV0FBVyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3ZGLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7O3FIQWxLUSx1QkFBdUI7eUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOzRGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXRyaU5ldH0gZnJvbSAnLi4vaW50ZXJmYWNlL3BldHJpLW5ldCc7XG5pbXBvcnQge1BhcmFtcywgUHJvdmlkZXJQcm9ncmVzcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgVHJhbnNpdGlvbiBmcm9tICcuLi8uLi9wcm9jZXNzL3RyYW5zaXRpb24nO1xuaW1wb3J0IHtIdHRwRXZlbnRUeXBlLCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgVHJhbnNhY3Rpb24gZnJvbSAnLi4vLi4vcHJvY2Vzcy90cmFuc2FjdGlvbic7XG5pbXBvcnQge0V2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSwgTWVzc2FnZVJlc291cmNlfSBmcm9tICcuLi9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge1BldHJpTmV0UmVmZXJlbmNlfSBmcm9tICcuLi9pbnRlcmZhY2UvcGV0cmktbmV0LXJlZmVyZW5jZSc7XG5pbXBvcnQge1BldHJpTmV0UmVxdWVzdEJvZHl9IGZyb20gJy4uL2ludGVyZmFjZS9wZXRyaS1uZXQtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7UGFnZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtwcm9jZXNzTWVzc2FnZVJlc3BvbnNlfSBmcm9tICcuLi8uLi91dGlsaXR5L3Byb2Nlc3MtbWVzc2FnZS1yZXNwb25zZSc7XG5pbXBvcnQge0Fic3RyYWN0UmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9hYnN0cmFjdC1lbmRwb2ludC9hYnN0cmFjdC1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCBSb2xlc0FuZFBlcm1pc3Npb25zIGZyb20gJy4uLy4uL3Byb2Nlc3Mvcm9sZXNBbmRQZXJtaXNzaW9ucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGV0cmlOZXRSZXNvdXJjZVNlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFJlc291cmNlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm92aWRlcjogUmVzb3VyY2VQcm92aWRlciwgY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoJ3BldHJpbmV0JywgcHJvdmlkZXIsIGNvbmZpZ1NlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBBbGwgVXNpbmcgUGV0cmkgTmV0XG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0XG4gICAgICovXG4gICAgcHVibGljIGdldEFsbChwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPEFycmF5PFBldHJpTmV0UmVmZXJlbmNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCdwZXRyaW5ldCcsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsICdwZXRyaU5ldFJlZmVyZW5jZXMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBEYXRhIEZpZWxkIFJlZmVyZW5jZXMgVXNpbmdcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIFBPU1RcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L2RhdGFcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0YVBldHJpTmV0KGJvZHk6IG9iamVjdCk6IE9ic2VydmFibGU8YW55PiB7ICAvLyBUT0RPOiByZXNwb25zZVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgncGV0cmluZXQvZGF0YScsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IFRyYW5zaXRpb24gUmVmZXJlbmNlcyBVc2luZ1xuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogR0VUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS9wZXRyaW5ldC90cmFuc2l0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQZXRyaU5ldFRyYW5zaXRpb25zKG5ldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFRyYW5zaXRpb24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJy9wZXRyaW5ldC90cmFuc2l0aW9ucycsIHRoaXMuU0VSVkVSX1VSTCwgbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkcycsIG5ldElkKSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCAndHJhbnNpdGlvblJlZmVyZW5jZXMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBUcmFuc2FjdGlvbiBSZWZlcmVuY2VzIFVzaW5nXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L3tpZH0vdHJhbnNhY3Rpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFBldHJpTmV0VHJhbnNhY3Rpb25zKG5ldElkOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8QXJyYXk8VHJhbnNhY3Rpb24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJy9wZXRyaW5ldC8nICsgbmV0SWQgKyAnL3RyYW5zYWN0aW9ucycsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsICd0cmFuc2FjdGlvbnMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBSb2xlcyBSZWZlcmVuY2VzIFVzaW5nXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L3tpZH0vcm9sZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGV0cmlOZXRSb2xlcyhuZXRJZDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFJvbGVzQW5kUGVybWlzc2lvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgnL3BldHJpbmV0LycgKyBuZXRJZCArICcvcm9sZXMnLCB0aGlzLlNFUlZFUl9VUkwsIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IE5ldCBGaWxlXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L3tuZXRJZH0vZmlsZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXRGaWxlKG5ldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBCbG9iPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldEJsb2IkKCdwZXRyaW5ldC8nICsgbmV0SWQgKyAnL2ZpbGUnLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLmdldFByb2dyZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+ICEhdmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IE9uZSBOZXRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIEdFVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvcGV0cmluZXQve2lkZW50aWZpZXJ9L3t2ZXJzaW9ufVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPbmUoaWRlbnRpZmllcjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UGV0cmlOZXRSZWZlcmVuY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgncGV0cmluZXQvJyArIGJ0b2EoaWRlbnRpZmllcikgKyAnLycgKyB2ZXJzaW9uLCB0aGlzLlNFUlZFUl9VUkwsIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCAncGV0cmlOZXRSZWZlcmVuY2VzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgT25lIE5ldCBieSBJRFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogR0VUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS9wZXRyaW5ldC97aWR9XG4gICAgICovXG4gICAgcHVibGljIGdldE9uZUJ5SWQobmV0SWQ6IHN0cmluZywgcGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxQZXRyaU5ldD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCdwZXRyaW5ldC8nICsgbmV0SWQsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIGltcG9ydCBQZXRyaU5ldFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogUE9TVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvcGV0cmluZXQvaW1wb3J0XG4gICAgICovXG4gICAgcHVibGljIGltcG9ydFBldHJpTmV0KGJvZHk6IEZvcm1EYXRhLCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdFdpdGhFdmVudCQ8TWVzc2FnZVJlc291cmNlPigncGV0cmluZXQvaW1wb3J0JywgdGhpcy5TRVJWRVJfVVJMLCBib2R5LCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLnByb2Nlc3NNZXNzYWdlUmVzb3VyY2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogc2VhcmNoIFBldHJpTmV0c1xuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogUE9TVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvcGV0cmluZXQvc2VhcmNoXG4gICAgICovXG4gICAgcHVibGljIHNlYXJjaFBldHJpTmV0cyhib2R5OiBQZXRyaU5ldFJlcXVlc3RCb2R5LCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2U8UGV0cmlOZXRSZWZlcmVuY2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCdwZXRyaW5ldC9zZWFyY2gnLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHksIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuZ2V0UmVzb3VyY2VQYWdlPFBldHJpTmV0UmVmZXJlbmNlPihyLCAncGV0cmlOZXRSZWZlcmVuY2VzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZWxldGUgUGV0cmlOZXRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIERFTEVURVxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvcGV0cmluZXQve2lkfVxuICAgICAqXG4gICAgICogQHBhcmFtIG5ldElkIHN0cmluZ0lkIG9mIHRoZSBkZWxldGVkIFBldHJpIE5ldFxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVQZXRyaU5ldChuZXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZGVsZXRlJDxNZXNzYWdlUmVzb3VyY2U+KCdwZXRyaW5ldC8nICsgbmV0SWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKHN3aXRjaE1hcChwcm9jZXNzTWVzc2FnZVJlc3BvbnNlKSk7XG4gICAgfVxufVxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGV0cmktbmV0LXJlc291cmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvcGV0cmktbmV0LXJlc291cmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQTJCLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHeEYsT0FBTyxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQU0vRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQzs7OztBQU12RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsdUJBQXVCO0lBRWhFLFlBQVksUUFBMEIsRUFBRSxhQUFtQztRQUN2RSxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLE1BQWU7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQzthQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWUsQ0FB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QUFDLGVBQWUsQ0FBb0IsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0IsQ0FBQyxJQUF5QixFQUFFLE1BQWU7UUFDcEUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQzthQUN4RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBb0IsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLGNBQWMsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBa0IsV0FBVyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3ZGLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7O3FIQTlLUSx1QkFBdUI7eUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOzRGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXRyaU5ldH0gZnJvbSAnLi4vaW50ZXJmYWNlL3BldHJpLW5ldCc7XG5pbXBvcnQge1BhcmFtcywgUHJvdmlkZXJQcm9ncmVzcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgVHJhbnNpdGlvbiBmcm9tICcuLi8uLi9wcm9jZXNzL3RyYW5zaXRpb24nO1xuaW1wb3J0IHtIdHRwRXZlbnRUeXBlLCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgVHJhbnNhY3Rpb24gZnJvbSAnLi4vLi4vcHJvY2Vzcy90cmFuc2FjdGlvbic7XG5pbXBvcnQge0V2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSwgTWVzc2FnZVJlc291cmNlfSBmcm9tICcuLi9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge1BldHJpTmV0UmVmZXJlbmNlfSBmcm9tICcuLi9pbnRlcmZhY2UvcGV0cmktbmV0LXJlZmVyZW5jZSc7XG5pbXBvcnQge1BldHJpTmV0UmVxdWVzdEJvZHl9IGZyb20gJy4uL2ludGVyZmFjZS9wZXRyaS1uZXQtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7UGFnZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtwcm9jZXNzTWVzc2FnZVJlc3BvbnNlfSBmcm9tICcuLi8uLi91dGlsaXR5L3Byb2Nlc3MtbWVzc2FnZS1yZXNwb25zZSc7XG5pbXBvcnQge0Fic3RyYWN0UmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9hYnN0cmFjdC1lbmRwb2ludC9hYnN0cmFjdC1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCBSb2xlc0FuZFBlcm1pc3Npb25zIGZyb20gJy4uLy4uL3Byb2Nlc3Mvcm9sZXNBbmRQZXJtaXNzaW9ucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGV0cmlOZXRSZXNvdXJjZVNlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFJlc291cmNlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm92aWRlcjogUmVzb3VyY2VQcm92aWRlciwgY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoJ3BldHJpbmV0JywgcHJvdmlkZXIsIGNvbmZpZ1NlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBBbGwgVXNpbmcgUGV0cmkgTmV0XG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0XG4gICAgICovXG4gICAgcHVibGljIGdldEFsbChwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPEFycmF5PFBldHJpTmV0UmVmZXJlbmNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCdwZXRyaW5ldCcsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsICdwZXRyaU5ldFJlZmVyZW5jZXMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBEYXRhIEZpZWxkIFJlZmVyZW5jZXMgVXNpbmdcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIFBPU1RcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L2RhdGFcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0YVBldHJpTmV0KGJvZHk6IG9iamVjdCk6IE9ic2VydmFibGU8YW55PiB7ICAvLyBUT0RPOiByZXNwb25zZVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgncGV0cmluZXQvZGF0YScsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IFRyYW5zaXRpb24gUmVmZXJlbmNlcyBVc2luZ1xuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogR0VUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS9wZXRyaW5ldC90cmFuc2l0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQZXRyaU5ldFRyYW5zaXRpb25zKG5ldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFRyYW5zaXRpb24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJy9wZXRyaW5ldC90cmFuc2l0aW9ucycsIHRoaXMuU0VSVkVSX1VSTCwgbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkcycsIG5ldElkKSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCAndHJhbnNpdGlvblJlZmVyZW5jZXMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBUcmFuc2FjdGlvbiBSZWZlcmVuY2VzIFVzaW5nXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L3tpZH0vdHJhbnNhY3Rpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFBldHJpTmV0VHJhbnNhY3Rpb25zKG5ldElkOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8QXJyYXk8VHJhbnNhY3Rpb24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJy9wZXRyaW5ldC8nICsgbmV0SWQgKyAnL3RyYW5zYWN0aW9ucycsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsICd0cmFuc2FjdGlvbnMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBSb2xlcyBSZWZlcmVuY2VzIFVzaW5nXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L3tpZH0vcm9sZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGV0cmlOZXRSb2xlcyhuZXRJZDogc3RyaW5nLCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFJvbGVzQW5kUGVybWlzc2lvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgnL3BldHJpbmV0LycgKyBuZXRJZCArICcvcm9sZXMnLCB0aGlzLlNFUlZFUl9VUkwsIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IE5ldCBGaWxlXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3BldHJpbmV0L3tuZXRJZH0vZmlsZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXRGaWxlKG5ldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBCbG9iPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldEJsb2IkKCdwZXRyaW5ldC8nICsgbmV0SWQgKyAnL2ZpbGUnLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLmdldFByb2dyZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+ICEhdmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IE9uZSBOZXRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIEdFVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvcGV0cmluZXQve2lkZW50aWZpZXJ9L3t2ZXJzaW9ufVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPbmUoaWRlbnRpZmllcjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UGV0cmlOZXRSZWZlcmVuY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgncGV0cmluZXQvJyArIGJ0b2EoaWRlbnRpZmllcikgKyAnLycgKyB2ZXJzaW9uLCB0aGlzLlNFUlZFUl9VUkwsIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCAncGV0cmlOZXRSZWZlcmVuY2VzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgT25lIE5ldCBieSBJRFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogR0VUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS9wZXRyaW5ldC97aWR9XG4gICAgICovXG4gICAgcHVibGljIGdldE9uZUJ5SWQobmV0SWQ6IHN0cmluZywgcGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxQZXRyaU5ldD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCdwZXRyaW5ldC8nICsgbmV0SWQsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIGltcG9ydCBQZXRyaU5ldFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogUE9TVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvcGV0cmluZXQvaW1wb3J0XG4gICAgICovXG4gICAgcHVibGljIGltcG9ydFBldHJpTmV0KGJvZHk6IEZvcm1EYXRhLCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdFdpdGhFdmVudCQ8TWVzc2FnZVJlc291cmNlPigncGV0cmluZXQvaW1wb3J0JywgdGhpcy5TRVJWRVJfVVJMLCBib2R5LCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLnByb2Nlc3NNZXNzYWdlUmVzb3VyY2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogc2VhcmNoIFBldHJpTmV0c1xuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogUE9TVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvcGV0cmluZXQvc2VhcmNoXG4gICAgICovXG4gICAgcHVibGljIHNlYXJjaFBldHJpTmV0cyhib2R5OiBQZXRyaU5ldFJlcXVlc3RCb2R5LCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2U8UGV0cmlOZXRSZWZlcmVuY2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCdwZXRyaW5ldC9zZWFyY2gnLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHksIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuZ2V0UmVzb3VyY2VQYWdlPFBldHJpTmV0UmVmZXJlbmNlPihyLCAncGV0cmlOZXRSZWZlcmVuY2VzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZWFyY2ggUGV0cmlOZXRzXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBQT1NUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS9wZXRyaW5ldC9zZWFyY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VhcmNoRWxhc3RpY1BldHJpTmV0cyhib2R5OiBQZXRyaU5ldFJlcXVlc3RCb2R5LCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2U8UGV0cmlOZXRSZWZlcmVuY2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCdwZXRyaW5ldC9zZWFyY2hfZWxhc3RpYycsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5nZXRSZXNvdXJjZVBhZ2U8UGV0cmlOZXRSZWZlcmVuY2U+KHIsICdwZXRyaU5ldFJlZmVyZW5jZXMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlbGV0ZSBQZXRyaU5ldFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogREVMRVRFXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS9wZXRyaW5ldC97aWR9XG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV0SWQgc3RyaW5nSWQgb2YgdGhlIGRlbGV0ZWQgUGV0cmkgTmV0XG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZVBldHJpTmV0KG5ldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5kZWxldGUkPE1lc3NhZ2VSZXNvdXJjZT4oJ3BldHJpbmV0LycgKyBuZXRJZCwgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHByb2Nlc3NNZXNzYWdlUmVzcG9uc2UpKTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGV0cmktbmV0LXJlcXVlc3QtYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcmVzb3VyY2VzL2ludGVyZmFjZS9wZXRyaS1uZXQtcmVxdWVzdC1ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlc2NyaWJlcyByZXF1ZXN0IGJvZHkgZm9yIFBldHJpIG5ldCBzZWFyY2ggZW5kcG9pbnQuIFJldHVybmVkIFBldHJpIG5ldHMgbXVzdCBmdWxmaWxsIGFsbCBwcm92aWRlZCBjcml0ZXJpYS5cbiAqXG4gKiBUaGlzIG9iamVjdCBpcyB1c2VkIHdpdGggW3NlYXJjaFBldHJpTmV0cygpXXtAbGluayBQZXRyaU5ldFJlc291cmNlU2VydmljZSNzZWFyY2hQZXRyaU5ldHN9IG1ldGhvZCBpbiB7QGxpbmsgUGV0cmlOZXRSZXNvdXJjZVNlcnZpY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBldHJpTmV0UmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIFBldHJpIG5ldHMgKHByb2Nlc3NlcykgbXVzdCBiZWxvbmcgdG8gdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgSUQgaXMgc3BlY2lmaWVkIHRoZSByZXR1cm5lZCBwcm9jZXNzZXMgYmVsb25nIHRvIG9uZSBvZiB0aGUgZ3JvdXBzLlxuICAgICAqL1xuICAgIGdyb3VwPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICBbazogc3RyaW5nXTogYW55O1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGV0cmktbmV0LXJlcXVlc3QtYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcmVzb3VyY2VzL2ludGVyZmFjZS9wZXRyaS1uZXQtcmVxdWVzdC1ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlc2NyaWJlcyByZXF1ZXN0IGJvZHkgZm9yIFBldHJpIG5ldCBzZWFyY2ggZW5kcG9pbnQuIFJldHVybmVkIFBldHJpIG5ldHMgbXVzdCBmdWxmaWxsIGFsbCBwcm92aWRlZCBjcml0ZXJpYS5cbiAqXG4gKiBUaGlzIG9iamVjdCBpcyB1c2VkIHdpdGggW3NlYXJjaFBldHJpTmV0cygpXXtAbGluayBQZXRyaU5ldFJlc291cmNlU2VydmljZSNzZWFyY2hQZXRyaU5ldHN9IG1ldGhvZCBpbiB7QGxpbmsgUGV0cmlOZXRSZXNvdXJjZVNlcnZpY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBldHJpTmV0UmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIFBldHJpIG5ldHMgKHByb2Nlc3NlcykgbXVzdCBiZWxvbmcgdG8gdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgSUQgaXMgc3BlY2lmaWVkIHRoZSByZXR1cm5lZCBwcm9jZXNzZXMgYmVsb25nIHRvIG9uZSBvZiB0aGUgZ3JvdXBzLlxuICAgICAqL1xuICAgIGdyb3VwPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBbazogc3RyaW5nXTogYW55O1xufVxuIl19
@@ -23,15 +23,15 @@ export class AbstractResourceProvider {
23
23
  return link.charAt(0) === '/' ? link.length > 1 ? link.substring(1, link.length) : '' : link;
24
24
  }
25
25
  static sanitizeUrl(endpoint, url) {
26
- if (endpoint.includes('http://') || (endpoint.includes('https://'))) {
26
+ if (endpoint?.includes('http://') || (endpoint?.includes('https://'))) {
27
27
  if (url) {
28
- if (endpoint.includes(url)) {
28
+ if (endpoint?.includes(url)) {
29
29
  return endpoint;
30
30
  }
31
31
  else {
32
- return url.includes('https://') ? 'https://' +
33
- endpoint.replace(/(^\w+:|^)\/\//, '') : 'http://' +
34
- endpoint.replace(/(^\w+:|^)\/\//, '');
32
+ return url?.includes('https://') ? 'https://' +
33
+ endpoint?.replace(/(^\w+:|^)\/\//, '') : 'http://' +
34
+ endpoint?.replace(/(^\w+:|^)\/\//, '');
35
35
  }
36
36
  }
37
37
  else {
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
163
163
  providedIn: 'root'
164
164
  }]
165
165
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixhQUFhLEVBQWUsVUFBVSxFQUFrQyxNQUFNLHNCQUFzQixDQUFDO0FBRXBJLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQWlCekMsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUNwQixpQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFVRCxNQUFNLE9BQWdCLHdCQUF3QjtJQUUxQyxZQUFnQyxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3RELENBQUM7SUFFTyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQVk7UUFDcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNuRTthQUFNO1lBQ0gsTUFBTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBWTtRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNB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Q3JFLFlBQTRCLEVBQUUsSUFBYTtRQUN6RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFJLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDbEYsT0FBTztZQUNQLE1BQU07WUFDTixZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtZQUNmLElBQUk7U0FDUCxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFLRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsd0JBQXdCO0lBQzFELFlBQVksVUFBc0I7UUFDOUIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7OzhHQUhRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs0RkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUHJvZ3Jlc3NFdmVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWVzc2FnZVJlc291cmNlfSBmcm9tICcuL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcblxuXG5leHBvcnQgdHlwZSBIZWFkZXJzID1cbiAgICBIdHRwSGVhZGVycyB8IHtcbiAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgUGFyYW1zID0gSHR0cFBhcmFtcyB8IE9iamVjdFBhcmFtcztcblxuZXhwb3J0IHR5cGUgUmVzcG9uc2VUeXBlID0gJ2pzb24nIHwgJ2hhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0UGFyYW1zIHtcbiAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG59XG5cbmV4cG9ydCBlbnVtIFByb2dyZXNzVHlwZSB7XG4gICAgVVBMT0FEID0gJ3VwbG9hZCcsXG4gICAgRE9XTkxPQUQgPSAnZG93bmxvYWQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJQcm9ncmVzcyB7XG4gICAgdHlwZTogUHJvZ3Jlc3NUeXBlO1xuICAgIGxvYWRlZDogbnVtYmVyO1xuICAgIHRvdGFsPzogbnVtYmVyO1xuICAgIHByb2dyZXNzPzogbnVtYmVyO1xufVxuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIge1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkTGFzdFNsYXNoKGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChsaW5rLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5rLmNoYXJBdChsaW5rLmxlbmd0aCAtIDEpID09PSAnLycgPyBsaW5rIDogbGluayArICcvJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdObyBkZWZpbmUgYXBpIHVybCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVtb3ZlRmlyc3RTbGFzaChsaW5rOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbGluay5jaGFyQXQoMCkgPT09ICcvJyA/IGxpbmsubGVuZ3RoID4gMSA/IGxpbmsuc3Vic3RyaW5nKDEsIGxpbmsubGVuZ3RoKSA6ICcnIDogbGluaztcbiAgICB9XG5cblxuICAgIHB1YmxpYyBzdGF0aWMgc2FuaXRpemVVcmwoZW5kcG9pbnQ/OiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChlbmRwb2ludC5pbmNsdWRlcygnaHR0cDovLycpIHx8IChlbmRwb2ludC5pbmNsdWRlcygnaHR0cHM6Ly8nKSkpIHtcbiAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZW5kcG9pbnQuaW5jbHVkZXModXJsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5kcG9pbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybC5pbmNsdWRlcygnaHR0cHM6Ly8nKSA/ICdodHRwczovLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQucmVwbGFjZSgvKF5cXHcrOnxeKVxcL1xcLy8sICcnKSA6ICdodHRwOi8vJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludC5yZXBsYWNlKC8oXlxcdys6fF4pXFwvXFwvLywgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuZHBvaW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIuYWRkTGFzdFNsYXNoKHVybCkgKyBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIucmVtb3ZlRmlyc3RTbGFzaChlbmRwb2ludCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdObyBkZWZpbmUgZW5kcG9pbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbWJpbmVzIHR3byBpbnN0YW5jZXMgb2Yge0BsaW5rIFBhcmFtc30gdHlwZSBpbnRvIG9uZS5cbiAgICAgKiBJZiBhIHBhcmFtZXRlciBpcyBkZWNsYXJlZCBpbiBib3RoIGluc3RhbmNlcyB1c2VzIHRoZSB2YWx1ZSBvZiB0aGUgYGhpZ2hQcmlvcml0eVBhcmFtc2AgaW4gdGhlIHJlc3VsdC5cbiAgICAgKiBAcGFyYW0gaGlnaFByaW9yaXR5UGFyYW1zIHBhcmFtZXRlcnMgd2l0aCB0aGUgaGlnaGVyIHByaW9yaXR5XG4gICAgICogQHBhcmFtIGxvd1ByaW9yaXR5UGFyYW1zIHBhcmFtZXRlcnMgd2l0aCB0aGUgbG93ZXIgcHJpb3JpdHlcbiAgICAgKiBAcmV0dXJucyBjb21iaW5hdGlvbiBvZiBib3RjaCBwYXJhbWV0ZXJzLiBVc2VzIHRoZSB2YWx1ZSBvZiB0aGUgaGlnaGVyIHByaW9yaXR5IHBhcmFtZXRlcnMgaWYgdGhlIGtleXMgYXJlIGluIGNvbmZsaWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY29tYmluZVBhcmFtcyhoaWdoUHJpb3JpdHlQYXJhbXM6IFBhcmFtcywgbG93UHJpb3JpdHlQYXJhbXM6IFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICAgICAgICBjb25zdCBpbXBvcnRhbnRQYXJhbXMgPSBoaWdoUHJpb3JpdHlQYXJhbXMgaW5zdGFuY2VvZiBIdHRwUGFyYW1zID9cbiAgICAgICAgICAgIFJlc291cmNlUHJvdmlkZXIuY29udmVydEh0dHBQYXJhbXNUb09iamVjdFBhcmFtcyhoaWdoUHJpb3JpdHlQYXJhbXMpIDpcbiAgICAgICAgICAgIGhpZ2hQcmlvcml0eVBhcmFtcztcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbG93UHJpb3JpdHlQYXJhbXMgaW5zdGFuY2VvZiBIdHRwUGFyYW1zID9cbiAgICAgICAgICAgIFJlc291cmNlUHJvdmlkZXIuY29udmVydEh0dHBQYXJhbXNUb09iamVjdFBhcmFtcyhsb3dQcmlvcml0eVBhcmFtcykgOlxuICAgICAgICAgICAgey4uLmxvd1ByaW9yaXR5UGFyYW1zfTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIGltcG9ydGFudFBhcmFtcyk7XG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7ZnJvbU9iamVjdDogcGFyYW1zfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMge0BsaW5rIEh0dHBQYXJhbXN9IGluc3RhbmNlIGludG8gYSBzaW1wbGUgb2JqZWN0LlxuICAgICAqIEBwYXJhbSBwYXJhbXMgaW5zdGFuY2UgdG8gY29udmVydFxuICAgICAqIEByZXR1cm5zIHNpbXBsZSBvYmplY3Qgd2l0aCBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgaW5wdXQgYXJndW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNvbnZlcnRIdHRwUGFyYW1zVG9PYmplY3RQYXJhbXMocGFyYW1zOiBIdHRwUGFyYW1zKTogT2JqZWN0UGFyYW1zIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIHBhcmFtcy5rZXlzKCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyYW1zLmdldEFsbChrZXkpO1xuICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlc1swXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UHJvZ3Jlc3MoZXZlbnQ6IEh0dHBQcm9ncmVzc0V2ZW50KTogUHJvdmlkZXJQcm9ncmVzcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzID8gUHJvZ3Jlc3NUeXBlLlVQTE9BRCA6IFByb2dyZXNzVHlwZS5ET1dOTE9BRCxcbiAgICAgICAgICAgIGxvYWRlZDogZXZlbnQubG9hZGVkLFxuICAgICAgICAgICAgdG90YWw6IGV2ZW50LnRvdGFsLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IGV2ZW50LmxvYWRlZCAmJiBldmVudC50b3RhbCA/IE1hdGgucm91bmQoZXZlbnQubG9hZGVkICogMTAwIC8gZXZlbnQudG90YWwpIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBwcm9jZXNzTWVzc2FnZVJlc291cmNlKHJlc3BvbnNlOiBNZXNzYWdlUmVzb3VyY2UgfCBIdHRwUmVzcG9uc2U8TWVzc2FnZVJlc291cmNlPik6IE1lc3NhZ2VSZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlOiBNZXNzYWdlUmVzb3VyY2UgPSAocmVzcG9uc2UgYXMgSHR0cFJlc3BvbnNlPE1lc3NhZ2VSZXNvdXJjZT4pLnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UgP1xuICAgICAgICAgICAgKHJlc3BvbnNlIGFzIEh0dHBSZXNwb25zZTxNZXNzYWdlUmVzb3VyY2U+KS5ib2R5IDogcmVzcG9uc2UgYXMgTWVzc2FnZVJlc291cmNlO1xuICAgICAgICBpZiAoISFyZXNvdXJjZSAmJiByZXNvdXJjZS5lcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc291cmNlLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCQ8VD4oZW5kcG9pbnQ/OiBzdHJpbmcsIHVybCA/OiBzdHJpbmcsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnMgPzogSGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGUgPzogUmVzcG9uc2VUeXBlKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KEFic3RyYWN0UmVzb3VyY2VQcm92aWRlci5zYW5pdGl6ZVVybChlbmRwb2ludCwgdXJsKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCbG9iJChlbmRwb2ludD86IHN0cmluZywgdXJsID86IHN0cmluZywgcGFyYW1zID86IFBhcmFtcywgaGVhZGVycz86IEhlYWRlcnMpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIuc2FuaXRpemVVcmwoZW5kcG9pbnQsIHVybCksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3N0JDxUPihlbmRwb2ludD86IHN0cmluZywgdXJsID86IHN0cmluZywgYm9keSA/OiBvYmplY3QsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnMgPzogSGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlID86IFJlc3BvbnNlVHlwZSk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4oQWJzdHJhY3RSZXNvdXJjZVByb3ZpZGVyLnNhbml0aXplVXJsKGVuZHBvaW50LCB1cmwpLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3N0V2l0aEV2ZW50JDxUPihlbmRwb2ludD86IHN0cmluZywgdXJsID86IHN0cmluZywgYm9keSA/OiBvYmplY3QsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnM/OiBIZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGUgPzogUmVzcG9uc2VUeXBlKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KEFic3RyYWN0UmVzb3VyY2VQcm92aWRlci5zYW5pdGl6ZVVybChlbmRwb2ludCwgdXJsKSxcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXQkPFQ+KGVuZHBvaW50Pzogc3RyaW5nLCB1cmwgPzogc3RyaW5nLCBib2R5ID86IG9iamVjdCwgcGFyYW1zID86IFBhcmFtcywgaGVhZGVycyA/OiBIZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZSA/OiBSZXNwb25zZVR5cGUpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8VD4oQWJzdHJhY3RSZXNvdXJjZVByb3ZpZGVyLnNhbml0aXplVXJsKGVuZHBvaW50LCB1cmwpLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGUkPFQ+KGVuZHBvaW50Pzogc3RyaW5nLCB1cmw/OiBzdHJpbmcsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnMgPzogSGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGUgPzogUmVzcG9uc2VUeXBlLCBib2R5Pzogb2JqZWN0LCk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZTxUPihBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIuc2FuaXRpemVVcmwoZW5kcG9pbnQsIHVybCksIHtcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgIGJvZHlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlUHJvdmlkZXIgZXh0ZW5kcyBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIge1xuICAgIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgc3VwZXIoaHR0cENsaWVudCk7XG4gICAgfVxuXG59XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixhQUFhLEVBQWUsVUFBVSxFQUFrQyxNQUFNLHNCQUFzQixDQUFDO0FBRXBJLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQWlCekMsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUNwQixpQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFVRCxNQUFNLE9BQWdCLHdCQUF3QjtJQUUxQyxZQUFnQyxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3RELENBQUM7SUFFTyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQVk7UUFDcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNuRTthQUFNO1lBQ0gsTUFBTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBWTtRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNB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Q3JFLFlBQTRCLEVBQUUsSUFBYTtRQUN6RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFJLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDbEYsT0FBTztZQUNQLE1BQU07WUFDTixZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtZQUNmLElBQUk7U0FDUCxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFLRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsd0JBQXdCO0lBQzFELFlBQVksVUFBc0I7UUFDOUIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7OzhHQUhRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs0RkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUHJvZ3Jlc3NFdmVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWVzc2FnZVJlc291cmNlfSBmcm9tICcuL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcblxuXG5leHBvcnQgdHlwZSBIZWFkZXJzID1cbiAgICBIdHRwSGVhZGVycyB8IHtcbiAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgUGFyYW1zID0gSHR0cFBhcmFtcyB8IE9iamVjdFBhcmFtcztcblxuZXhwb3J0IHR5cGUgUmVzcG9uc2VUeXBlID0gJ2pzb24nIHwgJ2hhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0UGFyYW1zIHtcbiAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG59XG5cbmV4cG9ydCBlbnVtIFByb2dyZXNzVHlwZSB7XG4gICAgVVBMT0FEID0gJ3VwbG9hZCcsXG4gICAgRE9XTkxPQUQgPSAnZG93bmxvYWQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJQcm9ncmVzcyB7XG4gICAgdHlwZTogUHJvZ3Jlc3NUeXBlO1xuICAgIGxvYWRlZDogbnVtYmVyO1xuICAgIHRvdGFsPzogbnVtYmVyO1xuICAgIHByb2dyZXNzPzogbnVtYmVyO1xufVxuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIge1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkTGFzdFNsYXNoKGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChsaW5rLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5rLmNoYXJBdChsaW5rLmxlbmd0aCAtIDEpID09PSAnLycgPyBsaW5rIDogbGluayArICcvJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdObyBkZWZpbmUgYXBpIHVybCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVtb3ZlRmlyc3RTbGFzaChsaW5rOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbGluay5jaGFyQXQoMCkgPT09ICcvJyA/IGxpbmsubGVuZ3RoID4gMSA/IGxpbmsuc3Vic3RyaW5nKDEsIGxpbmsubGVuZ3RoKSA6ICcnIDogbGluaztcbiAgICB9XG5cblxuICAgIHB1YmxpYyBzdGF0aWMgc2FuaXRpemVVcmwoZW5kcG9pbnQ/OiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChlbmRwb2ludD8uaW5jbHVkZXMoJ2h0dHA6Ly8nKSB8fCAoZW5kcG9pbnQ/LmluY2x1ZGVzKCdodHRwczovLycpKSkge1xuICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgIGlmIChlbmRwb2ludD8uaW5jbHVkZXModXJsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5kcG9pbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybD8uaW5jbHVkZXMoJ2h0dHBzOi8vJykgPyAnaHR0cHM6Ly8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Py5yZXBsYWNlKC8oXlxcdys6fF4pXFwvXFwvLywgJycpIDogJ2h0dHA6Ly8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Py5yZXBsYWNlKC8oXlxcdys6fF4pXFwvXFwvLywgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuZHBvaW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIuYWRkTGFzdFNsYXNoKHVybCkgKyBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIucmVtb3ZlRmlyc3RTbGFzaChlbmRwb2ludCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdObyBkZWZpbmUgZW5kcG9pbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbWJpbmVzIHR3byBpbnN0YW5jZXMgb2Yge0BsaW5rIFBhcmFtc30gdHlwZSBpbnRvIG9uZS5cbiAgICAgKiBJZiBhIHBhcmFtZXRlciBpcyBkZWNsYXJlZCBpbiBib3RoIGluc3RhbmNlcyB1c2VzIHRoZSB2YWx1ZSBvZiB0aGUgYGhpZ2hQcmlvcml0eVBhcmFtc2AgaW4gdGhlIHJlc3VsdC5cbiAgICAgKiBAcGFyYW0gaGlnaFByaW9yaXR5UGFyYW1zIHBhcmFtZXRlcnMgd2l0aCB0aGUgaGlnaGVyIHByaW9yaXR5XG4gICAgICogQHBhcmFtIGxvd1ByaW9yaXR5UGFyYW1zIHBhcmFtZXRlcnMgd2l0aCB0aGUgbG93ZXIgcHJpb3JpdHlcbiAgICAgKiBAcmV0dXJucyBjb21iaW5hdGlvbiBvZiBib3RjaCBwYXJhbWV0ZXJzLiBVc2VzIHRoZSB2YWx1ZSBvZiB0aGUgaGlnaGVyIHByaW9yaXR5IHBhcmFtZXRlcnMgaWYgdGhlIGtleXMgYXJlIGluIGNvbmZsaWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY29tYmluZVBhcmFtcyhoaWdoUHJpb3JpdHlQYXJhbXM6IFBhcmFtcywgbG93UHJpb3JpdHlQYXJhbXM6IFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICAgICAgICBjb25zdCBpbXBvcnRhbnRQYXJhbXMgPSBoaWdoUHJpb3JpdHlQYXJhbXMgaW5zdGFuY2VvZiBIdHRwUGFyYW1zID9cbiAgICAgICAgICAgIFJlc291cmNlUHJvdmlkZXIuY29udmVydEh0dHBQYXJhbXNUb09iamVjdFBhcmFtcyhoaWdoUHJpb3JpdHlQYXJhbXMpIDpcbiAgICAgICAgICAgIGhpZ2hQcmlvcml0eVBhcmFtcztcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbG93UHJpb3JpdHlQYXJhbXMgaW5zdGFuY2VvZiBIdHRwUGFyYW1zID9cbiAgICAgICAgICAgIFJlc291cmNlUHJvdmlkZXIuY29udmVydEh0dHBQYXJhbXNUb09iamVjdFBhcmFtcyhsb3dQcmlvcml0eVBhcmFtcykgOlxuICAgICAgICAgICAgey4uLmxvd1ByaW9yaXR5UGFyYW1zfTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIGltcG9ydGFudFBhcmFtcyk7XG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7ZnJvbU9iamVjdDogcGFyYW1zfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMge0BsaW5rIEh0dHBQYXJhbXN9IGluc3RhbmNlIGludG8gYSBzaW1wbGUgb2JqZWN0LlxuICAgICAqIEBwYXJhbSBwYXJhbXMgaW5zdGFuY2UgdG8gY29udmVydFxuICAgICAqIEByZXR1cm5zIHNpbXBsZSBvYmplY3Qgd2l0aCBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgaW5wdXQgYXJndW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNvbnZlcnRIdHRwUGFyYW1zVG9PYmplY3RQYXJhbXMocGFyYW1zOiBIdHRwUGFyYW1zKTogT2JqZWN0UGFyYW1zIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIHBhcmFtcy5rZXlzKCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gcGFyYW1zLmdldEFsbChrZXkpO1xuICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlc1swXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UHJvZ3Jlc3MoZXZlbnQ6IEh0dHBQcm9ncmVzc0V2ZW50KTogUHJvdmlkZXJQcm9ncmVzcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzID8gUHJvZ3Jlc3NUeXBlLlVQTE9BRCA6IFByb2dyZXNzVHlwZS5ET1dOTE9BRCxcbiAgICAgICAgICAgIGxvYWRlZDogZXZlbnQubG9hZGVkLFxuICAgICAgICAgICAgdG90YWw6IGV2ZW50LnRvdGFsLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IGV2ZW50LmxvYWRlZCAmJiBldmVudC50b3RhbCA/IE1hdGgucm91bmQoZXZlbnQubG9hZGVkICogMTAwIC8gZXZlbnQudG90YWwpIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBwcm9jZXNzTWVzc2FnZVJlc291cmNlKHJlc3BvbnNlOiBNZXNzYWdlUmVzb3VyY2UgfCBIdHRwUmVzcG9uc2U8TWVzc2FnZVJlc291cmNlPik6IE1lc3NhZ2VSZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlOiBNZXNzYWdlUmVzb3VyY2UgPSAocmVzcG9uc2UgYXMgSHR0cFJlc3BvbnNlPE1lc3NhZ2VSZXNvdXJjZT4pLnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UgP1xuICAgICAgICAgICAgKHJlc3BvbnNlIGFzIEh0dHBSZXNwb25zZTxNZXNzYWdlUmVzb3VyY2U+KS5ib2R5IDogcmVzcG9uc2UgYXMgTWVzc2FnZVJlc291cmNlO1xuICAgICAgICBpZiAoISFyZXNvdXJjZSAmJiByZXNvdXJjZS5lcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc291cmNlLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCQ8VD4oZW5kcG9pbnQ/OiBzdHJpbmcsIHVybCA/OiBzdHJpbmcsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnMgPzogSGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGUgPzogUmVzcG9uc2VUeXBlKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KEFic3RyYWN0UmVzb3VyY2VQcm92aWRlci5zYW5pdGl6ZVVybChlbmRwb2ludCwgdXJsKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCbG9iJChlbmRwb2ludD86IHN0cmluZywgdXJsID86IHN0cmluZywgcGFyYW1zID86IFBhcmFtcywgaGVhZGVycz86IEhlYWRlcnMpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIuc2FuaXRpemVVcmwoZW5kcG9pbnQsIHVybCksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3N0JDxUPihlbmRwb2ludD86IHN0cmluZywgdXJsID86IHN0cmluZywgYm9keSA/OiBvYmplY3QsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnMgPzogSGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlID86IFJlc3BvbnNlVHlwZSk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4oQWJzdHJhY3RSZXNvdXJjZVByb3ZpZGVyLnNhbml0aXplVXJsKGVuZHBvaW50LCB1cmwpLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3N0V2l0aEV2ZW50JDxUPihlbmRwb2ludD86IHN0cmluZywgdXJsID86IHN0cmluZywgYm9keSA/OiBvYmplY3QsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnM/OiBIZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGUgPzogUmVzcG9uc2VUeXBlKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KEFic3RyYWN0UmVzb3VyY2VQcm92aWRlci5zYW5pdGl6ZVVybChlbmRwb2ludCwgdXJsKSxcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXQkPFQ+KGVuZHBvaW50Pzogc3RyaW5nLCB1cmwgPzogc3RyaW5nLCBib2R5ID86IG9iamVjdCwgcGFyYW1zID86IFBhcmFtcywgaGVhZGVycyA/OiBIZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZSA/OiBSZXNwb25zZVR5cGUpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8VD4oQWJzdHJhY3RSZXNvdXJjZVByb3ZpZGVyLnNhbml0aXplVXJsKGVuZHBvaW50LCB1cmwpLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGUkPFQ+KGVuZHBvaW50Pzogc3RyaW5nLCB1cmw/OiBzdHJpbmcsIHBhcmFtcyA/OiBQYXJhbXMsIGhlYWRlcnMgPzogSGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGUgPzogUmVzcG9uc2VUeXBlLCBib2R5Pzogb2JqZWN0LCk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZTxUPihBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIuc2FuaXRpemVVcmwoZW5kcG9pbnQsIHVybCksIHtcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgIGJvZHlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlUHJvdmlkZXIgZXh0ZW5kcyBBYnN0cmFjdFJlc291cmNlUHJvdmlkZXIge1xuICAgIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgc3VwZXIoaHR0cENsaWVudCk7XG4gICAgfVxuXG59XG4iXX0=
@@ -70,13 +70,16 @@ export class RedirectService {
70
70
  }
71
71
  parseRedirectPath(url) {
72
72
  let path;
73
- if (url.includes('?')) {
73
+ if (url === undefined || url === null) {
74
+ return '';
75
+ }
76
+ if (url?.includes('?')) {
74
77
  path = url.slice(0, url.indexOf('?'));
75
78
  }
76
79
  else {
77
80
  path = url;
78
81
  }
79
- return path.replace('/redirect', '');
82
+ return path?.replace('/redirect', '');
80
83
  }
81
84
  }
82
85
  RedirectService.LOGIN_COMPONENT = 'login';
@@ -88,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
88
91
  providedIn: 'root'
89
92
  }]
90
93
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.LoggerService }, { type: i3.ConfigurationService }, { type: i1.ActivatedRoute }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcm91dGluZy9yZWRpcmVjdC1zZXJ2aWNlL3JlZGlyZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTekMsTUFBTSxPQUFPLGVBQWU7SUFNeEIsWUFBc0IsT0FBZSxFQUNmLElBQW1CLEVBQ25CLE9BQTZCLEVBQzdCLE1BQXNCO1FBSHRCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsS0FBNkI7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBYTtRQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDcEUsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFLLElBQUksQ0FBQyxrQkFBMEIsQ0FBQyxZQUFZO2VBQzNFLElBQUksQ0FBQyxrQkFBMEIsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFFLElBQUksQ0FBQyxrQkFBMEIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUM1RCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFTSxnQkFBZ0I7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hHLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsMkZBQTJGO2NBQ3JHLGlIQUFpSCxDQUFDLENBQUM7SUFDN0gsQ0FBQztJQUVTLHFDQUFxQyxDQUFDLEtBQVksRUFBRSxjQUFzQjtRQUNoRixJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDN0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN0QyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssRUFBRTtZQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDakc7UUFDRCxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdEcsSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDckUsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDO2FBQ3hEO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBVztRQUNoQyxJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0gsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOztBQWxGc0IsK0JBQWUsR0FBRyxPQUFRLENBQUE7NkdBRnhDLGVBQWU7aUhBQWYsZUFBZSxjQUZaLE1BQU07NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUGFyYW1zLCBSb3V0ZXIsIFVybFNlZ21lbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1ZpZXdzfSBmcm9tICcuLi8uLi8uLi9jb21tb25zL3NjaGVtYSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmVkaXJlY3RTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTE9HSU5fQ09NUE9ORU5UID0gJ2xvZ2luJztcbiAgICBwcm90ZWN0ZWQgX2xhc3RJbnRlbmRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90O1xuICAgIHByaXZhdGUgbGFzdFF1ZXJ5UGFyYW1zOiBQYXJhbXM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY29uZmlnOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgICAgICB0aGlzLl9yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHRoaXMubGFzdFF1ZXJ5UGFyYW1zID0gcGFyYW1zKTtcbiAgICB9XG5cbiAgICBnZXQgbGFzdFVybCgpOiBBcnJheTxVcmxTZWdtZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXN0SW50ZW5kZWRSb3V0ZS51cmw7XG4gICAgfVxuXG4gICAgc2V0IGludGVuZGVkUm91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgdGhpcy5fbGFzdEludGVuZGVkUm91dGUgPSByb3V0ZTtcbiAgICB9XG5cbiAgICBnZXQgcXVlcnlQYXJhbXMoKTogUGFyYW1zIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFF1ZXJ5UGFyYW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWRpcmVjdChwYXRoPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghIXBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHBhdGgpLnRoZW4obG9nID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuaW5mbygnUm91dGVyIG5hdmlnYXRlIHRvIHBhdGggJyArIHBhdGggKyAnIDogJyArIGxvZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9sYXN0SW50ZW5kZWRSb3V0ZSAmJiAodGhpcy5fbGFzdEludGVuZGVkUm91dGUgYXMgYW55KS5fcm91dGVyU3RhdGVcbiAgICAgICAgICAgICYmICh0aGlzLl9sYXN0SW50ZW5kZWRSb3V0ZSBhcyBhbnkpLl9yb3V0ZXJTdGF0ZS51cmwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCh0aGlzLl9sYXN0SW50ZW5kZWRSb3V0ZSBhcyBhbnkpLl9yb3V0ZXJTdGF0ZS51cmwpLnRoZW4obG9nID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuaW5mbygnUm91dGVyIG5hdmlnYXRlIHRvIGxhc3QgcGF0aCA6ICcgKyBsb2cpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVkaXJlY3RGcm9tVXJsKCkge1xuICAgICAgICB0aGlzLmxhc3RRdWVyeVBhcmFtcyA9IHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3RoaXMucGFyc2VSZWRpcmVjdFBhdGgodGhpcy5fcm91dGVyLnVybCldLCB7IHF1ZXJ5UGFyYW1zOiB0aGlzLmxhc3RRdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzb2x2ZUxvZ2luUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLl9jb25maWcuZ2V0KCk7XG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuZ2V0VG9Mb2dpblBhdGgoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5nZXRUb0xvZ2luUGF0aCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yZXNvbHZlTG9naW5QYXRoRnJvbVZpZXdDb25maWd1cmF0aW9uKGNvbmZpZy52aWV3cywgUmVkaXJlY3RTZXJ2aWNlLkxPR0lOX0NPTVBPTkVOVCk7XG4gICAgICAgIGlmIChyb3V0ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gbG9naW4gdmlldyBmb3VuZCBpbiBhcHBsaWNhdGlvbi4gQXV0aGVudGljYXRpb24gZ3VhcmQgY2FuXFwndCByZWRpcmVjdC4gQWRkIGEgdmlldyB3aXRoJ1xuICAgICAgICAgICAgKyAnIGxheW91dC5uYW1lPVwibG9naW5cIiB0byB5b3VyIGFwcGxpY2F0aW9uLCBvciBzZXQgdGhlIGRlc2lyZWQgcmVkaXJlY3QgcGF0aCBpbiBcXCdzZXJ2aWNlcy5hdXRoLnRvTG9naW5SZWRpcmVjdFxcJycpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlTG9naW5QYXRoRnJvbVZpZXdDb25maWd1cmF0aW9uKHZpZXdzOiBWaWV3cywgc2VhcmNoZWRMYXlvdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdmlld3MgfHwgT2JqZWN0LmtleXModmlld3MpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm91dGUgPSBPYmplY3Qua2V5cyh2aWV3cykuZmluZChyb3V0ZUtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSB2aWV3c1tyb3V0ZUtleV0ubGF5b3V0O1xuICAgICAgICAgICAgcmV0dXJuICEhbGF5b3V0ICYmIGxheW91dC5uYW1lID09PSBzZWFyY2hlZExheW91dDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICh2aWV3c1tyb3V0ZV0ucm91dGluZyAmJiB2aWV3c1tyb3V0ZV0ucm91dGluZy5wYXRoKSA/IHZpZXdzW3JvdXRlXS5yb3V0aW5nLnBhdGggOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qgcm91dGVLZXkgb2YgT2JqZWN0LmtleXModmlld3MpKSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZUxvZ2luUGF0aEZyb21WaWV3Q29uZmlndXJhdGlvbih2aWV3c1tyb3V0ZUtleV0uY2hpbGRyZW4sIHNlYXJjaGVkTGF5b3V0KTtcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZCAmJiB2aWV3c1tyb3V0ZUtleV0ucm91dGluZyAmJiB2aWV3c1tyb3V0ZUtleV0ucm91dGluZy5wYXRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZpZXdzW3JvdXRlS2V5XS5yb3V0aW5nLnBhdGggKyAnLycgKyByZXNvbHZlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2VSZWRpcmVjdFBhdGgodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcGF0aDogc3RyaW5nO1xuICAgICAgICBpZiAodXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgIHBhdGggPSB1cmwuc2xpY2UoMCwgdXJsLmluZGV4T2YoJz8nKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXRoID0gdXJsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoJy9yZWRpcmVjdCcsICcnKTtcbiAgICB9XG59XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcm91dGluZy9yZWRpcmVjdC1zZXJ2aWNlL3JlZGlyZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTekMsTUFBTSxPQUFPLGVBQWU7SUFNeEIsWUFBc0IsT0FBZSxFQUNmLElBQW1CLEVBQ25CLE9BQTZCLEVBQzdCLE1BQXNCO1FBSHRCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsS0FBNkI7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBYTtRQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEw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QUksRUFBRTtnQkFDckUsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDO2FBQ3hEO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBVztRQUNoQyxJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtZQUNuQyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBQ0QsSUFBSSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekM7YUFBTTtZQUNILElBQUksR0FBRyxHQUFHLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7QUFyRnNCLCtCQUFlLEdBQUcsT0FBUSxDQUFBOzZHQUZ4QyxlQUFlO2lIQUFmLGVBQWUsY0FGWixNQUFNOzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFBhcmFtcywgUm91dGVyLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtWaWV3c30gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9zY2hlbWEnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlZGlyZWN0U2VydmljZSB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExPR0lOX0NPTVBPTkVOVCA9ICdsb2dpbic7XG4gICAgcHJvdGVjdGVkIF9sYXN0SW50ZW5kZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdDtcbiAgICBwcml2YXRlIGxhc3RRdWVyeVBhcmFtczogUGFyYW1zO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZzogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICAgICAgdGhpcy5fcm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB0aGlzLmxhc3RRdWVyeVBhcmFtcyA9IHBhcmFtcyk7XG4gICAgfVxuXG4gICAgZ2V0IGxhc3RVcmwoKTogQXJyYXk8VXJsU2VnbWVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdEludGVuZGVkUm91dGUudXJsO1xuICAgIH1cblxuICAgIHNldCBpbnRlbmRlZFJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIHRoaXMuX2xhc3RJbnRlbmRlZFJvdXRlID0gcm91dGU7XG4gICAgfVxuXG4gICAgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RRdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVkaXJlY3QocGF0aD86IHN0cmluZykge1xuICAgICAgICBpZiAoISFwYXRoKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybChwYXRoKS50aGVuKGxvZyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmluZm8oJ1JvdXRlciBuYXZpZ2F0ZSB0byBwYXRoICcgKyBwYXRoICsgJyA6ICcgKyBsb2cpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbGFzdEludGVuZGVkUm91dGUgJiYgKHRoaXMuX2xhc3RJbnRlbmRlZFJvdXRlIGFzIGFueSkuX3JvdXRlclN0YXRlXG4gICAgICAgICAgICAmJiAodGhpcy5fbGFzdEludGVuZGVkUm91dGUgYXMgYW55KS5fcm91dGVyU3RhdGUudXJsKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgodGhpcy5fbGFzdEludGVuZGVkUm91dGUgYXMgYW55KS5fcm91dGVyU3RhdGUudXJsKS50aGVuKGxvZyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmluZm8oJ1JvdXRlciBuYXZpZ2F0ZSB0byBsYXN0IHBhdGggOiAnICsgbG9nKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZGlyZWN0RnJvbVVybCgpIHtcbiAgICAgICAgdGhpcy5sYXN0UXVlcnlQYXJhbXMgPSB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt0aGlzLnBhcnNlUmVkaXJlY3RQYXRoKHRoaXMuX3JvdXRlci51cmwpXSwgeyBxdWVyeVBhcmFtczogdGhpcy5sYXN0UXVlcnlQYXJhbXMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc29sdmVMb2dpblBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fY29uZmlnLmdldCgpO1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmdldFRvTG9naW5QYXRoKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZ2V0VG9Mb2dpblBhdGgoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMucmVzb2x2ZUxvZ2luUGF0aEZyb21WaWV3Q29uZmlndXJhdGlvbihjb25maWcudmlld3MsIFJlZGlyZWN0U2VydmljZS5MT0dJTl9DT01QT05FTlQpO1xuICAgICAgICBpZiAocm91dGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGxvZ2luIHZpZXcgZm91bmQgaW4gYXBwbGljYXRpb24uIEF1dGhlbnRpY2F0aW9uIGd1YXJkIGNhblxcJ3QgcmVkaXJlY3QuIEFkZCBhIHZpZXcgd2l0aCdcbiAgICAgICAgICAgICsgJyBsYXlvdXQubmFtZT1cImxvZ2luXCIgdG8geW91ciBhcHBsaWNhdGlvbiwgb3Igc2V0IHRoZSBkZXNpcmVkIHJlZGlyZWN0IHBhdGggaW4gXFwnc2VydmljZXMuYXV0aC50b0xvZ2luUmVkaXJlY3RcXCcnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUxvZ2luUGF0aEZyb21WaWV3Q29uZmlndXJhdGlvbih2aWV3czogVmlld3MsIHNlYXJjaGVkTGF5b3V0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXZpZXdzIHx8IE9iamVjdC5rZXlzKHZpZXdzKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdXRlID0gT2JqZWN0LmtleXModmlld3MpLmZpbmQocm91dGVLZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gdmlld3Nbcm91dGVLZXldLmxheW91dDtcbiAgICAgICAgICAgIHJldHVybiAhIWxheW91dCAmJiBsYXlvdXQubmFtZSA9PT0gc2VhcmNoZWRMYXlvdXQ7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybiAodmlld3Nbcm91dGVdLnJvdXRpbmcgJiYgdmlld3Nbcm91dGVdLnJvdXRpbmcucGF0aCkgPyB2aWV3c1tyb3V0ZV0ucm91dGluZy5wYXRoIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHJvdXRlS2V5IG9mIE9iamVjdC5rZXlzKHZpZXdzKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVMb2dpblBhdGhGcm9tVmlld0NvbmZpZ3VyYXRpb24odmlld3Nbcm91dGVLZXldLmNoaWxkcmVuLCBzZWFyY2hlZExheW91dCk7XG4gICAgICAgICAgICBpZiAocmVzb2x2ZWQgJiYgdmlld3Nbcm91dGVLZXldLnJvdXRpbmcgJiYgdmlld3Nbcm91dGVLZXldLnJvdXRpbmcucGF0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2aWV3c1tyb3V0ZUtleV0ucm91dGluZy5wYXRoICsgJy8nICsgcmVzb2x2ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlUmVkaXJlY3RQYXRoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAgICAgaWYgKHVybCA9PT0gdW5kZWZpbmVkIHx8IHVybCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cmw/LmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgIHBhdGggPSB1cmwuc2xpY2UoMCwgdXJsLmluZGV4T2YoJz8nKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXRoID0gdXJsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoPy5yZXBsYWNlKCcvcmVkaXJlY3QnLCAnJyk7XG4gICAgfVxufVxuIl19
@@ -253,7 +253,7 @@ export class CaseDataset extends Category {
253
253
  .filter(immediateData => {
254
254
  return immediateData.title !== undefined
255
255
  && immediateData.title.trim().length > 0
256
- && !CaseDataset.DISABLED_TYPES.includes(immediateData.type);
256
+ && !CaseDataset.DISABLED_TYPES?.includes(immediateData.type);
257
257
  })
258
258
  .forEach(immediateData => {
259
259
  let type = immediateData.type;
@@ -396,4 +396,4 @@ CaseDataset._i18n = 'search.category.case.dataset';
396
396
  CaseDataset.DISABLED_TYPES = ['button', 'taskRef', 'caseRef', 'filter'];
397
397
  CaseDataset.DATAFIELD_METADATA = 'datafield';
398
398
  CaseDataset.AUTOCOMPLETE_ICON = 'account_circle';
399
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS1kYXRhc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixD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QUM7U0FDbkQ7SUFDTCxDQUFDO0lBRVMscUNBQXFDO1FBQzNDLE9BQU8sQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7O0FBcmF1QixpQkFBSyxHQUFHLDhCQUE4QixDQUFDO0FBQzlDLDBCQUFjLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuRCw4QkFBa0IsR0FBRyxXQUFXLENBQUM7QUFDbkMsNkJBQWlCLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9vcGVyYXRvci1zZXJ2aWNlL29wZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uL29wZXJhdG9yL29wZXJhdG9yJztcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi4vLi4vcXVlcnkvcXVlcnknO1xuaW1wb3J0IHsgT3B0aW9uYWxEZXBlbmRlbmNpZXMgfSBmcm9tICcuLi8uLi8uLi9jYXRlZ29yeS1mYWN0b3J5L29wdGlvbmFsLWRlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dFR5cGUgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQgeyBEYXRhZmllbGRNYXBLZXkgfSBmcm9tICcuLi8uLi9kYXRhZmllbGQtbWFwLWtleSc7XG5pbXBvcnQgeyBTZWFyY2hBdXRvY29tcGxldGVPcHRpb24gfSBmcm9tICcuLi9zZWFyY2gtYXV0b2NvbXBsZXRlLW9wdGlvbic7XG5pbXBvcnQgeyBCb29sZWFuT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7IENhc2VQcm9jZXNzIH0gZnJvbSAnLi9jYXNlLXByb2Nlc3MnO1xuaW1wb3J0IHsgRXF1YWxzRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlJztcbmltcG9ydCB7IFN1YnN0cmluZyB9IGZyb20gJy4uLy4uL29wZXJhdG9yL3N1YnN0cmluZyc7XG5pbXBvcnQgeyBFcXVhbHNEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlLXRpbWUnO1xuaW1wb3J0IHsgRXF1YWxzIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRlZ29yeSc7XG5pbXBvcnQgeyBOb3RFcXVhbHMgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzJztcbmltcG9ydCB7IE1vcmVUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuJztcbmltcG9ydCB7IExlc3NUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuJztcbmltcG9ydCB7IEluUmFuZ2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZSc7XG5pbXBvcnQgeyBJc051bGwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pcy1udWxsJztcbmltcG9ydCB7IExpa2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9saWtlJztcbmltcG9ydCB7IE5vdEVxdWFsc0RhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWRhdGUnO1xuaW1wb3J0IHsgTGVzc1RoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWRhdGUnO1xuaW1wb3J0IHsgSW5SYW5nZURhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZS1kYXRlJztcbmltcG9ydCB7IE1vcmVUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IExlc3NUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IEluUmFuZ2VEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2luLXJhbmdlLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbklucHV0IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi1pbnB1dCc7XG5pbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gJy4uLy4uL3NlYXJjaC1pbmRleCc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzIH0gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZ2VuZXJhdG9yLW1ldGFkYXRhJztcbmltcG9ydCB7IE1vcmVUaGFuRXF1YWwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZXF1YWwnO1xuaW1wb3J0IHsgTGVzc1RoYW5FcXVhbCB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbi1lcXVhbCc7XG5pbXBvcnQgeyBNb3JlVGhhbkVxdWFsRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL21vcmUtdGhhbi1lcXVhbC1kYXRlJztcbmltcG9ydCB7IExlc3NUaGFuRXF1YWxEYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWVxdWFsLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5FcXVhbERhdGVUaW1lIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWVxdWFsLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBMZXNzVGhhbkVxdWFsRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZXF1YWwtZGF0ZS10aW1lJztcbmltcG9ydCB7IEZpbHRlclRleHRTZWdtZW50IH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZmlsdGVyLXRleHQtc2VnbWVudCc7XG5pbXBvcnQgeyBVc2VyQXV0b2NvbXBsZXRlIH0gZnJvbSAnLi4vdXNlci1hdXRvY29tcGxldGUnO1xuXG5pbnRlcmZhY2UgRGF0YWZpZWxkIHtcbiAgICBuZXRJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgZmllbGRJZDogc3RyaW5nO1xuICAgIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FzZURhdGFzZXQgZXh0ZW5kcyBDYXRlZ29yeTxEYXRhZmllbGQ+IGltcGxlbWVudHMgQXV0b2NvbXBsZXRlT3B0aW9ucyB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaTE4biA9ICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0JztcbiAgICBwcm90ZWN0ZWQgc3RhdGljIERJU0FCTEVEX1RZUEVTID0gWydidXR0b24nLCAndGFza1JlZicsICdjYXNlUmVmJywgJ2ZpbHRlciddO1xuICAgIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREFUQUZJRUxEX01FVEFEQVRBID0gJ2RhdGFmaWVsZCc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVVUT0NPTVBMRVRFX0lDT04gPSAnYWNjb3VudF9jaXJjbGUnO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9EQVRBRklFTERfSU5QVVQ6IENvbmZpZ3VyYXRpb25JbnB1dDtcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0NhdGVnb3J5OiBDYXNlUHJvY2VzcztcblxuICAgIHByb3RlY3RlZCBfY29uZmlndXJhdGlvbklucHV0cyQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PjtcblxuICAgIHByb3RlY3RlZCBfZGF0YWZpZWxkT3B0aW9uczogTWFwPHN0cmluZywgQXJyYXk8RGF0YWZpZWxkPj47XG5cbiAgICBwcml2YXRlIF9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkOiBSZXBsYXlTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgX2FsbG93ZWROZXRzU3ViOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfdXNlckF1dG9jb21wbGV0ZTogVXNlckF1dG9jb21wbGV0ZTtcblxuICAgIHB1YmxpYyBzdGF0aWMgRmllbGRUeXBlVG9JbnB1dFR5cGUoZmllbGRUeXBlOiBzdHJpbmcpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5EQVRFO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLk5VTUJFUjtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQk9PTEVBTjtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLlRFWFQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRvcnM6IE9wZXJhdG9yU2VydmljZSwgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX29wdGlvbmFsRGVwZW5kZW5jaWVzOiBPcHRpb25hbERlcGVuZGVuY2llcykge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBgJHtDYXNlRGF0YXNldC5faTE4bn0ubmFtZWAsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBvcGVyYXRvcnMpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeSA9IHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzLmNhdGVnb3J5RmFjdG9yeS5nZXQoQ2FzZVByb2Nlc3MpIGFzIENhc2VQcm9jZXNzO1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuc2VsZWN0RGVmYXVsdE9wZXJhdG9yKCk7XG5cbiAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxEYXRhZmllbGQ+PigpO1xuICAgICAgICB0aGlzLl91c2VyQXV0b2NvbXBsZXRlID0gbmV3IFVzZXJBdXRvY29tcGxldGUodGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgICAgICB0aGlzLmNyZWF0ZURhdGFmaWVsZE9wdGlvbnMoKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQgPSBuZXcgQ29uZmlndXJhdGlvbklucHV0KFxuICAgICAgICAgICAgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSxcbiAgICAgICAgICAgICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0LnBsYWNlaG9sZGVyLmZpZWxkJyxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLFxuICAgICAgICAgICAgKG1hcEtleXMsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcEtleXMubWFwKHNlcmlhbGl6ZWRNYXBLZXkgPT4gRGF0YWZpZWxkTWFwS2V5LnBhcnNlKHNlcmlhbGl6ZWRNYXBLZXkpKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG1hcEtleSA9PiBtYXBLZXkudGl0bGUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbmZpZ3VyYXRpb25JbnB1dD4+KFt0aGlzLl9EQVRBRklFTERfSU5QVVRdKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQudmFsdWVDaGFuZ2VzJCgpLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVUXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmdldFZhbHVlKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVULCB0aGlzLl9PUEVSQVRPUl9JTlBVVF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWROZXRzU3ViICYmICF0aGlzLl9hbGxvd2VkTmV0c1N1Yi5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZmlndXJhdGlvbklucHV0cyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlucHV0VHlwZSgpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IHR5cGUgb2YgYXJndW1lbnRzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJlZm9yZSBzZWxlY3RpbmcgYSBkYXRhIGZpZWxkIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2FzZURhdGFzZXQuRmllbGRUeXBlVG9JbnB1dFR5cGUodGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzWzBdLmZpZWxkVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGFsbG93ZWQgb3BlcmF0b3JzIGFyZSBkZXBlbmRhbnQgb24gdGhlIHNlbGVjdGVkIGRhdGEgZmllbGQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBhbGxvd2VkIG9wZXJhdG9ycywgdGhlbiB5b3UgbXVzdCBhbHNvIHVwZGF0ZSB0aGVcbiAgICAgKiBbc2VsZWN0RGVmYXVsdE9wZXJhdG9yKClde0BsaW5rIENhdGVnb3J5I3NlbGVjdERlZmF1bHRPcGVyYXRvcn0gbWV0aG9kLCBzbyB0aGF0IGRlZmF1bHQgb3BlcmF0b3IgZm9yIGVhY2ggZGF0YSBmaWVsZCB0eXBlIG1hdGNoZXNcbiAgICAgKiB0aGUgZGVmYXVsdCBvcGVyYXRvciBvZiB0aGUge0BsaW5rIENhc2VTaW1wbGVEYXRhc2V0fSBzZWFyY2ggY2F0ZWdvcnkuIE90aGVyd2lzZSB0aGUgdHJhbnNpdGlvbiBvZiBoZWFkZXIgc2VhcmNoIGludG8gdGhlIHNlYXJjaCBHVUlcbiAgICAgKiB3b24ndCB3b3JrIHByb3Blcmx5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE9wZXJhdG9ycygpOiBBcnJheTxPcGVyYXRvcjxhbnk+PiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX3NlbGVjdGVkRGF0YWZpZWxkc1swXS5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW4pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbiksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkVxdWFsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2UpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFscylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICBjYXNlICd1c2VyTGlzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHNEYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbkVxdWFsRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkRhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSW5SYW5nZURhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFsc0RhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2VEYXRlVGltZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKFN1YnN0cmluZyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTm90RXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMaWtlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgQ2FzZURhdGFzZXRgIGNhdGVnb3J5IGlzIG5vdCBkaXNwbGF5ZWQgaW4gYm9sZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5XG4gICAgICovXG4gICAgZ2V0IGRpc3BsYXlCb2xkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNTZWxlY3RlZERhdGFmaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9EQVRBRklFTERfSU5QVVQuaXNPcHRpb25TZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IF9zZWxlY3RlZERhdGFmaWVsZHMoKTogQXJyYXk8RGF0YWZpZWxkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhZmllbGRPcHRpb25zLmdldCh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgc3VwZXIucmVzZXQoKTtcbiAgICAgICAgdGhpcy5fREFUQUZJRUxEX0lOUFVULmNsZWFyKCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlKCk6IENhc2VEYXRhc2V0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXNlRGF0YXNldCh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZywgdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZWxhc3RpY0tleXdvcmRzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzLm1hcChkYXRhZmllbGQgPT4gdGhpcy5yZXNvbHZlRWxhc3RpY0tleXdvcmQoZGF0YWZpZWxkKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVsYXN0aWNLZXl3b3JkKGRhdGFmaWVsZDogRGF0YWZpZWxkKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5zZWFyY2hJbmRleFJlc29sdmVyO1xuICAgICAgICBzd2l0Y2ggKGRhdGFmaWVsZC5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5OVU1CRVIpO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5USU1FU1RBTVApO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5CT09MRUFOKTtcbiAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgICAgY2FzZSAnZmlsZUxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguRklMRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKTtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgY2FzZSAndXNlckxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguVVNFUl9JRCk7XG4gICAgICAgICAgICBjYXNlICdpMThuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LlRFWFQsIHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoTm90RXF1YWxzKSB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihTdWJzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKElzTnVsbCkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LkZVTExURVhULFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtDYXNlRGF0YXNldC5faTE4bn0ucGxhY2Vob2xkZXIuZmllbGRgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtDYXNlRGF0YXNldC5faTE4bn0ucGxhY2Vob2xkZXIudmFsdWVgO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlUXVlcnkodXNlcklucHV0OiBBcnJheTx1bmtub3duPik6IFF1ZXJ5IHtcbiAgICAgICAgbGV0IHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5O1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoSXNOdWxsKSkge1xuICAgICAgICAgICAgcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3kgPSAoZCwgXykgPT4gdGhpcy5pc051bGxPcGVyYXRvclF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCB1aSkgPT4gdGhpcy5zdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQsIHVpWzBdLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCB1aSkgPT4gdGhpcy5zdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQsIHVpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLl9zZWxlY3RlZERhdGFmaWVsZHMubWFwKGRhdGFmaWVsZCA9PiBxdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQsIHVzZXJJbnB1dCkpO1xuICAgICAgICByZXR1cm4gUXVlcnkuY29tYmluZVF1ZXJpZXMocXVlcmllcywgQm9vbGVhbk9wZXJhdG9yLk9SKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhbmRhcmRRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQ6IERhdGFmaWVsZCwgdXNlcklucHV0OiBBcnJheTx1bmtub3duPiwgZXNjYXBlSW5wdXQgPSB0cnVlKTogUXVlcnkge1xuICAgICAgICBjb25zdCB2YWx1ZVF1ZXJ5ID0gdGhpcy5zZWxlY3RlZE9wZXJhdG9yLmNyZWF0ZVF1ZXJ5KHRoaXMuZWxhc3RpY0tleXdvcmRzLCB1c2VySW5wdXQsIGVzY2FwZUlucHV0KTtcbiAgICAgICAgY29uc3QgbmV0UXVlcnkgPSB0aGlzLmdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQpO1xuICAgICAgICByZXR1cm4gUXVlcnkuY29tYmluZVF1ZXJpZXMoW3ZhbHVlUXVlcnksIG5ldFF1ZXJ5XSwgQm9vbGVhbk9wZXJhdG9yLkFORCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzTnVsbE9wZXJhdG9yUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZGF0YWZpZWxkOiBEYXRhZmllbGQpOiBRdWVyeSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSB0aGlzLmdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQpO1xuICAgICAgICByZXR1cm4gKHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpIGFzIElzTnVsbCkuY3JlYXRlUXVlcnlXaXRoQ29uc3RyYWludCh0aGlzLmVsYXN0aWNLZXl3b3JkcywgY29uc3RyYWludCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQ6IERhdGFmaWVsZCk6IFF1ZXJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeS5nZW5lcmF0ZVByZWRpY2F0ZShbW2RhdGFmaWVsZC5uZXRJZGVudGlmaWVyXV0pLnF1ZXJ5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVEYXRhZmllbGRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuYWxsb3dlZE5ldHNTZXJ2aWNlLmFsbG93ZWROZXRzJC5zdWJzY3JpYmUoYWxsb3dlZE5ldHMgPT4ge1xuICAgICAgICAgICAgYWxsb3dlZE5ldHMuZm9yRWFjaChwZXRyaU5ldCA9PiB7XG4gICAgICAgICAgICAgICAgcGV0cmlOZXQuaW1tZWRpYXRlRGF0YVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGltbWVkaWF0ZURhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltbWVkaWF0ZURhdGEudGl0bGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGltbWVkaWF0ZURhdGEudGl0bGUudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhQ2FzZURhdGFzZXQuRElTQUJMRURfVFlQRVMuaW5jbHVkZXMoaW1tZWRpYXRlRGF0YS50eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goaW1tZWRpYXRlRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGltbWVkaWF0ZURhdGEudHlwZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHNlYXJjaCBwdXJwb3NlcywgZW51bWVyYXRpb24gYW5kIG11bHRpY2hvaWNlIG1hcHMgYXJlIGVxdWl2YWxlbnQgdG8gdGhlaXIgc2ltcGxlciBjb3VudGVycGFydHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZW51bWVyYXRpb25fbWFwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAnZW51bWVyYXRpb24nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbXVsdGljaG9pY2VfbWFwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAnbXVsdGljaG9pY2UnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFRvRGF0YWZpZWxkT3B0aW9uc01hcChEYXRhZmllbGRNYXBLZXkuc2VyaWFsaXplZEZvcm0oaW1tZWRpYXRlRGF0YS50eXBlLCBpbW1lZGlhdGVEYXRhLnRpdGxlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldElkZW50aWZpZXI6IHBldHJpTmV0LmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZDogaW1tZWRpYXRlRGF0YS5zdHJpbmdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGU6IGltbWVkaWF0ZURhdGEudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJC5uZXh0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZpbHRlck9wdGlvbnModXNlcklucHV0OiBPYnNlcnZhYmxlPHN0cmluZyB8IFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxzdHJpbmc+Pj4pOlxuICAgICAgICBPYnNlcnZhYmxlPEFycmF5PFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxzdHJpbmc+Pj4+IHtcblxuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjYXRlZ29yeSBtdXN0IGJlIGZ1bGx5IGNvbmZpZ3VyZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZ2V0IGF1dG9jb21wbGV0ZSBvcHRpb25zIScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlucHV0VHlwZSAhPT0gU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmlsdGVyIG9wdGlvbnMgb2Ygbm9uLWF1dG9jb21wbGV0ZSBvcGVyYW5kcycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJBdXRvY29tcGxldGUuZmlsdGVyT3B0aW9ucyh1c2VySW5wdXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3REYXRhZmllbGRzKGRhdGFmaWVsZE1hcEtleTogc3RyaW5nLCBzZWxlY3REZWZhdWx0T3BlcmF0b3IgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5oYXMoZGF0YWZpZWxkTWFwS2V5KSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLndhcm4oYFRoZSBwcm92aWRlZCAnZGF0YWZpZWxkTWFwS2V5JyAoJHtkYXRhZmllbGRNYXBLZXl9KSBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoRGF0YWZpZWxkTWFwS2V5LnBhcnNlKGRhdGFmaWVsZE1hcEtleSkpO1xuICAgICAgICBpZiAoc2VsZWN0RGVmYXVsdE9wZXJhdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRPcGVyYXRvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyBlbnRyeSBvciBwdXNoZXMgdmFsdWUgaW50byBhbiBleGlzdGluZyBlbnRyeS5cbiAgICAgKiBXaGVuIGEgbmV3IGVudHJ5IGlzIGNyZWF0ZWQsIGl0IGlzIGNyZWF0ZWQgYXMgYW4gQXJyYXkgb2Ygb25lIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIGtleSB3aGVyZSBpbiB0aGUgbWFwIHNob3VsZCB0aGUgdmFsdWUgYmUgYWRkZWRcbiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBtYXBcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWRkVG9EYXRhZmllbGRPcHRpb25zTWFwKGtleTogc3RyaW5nLCB2YWx1ZTogRGF0YWZpZWxkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhZmllbGRPcHRpb25zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLmdldChrZXkpLnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5zZXQoa2V5LCBbdmFsdWVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc09wZXJhbmRWYWx1ZVNlbGVjdGVkKG5ld1ZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlcmF0b3JTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlucHV0VHlwZTogU2VhcmNoSW5wdXRUeXBlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaW5wdXRUeXBlID0gdGhpcy5pbnB1dFR5cGU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoaW5wdXRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5OVU1CRVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ251bWJlcic7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5CT09MRUFOOlxuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbmV3VmFsdWUgPT09ICdib29sZWFuJztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gISghbmV3VmFsdWUgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnc3RyaW5nJyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAhIW5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgYEZvcm1Db250cm9sYCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBpdCBpbnRvIHRoZSBzZWxlY3RlZCBgT3BlcmF0b3JgIGZvciBxdWVyeSBnZW5lcmF0aW9uLlxuICAgICAqIEl0IGlzIG1vc3RseSB1c2VmdWwgb25seSBmb3IgQXV0b2NvbXBsZXRlQ2F0ZWdvcmllcywgd2hlcmUgdGhlIHNlbGVjdGVkIHZhbHVlIG9mIHRoZSBGb3JtQ29udHJvbCBpcyBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIEZvcm1Db250cm9sVmFsdWVcbiAgICAgKiBAcmV0dXJucyBJZiB0aGUgc2VsZWN0ZWQgZGF0YSBmaWVsZCBoYXMgaW5wdXQgdHlwZSBgQVVUT0NPTVBMRVRFYCB0aGVuIHJldHVybnMgdGhlIHtAbGluayBTZWFyY2hBdXRvY29tcGxldGVPcHRpb259IGB2YWx1ZWBcbiAgICAgKiBhdHRyaWJ1dGUuIE90aGVyd2lzZSBwZXJmb3JtcyBhbiBpZGVudGl0eSBvcGVyYXRpb24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRyYW5zZm9ybUNhdGVnb3J5VmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0VHlwZSA9PT0gU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSkge1xuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSBhcyBTZWFyY2hBdXRvY29tcGxldGVPcHRpb248QXJyYXk8bnVtYmVyPj4pLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVDbGFzcygpOiBDYXRlZ29yaWVzIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXMuQ0FTRV9EQVRBU0VUO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpOiB1bmtub3duIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyQXV0b2NvbXBsZXRlLnNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZUZvcm1Db250cm9sKTtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEU6XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZUZvcm1Db250cm9sLnZhbHVlIGFzIE1vbWVudCkudmFsdWVPZigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlRm9ybUNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU1ldGFkYXRhQ29uZmlndXJhdGlvbigpOiBDYXRlZ29yeU1ldGFkYXRhQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHN1cGVyLmNyZWF0ZU1ldGFkYXRhQ29uZmlndXJhdGlvbigpO1xuICAgICAgICBjb25maWdbQ2FzZURhdGFzZXQuREFUQUZJRUxEX01FVEFEQVRBXSA9ICh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUgYXMgRGF0YWZpZWxkTWFwS2V5KS50b1NlcmlhbGl6ZWRGb3JtKCk7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRDb25maWd1cmF0aW9uRnJvbU1ldGFkYXRhKGNvbmZpZ3VyYXRpb246IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcbiAgICAgICAgdGhpcy5kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkTWFwS2V5ID0gY29uZmlndXJhdGlvbltDYXNlRGF0YXNldC5EQVRBRklFTERfTUVUQURBVEFdIGFzIHN0cmluZztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YWZpZWxkcyhzZXJpYWxpemVkTWFwS2V5LCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZWFyY2hlZCBkYXRhIGZpZWxkcyBjYW5ub3QgYmUgcmVzdG9yZWQgZnJvbSB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiAoJHtzZXJpYWxpemVkTWFwS2V5XG4gICAgICAgICAgICAgICAgfSkuIE1ha2Ugc3VyZSwgdGhhdCB0aGUgY29ycmVjdCBhbGxvd2VkIG5ldHMgYXJlIHByb3ZpZGVkIGluIHRoaXMgdmlldy5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1cGVyLmxvYWRDb25maWd1cmF0aW9uRnJvbU1ldGFkYXRhKGNvbmZpZ3VyYXRpb24pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWU6IHVua25vd24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJBdXRvY29tcGxldGUuZGVzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWUgYXMgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PHN0cmluZz4+KTtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEU6XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG1vbWVudCh2YWx1ZSBhcyBzdHJpbmcpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDb25maWd1cmF0aW9uRmlsdGVyVGV4dFNlZ21lbnRzKCk6IEFycmF5PEZpbHRlclRleHRTZWdtZW50PiB7XG4gICAgICAgIHJldHVybiBbe3NlZ21lbnQ6IHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLnZhbHVlWzBdLmZvcm1Db250cm9sLnZhbHVlLnRleHQsIGJvbGQ6IHRydWV9XTtcbiAgICB9XG59XG4iXX0=
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS1kYXRhc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixD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QUM7U0FDbkQ7SUFDTCxDQUFDO0lBRVMscUNBQXFDO1FBQzNDLE9BQU8sQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7O0FBcmF1QixpQkFBSyxHQUFHLDhCQUE4QixDQUFDO0FBQzlDLDBCQUFjLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuRCw4QkFBa0IsR0FBRyxXQUFXLENBQUM7QUFDbkMsNkJBQWlCLEdBQUcsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9vcGVyYXRvci1zZXJ2aWNlL29wZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcGVyYXRvciB9IGZyb20gJy4uLy4uL29wZXJhdG9yL29wZXJhdG9yJztcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi4vLi4vcXVlcnkvcXVlcnknO1xuaW1wb3J0IHsgT3B0aW9uYWxEZXBlbmRlbmNpZXMgfSBmcm9tICcuLi8uLi8uLi9jYXRlZ29yeS1mYWN0b3J5L29wdGlvbmFsLWRlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dFR5cGUgfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQgeyBEYXRhZmllbGRNYXBLZXkgfSBmcm9tICcuLi8uLi9kYXRhZmllbGQtbWFwLWtleSc7XG5pbXBvcnQgeyBTZWFyY2hBdXRvY29tcGxldGVPcHRpb24gfSBmcm9tICcuLi9zZWFyY2gtYXV0b2NvbXBsZXRlLW9wdGlvbic7XG5pbXBvcnQgeyBCb29sZWFuT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7IENhc2VQcm9jZXNzIH0gZnJvbSAnLi9jYXNlLXByb2Nlc3MnO1xuaW1wb3J0IHsgRXF1YWxzRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlJztcbmltcG9ydCB7IFN1YnN0cmluZyB9IGZyb20gJy4uLy4uL29wZXJhdG9yL3N1YnN0cmluZyc7XG5pbXBvcnQgeyBFcXVhbHNEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlLXRpbWUnO1xuaW1wb3J0IHsgRXF1YWxzIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRlZ29yeSc7XG5pbXBvcnQgeyBOb3RFcXVhbHMgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzJztcbmltcG9ydCB7IE1vcmVUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuJztcbmltcG9ydCB7IExlc3NUaGFuIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuJztcbmltcG9ydCB7IEluUmFuZ2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZSc7XG5pbXBvcnQgeyBJc051bGwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pcy1udWxsJztcbmltcG9ydCB7IExpa2UgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9saWtlJztcbmltcG9ydCB7IE5vdEVxdWFsc0RhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9ub3QtZXF1YWxzLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWRhdGUnO1xuaW1wb3J0IHsgTGVzc1RoYW5EYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWRhdGUnO1xuaW1wb3J0IHsgSW5SYW5nZURhdGUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZS1kYXRlJztcbmltcG9ydCB7IE1vcmVUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IExlc3NUaGFuRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7IEluUmFuZ2VEYXRlVGltZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2luLXJhbmdlLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbklucHV0IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi1pbnB1dCc7XG5pbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gJy4uLy4uL3NlYXJjaC1pbmRleCc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzIH0gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZ2VuZXJhdG9yLW1ldGFkYXRhJztcbmltcG9ydCB7IE1vcmVUaGFuRXF1YWwgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZXF1YWwnO1xuaW1wb3J0IHsgTGVzc1RoYW5FcXVhbCB9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbi1lcXVhbCc7XG5pbXBvcnQgeyBNb3JlVGhhbkVxdWFsRGF0ZSB9IGZyb20gJy4uLy4uL29wZXJhdG9yL21vcmUtdGhhbi1lcXVhbC1kYXRlJztcbmltcG9ydCB7IExlc3NUaGFuRXF1YWxEYXRlIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWVxdWFsLWRhdGUnO1xuaW1wb3J0IHsgTW9yZVRoYW5FcXVhbERhdGVUaW1lIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWVxdWFsLWRhdGUtdGltZSc7XG5pbXBvcnQgeyBMZXNzVGhhbkVxdWFsRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZXF1YWwtZGF0ZS10aW1lJztcbmltcG9ydCB7IEZpbHRlclRleHRTZWdtZW50IH0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZmlsdGVyLXRleHQtc2VnbWVudCc7XG5pbXBvcnQgeyBVc2VyQXV0b2NvbXBsZXRlIH0gZnJvbSAnLi4vdXNlci1hdXRvY29tcGxldGUnO1xuXG5pbnRlcmZhY2UgRGF0YWZpZWxkIHtcbiAgICBuZXRJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgZmllbGRJZDogc3RyaW5nO1xuICAgIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FzZURhdGFzZXQgZXh0ZW5kcyBDYXRlZ29yeTxEYXRhZmllbGQ+IGltcGxlbWVudHMgQXV0b2NvbXBsZXRlT3B0aW9ucyB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaTE4biA9ICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0JztcbiAgICBwcm90ZWN0ZWQgc3RhdGljIERJU0FCTEVEX1RZUEVTID0gWydidXR0b24nLCAndGFza1JlZicsICdjYXNlUmVmJywgJ2ZpbHRlciddO1xuICAgIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREFUQUZJRUxEX01FVEFEQVRBID0gJ2RhdGFmaWVsZCc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVVUT0NPTVBMRVRFX0lDT04gPSAnYWNjb3VudF9jaXJjbGUnO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9EQVRBRklFTERfSU5QVVQ6IENvbmZpZ3VyYXRpb25JbnB1dDtcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0NhdGVnb3J5OiBDYXNlUHJvY2VzcztcblxuICAgIHByb3RlY3RlZCBfY29uZmlndXJhdGlvbklucHV0cyQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PjtcblxuICAgIHByb3RlY3RlZCBfZGF0YWZpZWxkT3B0aW9uczogTWFwPHN0cmluZywgQXJyYXk8RGF0YWZpZWxkPj47XG5cbiAgICBwcml2YXRlIF9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkOiBSZXBsYXlTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgX2FsbG93ZWROZXRzU3ViOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfdXNlckF1dG9jb21wbGV0ZTogVXNlckF1dG9jb21wbGV0ZTtcblxuICAgIHB1YmxpYyBzdGF0aWMgRmllbGRUeXBlVG9JbnB1dFR5cGUoZmllbGRUeXBlOiBzdHJpbmcpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5EQVRFO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLk5VTUJFUjtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQk9PTEVBTjtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLlRFWFQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRvcnM6IE9wZXJhdG9yU2VydmljZSwgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX29wdGlvbmFsRGVwZW5kZW5jaWVzOiBPcHRpb25hbERlcGVuZGVuY2llcykge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBgJHtDYXNlRGF0YXNldC5faTE4bn0ubmFtZWAsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBvcGVyYXRvcnMpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeSA9IHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzLmNhdGVnb3J5RmFjdG9yeS5nZXQoQ2FzZVByb2Nlc3MpIGFzIENhc2VQcm9jZXNzO1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuc2VsZWN0RGVmYXVsdE9wZXJhdG9yKCk7XG5cbiAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxEYXRhZmllbGQ+PigpO1xuICAgICAgICB0aGlzLl91c2VyQXV0b2NvbXBsZXRlID0gbmV3IFVzZXJBdXRvY29tcGxldGUodGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgICAgICB0aGlzLmNyZWF0ZURhdGFmaWVsZE9wdGlvbnMoKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQgPSBuZXcgQ29uZmlndXJhdGlvbklucHV0KFxuICAgICAgICAgICAgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSxcbiAgICAgICAgICAgICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0LnBsYWNlaG9sZGVyLmZpZWxkJyxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLFxuICAgICAgICAgICAgKG1hcEtleXMsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcEtleXMubWFwKHNlcmlhbGl6ZWRNYXBLZXkgPT4gRGF0YWZpZWxkTWFwS2V5LnBhcnNlKHNlcmlhbGl6ZWRNYXBLZXkpKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG1hcEtleSA9PiBtYXBLZXkudGl0bGUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbmZpZ3VyYXRpb25JbnB1dD4+KFt0aGlzLl9EQVRBRklFTERfSU5QVVRdKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQudmFsdWVDaGFuZ2VzJCgpLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVUXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmdldFZhbHVlKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVULCB0aGlzLl9PUEVSQVRPUl9JTlBVVF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWROZXRzU3ViICYmICF0aGlzLl9hbGxvd2VkTmV0c1N1Yi5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZmlndXJhdGlvbklucHV0cyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlucHV0VHlwZSgpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IHR5cGUgb2YgYXJndW1lbnRzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJlZm9yZSBzZWxlY3RpbmcgYSBkYXRhIGZpZWxkIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2FzZURhdGFzZXQuRmllbGRUeXBlVG9JbnB1dFR5cGUodGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzWzBdLmZpZWxkVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGFsbG93ZWQgb3BlcmF0b3JzIGFyZSBkZXBlbmRhbnQgb24gdGhlIHNlbGVjdGVkIGRhdGEgZmllbGQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBhbGxvd2VkIG9wZXJhdG9ycywgdGhlbiB5b3UgbXVzdCBhbHNvIHVwZGF0ZSB0aGVcbiAgICAgKiBbc2VsZWN0RGVmYXVsdE9wZXJhdG9yKClde0BsaW5rIENhdGVnb3J5I3NlbGVjdERlZmF1bHRPcGVyYXRvcn0gbWV0aG9kLCBzbyB0aGF0IGRlZmF1bHQgb3BlcmF0b3IgZm9yIGVhY2ggZGF0YSBmaWVsZCB0eXBlIG1hdGNoZXNcbiAgICAgKiB0aGUgZGVmYXVsdCBvcGVyYXRvciBvZiB0aGUge0BsaW5rIENhc2VTaW1wbGVEYXRhc2V0fSBzZWFyY2ggY2F0ZWdvcnkuIE90aGVyd2lzZSB0aGUgdHJhbnNpdGlvbiBvZiBoZWFkZXIgc2VhcmNoIGludG8gdGhlIHNlYXJjaCBHVUlcbiAgICAgKiB3b24ndCB3b3JrIHByb3Blcmx5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE9wZXJhdG9ycygpOiBBcnJheTxPcGVyYXRvcjxhbnk+PiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX3NlbGVjdGVkRGF0YWZpZWxkc1swXS5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW4pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbiksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkVxdWFsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2UpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFscylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICBjYXNlICd1c2VyTGlzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHNEYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbkVxdWFsRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkRhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSW5SYW5nZURhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFsc0RhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2VEYXRlVGltZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKFN1YnN0cmluZyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTm90RXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMaWtlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgQ2FzZURhdGFzZXRgIGNhdGVnb3J5IGlzIG5vdCBkaXNwbGF5ZWQgaW4gYm9sZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5XG4gICAgICovXG4gICAgZ2V0IGRpc3BsYXlCb2xkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNTZWxlY3RlZERhdGFmaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9EQVRBRklFTERfSU5QVVQuaXNPcHRpb25TZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IF9zZWxlY3RlZERhdGFmaWVsZHMoKTogQXJyYXk8RGF0YWZpZWxkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhZmllbGRPcHRpb25zLmdldCh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgc3VwZXIucmVzZXQoKTtcbiAgICAgICAgdGhpcy5fREFUQUZJRUxEX0lOUFVULmNsZWFyKCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlKCk6IENhc2VEYXRhc2V0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXNlRGF0YXNldCh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZywgdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZWxhc3RpY0tleXdvcmRzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzLm1hcChkYXRhZmllbGQgPT4gdGhpcy5yZXNvbHZlRWxhc3RpY0tleXdvcmQoZGF0YWZpZWxkKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVsYXN0aWNLZXl3b3JkKGRhdGFmaWVsZDogRGF0YWZpZWxkKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5zZWFyY2hJbmRleFJlc29sdmVyO1xuICAgICAgICBzd2l0Y2ggKGRhdGFmaWVsZC5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5OVU1CRVIpO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5USU1FU1RBTVApO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5CT09MRUFOKTtcbiAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgICAgY2FzZSAnZmlsZUxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguRklMRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKTtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgY2FzZSAndXNlckxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguVVNFUl9JRCk7XG4gICAgICAgICAgICBjYXNlICdpMThuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LlRFWFQsIHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoTm90RXF1YWxzKSB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihTdWJzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKElzTnVsbCkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LkZVTExURVhULFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtDYXNlRGF0YXNldC5faTE4bn0ucGxhY2Vob2xkZXIuZmllbGRgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtDYXNlRGF0YXNldC5faTE4bn0ucGxhY2Vob2xkZXIudmFsdWVgO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlUXVlcnkodXNlcklucHV0OiBBcnJheTx1bmtub3duPik6IFF1ZXJ5IHtcbiAgICAgICAgbGV0IHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5O1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoSXNOdWxsKSkge1xuICAgICAgICAgICAgcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3kgPSAoZCwgXykgPT4gdGhpcy5pc051bGxPcGVyYXRvclF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCB1aSkgPT4gdGhpcy5zdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQsIHVpWzBdLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCB1aSkgPT4gdGhpcy5zdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGQsIHVpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLl9zZWxlY3RlZERhdGFmaWVsZHMubWFwKGRhdGFmaWVsZCA9PiBxdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQsIHVzZXJJbnB1dCkpO1xuICAgICAgICByZXR1cm4gUXVlcnkuY29tYmluZVF1ZXJpZXMocXVlcmllcywgQm9vbGVhbk9wZXJhdG9yLk9SKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhbmRhcmRRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQ6IERhdGFmaWVsZCwgdXNlcklucHV0OiBBcnJheTx1bmtub3duPiwgZXNjYXBlSW5wdXQgPSB0cnVlKTogUXVlcnkge1xuICAgICAgICBjb25zdCB2YWx1ZVF1ZXJ5ID0gdGhpcy5zZWxlY3RlZE9wZXJhdG9yLmNyZWF0ZVF1ZXJ5KHRoaXMuZWxhc3RpY0tleXdvcmRzLCB1c2VySW5wdXQsIGVzY2FwZUlucHV0KTtcbiAgICAgICAgY29uc3QgbmV0UXVlcnkgPSB0aGlzLmdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQpO1xuICAgICAgICByZXR1cm4gUXVlcnkuY29tYmluZVF1ZXJpZXMoW3ZhbHVlUXVlcnksIG5ldFF1ZXJ5XSwgQm9vbGVhbk9wZXJhdG9yLkFORCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzTnVsbE9wZXJhdG9yUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZGF0YWZpZWxkOiBEYXRhZmllbGQpOiBRdWVyeSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSB0aGlzLmdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQpO1xuICAgICAgICByZXR1cm4gKHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpIGFzIElzTnVsbCkuY3JlYXRlUXVlcnlXaXRoQ29uc3RyYWludCh0aGlzLmVsYXN0aWNLZXl3b3JkcywgY29uc3RyYWludCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlTmV0Q29uc3RyYWludChkYXRhZmllbGQ6IERhdGFmaWVsZCk6IFF1ZXJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeS5nZW5lcmF0ZVByZWRpY2F0ZShbW2RhdGFmaWVsZC5uZXRJZGVudGlmaWVyXV0pLnF1ZXJ5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVEYXRhZmllbGRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuYWxsb3dlZE5ldHNTZXJ2aWNlLmFsbG93ZWROZXRzJC5zdWJzY3JpYmUoYWxsb3dlZE5ldHMgPT4ge1xuICAgICAgICAgICAgYWxsb3dlZE5ldHMuZm9yRWFjaChwZXRyaU5ldCA9PiB7XG4gICAgICAgICAgICAgICAgcGV0cmlOZXQuaW1tZWRpYXRlRGF0YVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGltbWVkaWF0ZURhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltbWVkaWF0ZURhdGEudGl0bGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGltbWVkaWF0ZURhdGEudGl0bGUudHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhQ2FzZURhdGFzZXQuRElTQUJMRURfVFlQRVM/LmluY2x1ZGVzKGltbWVkaWF0ZURhdGEudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGltbWVkaWF0ZURhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBpbW1lZGlhdGVEYXRhLnR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBzZWFyY2ggcHVycG9zZXMsIGVudW1lcmF0aW9uIGFuZCBtdWx0aWNob2ljZSBtYXBzIGFyZSBlcXVpdmFsZW50IHRvIHRoZWlyIHNpbXBsZXIgY291bnRlcnBhcnRzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2VudW1lcmF0aW9uX21hcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ2VudW1lcmF0aW9uJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ211bHRpY2hvaWNlX21hcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ211bHRpY2hvaWNlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRUb0RhdGFmaWVsZE9wdGlvbnNNYXAoRGF0YWZpZWxkTWFwS2V5LnNlcmlhbGl6ZWRGb3JtKGltbWVkaWF0ZURhdGEudHlwZSwgaW1tZWRpYXRlRGF0YS50aXRsZSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRJZGVudGlmaWVyOiBwZXRyaU5ldC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ6IGltbWVkaWF0ZURhdGEuc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlOiBpbW1lZGlhdGVEYXRhLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQubmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaWx0ZXJPcHRpb25zKHVzZXJJbnB1dDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBTZWFyY2hBdXRvY29tcGxldGVPcHRpb248QXJyYXk8c3RyaW5nPj4+KTpcbiAgICAgICAgT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hBdXRvY29tcGxldGVPcHRpb248QXJyYXk8c3RyaW5nPj4+PiB7XG5cbiAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGVkRGF0YWZpZWxkcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgY2F0ZWdvcnkgbXVzdCBiZSBmdWxseSBjb25maWd1cmVkIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGdldCBhdXRvY29tcGxldGUgb3B0aW9ucyEnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnB1dFR5cGUgIT09IFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZpbHRlciBvcHRpb25zIG9mIG5vbi1hdXRvY29tcGxldGUgb3BlcmFuZHMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyQXV0b2NvbXBsZXRlLmZpbHRlck9wdGlvbnModXNlcklucHV0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RGF0YWZpZWxkcyhkYXRhZmllbGRNYXBLZXk6IHN0cmluZywgc2VsZWN0RGVmYXVsdE9wZXJhdG9yID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuaGFzKGRhdGFmaWVsZE1hcEtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy53YXJuKGBUaGUgcHJvdmlkZWQgJ2RhdGFmaWVsZE1hcEtleScgKCR7ZGF0YWZpZWxkTWFwS2V5fSkgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fREFUQUZJRUxEX0lOUFVULmZvcm1Db250cm9sLnNldFZhbHVlKERhdGFmaWVsZE1hcEtleS5wYXJzZShkYXRhZmllbGRNYXBLZXkpKTtcbiAgICAgICAgaWYgKHNlbGVjdERlZmF1bHRPcGVyYXRvcikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0T3BlcmF0b3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBuZXcgZW50cnkgb3IgcHVzaGVzIHZhbHVlIGludG8gYW4gZXhpc3RpbmcgZW50cnkuXG4gICAgICogV2hlbiBhIG5ldyBlbnRyeSBpcyBjcmVhdGVkLCBpdCBpcyBjcmVhdGVkIGFzIGFuIEFycmF5IG9mIG9uZSBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBrZXkgd2hlcmUgaW4gdGhlIG1hcCBzaG91bGQgdGhlIHZhbHVlIGJlIGFkZGVkXG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgbWFwXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFkZFRvRGF0YWZpZWxkT3B0aW9uc01hcChrZXk6IHN0cmluZywgdmFsdWU6IERhdGFmaWVsZCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5nZXQoa2V5KS5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuc2V0KGtleSwgW3ZhbHVlXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNPcGVyYW5kVmFsdWVTZWxlY3RlZChuZXdWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZXJhdG9yU2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbnB1dFR5cGU6IFNlYXJjaElucHV0VHlwZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlucHV0VHlwZSA9IHRoaXMuaW5wdXRUeXBlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGlucHV0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbmV3VmFsdWUgPT09ICdudW1iZXInO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIG5ld1ZhbHVlID09PSAnYm9vbGVhbic7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoIW5ld1ZhbHVlIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ3N0cmluZycpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gISFuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgdHJhbnNmb3JtYXRpb24gb2YgdGhlIGBGb3JtQ29udHJvbGAgdmFsdWUgYmVmb3JlIHBhc3NpbmcgaXQgaW50byB0aGUgc2VsZWN0ZWQgYE9wZXJhdG9yYCBmb3IgcXVlcnkgZ2VuZXJhdGlvbi5cbiAgICAgKiBJdCBpcyBtb3N0bHkgdXNlZnVsIG9ubHkgZm9yIEF1dG9jb21wbGV0ZUNhdGVnb3JpZXMsIHdoZXJlIHRoZSBzZWxlY3RlZCB2YWx1ZSBvZiB0aGUgRm9ybUNvbnRyb2wgaXMgYW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSBGb3JtQ29udHJvbFZhbHVlXG4gICAgICogQHJldHVybnMgSWYgdGhlIHNlbGVjdGVkIGRhdGEgZmllbGQgaGFzIGlucHV0IHR5cGUgYEFVVE9DT01QTEVURWAgdGhlbiByZXR1cm5zIHRoZSB7QGxpbmsgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9ufSBgdmFsdWVgXG4gICAgICogYXR0cmlidXRlLiBPdGhlcndpc2UgcGVyZm9ybXMgYW4gaWRlbnRpdHkgb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1DYXRlZ29yeVZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFR5cGUgPT09IFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUgYXMgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PG51bWJlcj4+KS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgc2VyaWFsaXplQ2xhc3MoKTogQ2F0ZWdvcmllcyB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzLkNBU0VfREFUQVNFVDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKTogdW5rbm93biB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnB1dFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlckF1dG9jb21wbGV0ZS5zZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWVGb3JtQ29udHJvbCk7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFOlxuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FOlxuICAgICAgICAgICAgICAgIHJldHVybiAodmFsdWVGb3JtQ29udHJvbC52YWx1ZSBhcyBNb21lbnQpLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZUZvcm1Db250cm9sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVNZXRhZGF0YUNvbmZpZ3VyYXRpb24oKTogQ2F0ZWdvcnlNZXRhZGF0YUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICBjb25zdCBjb25maWcgPSBzdXBlci5jcmVhdGVNZXRhZGF0YUNvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgY29uZmlnW0Nhc2VEYXRhc2V0LkRBVEFGSUVMRF9NRVRBREFUQV0gPSAodGhpcy5fREFUQUZJRUxEX0lOUFVULmZvcm1Db250cm9sLnZhbHVlIGFzIERhdGFmaWVsZE1hcEtleSkudG9TZXJpYWxpemVkRm9ybSgpO1xuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQ29uZmlndXJhdGlvbkZyb21NZXRhZGF0YShjb25maWd1cmF0aW9uOiBDYXRlZ29yeU1ldGFkYXRhQ29uZmlndXJhdGlvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXN1bHQkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgICAgIHRoaXMuZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplZE1hcEtleSA9IGNvbmZpZ3VyYXRpb25bQ2FzZURhdGFzZXQuREFUQUZJRUxEX01FVEFEQVRBXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdERhdGFmaWVsZHMoc2VyaWFsaXplZE1hcEtleSwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGVkRGF0YWZpZWxkcykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VhcmNoZWQgZGF0YSBmaWVsZHMgY2Fubm90IGJlIHJlc3RvcmVkIGZyb20gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKCR7c2VyaWFsaXplZE1hcEtleVxuICAgICAgICAgICAgICAgIH0pLiBNYWtlIHN1cmUsIHRoYXQgdGhlIGNvcnJlY3QgYWxsb3dlZCBuZXRzIGFyZSBwcm92aWRlZCBpbiB0aGlzIHZpZXcuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdXBlci5sb2FkQ29uZmlndXJhdGlvbkZyb21NZXRhZGF0YShjb25maWd1cmF0aW9uKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRlc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlOiB1bmtub3duKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyQXV0b2NvbXBsZXRlLmRlc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlIGFzIFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxzdHJpbmc+Pik7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFOlxuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FOlxuICAgICAgICAgICAgICAgIHJldHVybiBvZihtb21lbnQodmFsdWUgYXMgc3RyaW5nKSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQ29uZmlndXJhdGlvbkZpbHRlclRleHRTZWdtZW50cygpOiBBcnJheTxGaWx0ZXJUZXh0U2VnbWVudD4ge1xuICAgICAgICByZXR1cm4gW3tzZWdtZW50OiB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC52YWx1ZVswXS5mb3JtQ29udHJvbC52YWx1ZS50ZXh0LCBib2xkOiB0cnVlfV07XG4gICAgfVxufVxuIl19
@@ -69,7 +69,7 @@ export class Operator {
69
69
  * @param forceWrap if set to `true` the value will be wrapped regardless of it's content
70
70
  */
71
71
  static wrapInputWithQuotes(input, forceWrap = false) {
72
- if (typeof input === 'string' && (input.includes(' ') || forceWrap))
72
+ if (typeof input === 'string' && (input?.includes(' ') || forceWrap))
73
73
  return { value: `"${input}"`, wasWrapped: true };
74
74
  else
75
75
  return { value: input, wasWrapped: false };
@@ -121,4 +121,4 @@ Operator.ESCAPABLE_CHARACTERS = new Set(['+', '-', '=', '&', '|', '!', '(', ')',
121
121
  * Reserved characters for Elasticsearch queries. These characters cannot be escaped and must be removed from queries.
122
122
  */
123
123
  Operator.UNESCAPABLE_CHARACTERS = new Set(['<', '>']);
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3NlYXJjaC9tb2RlbHMvb3BlcmF0b3Ivb3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUlwRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBZ0IsUUFBUTtJQTRCMUIsWUFBc0IsZ0JBQXdCLEVBQUUsZUFBZSxHQUFHLEVBQUU7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWE7UUFDbkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxRQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BELFNBQVM7Z0JBQ2IsSUFBSSxRQUFRLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDcEQsTUFBTSxJQUFJLElBQUksQ0FBQztvQkFDZixPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtnQkFD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QUNvQiwwQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFOUM7O0dBRUc7QUFDcUIsNkJBQW9CLEdBQUcsSUFBSSxHQUFHLENBQ2xELENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFM0c7O0dBRUc7QUFDcUIsK0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXNjYXBlUmVzdWx0fSBmcm9tICcuLi9lc2NhcGUtcmVzdWx0JztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uL3F1ZXJ5L3F1ZXJ5JztcbmltcG9ydCB7Qm9vbGVhbk9wZXJhdG9yfSBmcm9tICcuLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7V3JhcFJlc3VsdH0gZnJvbSAnLi4vd3JhcC1yZXN1bHQnO1xuaW1wb3J0IHtPcGVyYXRvcnN9IGZyb20gJy4vb3BlcmF0b3JzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb3cgbGV2ZWwgYWJzdHJhY3Rpb24gb2YgcXVlcnkgZ2VuZXJhdGlvbiB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY3JlYXRpb24gb2YgcXVlcmllcyB0aGVtc2VsdmVzLlxuICpcbiAqIE9wZXJhdG9ycyBhcmUgbWVudCB0byBiZSBzdGF0ZWxlc3MgYW5kIGhlbGQgYXMgc2luZ2xldG9uIGluc3RhbmNlcywgYXMgdGhleSBjYW4gYmUgc2hhcmVkIHdpdGhvdXQgYW55IGlzc3Vlcy5cbiAqIFRoaXMgbGlicmFyeSB1c2VzIHRoZSB7QGxpbmsgT3BlcmF0b3JTZXJ2aWNlfSB0byBzdG9yZSB0aGUgc2luZ2xldG9uIGluc3RhbmNlcywgYnV0IHlvdSBjYW4gdXNlIHlvdXIgb3duIHNvbHV0aW9uLFxuICogb3IgaW5zdGFudGlhdGUgdGhlbSBtdWx0aXBsZSB0aW1lcyBpZiB5b3UgcHJlZmVyLlxuICpcbiAqIEB0eXBlcGFyYW0gVCB0eXBlIG9mIGFyZ3VtZW50cyB0aGlzIE9wZXJhdG9yIGNhbiBnZW5lcmF0ZSBxdWVyaWVzIGZyb21cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9wZXJhdG9yPFQ+IHtcblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHBsYWNlaG9sZGVyIFwiYmxvY2tcIiBpbiBvcGVyYXRvciBkaXNwbGF5IG5hbWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU5QVVRfUExBQ0VIT0xERVIgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFJlc2VydmVkIGNoYXJhY3RlcnMgZm9yIEVsYXN0aWNzZWFyY2ggcXVlcmllcy4gVGhlc2UgY2hhcmFjdGVycyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYFxcYCBjaGFyYWN0ZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVNDQVBBQkxFX0NIQVJBQ1RFUlMgPSBuZXcgU2V0KFxuICAgICAgICBbJysnLCAnLScsICc9JywgJyYnLCAnfCcsICchJywgJygnLCAnKScsICd7JywgJ30nLCAnWycsICddJywgJ14nLCAnXCInLCAnficsICcqJywgJz8nLCAnOicsICdcXFxcJywgJy8nXSk7XG5cbiAgICAvKipcbiAgICAgKiBSZXNlcnZlZCBjaGFyYWN0ZXJzIGZvciBFbGFzdGljc2VhcmNoIHF1ZXJpZXMuIFRoZXNlIGNoYXJhY3RlcnMgY2Fubm90IGJlIGVzY2FwZWQgYW5kIG11c3QgYmUgcmVtb3ZlZCBmcm9tIHF1ZXJpZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVU5FU0NBUEFCTEVfQ0hBUkFDVEVSUyA9IG5ldyBTZXQoWyc8JywgJz4nXSk7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBhcml0eSBvZiB0aGUgb3BlcmF0b3IsIHRoYXQgaXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMvb3BlcmFuZHMgaXQgdGFrZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbnVtYmVyT2ZPcGVyYW5kczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wZXJhdG9yIHN5bWJvbCB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHF1ZXJ5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdG9yU3ltYm9sczogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKG51bWJlck9mT3BlcmFuZHM6IG51bWJlciwgb3BlcmF0b3JTeW1ib2xzID0gJycpIHtcbiAgICAgICAgdGhpcy5fbnVtYmVyT2ZPcGVyYW5kcyA9IG51bWJlck9mT3BlcmFuZHM7XG4gICAgICAgIHRoaXMuX29wZXJhdG9yU3ltYm9scyA9IG9wZXJhdG9yU3ltYm9scztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIGFsbCBlc2NhcGFibGUgRWxhc3RpY3NlYXJjaCBzeW1ib2xzLiBSZW1vdmVzIGFsbCB1bmVzY2FwYWJsZSBFbGFzdGljc2VhcmNoIHN5bWJvbHMuXG4gICAgICpcbiAgICAgKiBGb3IgYSBsaXN0IG9mIHN5bWJvbHMgc2VlIEVsYXN0aWNzZWFyY2gncyBRdWVyeSBzdHJpbmcgcXVlcnlcbiAgICAgKiBbZG9jXXtAbGluayBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL2N1cnJlbnQvcXVlcnktZHNsLXF1ZXJ5LXN0cmluZy1xdWVyeS5odG1sI19yZXNlcnZlZF9jaGFyYWN0ZXJzfS5cbiAgICAgKiBAcGFyYW0gaW5wdXQgdXNlciBpbnB1dCB0aGF0IHNob3VsZCBoYXZlIHNwZWNpYWwgY2hhcmFjdGVycyBlc2NhcGVkXG4gICAgICogQHJldHVybnMgdXNlciBpbnB1dCB3aXRoIHRoZSBlc2NhcGFibGUgY2hhcmFjdGVycyBlc2NhcGVkIGFuZCB0aGUgdW5lc2NhcGFibGUgY2hhcmFjdGVycyByZW1vdmVkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBlc2NhcGVJbnB1dChpbnB1dDogc3RyaW5nKTogRXNjYXBlUmVzdWx0IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9wZXJhdG9yLlVORVNDQVBBQkxFX0NIQVJBQ1RFUlMuaGFzKGlucHV0LmNoYXJBdChpKSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChPcGVyYXRvci5FU0NBUEFCTEVfQ0hBUkFDVEVSUy5oYXMoaW5wdXQuY2hhckF0KGkpKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0cHV0ICs9IGlucHV0LmNoYXJBdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IG91dHB1dCwgd2FzRXNjYXBlZDogZXNjYXBlZH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt2YWx1ZTogaW5wdXQsIHdhc0VzY2FwZWQ6IGZhbHNlfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgUXVlcnkgc3RyaW5nIHF1ZXJ5IHN0cmluZyBsaXRlcmFsIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0gZWxhc3RpY0tleXdvcmQgRWxhc3RpY3NlYXJjaCBpbmRleCBrZXl3b3JkIGZvciB0aGUgZmllbGQgeW91IHdhbnQgdG8gcXVlcnlcbiAgICAgKiBAcGFyYW0gYXJnIFRoZSB2YWx1ZSB0aGF0IHlvdSB3YW50IHRvIHF1ZXJ5IHRoZSBwcm9wZXJ0eSBmb3JcbiAgICAgKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHlvdSB3YW50IHRvIHVzZSB0byBxdWVyeSB0aGUgaW5kZXhlZCBmaWVsZC4gQ29uc3VsdCB0aGUgRWxhc3RpY3NlYXJjaCdzXG4gICAgICogW2RvY3VtZW50YXRpb25de0BsaW5rIGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vZ3VpZGUvZW4vZWxhc3RpY3NlYXJjaC9yZWZlcmVuY2UvY3VycmVudC9xdWVyeS1kc2wtcXVlcnktc3RyaW5nLXF1ZXJ5Lmh0bWx9XG4gICAgICogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICogQHJldHVybnMgY29tYmluZXMgdGhlIGlucHV0IHN0cmluZ3MgYnkgdGhpcyBwYXR0ZXJuOiBgKFtlbGFzdGljS2V5d29yZF06W29wZXJhdG9yXVthcmddKWBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHF1ZXJ5KGVsYXN0aWNLZXl3b3JkOiBzdHJpbmcsIGFyZzogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAoJHtlbGFzdGljS2V5d29yZH06JHtvcGVyYXRvcn0ke2FyZ30pYDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiB0byBhbGwga2V5d29yZHMgYW5kIGNvbWJpbmVzIHRoZSByZXN1bHRpbmcgcXVlcmllcyB3aXRoIGFuIGBPUmAgb3BlcmF0b3IuXG4gICAgICogQHBhcmFtIGVsYXN0aWNLZXl3b3JkcyBrZXl3b3JkcyB0aGF0IHRoZSBmdW5jdGlvbiBpcyBjYWxsIG9uXG4gICAgICogQHBhcmFtIHF1ZXJ5Q29uc3RydWN0b3IgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgYSBgUXVlcnlgIG9iamVjdCBmb3IgZWFjaCBrZXl3b3JkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JFYWNoS2V5d29yZChlbGFzdGljS2V5d29yZHM6IEFycmF5PHN0cmluZz4sIHF1ZXJ5Q29uc3RydWN0b3I6IChrZXl3b3JkOiBzdHJpbmcpID0+IFF1ZXJ5KTogUXVlcnkge1xuICAgICAgICBjb25zdCBzaW1wbGVRdWVyaWVzID0gW107XG4gICAgICAgIGVsYXN0aWNLZXl3b3Jkcy5mb3JFYWNoKGtleXdvcmQgPT4ge1xuICAgICAgICAgICAgc2ltcGxlUXVlcmllcy5wdXNoKHF1ZXJ5Q29uc3RydWN0b3Ioa2V5d29yZCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFF1ZXJ5LmNvbWJpbmVRdWVyaWVzKHNpbXBsZVF1ZXJpZXMsIEJvb2xlYW5PcGVyYXRvci5PUik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGEgc3BhY2UgY2hhcmFjdGVyLCBvciBpZiBgZm9yY2VgIGlzIHNldCB0byBgdHJ1ZWAuXG4gICAgICogQHBhcmFtIGlucHV0IHVzZXIgaW5wdXQgdGhhdCBzaG91bGQgYmUgd3JhcHBlZCB3aXRoIGRvdWJsZSBxdW90ZXNcbiAgICAgKiBAcGFyYW0gZm9yY2VXcmFwIGlmIHNldCB0byBgdHJ1ZWAgdGhlIHZhbHVlIHdpbGwgYmUgd3JhcHBlZCByZWdhcmRsZXNzIG9mIGl0J3MgY29udGVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgd3JhcElucHV0V2l0aFF1b3RlcyhpbnB1dDogc3RyaW5nLCBmb3JjZVdyYXAgPSBmYWxzZSk6IFdyYXBSZXN1bHQge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyAmJiAoaW5wdXQuaW5jbHVkZXMoJyAnKSB8fCBmb3JjZVdyYXApKVxuICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogYFwiJHtpbnB1dH1cImAsIHdhc1dyYXBwZWQ6IHRydWV9O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiBpbnB1dCwgd2FzV3JhcHBlZDogZmFsc2V9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBhcml0eSBvZiB0aGUgb3BlcmF0b3IuXG4gICAgICovXG4gICAgcHVibGljIGdldCBudW1iZXJPZk9wZXJhbmRzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJPZk9wZXJhbmRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBxdWVyeSBnZW5lcmF0aW9uLiBXaWxsIG5vdCBiZSBzdWl0YWJsZSBmb3IgYWxsIE9wZXJhdG9yIGRlcml2YXRpdmVzLlxuICAgICAqXG4gICAgICogRXNjYXBlcyB0aGUgZmlyc3QgYXJndW1lbnQgZnJvbSB0aGUgYGFyZ3NgIGFycmF5LCBjYWxscyB0aGUgW3F1ZXJ5KClde0BsaW5rIE9wZXJhdG9yI3F1ZXJ5fSBmdW5jdGlvbiBmb3IgZWFjaCBga2V5d29yZGAgYW5kIGNvbWJpbmVzXG4gICAgICogdGhlIHJlc3VsdHMgd2l0aCBhbiBgT1JgIG9wZXJhdG9yLlxuICAgICAqIEByZXR1cm5zIHF1ZXJ5IHRoYXQgd29zIGNvbnN0cnVjdGVkIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhbmQga2V5d29yZHMuIFJldHVybnMgYW4gZW1wdHkgcXVlcnkgaWYgbm8gYXJndW1lbnRzIGFyZSBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlUXVlcnkoZWxhc3RpY0tleXdvcmRzOiBBcnJheTxzdHJpbmc+LCBhcmdzOiBBcnJheTxUPiwgZXNjYXBlQXJncyA9IHRydWUpOiBRdWVyeSB7XG4gICAgICAgIHRoaXMuY2hlY2tBcmd1bWVudHNDb3VudChhcmdzKTtcbiAgICAgICAgcmV0dXJuIE9wZXJhdG9yLmZvckVhY2hLZXl3b3JkKGVsYXN0aWNLZXl3b3JkcywgKGtleXdvcmQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXNjYXBlZFZhbHVlID0gZXNjYXBlQXJncyA/XG4gICAgICAgICAgICAgICAgT3BlcmF0b3IuZXNjYXBlSW5wdXQoYXJnc1swXSBhcyB1bmtub3duIGFzIHN0cmluZykgOiAoe3ZhbHVlOiBhcmdzWzBdIGFzIHVua25vd24gYXMgc3RyaW5nLCB3YXNFc2NhcGVkOiBmYWxzZX0pO1xuICAgICAgICAgICAgY29uc3Qgd3JhcHBlZFZhbHVlID0gT3BlcmF0b3Iud3JhcElucHV0V2l0aFF1b3Rlcyhlc2NhcGVkVmFsdWUudmFsdWUsIGVzY2FwZWRWYWx1ZS53YXNFc2NhcGVkKTtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT3BlcmF0b3IucXVlcnkoa2V5d29yZCwgd3JhcHBlZFZhbHVlLnZhbHVlLCB0aGlzLl9vcGVyYXRvclN5bWJvbHMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBRdWVyeShxdWVyeVN0cmluZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIHRlbXBsYXRlIGlzIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNlYXJjaCBHVUksIGFuZCBzbyB0aGUgYXJpdHkgb2YgdGhlIG9wZXJhdG9yIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mXG4gICAgICoge0BsaW5rIElOUFVUX1BMQUNFSE9MREVSfSBjb25zdGFudCBvY2N1cnJlbmNlcyBpbiB0aGUgcmV0dXJuZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiB0cmFuc2xhdGlvbiBwYXRocyB0aGF0IHJlcHJlc2VudCB0aGUgb3BlcmF0b3IgbmFtZSwgYXMgaXQgc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICAgKiBUaGUge0BsaW5rIElOUFVUX1BMQUNFSE9MREVSfSBjb25zdGFudCAob3IgYW55IGZhbHN5IHZhbHVlKSBjYW4gYmUgdXNlZCB0byBwbGFjZSB2aXN1YWwgaW5wdXQgcGxhY2Vob2xkZXIgYmxvY2tzIGluIHRoZVxuICAgICAqIG9wZXJhdG9yIG5hbWUgd2hlcmUgdXNlciBpbnB1dCBpcyBleHBlY3RlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0T3BlcmF0b3JOYW1lVGVtcGxhdGUoKTogQXJyYXk8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBvcGVyYXRvciBjbGFzcyBpbiBhIHNlcmlhbGl6YWJsZSBmb3JtXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IHNlcmlhbGl6ZSgpOiBPcGVyYXRvcnMgfCBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgYXJyYXkgY29udGFpbnMgYXQgbGVhcyBhcyBtYW55IGFyZ3VtZW50cywgYXMgaXMgdGhlIG9wZXJhdG9ycyBudW1iZXIgb2Ygb3BlcmFuZHMuXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIG5vdCBlbm91Z2ggYXJndW1lbnRzIGlzIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSBhcmdzIGFuIGFycmF5IG9mIHBvdGVudGlhbCBvcGVyYW5kc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBjaGVja0FyZ3VtZW50c0NvdW50KGFyZ3M6IEFycmF5PGFueT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgdGhpcy5udW1iZXJPZk9wZXJhbmRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEF0IGxlYXN0ICR7dGhpcy5udW1iZXJPZk9wZXJhbmRzfSBhcmd1bWVudHMgbXVzdCBiZSBwcm92aWRlZCB0byBgXG4gICAgICAgICAgICAgICAgKyBgY3JlYXRlIGEgcXVlcnkgd2l0aCAke3RoaXMubnVtYmVyT2ZPcGVyYW5kc30gb3BlcmFuZHMhYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3NlYXJjaC9tb2RlbHMvb3BlcmF0b3Ivb3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUlwRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBZ0IsUUFBUTtJQTRCMUIsWUFBc0IsZ0JBQXdCLEVBQUUsZUFBZSxHQUFHLEVBQUU7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWE7UUFDbkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxRQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BELFNBQVM7Z0JBQ2IsSUFBSSxRQUFRLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDcEQsTUFBTSxJQUFJLElBQUksQ0FBQztvQkFDZixPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtnQkFD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QUNvQiwwQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFOUM7O0dBRUc7QUFDcUIsNkJBQW9CLEdBQUcsSUFBSSxHQUFHLENBQ2xELENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFM0c7O0dBRUc7QUFDcUIsK0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXNjYXBlUmVzdWx0fSBmcm9tICcuLi9lc2NhcGUtcmVzdWx0JztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uL3F1ZXJ5L3F1ZXJ5JztcbmltcG9ydCB7Qm9vbGVhbk9wZXJhdG9yfSBmcm9tICcuLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7V3JhcFJlc3VsdH0gZnJvbSAnLi4vd3JhcC1yZXN1bHQnO1xuaW1wb3J0IHtPcGVyYXRvcnN9IGZyb20gJy4vb3BlcmF0b3JzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb3cgbGV2ZWwgYWJzdHJhY3Rpb24gb2YgcXVlcnkgZ2VuZXJhdGlvbiB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY3JlYXRpb24gb2YgcXVlcmllcyB0aGVtc2VsdmVzLlxuICpcbiAqIE9wZXJhdG9ycyBhcmUgbWVudCB0byBiZSBzdGF0ZWxlc3MgYW5kIGhlbGQgYXMgc2luZ2xldG9uIGluc3RhbmNlcywgYXMgdGhleSBjYW4gYmUgc2hhcmVkIHdpdGhvdXQgYW55IGlzc3Vlcy5cbiAqIFRoaXMgbGlicmFyeSB1c2VzIHRoZSB7QGxpbmsgT3BlcmF0b3JTZXJ2aWNlfSB0byBzdG9yZSB0aGUgc2luZ2xldG9uIGluc3RhbmNlcywgYnV0IHlvdSBjYW4gdXNlIHlvdXIgb3duIHNvbHV0aW9uLFxuICogb3IgaW5zdGFudGlhdGUgdGhlbSBtdWx0aXBsZSB0aW1lcyBpZiB5b3UgcHJlZmVyLlxuICpcbiAqIEB0eXBlcGFyYW0gVCB0eXBlIG9mIGFyZ3VtZW50cyB0aGlzIE9wZXJhdG9yIGNhbiBnZW5lcmF0ZSBxdWVyaWVzIGZyb21cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9wZXJhdG9yPFQ+IHtcblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHBsYWNlaG9sZGVyIFwiYmxvY2tcIiBpbiBvcGVyYXRvciBkaXNwbGF5IG5hbWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU5QVVRfUExBQ0VIT0xERVIgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFJlc2VydmVkIGNoYXJhY3RlcnMgZm9yIEVsYXN0aWNzZWFyY2ggcXVlcmllcy4gVGhlc2UgY2hhcmFjdGVycyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYFxcYCBjaGFyYWN0ZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRVNDQVBBQkxFX0NIQVJBQ1RFUlMgPSBuZXcgU2V0KFxuICAgICAgICBbJysnLCAnLScsICc9JywgJyYnLCAnfCcsICchJywgJygnLCAnKScsICd7JywgJ30nLCAnWycsICddJywgJ14nLCAnXCInLCAnficsICcqJywgJz8nLCAnOicsICdcXFxcJywgJy8nXSk7XG5cbiAgICAvKipcbiAgICAgKiBSZXNlcnZlZCBjaGFyYWN0ZXJzIGZvciBFbGFzdGljc2VhcmNoIHF1ZXJpZXMuIFRoZXNlIGNoYXJhY3RlcnMgY2Fubm90IGJlIGVzY2FwZWQgYW5kIG11c3QgYmUgcmVtb3ZlZCBmcm9tIHF1ZXJpZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVU5FU0NBUEFCTEVfQ0hBUkFDVEVSUyA9IG5ldyBTZXQoWyc8JywgJz4nXSk7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBhcml0eSBvZiB0aGUgb3BlcmF0b3IsIHRoYXQgaXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMvb3BlcmFuZHMgaXQgdGFrZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbnVtYmVyT2ZPcGVyYW5kczogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wZXJhdG9yIHN5bWJvbCB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHF1ZXJ5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdG9yU3ltYm9sczogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKG51bWJlck9mT3BlcmFuZHM6IG51bWJlciwgb3BlcmF0b3JTeW1ib2xzID0gJycpIHtcbiAgICAgICAgdGhpcy5fbnVtYmVyT2ZPcGVyYW5kcyA9IG51bWJlck9mT3BlcmFuZHM7XG4gICAgICAgIHRoaXMuX29wZXJhdG9yU3ltYm9scyA9IG9wZXJhdG9yU3ltYm9scztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIGFsbCBlc2NhcGFibGUgRWxhc3RpY3NlYXJjaCBzeW1ib2xzLiBSZW1vdmVzIGFsbCB1bmVzY2FwYWJsZSBFbGFzdGljc2VhcmNoIHN5bWJvbHMuXG4gICAgICpcbiAgICAgKiBGb3IgYSBsaXN0IG9mIHN5bWJvbHMgc2VlIEVsYXN0aWNzZWFyY2gncyBRdWVyeSBzdHJpbmcgcXVlcnlcbiAgICAgKiBbZG9jXXtAbGluayBodHRwczovL3d3dy5lbGFzdGljLmNvL2d1aWRlL2VuL2VsYXN0aWNzZWFyY2gvcmVmZXJlbmNlL2N1cnJlbnQvcXVlcnktZHNsLXF1ZXJ5LXN0cmluZy1xdWVyeS5odG1sI19yZXNlcnZlZF9jaGFyYWN0ZXJzfS5cbiAgICAgKiBAcGFyYW0gaW5wdXQgdXNlciBpbnB1dCB0aGF0IHNob3VsZCBoYXZlIHNwZWNpYWwgY2hhcmFjdGVycyBlc2NhcGVkXG4gICAgICogQHJldHVybnMgdXNlciBpbnB1dCB3aXRoIHRoZSBlc2NhcGFibGUgY2hhcmFjdGVycyBlc2NhcGVkIGFuZCB0aGUgdW5lc2NhcGFibGUgY2hhcmFjdGVycyByZW1vdmVkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBlc2NhcGVJbnB1dChpbnB1dDogc3RyaW5nKTogRXNjYXBlUmVzdWx0IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9wZXJhdG9yLlVORVNDQVBBQkxFX0NIQVJBQ1RFUlMuaGFzKGlucHV0LmNoYXJBdChpKSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChPcGVyYXRvci5FU0NBUEFCTEVfQ0hBUkFDVEVSUy5oYXMoaW5wdXQuY2hhckF0KGkpKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0cHV0ICs9IGlucHV0LmNoYXJBdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IG91dHB1dCwgd2FzRXNjYXBlZDogZXNjYXBlZH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt2YWx1ZTogaW5wdXQsIHdhc0VzY2FwZWQ6IGZhbHNlfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgUXVlcnkgc3RyaW5nIHF1ZXJ5IHN0cmluZyBsaXRlcmFsIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0gZWxhc3RpY0tleXdvcmQgRWxhc3RpY3NlYXJjaCBpbmRleCBrZXl3b3JkIGZvciB0aGUgZmllbGQgeW91IHdhbnQgdG8gcXVlcnlcbiAgICAgKiBAcGFyYW0gYXJnIFRoZSB2YWx1ZSB0aGF0IHlvdSB3YW50IHRvIHF1ZXJ5IHRoZSBwcm9wZXJ0eSBmb3JcbiAgICAgKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHlvdSB3YW50IHRvIHVzZSB0byBxdWVyeSB0aGUgaW5kZXhlZCBmaWVsZC4gQ29uc3VsdCB0aGUgRWxhc3RpY3NlYXJjaCdzXG4gICAgICogW2RvY3VtZW50YXRpb25de0BsaW5rIGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vZ3VpZGUvZW4vZWxhc3RpY3NlYXJjaC9yZWZlcmVuY2UvY3VycmVudC9xdWVyeS1kc2wtcXVlcnktc3RyaW5nLXF1ZXJ5Lmh0bWx9XG4gICAgICogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICogQHJldHVybnMgY29tYmluZXMgdGhlIGlucHV0IHN0cmluZ3MgYnkgdGhpcyBwYXR0ZXJuOiBgKFtlbGFzdGljS2V5d29yZF06W29wZXJhdG9yXVthcmddKWBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHF1ZXJ5KGVsYXN0aWNLZXl3b3JkOiBzdHJpbmcsIGFyZzogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAoJHtlbGFzdGljS2V5d29yZH06JHtvcGVyYXRvcn0ke2FyZ30pYDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiB0byBhbGwga2V5d29yZHMgYW5kIGNvbWJpbmVzIHRoZSByZXN1bHRpbmcgcXVlcmllcyB3aXRoIGFuIGBPUmAgb3BlcmF0b3IuXG4gICAgICogQHBhcmFtIGVsYXN0aWNLZXl3b3JkcyBrZXl3b3JkcyB0aGF0IHRoZSBmdW5jdGlvbiBpcyBjYWxsIG9uXG4gICAgICogQHBhcmFtIHF1ZXJ5Q29uc3RydWN0b3IgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgYSBgUXVlcnlgIG9iamVjdCBmb3IgZWFjaCBrZXl3b3JkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JFYWNoS2V5d29yZChlbGFzdGljS2V5d29yZHM6IEFycmF5PHN0cmluZz4sIHF1ZXJ5Q29uc3RydWN0b3I6IChrZXl3b3JkOiBzdHJpbmcpID0+IFF1ZXJ5KTogUXVlcnkge1xuICAgICAgICBjb25zdCBzaW1wbGVRdWVyaWVzID0gW107XG4gICAgICAgIGVsYXN0aWNLZXl3b3Jkcy5mb3JFYWNoKGtleXdvcmQgPT4ge1xuICAgICAgICAgICAgc2ltcGxlUXVlcmllcy5wdXNoKHF1ZXJ5Q29uc3RydWN0b3Ioa2V5d29yZCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFF1ZXJ5LmNvbWJpbmVRdWVyaWVzKHNpbXBsZVF1ZXJpZXMsIEJvb2xlYW5PcGVyYXRvci5PUik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGEgc3BhY2UgY2hhcmFjdGVyLCBvciBpZiBgZm9yY2VgIGlzIHNldCB0byBgdHJ1ZWAuXG4gICAgICogQHBhcmFtIGlucHV0IHVzZXIgaW5wdXQgdGhhdCBzaG91bGQgYmUgd3JhcHBlZCB3aXRoIGRvdWJsZSBxdW90ZXNcbiAgICAgKiBAcGFyYW0gZm9yY2VXcmFwIGlmIHNldCB0byBgdHJ1ZWAgdGhlIHZhbHVlIHdpbGwgYmUgd3JhcHBlZCByZWdhcmRsZXNzIG9mIGl0J3MgY29udGVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgd3JhcElucHV0V2l0aFF1b3RlcyhpbnB1dDogc3RyaW5nLCBmb3JjZVdyYXAgPSBmYWxzZSk6IFdyYXBSZXN1bHQge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyAmJiAoaW5wdXQ/LmluY2x1ZGVzKCcgJykgfHwgZm9yY2VXcmFwKSlcbiAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IGBcIiR7aW5wdXR9XCJgLCB3YXNXcmFwcGVkOiB0cnVlfTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogaW5wdXQsIHdhc1dyYXBwZWQ6IGZhbHNlfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgYXJpdHkgb2YgdGhlIG9wZXJhdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbnVtYmVyT2ZPcGVyYW5kcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZPcGVyYW5kcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgcXVlcnkgZ2VuZXJhdGlvbi4gV2lsbCBub3QgYmUgc3VpdGFibGUgZm9yIGFsbCBPcGVyYXRvciBkZXJpdmF0aXZlcy5cbiAgICAgKlxuICAgICAqIEVzY2FwZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGZyb20gdGhlIGBhcmdzYCBhcnJheSwgY2FsbHMgdGhlIFtxdWVyeSgpXXtAbGluayBPcGVyYXRvciNxdWVyeX0gZnVuY3Rpb24gZm9yIGVhY2ggYGtleXdvcmRgIGFuZCBjb21iaW5lc1xuICAgICAqIHRoZSByZXN1bHRzIHdpdGggYW4gYE9SYCBvcGVyYXRvci5cbiAgICAgKiBAcmV0dXJucyBxdWVyeSB0aGF0IHdvcyBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMgYW5kIGtleXdvcmRzLiBSZXR1cm5zIGFuIGVtcHR5IHF1ZXJ5IGlmIG5vIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZVF1ZXJ5KGVsYXN0aWNLZXl3b3JkczogQXJyYXk8c3RyaW5nPiwgYXJnczogQXJyYXk8VD4sIGVzY2FwZUFyZ3MgPSB0cnVlKTogUXVlcnkge1xuICAgICAgICB0aGlzLmNoZWNrQXJndW1lbnRzQ291bnQoYXJncyk7XG4gICAgICAgIHJldHVybiBPcGVyYXRvci5mb3JFYWNoS2V5d29yZChlbGFzdGljS2V5d29yZHMsIChrZXl3b3JkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IGVzY2FwZUFyZ3MgP1xuICAgICAgICAgICAgICAgIE9wZXJhdG9yLmVzY2FwZUlucHV0KGFyZ3NbMF0gYXMgdW5rbm93biBhcyBzdHJpbmcpIDogKHt2YWx1ZTogYXJnc1swXSBhcyB1bmtub3duIGFzIHN0cmluZywgd2FzRXNjYXBlZDogZmFsc2V9KTtcbiAgICAgICAgICAgIGNvbnN0IHdyYXBwZWRWYWx1ZSA9IE9wZXJhdG9yLndyYXBJbnB1dFdpdGhRdW90ZXMoZXNjYXBlZFZhbHVlLnZhbHVlLCBlc2NhcGVkVmFsdWUud2FzRXNjYXBlZCk7XG4gICAgICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9wZXJhdG9yLnF1ZXJ5KGtleXdvcmQsIHdyYXBwZWRWYWx1ZS52YWx1ZSwgdGhpcy5fb3BlcmF0b3JTeW1ib2xzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUXVlcnkocXVlcnlTdHJpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSB0ZW1wbGF0ZSBpcyB1c2VkIHdoZW4gZ2VuZXJhdGluZyBzZWFyY2ggR1VJLCBhbmQgc28gdGhlIGFyaXR5IG9mIHRoZSBvcGVyYXRvciBzaG91bGQgbWF0Y2ggdGhlIG51bWJlciBvZlxuICAgICAqIHtAbGluayBJTlBVVF9QTEFDRUhPTERFUn0gY29uc3RhbnQgb2NjdXJyZW5jZXMgaW4gdGhlIHJldHVybmVkIGFycmF5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgYW4gYXJyYXkgb2YgdHJhbnNsYXRpb24gcGF0aHMgdGhhdCByZXByZXNlbnQgdGhlIG9wZXJhdG9yIG5hbWUsIGFzIGl0IHNob3VsZCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuXG4gICAgICogVGhlIHtAbGluayBJTlBVVF9QTEFDRUhPTERFUn0gY29uc3RhbnQgKG9yIGFueSBmYWxzeSB2YWx1ZSkgY2FuIGJlIHVzZWQgdG8gcGxhY2UgdmlzdWFsIGlucHV0IHBsYWNlaG9sZGVyIGJsb2NrcyBpbiB0aGVcbiAgICAgKiBvcGVyYXRvciBuYW1lIHdoZXJlIHVzZXIgaW5wdXQgaXMgZXhwZWN0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGdldE9wZXJhdG9yTmFtZVRlbXBsYXRlKCk6IEFycmF5PHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgb3BlcmF0b3IgY2xhc3MgaW4gYSBzZXJpYWxpemFibGUgZm9ybVxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXJpYWxpemUoKTogT3BlcmF0b3JzIHwgc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGFycmF5IGNvbnRhaW5zIGF0IGxlYXMgYXMgbWFueSBhcmd1bWVudHMsIGFzIGlzIHRoZSBvcGVyYXRvcnMgbnVtYmVyIG9mIG9wZXJhbmRzLlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiBub3QgZW5vdWdoIGFyZ3VtZW50cyBpcyBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0gYXJncyBhbiBhcnJheSBvZiBwb3RlbnRpYWwgb3BlcmFuZHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2hlY2tBcmd1bWVudHNDb3VudChhcmdzOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IHRoaXMubnVtYmVyT2ZPcGVyYW5kcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdCBsZWFzdCAke3RoaXMubnVtYmVyT2ZPcGVyYW5kc30gYXJndW1lbnRzIG11c3QgYmUgcHJvdmlkZWQgdG8gYFxuICAgICAgICAgICAgICAgICsgYGNyZWF0ZSBhIHF1ZXJ5IHdpdGggJHt0aGlzLm51bWJlck9mT3BlcmFuZHN9IG9wZXJhbmRzIWApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19