@eo-sdk/client 7.13.0-rc.1 → 7.13.0-rc.2

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 (37) hide show
  1. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +3 -1
  2. package/app/eo-framework/stored-query/stored-query/stored-query.component.d.ts +3 -1
  3. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +3 -1
  4. package/app/eo-framework/ui/query-scope-select/query-scope-select.component.d.ts +11 -0
  5. package/app/eo-framework-core/search/app-search.service.d.ts +2 -1
  6. package/assets/_default/i18n/de.json +3 -0
  7. package/assets/_default/i18n/en.json +3 -0
  8. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +11 -2
  9. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  10. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  11. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  12. package/bundles/eo-sdk-client.umd.js +128 -71
  13. package/bundles/eo-sdk-client.umd.js.map +1 -1
  14. package/bundles/eo-sdk-client.umd.min.js +1 -1
  15. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  16. package/eo-sdk-client.d.ts +63 -62
  17. package/eo-sdk-client.metadata.json +1 -1
  18. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  19. package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +7 -3
  20. package/esm2015/app/eo-framework/stored-query/stored-query/stored-query.component.js +9 -3
  21. package/esm2015/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.js +7 -2
  22. package/esm2015/app/eo-framework/ui/query-scope-select/query-scope-select.component.js +31 -0
  23. package/esm2015/app/eo-framework/ui/ui.module.js +6 -3
  24. package/esm2015/app/eo-framework-core/search/app-search.service.js +6 -1
  25. package/esm2015/eo-sdk-client.js +64 -63
  26. package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +3 -3
  27. package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +10 -1
  28. package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +2 -1
  29. package/esm2015/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.js +2 -1
  30. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +14 -3
  31. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  32. package/fesm2015/eo-sdk-client.js +62 -11
  33. package/fesm2015/eo-sdk-client.js.map +1 -1
  34. package/package.json +2 -2
  35. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  36. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +9 -0
  37. package/projects/eo-sdk/core/package.json +1 -1
@@ -1,4 +1,11 @@
1
1
  import { DatePipe } from "@angular/common";
2
+ //export type QueryScope = 'indexdate' | 'content' | 'all';
3
+ export var QueryScope;
4
+ (function (QueryScope) {
5
+ QueryScope["ALL"] = "all";
6
+ QueryScope["CONTENT"] = "content";
7
+ QueryScope["INDEX_DATA"] = "indexdata";
8
+ })(QueryScope || (QueryScope = {}));
2
9
  /**
3
10
  * The SearchQuery Class
4
11
  *
@@ -179,6 +186,7 @@ export class SearchQuery {
179
186
  // add options when they differ from the default values
180
187
  if (this.applyOptions()) {
181
188
  queryJson.options = {};
189
+ queryJson.options.scope = this.scope;
182
190
  if (this.suggest) {
183
191
  queryJson.options.suggest = true;
184
192
  }
@@ -211,6 +219,7 @@ export class SearchQuery {
211
219
  // determines whether or not the query send to the search service should contain options
212
220
  applyOptions() {
213
221
  return (this.expertMode ||
222
+ !!this.scope ||
214
223
  this.suggest ||
215
224
  this.highlighting ||
216
225
  this.resolveReference ||
@@ -484,4 +493,4 @@ SearchFilter.OPERATOR = {
484
493
  INTERVAL_INCLUDE_FROM: "gtelt",
485
494
  RANGE: "rg" // aggegation ranges
486
495
  };
487
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXF1ZXJ5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2gtcXVlcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQWlJdEI7UUE3Q0E7O1dBRUc7UUFDSSxVQUFLLEdBQWlCLEVBQUUsQ0FBQztRQUNoQzs7V0FFRztRQUNJLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFDN0M7O1dBRUc7UUFDSSxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUtwQzs7V0FFRztRQUNJLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUI7O1dBRUc7UUFDSSxlQUFVLEdBQVcsV0FBVyxDQUFDLG1CQUFtQixDQUFDO1FBQzVEOztXQUVHO1FBQ0ksZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQ3RDOztXQUVHO1FBQ0kscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQy9COztXQUVHO1FBQ0ksVUFBSyxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRXZDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBT3JCLENBQUM7SUFFaEI7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxJQUFnQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ks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STtJQUNYLHdEQUF3RDtJQUN4RCxLQUFLLEVBQUUsT0FBTztJQUNkLDRFQUE0RTtJQUM1RSxFQUFFLEVBQUUsSUFBSTtJQUNSLG1CQUFtQjtJQUNuQixZQUFZLEVBQUUsSUFBSTtJQUNsQiw0QkFBNEI7SUFDNUIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixTQUFTLEVBQUUsSUFBSTtJQUNmLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLHFCQUFxQixFQUFFLFFBQVE7SUFDL0IsbUJBQW1CLEVBQUUsT0FBTztJQUM1QixxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsb0JBQW9CO0NBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlZHVjZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gXCIuLi8uLi9tb2RlbC9vYmplY3QtdHlwZS5tb2RlbFwiO1xyXG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG4vKipcclxuICogVGhlIFNlYXJjaFF1ZXJ5IENsYXNzXHJcbiAqXHJcbiAqIFNlZSB7QGxpbmsgU2VhcmNoU2VydmljZX0gZm9yIFVzYWdlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2VhcmNoUXVlcnkge1xyXG4gIC8qKlxyXG4gICAqIEJhc2UgUGFyYW1ldGVycyBmb3IgYSBTZWFyY2ggUXVlcnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIEJBU0VfUEFSQU1TID0ge1xyXG4gICAgVFlQRTogXCJ0eXBlXCIsXHJcbiAgICBDUkVBVE9SOiBcImNyZWF0b3JcIixcclxuICAgIENSRUFURUQ6IFwiY3JlYXRlZFwiLFxyXG4gICAgTU9ESUZJRVI6IFwibW9kaWZpZXJcIixcclxuICAgIE1PRElGSUVEOiBcIm1vZGlmaWVkXCIsXHJcbiAgICBGSUxFU0laRTogXCJmaWxlc2l6ZVwiLFxyXG4gICAgRklMRU5BTUU6IFwiZmlsZW5hbWVcIixcclxuICAgIE1JTUVUWVBFR1JPVVA6IFwibWltZXR5cGVncm91cFwiXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGltZSBwZXJpb2QgYnVja2V0cyBwcm9wZXJ0eSBuYW1lc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgVElNRV9QRVJJT0RfQlVDS0VUUyA9IHtcclxuICAgIFRPREFZOiBcInRvZGF5XCIsXHJcbiAgICBZRVNURVJEQVk6IFwieWVzdGVyZGF5XCIsXHJcbiAgICBUSElTX1dFRUs6IFwidGhpc3dlZWtcIixcclxuICAgIExBU1RfV0VFSzogXCJsYXN0d2Vla1wiLFxyXG4gICAgVEhJU19NT05USDogXCJ0aGlzbW9udGhcIixcclxuICAgIExBU1RfTU9OVEg6IFwibGFzdG1vbnRoXCIsXHJcbiAgICBUSElTX1lFQVI6IFwidGhpc3llYXJcIixcclxuICAgIExBU1RfWUVBUjogXCJsYXN0eWVhclwiXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogbWltZXR5cGUgYnVja2V0cyBwcm9wZXJ0eSBuYW1lc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgTUlNRVRZUEVHUk9VUF9CVUNLRVRTID0ge1xyXG4gICAgUERGOiBcInBkZlwiLFxyXG4gICAgTUFJTDogXCJtYWlsXCIsXHJcbiAgICBXT1JEOiBcIndvcmRcIixcclxuICAgIElNQUdFOiBcImltYWdlXCIsXHJcbiAgICBPQ1RFVF9TVFJFQU06IFwib2N0ZXQtc3RyZWFtXCIsXHJcbiAgICBUWFQ6IFwidHh0XCIsXHJcbiAgICBFWENFTDogXCJleGNlbFwiLFxyXG4gICAgUE9XRVJQT0lOVDogXCJwb3dlcnBvaW50XCIsXHJcbiAgICBWSURFTzogXCJ2aWRlb1wiLFxyXG4gICAgSFRNTDogXCJodG1sXCIsXHJcbiAgICBBVURJTzogXCJhdWRpb1wiLFxyXG4gICAgWklQOiBcInppcFwiXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogZmlsZXNpemUgYnVja2V0cyBwcm9wZXJ0eSBuYW1lc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgRklMRV9TSVpFX0JVQ0tFVFMgPSB7XHJcbiAgICBMVDFNQjogXCJsdDFNQlwiLFxyXG4gICAgTFQxME1COiBcImx0MTBNQlwiLFxyXG4gICAgTFQxMDBNQjogXCJsdDEwME1CXCIsXHJcbiAgICBHVDEwME1COiBcImd0MTAwTUJcIlxyXG4gIH07XHJcblxyXG4gIC8vIGxpc3Qgb2YgdGhpbmdzIHRoYXQgbWF5IGhhdmUgY2hhbmdlZCB0aGUgY3VycmVudCBxdWVyeVxyXG4gIHB1YmxpYyBzdGF0aWMgVVBEQVRFX0NBVVNFID0ge1xyXG4gICAgVE9HR0xFRF9UWVBFOiBcImNhdXNlLnR5cGUudG9nZ2xlZFwiLFxyXG4gICAgVE9HR0xFRF9FWFBFUlRNT0RFOiBcImNhdXNlLmV4cGVydG1vZGUudG9nZ2xlZFwiLFxyXG4gICAgVEVSTV9TRVQ6IFwiY2F1c2UudGVybS5zZXRcIixcclxuICAgIFRZUEVTX1NFVDogXCJjYXVzZS50eXBlcy5zZXRcIixcclxuICAgIENPTlRFWFRfRk9MREVSX1NFVDogXCJjYXVzZS5jb250ZXh0Zm9sZGVyLnNldFwiLFxyXG4gICAgVE9HR0xFRF9GSUxURVI6IFwiY2F1c2UuZmlsdGVyLnRvZ2dsZWRcIixcclxuICAgIEFEREVEX0ZJTFRFUjogXCJjYXVzZS5maWx0ZXIuYWRkZWRcIixcclxuICAgIFJFTU9WRURfRklMVEVSOiBcImNhdXNlLmZpbHRlci5yZW1vdmVkXCIsXHJcbiAgfTtcclxuICAvKipcclxuICAgKiBEZXRhdWx0IFNlYXJjaCBtb2RlIEluZGV4XHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBERUZBVUxUX1NFQVJDSF9NT0RFID0gXCJpZHhzXCI7XHJcbiAgLyoqXHJcbiAgICogU2VhcmNoIG1vZGUgZm9yIEZ1bGwgdGVzdCBTZWFyY2hcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIEZVTExURVhUX1NFQVJDSF9NT0RFID0gXCJmdHNcIjtcclxuICAvKipcclxuICAgKiBmdWxsdGV4dCBzZWFyY2ggdGVybVxyXG4gICAqL1xyXG4gIHB1YmxpYyB0ZXJtOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogQXJyYXkgb2YgZmllbGRzIHRvIHJlcXVlc3QgZnJvbSB0aGUgc2VhcmNoIHNlcnZpY2UsIGxlYXZpbmcgdGhpcyBibGFuayB3aWxsIHJldHVybiB0aGUgZmllbGRzIHNwZWNpZmllZCBpbiB0aGUgcmVzdWx0IGZpZWxkIGNvbmZpZ3VyYXRpb25cclxuICAgKi9cclxuICBwdWJsaWMgZmllbGRzOiBzdHJpbmdbXTtcclxuICAvKipcclxuICAgKiBMaXN0IG9mIG9iamVjdCB0eXBlcyB0byBiZSBmZXRjaGVkIGJ5IHRoZSBxdWVyeS4gTGVhdmluZyB0aGlzIGJsYW5rIHdpbGwgcmV0dXJuIHJlc3VsdHMgZnJvbSBhbnkgdHlwZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB0eXBlczogT2JqZWN0VHlwZVtdID0gW107XHJcbiAgLyoqXHJcbiAgICogTGlzdCBvZiBjb250ZXh0IGZvbGRlciB0eXBlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjb250ZXh0Rm9sZGVyVHlwZXM6IE9iamVjdFR5cGVbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2YgZmlsdGVycyB0byBkZWZpbmUgdGhlIHF1ZXJ5XHJcbiAgICovXHJcbiAgcHVibGljIGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdID0gW107XHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBvciBub3QgdG8gcmV0cmlldmUgc3VnZ2VzdGlvbnNcclxuICAgKi9cclxuICBwdWJsaWMgc3VnZ2VzdDogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGVybSBpcyBhbiBleHBlcnQgbW9kZSBxdWVyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHBlcnRNb2RlID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogVGhlIHNlYXJjaCBtb2RlIHRvIGJlIHVzZWQgKFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREUgb3IgU2VhcmNoUXVlcnkuRlVMTFRFWFRfU0VBUkNIX01PREUpXHJcbiAgICovXHJcbiAgcHVibGljIHNlYXJjaE1vZGU6IHN0cmluZyA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XHJcbiAgLyoqXHJcbiAgICogQWRkaXRpb25hbCBvcHRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5XHJcbiAgICovXHJcbiAgcHVibGljIHNvcnRPcHRpb25zOiBTb3J0T3B0aW9uW10gPSBbXTtcclxuICAvKipcclxuICAgKiBSZXNvbHZlIHJlZmVyZW5jZXMgd2l0aCB0aGVpciB0aXRsZSBpbnN0ZWFkIG9mIHRoZWlyIGFjdHVhbCB2YWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXNvbHZlUmVmZXJlbmNlID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBUaGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcXVlcnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGU6IFNlYXJjaFN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XHJcblxyXG4gIHB1YmxpYyBoaWdobGlnaHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgd2l0aENvbnRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gSW5kaWNhdG9yIHdoYXQgY2F1c2VkIHRoZSB1cGRhdGUgb2YgYSBTZWFyY2hRdWVyeSBvYmplY3QuXHJcbiAgLy8gVXNlZnVsbCBmb3IgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZWQgdG8gYSBxdWVyeSwgYW5kIG5lZWQgdG9cclxuICAvLyB0cmFjayB0aGUga2luZCBvZiBjaGFuZ2VzIG1hZGVcclxuICBfX3VwZGF0ZUNhdXNlOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIG5ldyB0YXJnZXQgdHlwZSB0byB0aGUgcXVlcnlcclxuICAgKlxyXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdCB0eXBlIHRvIGJlIGFkZGVkXHJcbiAgICovXHJcbiAgcHVibGljIGFkZFR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xyXG4gICAgaWYgKCF0aGlzLnR5cGVzLmZpbmQodCA9PiB0LmlkID09PSB0eXBlLmlkKSkge1xyXG4gICAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgdHlwZSBmcm9tIHRoZSB0YXJnZXQgdHlwZXMgbGlzdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlVHlwZSh0eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICB0aGlzLnR5cGVzID0gdGhpcy50eXBlcy5maWx0ZXIodCA9PiB0LmlkICE9PSB0eXBlLmlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgb3IgcmVtb3ZlcyB0aGUgZ2l2ZW4gdHlwZSBiYXNlZCBvbiB0aGUgY3VycmVudCBzZXR0aW5nc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIHRvIGJlIHRvZ2dsZWRcclxuICAgKi9cclxuICBwdWJsaWMgdG9nZ2xlVHlwZSh0eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAodGhpcy50eXBlcy5maW5kKHQgPT4gdC5pZCA9PT0gdHlwZS5pZCkpIHtcclxuICAgICAgdGhpcy5yZW1vdmVUeXBlKHR5cGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50eXBlcy5wdXNoKHR5cGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIG5ldyBmaWx0ZXIgdG8gdGhlIHF1ZXJ5LiBJZiB0aGVyZSBhbHJlYWR5IGlzIGEgZmlsdGVyIHNldCBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gYmUgYWRkZWRcclxuICAgKi9cclxuICBwdWJsaWMgYWRkRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XHJcbiAgICBpZiAoIWZpbHRlcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZ2V0RmlsdGVyKGZpbHRlci5wcm9wZXJ0eSkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGlmIHRoZXJlIGFscmVhZHkgaXMgYSBmaWx0ZXIgc2V0IGZvciB0aGUgdGFyZ2V0IHByb3BlcnR5XHJcbiAgICAgIC8vIHdlJ2xsIGp1c3Qgb3ZlcnJpZGUgaXQgd2l0aCB0aGUgbmV3IHZhbHVlXHJcbiAgICAgIHRoaXMucmVtb3ZlRmlsdGVyKGZpbHRlci5wcm9wZXJ0eSk7XHJcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgZmlsdGVyIGZyb20gdGhlIHF1ZXJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbHRlclByb3BlcnR5TmFtZSBUaGUgZmlsdGVyIChpdHMgcHJvcGVydHkgbmFtZSkgdG8gYmUgcmVtb3ZlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoZiA9PiBmLnByb3BlcnR5ICE9PSBmaWx0ZXJQcm9wZXJ0eU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBvciByZW1vdmVzIHRoZSBnaXZlbiBmaWx0ZXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2V0dGluZ3NcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgVGhlIGZpbHRlciB0byBiZSB0b2dnbGVkXHJcbiAgICovXHJcbiAgcHVibGljIHRvZ2dsZUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlciwgb3ZlcnJpZGU/OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5nZXRGaWx0ZXIoZmlsdGVyLnByb3BlcnR5KSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUZpbHRlcihmaWx0ZXIucHJvcGVydHkpO1xyXG4gICAgICBpZiAob3ZlcnJpZGUpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZmlsdGVyIGJ5IGl0cyBwcm9wZXJ0eSBuYW1lLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgZmlsdGVycyBwcm9wZXJ0eSBuYW1lIChxbmFtZSBvZiBmb3JtIGVsZW1lbnQpXHJcbiAgICogQHJldHVybnMgU2VhcmNoIEZpbHRlciBPYmplY3RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RmlsdGVyKHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnMuZmluZChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5TmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VGFibGVGaWx0ZXJzKHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVycy5maWx0ZXIoZiA9PiBmLnByb3BlcnR5LnN0YXJ0c1dpdGgocHJvcGVydHlOYW1lICsgJy4nKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRpbmcgbmV3IFNvcnQgT3B0aW9uc1xyXG4gICAqIFNvcnQgT3B0aW9ucyBhcmUgb25seSBhZGRlZCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBwcmVzZW50XHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBvcmRlclxyXG4gICAqIEBwYXJhbSBtaXNzaW5nXHJcbiAgICovXHJcbiAgcHVibGljIGFkZFNvcnRPcHRpb24obmFtZTogc3RyaW5nLCBvcmRlcjogc3RyaW5nLCBtaXNzaW5nPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuc29ydE9wdGlvbnMuZmluZChzID0+IHMuZmllbGQgPT09IG5hbWUpKSB7XHJcbiAgICAgIHRoaXMuc29ydE9wdGlvbnMucHVzaChuZXcgU29ydE9wdGlvbihuYW1lLCBvcmRlciwgbWlzc2luZykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVTb3J0T3B0aW9uKG5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zb3J0T3B0aW9ucyA9IHRoaXMuc29ydE9wdGlvbnMuZmlsdGVyKHMgPT4gcy5maWVsZCAhPT0gbmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSBhIHF1ZXJ5IEpTT04gZnJvbSB0aGUgY3VycmVudCBTZWFyY2hRdWVyeSB0aGF0IGNhbiBiZSBzZW5kIHRvIHRoZSBzZWFyY2ggc2VydmljZS5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UXVlcnlKc29uKCkge1xyXG4gICAgLy8gQ29udmVydCB0aGUgY3VycmVudCBxdWVyeSBvYmplY3QgdG8gYSBxdWVyeSBKU09OIHRoYXQgY2FuIGJlIGNvbnN1bWVkIGJ5IHRoZSBzZWFyY2ggc2VydmljZSBiYWNrZW5kLlxyXG4gICAgLy8gVG8ga2VlcCBpdCBzaG9ydCwgd2UnbGwgb25seSBhZGQgcHJvcGVydGllcyB0aGF0IGFyZSBzZXQgYW5kIGRpZmZlciBmcm9tIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBjb25zdCBxdWVyeUpzb246IGFueSA9IHt9O1xyXG5cclxuICAgIC8vIGFkZCB0eXBlIGZpbHRlcnNcclxuICAgIGlmICh0aGlzLnR5cGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcXVlcnlKc29uLnR5cGVzID0gdGhpcy50eXBlcy5tYXAodCA9PlxyXG4gICAgICAgIHR5cGVvZiB0ID09PSBcInN0cmluZ1wiID8gdCA6IHQubmFtZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBjb250ZXh0IGZvbGRlciB0eXBlIGZpbHRlcnNcclxuICAgIGlmICh0aGlzLmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHF1ZXJ5SnNvbi5jb250ZXh0Zm9sZGVydHlwZXMgPSB0aGlzLmNvbnRleHRGb2xkZXJUeXBlcy5tYXAodCA9PiB0Lm5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGZpbHRlcnNcclxuICAgIGlmICh0aGlzLmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBxdWVyeUpzb24uZmlsdGVycyA9IHt9O1xyXG4gICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChmID0+IHtcclxuICAgICAgICBxdWVyeUpzb24uZmlsdGVyc1tmLnByb3BlcnR5XSA9IGYudG9RdWVyeSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRlcm0pIHtcclxuICAgICAgcXVlcnlKc29uLnRlcm0gPSB0aGlzLnRlcm07XHJcbiAgICB9XHJcbiAgICAvLyBzZWFyY2ggZmllbGRzXHJcbiAgICBpZiAodGhpcy5maWVsZHMpIHtcclxuICAgICAgcXVlcnlKc29uLmZpZWxkcyA9IHRoaXMuZmllbGRzO1xyXG4gICAgfVxyXG4gICAgLy8gYWRkIG9wdGlvbnMgd2hlbiB0aGV5IGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlc1xyXG4gICAgaWYgKHRoaXMuYXBwbHlPcHRpb25zKCkpIHtcclxuICAgICAgcXVlcnlKc29uLm9wdGlvbnMgPSB7fTtcclxuICAgICAgaWYgKHRoaXMuc3VnZ2VzdCkge1xyXG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnN1Z2dlc3QgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmV4cGVydE1vZGUpIHtcclxuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5leHBlcnRtb2RlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5yZXNvbHZlUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgcXVlcnlKc29uLm9wdGlvbnMucmVzb2x2ZVJlZmVyZW5jZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VhcmNoTW9kZSAhPT0gU2VhcmNoUXVlcnkuREVGQVVMVF9TRUFSQ0hfTU9ERSkge1xyXG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnNlYXJjaG1vZGUgPSB0aGlzLnNlYXJjaE1vZGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc29ydE9wdGlvbnMgJiYgdGhpcy5zb3J0T3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5zb3J0ID0ge307XHJcbiAgICAgICAgdGhpcy5zb3J0T3B0aW9ucy5mb3JFYWNoKChzb3J0T3B0aW9uOiBTb3J0T3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5zb3J0W3NvcnRPcHRpb24uZmllbGRdID0ge1xyXG4gICAgICAgICAgICBvcmRlcjogc29ydE9wdGlvbi5vcmRlclxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0aW5nKSB7XHJcbiAgICAgICAgcXVlcnlKc29uLm9wdGlvbnMuaGlnaGxpZ2h0aW5nID0gdGhpcy5oaWdobGlnaHRpbmc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMud2l0aENvbnRleHQpIHtcclxuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy53aXRoQ29udGV4dCA9IHRoaXMud2l0aENvbnRleHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyeUpzb247XHJcbiAgfVxyXG5cclxuICAvLyBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBxdWVyeSBzZW5kIHRvIHRoZSBzZWFyY2ggc2VydmljZSBzaG91bGQgY29udGFpbiBvcHRpb25zXHJcbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmV4cGVydE1vZGUgfHxcclxuICAgICAgdGhpcy5zdWdnZXN0IHx8XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0aW5nIHx8XHJcbiAgICAgIHRoaXMucmVzb2x2ZVJlZmVyZW5jZSB8fFxyXG4gICAgICB0aGlzLndpdGhDb250ZXh0IHx8XHJcbiAgICAgIHRoaXMuc2VhcmNoTW9kZSAhPT0gU2VhcmNoUXVlcnkuREVGQVVMVF9TRUFSQ0hfTU9ERSB8fFxyXG4gICAgICB0aGlzLnNvcnRPcHRpb25zLmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTb3J0IE9wdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTb3J0T3B0aW9uIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBmaWVsZDogc3RyaW5nLFxyXG4gICAgcHVibGljIG9yZGVyOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgbWlzc2luZz86IHN0cmluZ1xyXG4gICkge31cclxufVxyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICogQ3JlYXRlcyB0aGUgTW9kZWwgb2YgRmllbGQgRGVmaW5pdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBGaWVsZERlZmluaXRpb24ge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGVsZW1lbnRzOiBhbnlbXSA9IFtdLFxyXG4gICAgcHVibGljIHNvcnRvcmRlcjogYW55W10gPSBbXSxcclxuICAgIHB1YmxpYyBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxyXG4gICAgcHVibGljIHBpbm5lZDogYW55W10gPSBbXSxcclxuICAgIHB1YmxpYyBtb2RlPzogc3RyaW5nXHJcbiAgKSB7fVxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIGEgcXVlcnlcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hTdGF0ZSB7XHJcbiAgcHVibGljIGNvdW50OiB7dmFsdWU6IG51bWJlciwgcmVsYXRpb24/OiBzdHJpbmd9O1xyXG4gIHB1YmxpYyBhZ2dyZWdhdGlvbnM7XHJcbiAgcHVibGljIGxhc3RDaGFuZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuYWdncmVnYXRpb25zID0ge1xyXG4gICAgICB0eXBlOiBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpLFxyXG4gICAgICBjb250ZXh0VHlwZTogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcclxuICAgICAgY3JlYXRlZDogW10sXHJcbiAgICAgIG1vZGlmaWVkOiBbXSxcclxuICAgICAgbWltZXR5cGVncm91cDogW10sXHJcbiAgICAgIGZpbGVzaXplOiBbXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCB0b3RhbENvdW50KCkge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5hZ2dyZWdhdGlvbnMudHlwZS52YWx1ZXMoKSkucmVkdWNlKChhY2M6IG51bWJlciwgY3VyOiBudW1iZXIpID0+IGFjYyArIGN1ciwgMCkgYXMgbnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gISh0aGlzLmNvdW50ICYmIHRoaXMuY291bnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkQWdncmVnYXRpb25zKHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIsIGFnZz8pIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFwiY29udGV4dHR5cGVcIjoge1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLmNvbnRleHRUeXBlLnNldChrZXksIHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEU6IHtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy50eXBlLnNldChrZXksIHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFURUQ6IHtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5jcmVhdGVkLnB1c2goe1xyXG4gICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEOiB7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMubW9kaWZpZWQucHVzaCh7XHJcbiAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTUlNRVRZUEVHUk9VUDoge1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLm1pbWV0eXBlZ3JvdXAucHVzaCh7XHJcbiAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkU6IHtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5maWxlc2l6ZS5wdXNoKHtcclxuICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgZnJvbTogYWdnLmZyb20sXHJcbiAgICAgICAgICB0bzogYWdnLnRvIHx8IEluZmluaXR5LFxyXG4gICAgICAgICAgbGFiZWw6IGtleS5yZXBsYWNlKFwiZ3RcIiwgXCI+IFwiKS5yZXBsYWNlKFwibHRcIiwgXCI8IFwiKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTZWFyY2ggUmVzdWx0c1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdCB7XHJcbiAgcHVibGljIGNvdW50OiB7dmFsdWU6IG51bWJlciwgcmVsYXRpb24/OiBzdHJpbmd9O1xyXG4gIHB1YmxpYyBzdWdnZXN0czogc3RyaW5nW107XHJcbiAgcHVibGljIGhpdHM6IGFueVtdO1xyXG4gIHB1YmxpYyB0eXBlTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBmaWVsZHM6IEZpZWxkRGVmaW5pdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyIHtcclxuICAvKipcclxuICAgKiBhdmFpbGFibGUgb3BlcmF0b3JzIGZvciBhIHNlYXJjaCBmaWx0ZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIE9QRVJBVE9SID0ge1xyXG4gICAgLyoqIGVxdWFsICovXHJcbiAgICBFUVVBTDogXCJlcVwiLFxyXG4gICAgLyoqIG1hdGNoIChmb3Igc3RyaW5nIHdpdGggY2xhc3NpZmljYXRpb24gXCJwYXRoNjY2NlwiKSAqL1xyXG4gICAgTUFUQ0g6IFwibWF0Y2hcIixcclxuICAgIC8qKiBtYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHByb3ZpZGVkIHZhbHVlcyAodmFsdWUgaGFzIHRvIGJlIGFuIGFycmF5KSAgKi9cclxuICAgIElOOiBcImluXCIsXHJcbiAgICAvKiogZ3JlYXRlciB0aGFuICovXHJcbiAgICBHUkVBVEVSX1RIQU46IFwiZ3RcIixcclxuICAgIC8qKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgKi9cclxuICAgIEdSRUFURVJfT1JfRVFVQUw6IFwiZ3RlXCIsIC8vXHJcbiAgICBMRVNTX1RIQU46IFwibHRcIiwgLy8gbGVzcyB0aGFuXHJcbiAgICBMRVNTX09SX0VRVUFMOiBcImx0ZVwiLCAvLyBsZXNzIHRoYW4gb3IgZXF1YWxcclxuICAgIElOVEVSVkFMOiBcImd0bHRcIiwgLy8gaW50ZXJ2YWxcclxuICAgIElOVEVSVkFMX0lOQ0xVREVfQk9USDogXCJndGVsdGVcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0IGFuZCByaWdodFxyXG4gICAgSU5URVJWQUxfSU5DTFVERV9UTzogXCJndGx0ZVwiLCAvLyBpbnRlcnZhbCBpbmNsdWRlIHJpZ2h0XHJcbiAgICBJTlRFUlZBTF9JTkNMVURFX0ZST006IFwiZ3RlbHRcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0XHJcbiAgICBSQU5HRTogXCJyZ1wiIC8vIGFnZ2VnYXRpb24gcmFuZ2VzXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGEgbmV3IFNlYXJjaEZpbHRlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZpZWxkIHRoaXMgZmlsdGVyIHNob3VsZCBhcHBseSB0by5cclxuICAgKiBAcGFyYW0gb3BlcmF0b3IgT3BlcmF0b3IgaW5kaWNhdGluZyBob3cgdG8gaGFuZGxlIHRoZSBmaWx0ZXJzIHZhbHVlKHMpLiBTZWUgU2VhcmNoRmlsdGVyLk9QRVJBVE9SIGZvciBhdmFpbGFibGUgb3BlcmF0b3JzLlxyXG4gICAqIEBwYXJhbSBmaXJzdFZhbHVlIFRoZSBmaWx0ZXJzIHZhbHVlXHJcbiAgICogQHBhcmFtIHNlY29uZFZhbHVlIE9wdGlvbmFsIHNlY29uZCB2YWx1ZSBmb3IgZmlsdGVycyB0aGF0IGZvciBleGFtcGxlIGRlZmluZSByYW5nZXMgb2YgdmFsdWVzXHJcbiAgICogQHBhcmFtIHRyYW5zZm9ybURhdGUgRmxhZyB0byB0cmFuc2Zvcm0gZGF0ZSBob3VycyBhbmQgbWludXRlcyBiYXNlZCBvbiBvcGVyYXRvclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHByb3BlcnR5OiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgb3BlcmF0b3I6IHN0cmluZyxcclxuICAgIHB1YmxpYyBmaXJzdFZhbHVlOiBhbnksXHJcbiAgICBwdWJsaWMgc2Vjb25kVmFsdWU/OiBhbnksXHJcbiAgICBwdWJsaWMgdHJhbnNmb3JtRGF0ZT86IHt0aW1lPzogYm9vbGVhbjsgdGltZXpvbmU/OiBib29sZWFufVxyXG4gICkge31cclxuXHJcbiAgZm9ybWF0RGF0ZSh2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1EYXRlICYmIHZhbHVlXHJcbiAgICAgID8gdGhpcy50cmFuc2Zvcm1EYXRlLnRpbWV6b25lXHJcbiAgICAgICAgPyBuZXcgRGF0ZVBpcGUoXCJlblwiKS50cmFuc2Zvcm0odmFsdWUsIFwieXl5eS1NTS1kZFRaXCIpXHJcbiAgICAgICAgOiB0aGlzLnRyYW5zZm9ybURhdGUudGltZVxyXG4gICAgICAgICAgPyBuZXcgRGF0ZSh2YWx1ZSkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxNikgKyBcIlpcIlxyXG4gICAgICAgICAgOiBuZXcgRGF0ZVBpcGUoXCJlblwiKS50cmFuc2Zvcm0odmFsdWUsIFwieXl5eS1NTS1kZFwiKVxyXG4gICAgICA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgdG9RdWVyeSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG86IHRoaXMub3BlcmF0b3IsXHJcbiAgICAgIHYxOiB0aGlzLmZvcm1hdERhdGUodGhpcy5maXJzdFZhbHVlKSxcclxuICAgICAgLi4uKHRoaXMuc2Vjb25kVmFsdWUgJiYge3YyOiB0aGlzLmZvcm1hdERhdGUodGhpcy5zZWNvbmRWYWx1ZSl9KVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHRvRGF0ZVRpbWVRdWVyeSgpIHtcclxuICAgIGlmICh0aGlzLnRyYW5zZm9ybURhdGUgJiYgdGhpcy50cmFuc2Zvcm1EYXRlLnRpbWV6b25lICYmIHRoaXMuZmlyc3RWYWx1ZSkge1xyXG4gICAgICBsZXQgZmlyc3RWYWx1ZSA9IHRoaXMuZmlyc3RWYWx1ZTtcclxuICAgICAgbGV0IHNlY29uZFZhbHVlID0gdGhpcy5zZWNvbmRWYWx1ZTtcclxuICAgICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKHNlY29uZFZhbHVlIHx8IGZpcnN0VmFsdWUpO1xyXG4gICAgICBlbmREYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XHJcbiAgICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTEVTU19PUl9FUVVBTCkge1xyXG4gICAgICAgIGZpcnN0VmFsdWUgPSBlbmREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZmlyc3RWYWx1ZSk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkdSRUFURVJfVEhBTiB8fFxyXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBzdGFydERhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3RhcnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaXJzdFZhbHVlID0gc3RhcnREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEggfHxcclxuICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUxcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2Vjb25kVmFsdWUgPSBlbmREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBvOlxyXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMXHJcbiAgICAgICAgICAgID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USFxyXG4gICAgICAgICAgICA6IHRoaXMub3BlcmF0b3IsXHJcbiAgICAgICAgdjE6IGZpcnN0VmFsdWUsXHJcbiAgICAgICAgLi4uKHNlY29uZFZhbHVlICYmIHt2Mjogc2Vjb25kVmFsdWV9KVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9RdWVyeSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIG1hdGNoKFxyXG4gICAgcHJvcGVydHk6IHN0cmluZyxcclxuICAgIG9wZXJhdG9yOiBzdHJpbmcsXHJcbiAgICBmaXJzdFZhbHVlOiBhbnksXHJcbiAgICBzZWNvbmRWYWx1ZT86IGFueVxyXG4gICkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkgJiZcclxuICAgICAgdGhpcy5vcGVyYXRvciA9PT0gb3BlcmF0b3IgJiZcclxuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9PT0gc2Vjb25kVmFsdWUgJiZcclxuICAgICAgKHRoaXMuZmlyc3RWYWx1ZSBpbnN0YW5jZW9mIEFycmF5XHJcbiAgICAgICAgPyAhIXRoaXMuZmlyc3RWYWx1ZS5maW5kKHYgPT4gdiA9PT0gZmlyc3RWYWx1ZSlcclxuICAgICAgICA6IHRoaXMuZmlyc3RWYWx1ZSA9PT0gZmlyc3RWYWx1ZSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
496
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXF1ZXJ5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2gtcXVlcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLDJEQUEyRDtBQUUzRCxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLHlCQUFXLENBQUE7SUFDWCxpQ0FBbUIsQ0FBQTtJQUNuQixzQ0FBd0IsQ0FBQTtBQUMxQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFxSXRCO1FBakRBOztXQUVHO1FBQ0ksVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDSSx1QkFBa0IsR0FBaUIsRUFBRSxDQUFDO1FBQzdDOztXQUVHO1FBQ0ksWUFBTyxHQUFtQixFQUFFLENBQUM7UUFLcEM7O1dBRUc7UUFDSSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBSzFCOztXQUVHO1FBQ0ksZUFBVSxHQUFXLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQztRQUM1RDs7V0FFRztRQUNJLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUN0Qzs7V0FFRztRQUNJLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUMvQjs7V0FFRztRQUNJLFVBQUssR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUV2QyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQU9yQixDQUFDO0lBRWhCOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsSUFBZ0I7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FB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S0FBSztnQkFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUNwQyxDQUFDO0lBQ0osQ0FBQzs7QUFsSEQ7O0dBRUc7QUFDVyxxQkFBUSxHQUFHO0lBQ3ZCLFlBQVk7SUFDWixLQUFLLEVBQUUsSUFBSTtJQUNYLHdEQUF3RDtJQUN4RCxLQUFLLEVBQUUsT0FBTztJQUNkLDRFQUE0RTtJQUM1RSxFQUFFLEVBQUUsSUFBSTtJQUNSLG1CQUFtQjtJQUNuQixZQUFZLEVBQUUsSUFBSTtJQUNsQiw0QkFBNEI7SUFDNUIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixTQUFTLEVBQUUsSUFBSTtJQUNmLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLHFCQUFxQixFQUFFLFFBQVE7SUFDL0IsbUJBQW1CLEVBQUUsT0FBTztJQUM1QixxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsb0JBQW9CO0NBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlZHVjZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gXCIuLi8uLi9tb2RlbC9vYmplY3QtdHlwZS5tb2RlbFwiO1xyXG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG4vL2V4cG9ydCB0eXBlIFF1ZXJ5U2NvcGUgPSAnaW5kZXhkYXRlJyB8ICdjb250ZW50JyB8ICdhbGwnO1xyXG5cclxuZXhwb3J0IGVudW0gUXVlcnlTY29wZSB7XHJcbiAgQUxMID0gJ2FsbCcsXHJcbiAgQ09OVEVOVCA9ICdjb250ZW50JyxcclxuICBJTkRFWF9EQVRBID0gJ2luZGV4ZGF0YSdcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBTZWFyY2hRdWVyeSBDbGFzc1xyXG4gKlxyXG4gKiBTZWUge0BsaW5rIFNlYXJjaFNlcnZpY2V9IGZvciBVc2FnZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNlYXJjaFF1ZXJ5IHtcclxuICAvKipcclxuICAgKiBCYXNlIFBhcmFtZXRlcnMgZm9yIGEgU2VhcmNoIFF1ZXJ5XHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBCQVNFX1BBUkFNUyA9IHtcclxuICAgIFRZUEU6IFwidHlwZVwiLFxyXG4gICAgQ1JFQVRPUjogXCJjcmVhdG9yXCIsXHJcbiAgICBDUkVBVEVEOiBcImNyZWF0ZWRcIixcclxuICAgIE1PRElGSUVSOiBcIm1vZGlmaWVyXCIsXHJcbiAgICBNT0RJRklFRDogXCJtb2RpZmllZFwiLFxyXG4gICAgRklMRVNJWkU6IFwiZmlsZXNpemVcIixcclxuICAgIEZJTEVOQU1FOiBcImZpbGVuYW1lXCIsXHJcbiAgICBNSU1FVFlQRUdST1VQOiBcIm1pbWV0eXBlZ3JvdXBcIlxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFRpbWUgcGVyaW9kIGJ1Y2tldHMgcHJvcGVydHkgbmFtZXNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIFRJTUVfUEVSSU9EX0JVQ0tFVFMgPSB7XHJcbiAgICBUT0RBWTogXCJ0b2RheVwiLFxyXG4gICAgWUVTVEVSREFZOiBcInllc3RlcmRheVwiLFxyXG4gICAgVEhJU19XRUVLOiBcInRoaXN3ZWVrXCIsXHJcbiAgICBMQVNUX1dFRUs6IFwibGFzdHdlZWtcIixcclxuICAgIFRISVNfTU9OVEg6IFwidGhpc21vbnRoXCIsXHJcbiAgICBMQVNUX01PTlRIOiBcImxhc3Rtb250aFwiLFxyXG4gICAgVEhJU19ZRUFSOiBcInRoaXN5ZWFyXCIsXHJcbiAgICBMQVNUX1lFQVI6IFwibGFzdHllYXJcIlxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIG1pbWV0eXBlIGJ1Y2tldHMgcHJvcGVydHkgbmFtZXNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIE1JTUVUWVBFR1JPVVBfQlVDS0VUUyA9IHtcclxuICAgIFBERjogXCJwZGZcIixcclxuICAgIE1BSUw6IFwibWFpbFwiLFxyXG4gICAgV09SRDogXCJ3b3JkXCIsXHJcbiAgICBJTUFHRTogXCJpbWFnZVwiLFxyXG4gICAgT0NURVRfU1RSRUFNOiBcIm9jdGV0LXN0cmVhbVwiLFxyXG4gICAgVFhUOiBcInR4dFwiLFxyXG4gICAgRVhDRUw6IFwiZXhjZWxcIixcclxuICAgIFBPV0VSUE9JTlQ6IFwicG93ZXJwb2ludFwiLFxyXG4gICAgVklERU86IFwidmlkZW9cIixcclxuICAgIEhUTUw6IFwiaHRtbFwiLFxyXG4gICAgQVVESU86IFwiYXVkaW9cIixcclxuICAgIFpJUDogXCJ6aXBcIlxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIGZpbGVzaXplIGJ1Y2tldHMgcHJvcGVydHkgbmFtZXNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIEZJTEVfU0laRV9CVUNLRVRTID0ge1xyXG4gICAgTFQxTUI6IFwibHQxTUJcIixcclxuICAgIExUMTBNQjogXCJsdDEwTUJcIixcclxuICAgIExUMTAwTUI6IFwibHQxMDBNQlwiLFxyXG4gICAgR1QxMDBNQjogXCJndDEwME1CXCJcclxuICB9O1xyXG5cclxuICAvLyBsaXN0IG9mIHRoaW5ncyB0aGF0IG1heSBoYXZlIGNoYW5nZWQgdGhlIGN1cnJlbnQgcXVlcnlcclxuICBwdWJsaWMgc3RhdGljIFVQREFURV9DQVVTRSA9IHtcclxuICAgIFRPR0dMRURfVFlQRTogXCJjYXVzZS50eXBlLnRvZ2dsZWRcIixcclxuICAgIFRPR0dMRURfRVhQRVJUTU9ERTogXCJjYXVzZS5leHBlcnRtb2RlLnRvZ2dsZWRcIixcclxuICAgIFRFUk1fU0VUOiBcImNhdXNlLnRlcm0uc2V0XCIsXHJcbiAgICBUWVBFU19TRVQ6IFwiY2F1c2UudHlwZXMuc2V0XCIsXHJcbiAgICBDT05URVhUX0ZPTERFUl9TRVQ6IFwiY2F1c2UuY29udGV4dGZvbGRlci5zZXRcIixcclxuICAgIFRPR0dMRURfRklMVEVSOiBcImNhdXNlLmZpbHRlci50b2dnbGVkXCIsXHJcbiAgICBBRERFRF9GSUxURVI6IFwiY2F1c2UuZmlsdGVyLmFkZGVkXCIsXHJcbiAgICBSRU1PVkVEX0ZJTFRFUjogXCJjYXVzZS5maWx0ZXIucmVtb3ZlZFwiLFxyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogRGV0YXVsdCBTZWFyY2ggbW9kZSBJbmRleFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9TRUFSQ0hfTU9ERSA9IFwiaWR4c1wiO1xyXG4gIC8qKlxyXG4gICAqIFNlYXJjaCBtb2RlIGZvciBGdWxsIHRlc3QgU2VhcmNoXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBGVUxMVEVYVF9TRUFSQ0hfTU9ERSA9IFwiZnRzXCI7XHJcbiAgLyoqXHJcbiAgICogZnVsbHRleHQgc2VhcmNoIHRlcm1cclxuICAgKi9cclxuICBwdWJsaWMgdGVybTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEFycmF5IG9mIGZpZWxkcyB0byByZXF1ZXN0IGZyb20gdGhlIHNlYXJjaCBzZXJ2aWNlLCBsZWF2aW5nIHRoaXMgYmxhbmsgd2lsbCByZXR1cm4gdGhlIGZpZWxkcyBzcGVjaWZpZWQgaW4gdGhlIHJlc3VsdCBmaWVsZCBjb25maWd1cmF0aW9uXHJcbiAgICovXHJcbiAgcHVibGljIGZpZWxkczogc3RyaW5nW107XHJcbiAgLyoqXHJcbiAgICogTGlzdCBvZiBvYmplY3QgdHlwZXMgdG8gYmUgZmV0Y2hlZCBieSB0aGUgcXVlcnkuIExlYXZpbmcgdGhpcyBibGFuayB3aWxsIHJldHVybiByZXN1bHRzIGZyb20gYW55IHR5cGVcclxuICAgKi9cclxuICBwdWJsaWMgdHlwZXM6IE9iamVjdFR5cGVbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2YgY29udGV4dCBmb2xkZXIgdHlwZXNcclxuICAgKi9cclxuICBwdWJsaWMgY29udGV4dEZvbGRlclR5cGVzOiBPYmplY3RUeXBlW10gPSBbXTtcclxuICAvKipcclxuICAgKiBMaXN0IG9mIGZpbHRlcnMgdG8gZGVmaW5lIHRoZSBxdWVyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHJldHJpZXZlIHN1Z2dlc3Rpb25zXHJcbiAgICovXHJcbiAgcHVibGljIHN1Z2dlc3Q6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBvciBub3QgdGhlIHRlcm0gaXMgYW4gZXhwZXJ0IG1vZGUgcXVlcnlcclxuICAgKi9cclxuICBwdWJsaWMgZXhwZXJ0TW9kZSA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBzY29wZSBvZiB0aGUgcXVlcnlcclxuICAgKi9cclxuICBwdWJsaWMgc2NvcGU6IFF1ZXJ5U2NvcGU7XHJcbiAgLyoqXHJcbiAgICogVGhlIHNlYXJjaCBtb2RlIHRvIGJlIHVzZWQgKFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREUgb3IgU2VhcmNoUXVlcnkuRlVMTFRFWFRfU0VBUkNIX01PREUpXHJcbiAgICovXHJcbiAgcHVibGljIHNlYXJjaE1vZGU6IHN0cmluZyA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XHJcbiAgLyoqXHJcbiAgICogQWRkaXRpb25hbCBvcHRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5XHJcbiAgICovXHJcbiAgcHVibGljIHNvcnRPcHRpb25zOiBTb3J0T3B0aW9uW10gPSBbXTtcclxuICAvKipcclxuICAgKiBSZXNvbHZlIHJlZmVyZW5jZXMgd2l0aCB0aGVpciB0aXRsZSBpbnN0ZWFkIG9mIHRoZWlyIGFjdHVhbCB2YWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXNvbHZlUmVmZXJlbmNlID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBUaGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcXVlcnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGU6IFNlYXJjaFN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XHJcblxyXG4gIHB1YmxpYyBoaWdobGlnaHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgd2l0aENvbnRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gSW5kaWNhdG9yIHdoYXQgY2F1c2VkIHRoZSB1cGRhdGUgb2YgYSBTZWFyY2hRdWVyeSBvYmplY3QuXHJcbiAgLy8gVXNlZnVsbCBmb3IgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZWQgdG8gYSBxdWVyeSwgYW5kIG5lZWQgdG9cclxuICAvLyB0cmFjayB0aGUga2luZCBvZiBjaGFuZ2VzIG1hZGVcclxuICBfX3VwZGF0ZUNhdXNlOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIG5ldyB0YXJnZXQgdHlwZSB0byB0aGUgcXVlcnlcclxuICAgKlxyXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdCB0eXBlIHRvIGJlIGFkZGVkXHJcbiAgICovXHJcbiAgcHVibGljIGFkZFR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xyXG4gICAgaWYgKCF0aGlzLnR5cGVzLmZpbmQodCA9PiB0LmlkID09PSB0eXBlLmlkKSkge1xyXG4gICAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgdHlwZSBmcm9tIHRoZSB0YXJnZXQgdHlwZXMgbGlzdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlVHlwZSh0eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICB0aGlzLnR5cGVzID0gdGhpcy50eXBlcy5maWx0ZXIodCA9PiB0LmlkICE9PSB0eXBlLmlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgb3IgcmVtb3ZlcyB0aGUgZ2l2ZW4gdHlwZSBiYXNlZCBvbiB0aGUgY3VycmVudCBzZXR0aW5nc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIHRvIGJlIHRvZ2dsZWRcclxuICAgKi9cclxuICBwdWJsaWMgdG9nZ2xlVHlwZSh0eXBlOiBPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAodGhpcy50eXBlcy5maW5kKHQgPT4gdC5pZCA9PT0gdHlwZS5pZCkpIHtcclxuICAgICAgdGhpcy5yZW1vdmVUeXBlKHR5cGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50eXBlcy5wdXNoKHR5cGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIG5ldyBmaWx0ZXIgdG8gdGhlIHF1ZXJ5LiBJZiB0aGVyZSBhbHJlYWR5IGlzIGEgZmlsdGVyIHNldCBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gYmUgYWRkZWRcclxuICAgKi9cclxuICBwdWJsaWMgYWRkRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XHJcbiAgICBpZiAoIWZpbHRlcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZ2V0RmlsdGVyKGZpbHRlci5wcm9wZXJ0eSkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGlmIHRoZXJlIGFscmVhZHkgaXMgYSBmaWx0ZXIgc2V0IGZvciB0aGUgdGFyZ2V0IHByb3BlcnR5XHJcbiAgICAgIC8vIHdlJ2xsIGp1c3Qgb3ZlcnJpZGUgaXQgd2l0aCB0aGUgbmV3IHZhbHVlXHJcbiAgICAgIHRoaXMucmVtb3ZlRmlsdGVyKGZpbHRlci5wcm9wZXJ0eSk7XHJcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgZmlsdGVyIGZyb20gdGhlIHF1ZXJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbHRlclByb3BlcnR5TmFtZSBUaGUgZmlsdGVyIChpdHMgcHJvcGVydHkgbmFtZSkgdG8gYmUgcmVtb3ZlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIoZiA9PiBmLnByb3BlcnR5ICE9PSBmaWx0ZXJQcm9wZXJ0eU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBvciByZW1vdmVzIHRoZSBnaXZlbiBmaWx0ZXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2V0dGluZ3NcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgVGhlIGZpbHRlciB0byBiZSB0b2dnbGVkXHJcbiAgICovXHJcbiAgcHVibGljIHRvZ2dsZUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlciwgb3ZlcnJpZGU/OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5nZXRGaWx0ZXIoZmlsdGVyLnByb3BlcnR5KSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUZpbHRlcihmaWx0ZXIucHJvcGVydHkpO1xyXG4gICAgICBpZiAob3ZlcnJpZGUpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZmlsdGVyIGJ5IGl0cyBwcm9wZXJ0eSBuYW1lLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgZmlsdGVycyBwcm9wZXJ0eSBuYW1lIChxbmFtZSBvZiBmb3JtIGVsZW1lbnQpXHJcbiAgICogQHJldHVybnMgU2VhcmNoIEZpbHRlciBPYmplY3RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RmlsdGVyKHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnMuZmluZChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5TmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VGFibGVGaWx0ZXJzKHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVycy5maWx0ZXIoZiA9PiBmLnByb3BlcnR5LnN0YXJ0c1dpdGgocHJvcGVydHlOYW1lICsgJy4nKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRpbmcgbmV3IFNvcnQgT3B0aW9uc1xyXG4gICAqIFNvcnQgT3B0aW9ucyBhcmUgb25seSBhZGRlZCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBwcmVzZW50XHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBvcmRlclxyXG4gICAqIEBwYXJhbSBtaXNzaW5nXHJcbiAgICovXHJcbiAgcHVibGljIGFkZFNvcnRPcHRpb24obmFtZTogc3RyaW5nLCBvcmRlcjogc3RyaW5nLCBtaXNzaW5nPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuc29ydE9wdGlvbnMuZmluZChzID0+IHMuZmllbGQgPT09IG5hbWUpKSB7XHJcbiAgICAgIHRoaXMuc29ydE9wdGlvbnMucHVzaChuZXcgU29ydE9wdGlvbihuYW1lLCBvcmRlciwgbWlzc2luZykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVTb3J0T3B0aW9uKG5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zb3J0T3B0aW9ucyA9IHRoaXMuc29ydE9wdGlvbnMuZmlsdGVyKHMgPT4gcy5maWVsZCAhPT0gbmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSBhIHF1ZXJ5IEpTT04gZnJvbSB0aGUgY3VycmVudCBTZWFyY2hRdWVyeSB0aGF0IGNhbiBiZSBzZW5kIHRvIHRoZSBzZWFyY2ggc2VydmljZS5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UXVlcnlKc29uKCkge1xyXG4gICAgLy8gQ29udmVydCB0aGUgY3VycmVudCBxdWVyeSBvYmplY3QgdG8gYSBxdWVyeSBKU09OIHRoYXQgY2FuIGJlIGNvbnN1bWVkIGJ5IHRoZSBzZWFyY2ggc2VydmljZSBiYWNrZW5kLlxyXG4gICAgLy8gVG8ga2VlcCBpdCBzaG9ydCwgd2UnbGwgb25seSBhZGQgcHJvcGVydGllcyB0aGF0IGFyZSBzZXQgYW5kIGRpZmZlciBmcm9tIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBjb25zdCBxdWVyeUpzb246IGFueSA9IHt9O1xyXG5cclxuICAgIC8vIGFkZCB0eXBlIGZpbHRlcnNcclxuICAgIGlmICh0aGlzLnR5cGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcXVlcnlKc29uLnR5cGVzID0gdGhpcy50eXBlcy5tYXAodCA9PlxyXG4gICAgICAgIHR5cGVvZiB0ID09PSBcInN0cmluZ1wiID8gdCA6IHQubmFtZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBjb250ZXh0IGZvbGRlciB0eXBlIGZpbHRlcnNcclxuICAgIGlmICh0aGlzLmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHF1ZXJ5SnNvbi5jb250ZXh0Zm9sZGVydHlwZXMgPSB0aGlzLmNvbnRleHRGb2xkZXJUeXBlcy5tYXAodCA9PiB0Lm5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGZpbHRlcnNcclxuICAgIGlmICh0aGlzLmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBxdWVyeUpzb24uZmlsdGVycyA9IHt9O1xyXG4gICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChmID0+IHtcclxuICAgICAgICBxdWVyeUpzb24uZmlsdGVyc1tmLnByb3BlcnR5XSA9IGYudG9RdWVyeSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRlcm0pIHtcclxuICAgICAgcXVlcnlKc29uLnRlcm0gPSB0aGlzLnRlcm07XHJcbiAgICB9XHJcbiAgICAvLyBzZWFyY2ggZmllbGRzXHJcbiAgICBpZiAodGhpcy5maWVsZHMpIHtcclxuICAgICAgcXVlcnlKc29uLmZpZWxkcyA9IHRoaXMuZmllbGRzO1xyXG4gICAgfVxyXG4gICAgLy8gYWRkIG9wdGlvbnMgd2hlbiB0aGV5IGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlc1xyXG4gICAgaWYgKHRoaXMuYXBwbHlPcHRpb25zKCkpIHtcclxuICAgICAgcXVlcnlKc29uLm9wdGlvbnMgPSB7fTtcclxuICAgICAgcXVlcnlKc29uLm9wdGlvbnMuc2NvcGUgPSB0aGlzLnNjb3BlO1xyXG4gICAgICBpZiAodGhpcy5zdWdnZXN0KSB7XHJcbiAgICAgICAgcXVlcnlKc29uLm9wdGlvbnMuc3VnZ2VzdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZXhwZXJ0TW9kZSkge1xyXG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLmV4cGVydG1vZGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJlc29sdmVSZWZlcmVuY2UpIHtcclxuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5yZXNvbHZlUmVmZXJlbmNlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZWFyY2hNb2RlICE9PSBTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFKSB7XHJcbiAgICAgICAgcXVlcnlKc29uLm9wdGlvbnMuc2VhcmNobW9kZSA9IHRoaXMuc2VhcmNoTW9kZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zb3J0T3B0aW9ucyAmJiB0aGlzLnNvcnRPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnNvcnQgPSB7fTtcclxuICAgICAgICB0aGlzLnNvcnRPcHRpb25zLmZvckVhY2goKHNvcnRPcHRpb246IFNvcnRPcHRpb24pID0+IHtcclxuICAgICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnNvcnRbc29ydE9wdGlvbi5maWVsZF0gPSB7XHJcbiAgICAgICAgICAgIG9yZGVyOiBzb3J0T3B0aW9uLm9yZGVyXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5oaWdobGlnaHRpbmcpIHtcclxuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5oaWdobGlnaHRpbmcgPSB0aGlzLmhpZ2hsaWdodGluZztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy53aXRoQ29udGV4dCkge1xyXG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLndpdGhDb250ZXh0ID0gdGhpcy53aXRoQ29udGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHF1ZXJ5SnNvbjtcclxuICB9XHJcblxyXG4gIC8vIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlIHF1ZXJ5IHNlbmQgdG8gdGhlIHNlYXJjaCBzZXJ2aWNlIHNob3VsZCBjb250YWluIG9wdGlvbnNcclxuICBwcml2YXRlIGFwcGx5T3B0aW9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZXhwZXJ0TW9kZSB8fFxyXG4gICAgICAhIXRoaXMuc2NvcGUgfHxcclxuICAgICAgdGhpcy5zdWdnZXN0IHx8XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0aW5nIHx8XHJcbiAgICAgIHRoaXMucmVzb2x2ZVJlZmVyZW5jZSB8fFxyXG4gICAgICB0aGlzLndpdGhDb250ZXh0IHx8XHJcbiAgICAgIHRoaXMuc2VhcmNoTW9kZSAhPT0gU2VhcmNoUXVlcnkuREVGQVVMVF9TRUFSQ0hfTU9ERSB8fFxyXG4gICAgICB0aGlzLnNvcnRPcHRpb25zLmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTb3J0IE9wdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTb3J0T3B0aW9uIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBmaWVsZDogc3RyaW5nLFxyXG4gICAgcHVibGljIG9yZGVyOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgbWlzc2luZz86IHN0cmluZ1xyXG4gICkge31cclxufVxyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICogQ3JlYXRlcyB0aGUgTW9kZWwgb2YgRmllbGQgRGVmaW5pdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBGaWVsZERlZmluaXRpb24ge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGVsZW1lbnRzOiBhbnlbXSA9IFtdLFxyXG4gICAgcHVibGljIHNvcnRvcmRlcjogYW55W10gPSBbXSxcclxuICAgIHB1YmxpYyBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxyXG4gICAgcHVibGljIHBpbm5lZDogYW55W10gPSBbXSxcclxuICAgIHB1YmxpYyBtb2RlPzogc3RyaW5nXHJcbiAgKSB7fVxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgdGhlIHN0YXRlIG9mIGEgcXVlcnlcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hTdGF0ZSB7XHJcbiAgcHVibGljIGNvdW50OiB7dmFsdWU6IG51bWJlciwgcmVsYXRpb24/OiBzdHJpbmd9O1xyXG4gIHB1YmxpYyBhZ2dyZWdhdGlvbnM7XHJcbiAgcHVibGljIGxhc3RDaGFuZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuYWdncmVnYXRpb25zID0ge1xyXG4gICAgICB0eXBlOiBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpLFxyXG4gICAgICBjb250ZXh0VHlwZTogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcclxuICAgICAgY3JlYXRlZDogW10sXHJcbiAgICAgIG1vZGlmaWVkOiBbXSxcclxuICAgICAgbWltZXR5cGVncm91cDogW10sXHJcbiAgICAgIGZpbGVzaXplOiBbXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCB0b3RhbENvdW50KCkge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5hZ2dyZWdhdGlvbnMudHlwZS52YWx1ZXMoKSkucmVkdWNlKChhY2M6IG51bWJlciwgY3VyOiBudW1iZXIpID0+IGFjYyArIGN1ciwgMCkgYXMgbnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gISh0aGlzLmNvdW50ICYmIHRoaXMuY291bnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkQWdncmVnYXRpb25zKHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIsIGFnZz8pIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFwiY29udGV4dHR5cGVcIjoge1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLmNvbnRleHRUeXBlLnNldChrZXksIHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEU6IHtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy50eXBlLnNldChrZXksIHZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFURUQ6IHtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5jcmVhdGVkLnB1c2goe1xyXG4gICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEOiB7XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMubW9kaWZpZWQucHVzaCh7XHJcbiAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTUlNRVRZUEVHUk9VUDoge1xyXG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLm1pbWV0eXBlZ3JvdXAucHVzaCh7XHJcbiAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkU6IHtcclxuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5maWxlc2l6ZS5wdXNoKHtcclxuICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgZnJvbTogYWdnLmZyb20sXHJcbiAgICAgICAgICB0bzogYWdnLnRvIHx8IEluZmluaXR5LFxyXG4gICAgICAgICAgbGFiZWw6IGtleS5yZXBsYWNlKFwiZ3RcIiwgXCI+IFwiKS5yZXBsYWNlKFwibHRcIiwgXCI8IFwiKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTZWFyY2ggUmVzdWx0c1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNlYXJjaFJlc3VsdCB7XHJcbiAgcHVibGljIGNvdW50OiB7dmFsdWU6IG51bWJlciwgcmVsYXRpb24/OiBzdHJpbmd9O1xyXG4gIHB1YmxpYyBzdWdnZXN0czogc3RyaW5nW107XHJcbiAgcHVibGljIGhpdHM6IGFueVtdO1xyXG4gIHB1YmxpYyB0eXBlTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBmaWVsZHM6IEZpZWxkRGVmaW5pdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyIHtcclxuICAvKipcclxuICAgKiBhdmFpbGFibGUgb3BlcmF0b3JzIGZvciBhIHNlYXJjaCBmaWx0ZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIE9QRVJBVE9SID0ge1xyXG4gICAgLyoqIGVxdWFsICovXHJcbiAgICBFUVVBTDogXCJlcVwiLFxyXG4gICAgLyoqIG1hdGNoIChmb3Igc3RyaW5nIHdpdGggY2xhc3NpZmljYXRpb24gXCJwYXRoNjY2NlwiKSAqL1xyXG4gICAgTUFUQ0g6IFwibWF0Y2hcIixcclxuICAgIC8qKiBtYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHByb3ZpZGVkIHZhbHVlcyAodmFsdWUgaGFzIHRvIGJlIGFuIGFycmF5KSAgKi9cclxuICAgIElOOiBcImluXCIsXHJcbiAgICAvKiogZ3JlYXRlciB0aGFuICovXHJcbiAgICBHUkVBVEVSX1RIQU46IFwiZ3RcIixcclxuICAgIC8qKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgKi9cclxuICAgIEdSRUFURVJfT1JfRVFVQUw6IFwiZ3RlXCIsIC8vXHJcbiAgICBMRVNTX1RIQU46IFwibHRcIiwgLy8gbGVzcyB0aGFuXHJcbiAgICBMRVNTX09SX0VRVUFMOiBcImx0ZVwiLCAvLyBsZXNzIHRoYW4gb3IgZXF1YWxcclxuICAgIElOVEVSVkFMOiBcImd0bHRcIiwgLy8gaW50ZXJ2YWxcclxuICAgIElOVEVSVkFMX0lOQ0xVREVfQk9USDogXCJndGVsdGVcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0IGFuZCByaWdodFxyXG4gICAgSU5URVJWQUxfSU5DTFVERV9UTzogXCJndGx0ZVwiLCAvLyBpbnRlcnZhbCBpbmNsdWRlIHJpZ2h0XHJcbiAgICBJTlRFUlZBTF9JTkNMVURFX0ZST006IFwiZ3RlbHRcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0XHJcbiAgICBSQU5HRTogXCJyZ1wiIC8vIGFnZ2VnYXRpb24gcmFuZ2VzXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGEgbmV3IFNlYXJjaEZpbHRlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZpZWxkIHRoaXMgZmlsdGVyIHNob3VsZCBhcHBseSB0by5cclxuICAgKiBAcGFyYW0gb3BlcmF0b3IgT3BlcmF0b3IgaW5kaWNhdGluZyBob3cgdG8gaGFuZGxlIHRoZSBmaWx0ZXJzIHZhbHVlKHMpLiBTZWUgU2VhcmNoRmlsdGVyLk9QRVJBVE9SIGZvciBhdmFpbGFibGUgb3BlcmF0b3JzLlxyXG4gICAqIEBwYXJhbSBmaXJzdFZhbHVlIFRoZSBmaWx0ZXJzIHZhbHVlXHJcbiAgICogQHBhcmFtIHNlY29uZFZhbHVlIE9wdGlvbmFsIHNlY29uZCB2YWx1ZSBmb3IgZmlsdGVycyB0aGF0IGZvciBleGFtcGxlIGRlZmluZSByYW5nZXMgb2YgdmFsdWVzXHJcbiAgICogQHBhcmFtIHRyYW5zZm9ybURhdGUgRmxhZyB0byB0cmFuc2Zvcm0gZGF0ZSBob3VycyBhbmQgbWludXRlcyBiYXNlZCBvbiBvcGVyYXRvclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHByb3BlcnR5OiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgb3BlcmF0b3I6IHN0cmluZyxcclxuICAgIHB1YmxpYyBmaXJzdFZhbHVlOiBhbnksXHJcbiAgICBwdWJsaWMgc2Vjb25kVmFsdWU/OiBhbnksXHJcbiAgICBwdWJsaWMgdHJhbnNmb3JtRGF0ZT86IHt0aW1lPzogYm9vbGVhbjsgdGltZXpvbmU/OiBib29sZWFufVxyXG4gICkge31cclxuXHJcbiAgZm9ybWF0RGF0ZSh2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1EYXRlICYmIHZhbHVlXHJcbiAgICAgID8gdGhpcy50cmFuc2Zvcm1EYXRlLnRpbWV6b25lXHJcbiAgICAgICAgPyBuZXcgRGF0ZVBpcGUoXCJlblwiKS50cmFuc2Zvcm0odmFsdWUsIFwieXl5eS1NTS1kZFRaXCIpXHJcbiAgICAgICAgOiB0aGlzLnRyYW5zZm9ybURhdGUudGltZVxyXG4gICAgICAgICAgPyBuZXcgRGF0ZSh2YWx1ZSkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxNikgKyBcIlpcIlxyXG4gICAgICAgICAgOiBuZXcgRGF0ZVBpcGUoXCJlblwiKS50cmFuc2Zvcm0odmFsdWUsIFwieXl5eS1NTS1kZFwiKVxyXG4gICAgICA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgdG9RdWVyeSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG86IHRoaXMub3BlcmF0b3IsXHJcbiAgICAgIHYxOiB0aGlzLmZvcm1hdERhdGUodGhpcy5maXJzdFZhbHVlKSxcclxuICAgICAgLi4uKHRoaXMuc2Vjb25kVmFsdWUgJiYge3YyOiB0aGlzLmZvcm1hdERhdGUodGhpcy5zZWNvbmRWYWx1ZSl9KVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHRvRGF0ZVRpbWVRdWVyeSgpIHtcclxuICAgIGlmICh0aGlzLnRyYW5zZm9ybURhdGUgJiYgdGhpcy50cmFuc2Zvcm1EYXRlLnRpbWV6b25lICYmIHRoaXMuZmlyc3RWYWx1ZSkge1xyXG4gICAgICBsZXQgZmlyc3RWYWx1ZSA9IHRoaXMuZmlyc3RWYWx1ZTtcclxuICAgICAgbGV0IHNlY29uZFZhbHVlID0gdGhpcy5zZWNvbmRWYWx1ZTtcclxuICAgICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKHNlY29uZFZhbHVlIHx8IGZpcnN0VmFsdWUpO1xyXG4gICAgICBlbmREYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XHJcbiAgICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTEVTU19PUl9FUVVBTCkge1xyXG4gICAgICAgIGZpcnN0VmFsdWUgPSBlbmREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoZmlyc3RWYWx1ZSk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkdSRUFURVJfVEhBTiB8fFxyXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBzdGFydERhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3RhcnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaXJzdFZhbHVlID0gc3RhcnREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEggfHxcclxuICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUxcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2Vjb25kVmFsdWUgPSBlbmREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBvOlxyXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMXHJcbiAgICAgICAgICAgID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USFxyXG4gICAgICAgICAgICA6IHRoaXMub3BlcmF0b3IsXHJcbiAgICAgICAgdjE6IGZpcnN0VmFsdWUsXHJcbiAgICAgICAgLi4uKHNlY29uZFZhbHVlICYmIHt2Mjogc2Vjb25kVmFsdWV9KVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9RdWVyeSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIG1hdGNoKFxyXG4gICAgcHJvcGVydHk6IHN0cmluZyxcclxuICAgIG9wZXJhdG9yOiBzdHJpbmcsXHJcbiAgICBmaXJzdFZhbHVlOiBhbnksXHJcbiAgICBzZWNvbmRWYWx1ZT86IGFueVxyXG4gICkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkgJiZcclxuICAgICAgdGhpcy5vcGVyYXRvciA9PT0gb3BlcmF0b3IgJiZcclxuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9PT0gc2Vjb25kVmFsdWUgJiZcclxuICAgICAgKHRoaXMuZmlyc3RWYWx1ZSBpbnN0YW5jZW9mIEFycmF5XHJcbiAgICAgICAgPyAhIXRoaXMuZmlyc3RWYWx1ZS5maW5kKHYgPT4gdiA9PT0gZmlyc3RWYWx1ZSlcclxuICAgICAgICA6IHRoaXMuZmlyc3RWYWx1ZSA9PT0gZmlyc3RWYWx1ZSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -104,6 +104,7 @@ export class SearchService {
104
104
  if (qObj.options) {
105
105
  q.suggest = qObj.options.suggest || false;
106
106
  q.expertMode = qObj.options.expertmode || false;
107
+ q.scope = qObj.options.scope;
107
108
  q.resolveReference = qObj.options.resolveReference || true;
108
109
  q.searchMode =
109
110
  qObj.options.searchmode || SearchQuery.DEFAULT_SEARCH_MODE;
@@ -458,4 +459,4 @@ SearchService.ctorParameters = () => [
458
459
  { type: BackendService },
459
460
  { type: Config }
460
461
  ];
461
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBcUIsRUFDckIsT0FBdUIsRUFDdkIsTUFBYztRQUZkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEtBQUssWUFB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RyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixDQUFDOzs7WUF4bEJGLFVBQVU7OztZQWRILGFBQWE7WUFGYixjQUFjO1lBQ2QsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gJy4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtSYW5nZVZhbHVlfSBmcm9tICcuLi8uLi9tb2RlbC9yYW5nZS12YWx1ZS5tb2RlbCc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7U2VhcmNoRmlsdGVyVHlwZX0gZnJvbSAnLi9zZWFyY2gtZmlsdGVyLXR5cGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICBGaWVsZERlZmluaXRpb24sXHJcbiAgU2VhcmNoRmlsdGVyLFxyXG4gIFNlYXJjaFF1ZXJ5LFxyXG4gIFNlYXJjaFJlc3VsdCxcclxuICBTZWFyY2hTdGF0ZVxyXG59IGZyb20gJy4vc2VhcmNoLXF1ZXJ5Lm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIFNlYXJjaCBTZXJ2aWNlc1xyXG4gKiBTZWUge0BsaW5rIFNlYXJjaFF1ZXJ5fSBmb3IgUXVlcnkgRGVmaW5pdGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgUmFuZ2VWYWx1ZSBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiB2YWx1ZSBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB0byBiZVxyXG4gICAqIEByZXR1cm5zIFJhbmdlVmFsdWVcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRvUmFuZ2VWYWx1ZSh2YWx1ZTogYW55KTogUmFuZ2VWYWx1ZSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSAmJlxyXG4gICAgICAgIHZhbHVlLmhhc093blByb3BlcnR5KCdmaXJzdFZhbHVlJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZVZhbHVlKFxyXG4gICAgICAgICAgdmFsdWUub3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgdmFsdWUuc2Vjb25kVmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZnJvbWF0ZWQgc2VhcmNoIFF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlcclxuICAgKiBAcmV0dXJucyBTZWFyY2hRdWVyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZFF1ZXJ5KHF1ZXJ5OiBhbnkpOiBTZWFyY2hRdWVyeSB7XHJcbiAgICBsZXQgcTogU2VhcmNoUXVlcnk7XHJcbiAgICBpZiAocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xyXG4gICAgICBxID0gcXVlcnk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcU9iajtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGlmIHdlIGdvdCBhIHN0cmluZywgd2UnbGwgYXNzdW1lIHRoYXQgaXQncyBhIEpTT05cclxuICAgICAgICovXHJcbiAgICAgIGlmICh0eXBlb2YgcXVlcnkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcU9iaiA9IEpTT04ucGFyc2UocXVlcnkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHFPYmogPSBxdWVyeTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xyXG4gICAgICBxLnRlcm0gPSBxT2JqLnRlcm07XHJcbiAgICAgIGlmIChxT2JqLmZpbHRlcnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhxT2JqLmZpbHRlcnMpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgICBxLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICBrLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS5vLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS52MSxcclxuICAgICAgICAgICAgICBxT2JqLmZpbHRlcnNba10udjJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai50eXBlcykge1xyXG4gICAgICAgIHFPYmoudHlwZXMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai5jb250ZXh0Zm9sZGVydHlwZXMpIHtcclxuICAgICAgICBxT2JqLmNvbnRleHRmb2xkZXJ0eXBlcy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHQgPT09ICdzeXNyb290Jykge1xyXG4gICAgICAgICAgICAvLyAnc3lzcm9vdCcgaXMgbm90IGEgcmVhbCBvYmplY3QgdHlwZSwgc28gd2UgaGF2ZSB0byBjcmVhdGUgYSBmYWtlIHR5cGUuXHJcbiAgICAgICAgICAgIGNvbnN0IHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSA9IG5ldyBPYmplY3RUeXBlKHtcclxuICAgICAgICAgICAgICBpZDogJ2EnLFxyXG4gICAgICAgICAgICAgIGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBuYW1lOiAnc3lzcm9vdCcsXHJcbiAgICAgICAgICAgICAgcW5hbWU6ICdzeXNyb290JyxcclxuICAgICAgICAgICAgICBsYWJlbDogJ3N5c3Jvb3QnLFxyXG4gICAgICAgICAgICAgIGlzY29udGV4dGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBhYnN0cmFjdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgICAgICAgICBzaGFyZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG1pbmZpbGVzOiAwLFxyXG4gICAgICAgICAgICAgIG1heGZpbGVzOiAxXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUodCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHEuZmllbGRzID0gcU9iai5maWVsZHM7XHJcbiAgICAgIGlmIChxT2JqLm9wdGlvbnMpIHtcclxuICAgICAgICBxLnN1Z2dlc3QgPSBxT2JqLm9wdGlvbnMuc3VnZ2VzdCB8fCBmYWxzZTtcclxuICAgICAgICBxLmV4cGVydE1vZGUgPSBxT2JqLm9wdGlvbnMuZXhwZXJ0bW9kZSB8fCBmYWxzZTtcclxuICAgICAgICBxLnJlc29sdmVSZWZlcmVuY2UgPSBxT2JqLm9wdGlvbnMucmVzb2x2ZVJlZmVyZW5jZSB8fCB0cnVlO1xyXG4gICAgICAgIHEuc2VhcmNoTW9kZSA9XHJcbiAgICAgICAgICBxT2JqLm9wdGlvbnMuc2VhcmNobW9kZSB8fCBTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHF1ZXJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBiZSBleGVjdXRlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZWFyY2gocXVlcnk6IFNlYXJjaFF1ZXJ5KTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVRdWVyeShxdWVyeS5nZXRRdWVyeUpzb24oKSkucGlwZShcclxuICAgICAgbWFwKHJlcyA9PiB0aGlzLmNyZWF0ZVJlc3VsdEZyb21SZXNwb25zZShyZXMpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIFNlYXJjaCByZXN1bHRzXHJcbiAgICovXHJcbiAgcHVibGljIGdldFNlYXJjaFN0YXRlKHF1ZXJ5OiBhbnkpOiBPYnNlcnZhYmxlPFNlYXJjaFN0YXRlPiB7XHJcbiAgICBcclxuICAgIGlmKHF1ZXJ5IGluc3RhbmNlb2YgU2VhcmNoUXVlcnkpIHtcclxuICAgICAgcXVlcnkgPSBxdWVyeS5nZXRRdWVyeUpzb24oKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVRdWVyeShxdWVyeSwgdHJ1ZSkucGlwZShcclxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XHJcbiAgICAgICAgc3RhdGUuY291bnQgPSByZXMuaGl0cy50b3RhbDtcclxuICAgICAgICBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykuZm9yRWFjaChrID0+IHtcclxuICAgICAgICAgIGNvbnN0IGJhc2VQYXJhbSA9IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdO1xyXG4gICAgICAgICAgY29uc3QgYWdncmVnYXRpb25zID0gcmVzLmFnZ3JlZ2F0aW9uc1tiYXNlUGFyYW1dXHJcbiAgICAgICAgICAgID8gcmVzLmFnZ3JlZ2F0aW9uc1tiYXNlUGFyYW1dLmJ1Y2tldHNcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIGFnZ3JlZ2F0aW9ucy5mb3JFYWNoKGFnZ3JlZ2F0aW9uID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge2tleSwgZG9jX2NvdW50LCBjb250ZXh0Zm9sZGVydHlwZX0gPSBhZ2dyZWdhdGlvbjtcclxuICAgICAgICAgICAgc3RhdGUuYWRkQWdncmVnYXRpb25zKGJhc2VQYXJhbSwga2V5LCBkb2NfY291bnQsIGFnZ3JlZ2F0aW9uKTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIHR5cGUgYWdncmVnYXRpb25zIG1heSBhbHNvIGNvbnRhaW4gYnVja2V0cyBmb3IgdGhlaXIgY29udGV4dCB0eXBlc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGJhc2VQYXJhbSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSAmJlxyXG4gICAgICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlLmJ1Y2tldHMuZm9yRWFjaChjdHhBZ2cgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3RhdGUuYWRkQWdncmVnYXRpb25zKFxyXG4gICAgICAgICAgICAgICAgICAnY29udGV4dHR5cGUnLFxyXG4gICAgICAgICAgICAgICAgICBjdHhBZ2cua2V5LFxyXG4gICAgICAgICAgICAgICAgICBjdHhBZ2cuZG9jX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgICBjdHhBZ2dcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gc3RhdGU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIHBhcnQgb2YgYSBxdWVyaWVzIHJlc3VsdC4gVGhpcyBjYW4gYmUgdXNlZCBmb3IgcGFnaW5nIG9mIHJlc3VsdHNcclxuICAgKiBvciBsYXp5IGxvYWRpbmcgbGFyZ2UgcmVzdWx0cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdG8gYmUgZXhlY3V0ZWRcclxuICAgKiBAcGFyYW0gZnJvbUluZGV4IFRoZSBpbmRleCBmcm9tIHdoZXJlIHRvIGZldGNoIHJlc3VsdHNcclxuICAgKiBAcGFyYW0gY2h1bmtTaXplIFNpemUgb2YgdGhlIGNodW5rIHRvIGJlIGZldGNoZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q2h1bmtlZFJlc3VsdChcclxuICAgIHF1ZXJ5OiBTZWFyY2hRdWVyeSxcclxuICAgIGZyb21JbmRleDogbnVtYmVyLFxyXG4gICAgY2h1bmtTaXplOiBudW1iZXJcclxuICApOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xyXG4gICAgY29uc3QgcSA9IHF1ZXJ5LmdldFF1ZXJ5SnNvbigpO1xyXG5cclxuICAgIHEuZnJvbSA9IGZyb21JbmRleDtcclxuICAgIGNvbnN0IHF1ZXJ5VXJpID0gYHNlYXJjaCFjaHVuazoke2NodW5rU2l6ZX0hJHtKU09OLnN0cmluZ2lmeShxKX1gO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUocXVlcnlVcmksICgpID0+XHJcbiAgICAgIHRoaXMuZXhlY3V0ZVF1ZXJ5KHEsIGZhbHNlLCBjaHVua1NpemUpLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLmNyZWF0ZVJlc3VsdEZyb21SZXNwb25zZShyZXMpKVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBxdWVyeVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHF1ZXJ5SnNvbiBUaGUgcXVlcnkgSlNPTiB0byBiZSBleGVjdXRlZFxyXG4gICAqIEBwYXJhbSBhZ2dyZWdhdGVTZWFyY2ggRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIGV4ZWN1dGUgYW4gYWdncmVnYXRpb24gc2VhcmNoIChubyBhY3R1YWwgcmVzdWx0cylcclxuICAgKiBAcGFyYW0gY3VzdG9tU2l6ZSBDdXN0b20gbnVtYmVyIG9mIHJlc3VsdHMgdG8gYmUgZmV0Y2hlZCwgaWYgbm90IHNldCB0aGUgZGVmYXVsdCBzaXplIHdpbGwgYmUgYXBwbGllZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBleGVjdXRlUXVlcnkoXHJcbiAgICBxdWVyeUpzb246IGFueSxcclxuICAgIGFnZ3JlZ2F0ZVNlYXJjaD86IGJvb2xlYW4sXHJcbiAgICBjdXN0b21TaXplPzogbnVtYmVyXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmk6IHN0cmluZztcclxuICAgIGxldCBxdWVyeSA9IHF1ZXJ5SnNvbjtcclxuICAgIGlmIChhZ2dyZWdhdGVTZWFyY2gpIHtcclxuICAgICAgdXJpID0gYC9hZ2dyZWdhdGVgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2l6ZSA9IGN1c3RvbVNpemUgfHwgdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gubGltaXQnKTtcclxuICAgICAgdXJpID0gYC8/c2l6ZT0ke3NpemV9YDtcclxuICAgIH1cclxuICAgIHF1ZXJ5Lm9wdGlvbnMgPSB7Li4ucXVlcnkub3B0aW9ucywgdHJhY2t0b3RhbGhpdHM6IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLnRyYWNrVG90YWxIaXRzJykgfHwgZmFsc2UsIHRpbWV6b25lOiBVdGlscy5nZXRUaW1lem9uZU9mZnNldCgpfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZSh1cmkgKyBKU09OLnN0cmluZ2lmeShxdWVyeSksICgpID0+IHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgcXVlcnksIHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKCkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvd25sb2FkcyBhIGNzdi1maWxlIG9mIHRoZSByZXN1bHRzIG9mIGEgZ2l2ZW4gc2VhcmNoLXF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlKc29uIFRoZSBxdWVyeSBKU09OIHRvIGJlIGV4ZWN1dGVkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcHVibGljIGRvd25sb2FkQ3N2RnJvbVF1ZXJ5KHF1ZXJ5SnNvbjogb2JqZWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnBvc3QoJy9leHBvcnQnLCBxdWVyeUpzb24sIHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKCksIHtcclxuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyZXMuYm9keV0sIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQvcGxhaW47Y2hhcnNldD11dGYtOCdcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhibG9iLCB0aGlzLmdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXMpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWxlTmFtZUZyb21IdHRwUmVzcG9uc2UocmVzOiBIdHRwUmVzcG9uc2U8YW55Pikge1xyXG4gICAgY29uc3QgY29udGVudERpc3Bvc2l0aW9uSGVhZGVyID1cclxuICAgICAgcmVzLmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJykgfHwgJyc7XHJcbiAgICByZXR1cm4gY29udGVudERpc3Bvc2l0aW9uSGVhZGVyLnNwbGl0KCdmaWxlbmFtZT0nKVsxXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgc2VhcmNoIGZvciBmZXRjaGluZyBzdWdnZXN0aW9ucyBvbiBhIGdpdmVuIHNlYXJjaCB0ZXJtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRlcm0gVGhlIHNlYXJjaCB0ZXJtXHJcbiAgICogQHJldHVyblxyXG4gICAqL1xyXG4gIHB1YmxpYyBhdXRvY29tcGxldGUodGVybTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oXHJcbiAgICAgIGAvYXV0b2NvbXBsZXRlP3ByZWZpeD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZXJtKX1gLFxyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VhcmNoQmFzZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBhIFNlYXJjaEZpbHRlciBmb3IgYSBmb3JtIGVsZW1lbnQuIEJhc2VkIG9uIHRoZSB0YXJnZXQgdHlwZXNcclxuICAgKiBpdCdsbCBjcmVhdGUgdGhlIHJpZ2h0IGtpbmQgb2YgZmlsdGVyIHRoYXQgeW91IHRoZW4gY2FuIGFkZCB0byBhIFNlYXJjaFF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZXNcclxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnROYW1lXHJcbiAgICogQHBhcmFtIGVsZW1lbnRWYWx1ZVxyXG4gICAqIEByZXR1cm5zIFNlYXJjaEZpbHRlcltdIEFuIGFycmF5IG9mIHNlYXJjaCBmaWx0ZXJzIG1vc3Qgb2YgdGhlIHRpbWUgY29udGFpbmluZyBvbmx5IG9uZSBlbnRyeSwgYnV0XHJcbiAgICogZm9yIHRhYmxlIGVsZW1lbnRzIHRoaXMgY291bGQgYmUgbW9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTZWFyY2hGaWx0ZXIoXHJcbiAgICB0YXJnZXRUeXBlczogT2JqZWN0VHlwZVtdLFxyXG4gICAgZm9ybUVsZW1lbnROYW1lOiBzdHJpbmcsXHJcbiAgICBlbGVtZW50VmFsdWU6IGFueVxyXG4gICk6IFNlYXJjaEZpbHRlcltdIHtcclxuICAgIGNvbnN0IGZpbHRlcjogU2VhcmNoRmlsdGVyW10gPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlclR5cGU6IFNlYXJjaEZpbHRlclR5cGUgPSB0aGlzLmlkZW50aWZ5U2VhcmNoRmlsdGVyKFxyXG4gICAgICB0YXJnZXRUeXBlcyxcclxuICAgICAgZm9ybUVsZW1lbnROYW1lXHJcbiAgICApO1xyXG4gICAgY29uc3QgZm9ybUVsZW1lbnQgPSB0YXJnZXRUeXBlc1swXS5lbGVtZW50cy5maW5kKGVsID0+IGVsLnFuYW1lID09PSBmb3JtRWxlbWVudE5hbWUpO1xyXG5cclxuICAgIGlmIChlbGVtZW50VmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihmb3JtRWxlbWVudE5hbWUsIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCwgbnVsbClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoZm9ybUVsZW1lbnQgJiYgZm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdwYXRoJykge1xyXG4gICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxyXG4gICAgICAgICAgZm9ybUVsZW1lbnROYW1lLFxyXG4gICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLk1BVENILFxyXG4gICAgICAgICAgZWxlbWVudFZhbHVlXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChlbGVtZW50VmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBjcmVhdGUgZmlsdGVyIGZvciBlbGVtZW50cyB0aGF0IHN1cHBvcnQgcmFuZ2VzIGxpa2UgREFURVRJTUUgYW5kIE5VTUJFUlxyXG4gICAgICAgKi9cclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsZW1lbnRWYWx1ZS5maXJzdFZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgZWxlbWVudFZhbHVlLmZpcnN0VmFsdWUgIT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcclxuICAgICAgICAgICAgZWxlbWVudFZhbHVlLm9wZXJhdG9yLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUuZmlyc3RWYWx1ZSxcclxuICAgICAgICAgICAgZWxlbWVudFZhbHVlLnNlY29uZFZhbHVlLFxyXG4gICAgICAgICAgICBmaWx0ZXJUeXBlLmRhdGV0aW1lID8ge3RpbWU6IGZpbHRlclR5cGUud2l0aHRpbWV9IDogdW5kZWZpbmVkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICgoZmlsdGVyVHlwZS5tdWx0aXNlbGVjdCB8fCBBcnJheS5pc0FycmF5KGVsZW1lbnRWYWx1ZSkpICYmICFmaWx0ZXJUeXBlLnRhYmxlKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBjcmVhdGUgZmlsdGVyIGZvciBtdWx0aXNlbGVjdCBlbGVtZW50cyBsaWtlIENPREVTWVNURU0gYW5kIE9SR0FOSVpBVElPTlxyXG4gICAgICAgKi9cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudFZhbHVlKSAmJiBlbGVtZW50VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxyXG4gICAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTixcclxuICAgICAgICAgICAgZWxlbWVudFZhbHVlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlLnRhYmxlKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBjcmVhdGUgZmlsdGVyKHMpIGZvciB0YWJsZSBlbGVtZW50c1xyXG4gICAgICAgKi9cclxuICAgICAgY29uc3QgcXVlcnlSb3cgPSBlbGVtZW50VmFsdWVbMF07XHJcbiAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5Um93KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICBpZihxdWVyeVJvd1trZXldICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gYCR7Zm9ybUVsZW1lbnROYW1lfS4ke2tleX1gO1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5Um93W2tleV0gaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLm9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XS5zZWNvbmRWYWx1ZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHF1ZXJ5Um93W2tleV0pID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOIDogU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGRlZmF1bHQgd2lsbCB1c2UgZXF1YWxpdHkgb3BlcmF0b3JcclxuICAgICAgICovXHJcbiAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwsXHJcbiAgICAgICAgICBlbGVtZW50VmFsdWVcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWRlbnRpZmllcyBmb3JtIGVsZW1lbnRzIHRoYXQgYXJlIGVuYWJsZWQgdG8gY29udGFpbiBtdWx0aXBsZSB2YWx1ZXNcclxuICAgKiB0cnkgdG8gZmluZCB0aGUgZm9ybSBlbGVtZW50IGluc2lkZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0IHR5cGVzIHRvIGdldCBpdHMgdHlwZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGVbXSB0YXJnZXRUeXBlc1xyXG4gICAqIEBwYXJhbSBzdHJpbmcgZm9ybUVsZW1lbnROYW1lXHJcbiAgICogQHJldHVybiBTZWFyY2hGaWx0ZXJUeXBlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpZGVudGlmeVNlYXJjaEZpbHRlcihcclxuICAgIHRhcmdldFR5cGVzOiBPYmplY3RUeXBlW10sXHJcbiAgICBmb3JtRWxlbWVudE5hbWU6IHN0cmluZ1xyXG4gICk6IFNlYXJjaEZpbHRlclR5cGUge1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgbGV0IG1hdGNoO1xyXG4gICAgd2hpbGUgKCFtYXRjaCAmJiBpIDwgdGFyZ2V0VHlwZXMubGVuZ3RoKSB7XHJcbiAgICAgIG1hdGNoID0gdGFyZ2V0VHlwZXNbaV0uZWxlbWVudHMuZmluZChcclxuICAgICAgICBlbGVtZW50ID0+IGVsZW1lbnQucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZVxyXG4gICAgICApO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbXVsdGlzZWxlY3Q6IHRoaXMuaXNNdWx0aXNlbGVjdFNlYXJjaEZpbHRlcihtYXRjaCksXHJcbiAgICAgIHRhYmxlOiBtYXRjaCAmJiBtYXRjaC50eXBlID09PSAnVEFCTEUnLFxyXG4gICAgICBkYXRldGltZTogbWF0Y2ggJiYgbWF0Y2gudHlwZSA9PT0gJ0RBVEVUSU1FJyxcclxuICAgICAgd2l0aHRpbWU6IG1hdGNoICYmIG1hdGNoLndpdGh0aW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWRlbnRpZmllcyBmb3JtIGVsZW1lbnRzIHRoYXQgYXJlIGVuYWJsZWQgdG8gY29udGFpbiBtdWx0aXBsZSB2YWx1ZXNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFxyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNNdWx0aXNlbGVjdFNlYXJjaEZpbHRlcihmb3JtRWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBmb3JtRWxlbWVudCAmJlxyXG4gICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicgfHxcclxuICAgICAgICBmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgfHxcclxuICAgICAgICAvLyAuLi5cclxuICAgICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1NUUklORycgJiZcclxuICAgICAgICAgIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InKSB8fFxyXG4gICAgICAgIC8vIG11bHRpc2VsZWN0IHJlZmVyZW5jZSBmaWVsZHNcclxuICAgICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1NUUklORycgJiYgZm9ybUVsZW1lbnQubXVsdGlzZWxlY3QpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBTZWFyY2hSZXN1bHQgZnJvbSB0aGUgcmVzcG9uc2Ugc2VudCBieSB0aGUgc2VydmVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYmFja2VuZFJlc3BvbnNlIFNlcnZlciByZXNwb25zZVxyXG4gICAqIEByZXR1cm5UaGUgU2VhcmNoUmVzdWx0IFNlYXJjaFJlc3VsdCBvYmplY3QgY3JlYXRlZCBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2VcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKGJhY2tlbmRSZXNwb25zZSk6IFNlYXJjaFJlc3VsdCB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0KCk7XHJcbiAgICByZXN1bHQuc3VnZ2VzdHMgPSBiYWNrZW5kUmVzcG9uc2Uuc3VnZ2VzdDtcclxuICAgIHJlc3VsdC5maWVsZHMgPSBiYWNrZW5kUmVzcG9uc2UuY29uZmlnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogdXNlIGhpdHMgX2lkIGZpZWxkIGFzIGlkIHByb3BlcnR5LCBiZWNhdXNlIG90aGVyd2lzZSBlbXB0eSByZXN1bHQgaGl0cyB3b3VsZCBub3QgY29udGFpbiBhbiBpZFxyXG4gICAgICovXHJcbiAgICBjb25zdCBoaXRzID0gYmFja2VuZFJlc3BvbnNlLmhpdHMuaGl0cy5tYXAoaCA9PiAoe1xyXG4gICAgICAuLi5oLl9zb3VyY2UsXHJcbiAgICAgIGlkOiBoLl9pZCxcclxuICAgICAgLi4uKGguc25pcHBldHMgJiYge3NuaXBwZXRzOiBoLnNuaXBwZXRzfSksXHJcbiAgICAgIC8vIGhhdmluZyByZXF1ZXN0ZWQgYSByZXNvbHZlZCByZWZlcmVuY2UgKG9wdGlvbnMpIHdlIGFsc28gcGFzcyBgX3JlZmVyZW5jZWAgaW4gdGhlIHJlc3VsdCBpdGVtXHJcbiAgICAgIC4uLihoLnJlZmVyZW5jZXMgJiYge19yZWZlcmVuY2VzOiBoLnJlZmVyZW5jZXN9KSxcclxuICAgICAgLi4uKGguY29udGV4dCAmJiB7Y29udGV4dDogaC5jb250ZXh0fSlcclxuICAgIH0pKTtcclxuXHJcbiAgICByZXN1bHQuY291bnQgPSBiYWNrZW5kUmVzcG9uc2UuaGl0cy50b3RhbDtcclxuICAgIHJlc3VsdC5oaXRzID0gaGl0cyB8fCBbXTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlcyB0aGUgUmVzdWwgdEZpZWxkIERlZmluaXRpb24gQ29uZmlnXHJcbiAgICpcclxuICAgKiBAcGFyYW0gU2VhcmNoUXVlcnkgcXVlcnlcclxuICAgKiBAcmV0dXJuICh7dHlwZTogT2JqZWN0VHlwZTsgY29udGV4dFR5cGU6IE9iamVjdFR5cGV9KVxyXG4gICAqL1xyXG4gIGdldFJlc3VsdEZpZWxkRGVmaW5pdGlvbkNvbmZpZyhxdWVyeTogU2VhcmNoUXVlcnkpIHtcclxuICAgIGNvbnN0IHR5cGUgPSAocXVlcnkudHlwZXMgfHwgW10pLmxlbmd0aCA9PT0gMSA/IHF1ZXJ5LnR5cGVzWzBdIDogbnVsbDtcclxuICAgIGNvbnN0IGNvbnRleHRUeXBlID1cclxuICAgICAgKHF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcyB8fCBbXSkubGVuZ3RoID09PSAxXHJcbiAgICAgICAgPyBxdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICByZXR1cm4ge3R5cGUsIGNvbnRleHRUeXBlfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsXHJcbiAgKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0eXBlTmFtZTogdHlwZSA/IHR5cGUucW5hbWUgOiAnc3lzb2JqZWN0JyxcclxuICAgICAgY29udGV4dFR5cGVOYW1lOiB0eXBlICYmIGNvbnRleHRUeXBlID8gY29udGV4dFR5cGUucW5hbWUgOiB1bmRlZmluZWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSByZXN1bHQgZmllbGQgZGVmaW5pdGlvbiBmb3IgYSBnaXZlbiBvYmplY3QgdHlwZVxyXG4gICAqIFVTRVI6IChkZWZhdWx0KSB0aGUgcmVzdWx0IGxpc3QgY29uZmlndXJhdGlvbiBzYXZlZCBieSB0aGUgY3VycmVudCB1c2VyXHJcbiAgICogREVGQVVMVDogdGhlIGRlZmF1bHQgcmVzdWx0IGxpc3QgY29uZmlndXJhdGlvbiAoYWxzbyByZXR1cm5lZCB3aGVuIHRoZXJlIGlzIG5vIHVzZXIgY29uZmlndXJhdGlvbilcclxuICAgKiBBTEw6IGFsbCBhdmFpbGFibGUgcmVzdWx0IGZpZWxkcyBmb3IgdGhlIGdpdmVuIHR5cGUgKGFuZCBjb250ZXh0KVxyXG4gICAqXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIHR5cGUgVGhlIG9iamVjdCB0eXBlXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIGNvbnRleHRUeXBlIE9iamVjdCB0eXBlIHRhcmdldCB0eXBlcyBhbGxvd2VkIGNvbnRleHQgdHlwZVxyXG4gICAqIEBwYXJhbSBtb2RlIFRoZSByZXN1bHQgbGlzdHMgY29uZmlndXJhdGlvbiBtb2RlOlxyXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxGaWVsZERlZmluaXRpb24+XHJcbiAgICovXHJcbiAgZmV0Y2hSZXN1bHRGaWVsZERlZmluaXRpb24oXHJcbiAgICB0eXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcclxuICAgIGNvbnRleHRUeXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcclxuICAgIG1vZGVcclxuICApIHtcclxuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgICAgdHlwZSxcclxuICAgICAgY29udGV4dFR5cGVcclxuICAgICk7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL3VzZXIvY29uZmlnL3Jlc3VsdC8ke3R5cGVOYW1lfWAsIHtcclxuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZSxcclxuICAgICAgbW9kZVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKHVybClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKFxyXG4gICAgICAgICAgKHJlczogYW55KSA9PlxyXG4gICAgICAgICAgICBuZXcgRmllbGREZWZpbml0aW9uKFxyXG4gICAgICAgICAgICAgIHJlcy5lbGVtZW50cyxcclxuICAgICAgICAgICAgICByZXMuc29ydG9yZGVyLFxyXG4gICAgICAgICAgICAgIHJlcy5ncm91cG9yZGVyLFxyXG4gICAgICAgICAgICAgIHJlcy5waW5uZWQsXHJcbiAgICAgICAgICAgICAgcmVzLm1vZGVcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmVzIGEgY29sdW1uIGRlZmluaXRpb24gYXMgcmVzdWx0IG9yIGNvbW1vbiByZXN1bHQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgdHlwZSBUaGUgb2JqZWN0IHR5cGVcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgY29udGV4dFR5cGUgT2JqZWN0IHR5cGUgdGFyZ2V0IHR5cGVzIGFsbG93ZWQgY29udGV4dCB0eXBlXHJcbiAgICogQHBhcmFtIEZpZWxkRGVmaW5pdGlvbiBkYXRhIFRoZSByZXN1bHQgbGlzdCBjb25maWd1cmF0aW9uIHRvIGJlIHBlcnNpc3RlZFxyXG4gICAqIEBwYXJhbSBib29sZWFuIGNvbW1vbiBGbGFnIGVuYWJsZXMgdG8gc2V0IGNvbmZpZyBhcyBkZWZhdWx0IC8gY29tbW9uIHJlc3VsdFxyXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgc2F2ZVJlc3VsdEZpZWxkRGVmaW5pdGlvbihcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgZGF0YTogRmllbGREZWZpbml0aW9uLFxyXG4gICAgY29tbW9uID0gZmFsc2VcclxuICApIHtcclxuICAgIGNvbnN0IGJhc2VVcmkgPSBjb21tb25cclxuICAgICAgPyAnL3VzZXIvY29uZmlnL2NvbW1vbnJlc3VsdC8nXHJcbiAgICAgIDogJy91c2VyL2NvbmZpZy9yZXN1bHQvJztcclxuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgICAgdHlwZSxcclxuICAgICAgY29udGV4dFR5cGVcclxuICAgICk7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShiYXNlVXJpICsgdHlwZU5hbWUsIHtcclxuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodXJsLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBjb2x1bW4gZGVmaW5pdGlvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCB0eXBlIFRoZSBvYmplY3QgdHlwZVxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCBjb250ZXh0VHlwZSBPYmplY3QgdHlwZSB0YXJnZXQgdHlwZXMgYWxsb3dlZCBjb250ZXh0IHR5cGVcclxuICAgKiBAcmV0dXJuIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHJlbW92ZVJlc3VsdEZpZWxkRGVmaW5pdGlvbihcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsXHJcbiAgKSB7XHJcbiAgICBjb25zdCB7dHlwZU5hbWUsIGNvbnRleHRUeXBlTmFtZX0gPSB0aGlzLnJlc29sdmVDb25maWdUeXBlTmFtZXMoXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIGNvbnRleHRUeXBlXHJcbiAgICApO1xyXG4gICAgY29uc3QgdXJsID0gVXRpbHMuYnVpbGRVcmkoYC91c2VyL2NvbmZpZy9yZXN1bHQvJHt0eXBlTmFtZX1gLCB7XHJcbiAgICAgIGNvbnRleHR0eXBlOiBjb250ZXh0VHlwZU5hbWVcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHZhbHVlIHRvIGJlIGFkZGVkIHRvIGEgZm9ybSBlbGVtZW50IGJ5IGV4dHJhY3RpbmcgaXQgZnJvbSBhXHJcbiAgICogc2VhcmNoIGZpbHRlci4gVGhlIGtpbmQgb2YgdmFsdWUgZGlmZmVycyBiYXNlZCBvbiB0aGUgZm9ybSBlbGVtZW50cyB0eXBlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbHRlciBUaGUgZmlsdGVyIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFR5cGUgRm9ybSBlbGVtZW50cyB0eXBlICgnU1RSSU5HJywgJ0RBVEUnLCAnQ09ERVNZU1RFTScsIC4uLilcclxuICAgKiBAcmV0dXJucyB0aGUgZXh0cmFjdGVkIHZhbHVlXHJcbiAgICovXHJcbiAgZmlsdGVyVG9FbGVtZW50VmFsdWUoZmlsdGVyOiBTZWFyY2hGaWx0ZXIsIGZvcm1FbGVtZW50VHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIC8vIHR5cGVzIHRoYXQgc3VwcG9ydCByYW5nZXNcclxuICAgICAgaWYgKChmb3JtRWxlbWVudFR5cGUgPT09ICdOVU1CRVInIHx8IGZvcm1FbGVtZW50VHlwZSA9PT0gJ0RBVEVUSU1FJykgJiYgZmlsdGVyLmZpcnN0VmFsdWUpIHtcclxuICAgICAgICB2YWx1ZSA9IG5ldyBSYW5nZVZhbHVlKFxyXG4gICAgICAgICAgZmlsdGVyLm9wZXJhdG9yLFxyXG4gICAgICAgICAgZmlsdGVyLmZpcnN0VmFsdWUsXHJcbiAgICAgICAgICBmaWx0ZXIuc2Vjb25kVmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbHVlID0gZmlsdGVyLmZpcnN0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSB0YWJsZSB2YWx1ZSBieSBleHRyYWN0aW5nIHRoZSBkYXRhIGZyb20gdGhlIGNvcnJlc3BvbmRpbmdcclxuICAgKiBzZWFyY2ggZmlsdGVycy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBleHRyYWN0IHZhbHVlIGZyb21cclxuICAgKiBAcGFyYW0gdGFibGVFbGVtZW50cyB0aGUgZm9ybSBlbGVtZW50cyBvZiB0aGUgdGFibGVcclxuICAgKiBAcmV0dXJucyB0aGUgdGFibGUgdmFsdWUgZXh0cmFjdGVkIGZyb20gYWxsIGZpbHRlcnNcclxuICAgKi9cclxuICB0YWJsZUZpbHRlcnNUb0VsZW1lbnRWYWx1ZShmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSwgdGFibGVFbGVtZW50cyl7XHJcbiAgICBsZXQgdmFsdWUgPSB7fTtcclxuICAgIGZpbHRlcnMuZm9yRWFjaChmID0+IHtcclxuICAgICAgbGV0IGtleSA9IHRhYmxlRWxlbWVudHMuZmluZChlID0+IGUucW5hbWUgPT09IGYucHJvcGVydHkpLm5hbWU7XHJcbiAgICAgIGxldCB0eXBlID0gdGFibGVFbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gZi5wcm9wZXJ0eSkudHlwZTtcclxuICAgICAgdmFsdWVba2V5XSA9IHRoaXMuZmlsdGVyVG9FbGVtZW50VmFsdWUoZiwgdHlwZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBbdmFsdWVdO1xyXG4gIH1cclxufVxyXG4iXX0=
462
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBcUIsRUFDckIsT0FBdUIsRUFDdkIsTUFBYztRQUZkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEtBQUssWUFB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QUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNoRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixDQUFDOzs7WUF6bEJGLFVBQVU7OztZQWRILGFBQWE7WUFGYixjQUFjO1lBQ2QsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gJy4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtSYW5nZVZhbHVlfSBmcm9tICcuLi8uLi9tb2RlbC9yYW5nZS12YWx1ZS5tb2RlbCc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7U2VhcmNoRmlsdGVyVHlwZX0gZnJvbSAnLi9zZWFyY2gtZmlsdGVyLXR5cGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICBGaWVsZERlZmluaXRpb24sXHJcbiAgU2VhcmNoRmlsdGVyLFxyXG4gIFNlYXJjaFF1ZXJ5LFxyXG4gIFNlYXJjaFJlc3VsdCxcclxuICBTZWFyY2hTdGF0ZVxyXG59IGZyb20gJy4vc2VhcmNoLXF1ZXJ5Lm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIFNlYXJjaCBTZXJ2aWNlc1xyXG4gKiBTZWUge0BsaW5rIFNlYXJjaFF1ZXJ5fSBmb3IgUXVlcnkgRGVmaW5pdGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgUmFuZ2VWYWx1ZSBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiB2YWx1ZSBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB0byBiZVxyXG4gICAqIEByZXR1cm5zIFJhbmdlVmFsdWVcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRvUmFuZ2VWYWx1ZSh2YWx1ZTogYW55KTogUmFuZ2VWYWx1ZSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSAmJlxyXG4gICAgICAgIHZhbHVlLmhhc093blByb3BlcnR5KCdmaXJzdFZhbHVlJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZVZhbHVlKFxyXG4gICAgICAgICAgdmFsdWUub3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgdmFsdWUuc2Vjb25kVmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZnJvbWF0ZWQgc2VhcmNoIFF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlcclxuICAgKiBAcmV0dXJucyBTZWFyY2hRdWVyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZFF1ZXJ5KHF1ZXJ5OiBhbnkpOiBTZWFyY2hRdWVyeSB7XHJcbiAgICBsZXQgcTogU2VhcmNoUXVlcnk7XHJcbiAgICBpZiAocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xyXG4gICAgICBxID0gcXVlcnk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcU9iajtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGlmIHdlIGdvdCBhIHN0cmluZywgd2UnbGwgYXNzdW1lIHRoYXQgaXQncyBhIEpTT05cclxuICAgICAgICovXHJcbiAgICAgIGlmICh0eXBlb2YgcXVlcnkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcU9iaiA9IEpTT04ucGFyc2UocXVlcnkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHFPYmogPSBxdWVyeTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xyXG4gICAgICBxLnRlcm0gPSBxT2JqLnRlcm07XHJcbiAgICAgIGlmIChxT2JqLmZpbHRlcnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhxT2JqLmZpbHRlcnMpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgICBxLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICBrLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS5vLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS52MSxcclxuICAgICAgICAgICAgICBxT2JqLmZpbHRlcnNba10udjJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai50eXBlcykge1xyXG4gICAgICAgIHFPYmoudHlwZXMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai5jb250ZXh0Zm9sZGVydHlwZXMpIHtcclxuICAgICAgICBxT2JqLmNvbnRleHRmb2xkZXJ0eXBlcy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHQgPT09ICdzeXNyb290Jykge1xyXG4gICAgICAgICAgICAvLyAnc3lzcm9vdCcgaXMgbm90IGEgcmVhbCBvYmplY3QgdHlwZSwgc28gd2UgaGF2ZSB0byBjcmVhdGUgYSBmYWtlIHR5cGUuXHJcbiAgICAgICAgICAgIGNvbnN0IHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSA9IG5ldyBPYmplY3RUeXBlKHtcclxuICAgICAgICAgICAgICBpZDogJ2EnLFxyXG4gICAgICAgICAgICAgIGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBuYW1lOiAnc3lzcm9vdCcsXHJcbiAgICAgICAgICAgICAgcW5hbWU6ICdzeXNyb290JyxcclxuICAgICAgICAgICAgICBsYWJlbDogJ3N5c3Jvb3QnLFxyXG4gICAgICAgICAgICAgIGlzY29udGV4dGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBhYnN0cmFjdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgICAgICAgICBzaGFyZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG1pbmZpbGVzOiAwLFxyXG4gICAgICAgICAgICAgIG1heGZpbGVzOiAxXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUodCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHEuZmllbGRzID0gcU9iai5maWVsZHM7XHJcbiAgICAgIGlmIChxT2JqLm9wdGlvbnMpIHtcclxuICAgICAgICBxLnN1Z2dlc3QgPSBxT2JqLm9wdGlvbnMuc3VnZ2VzdCB8fCBmYWxzZTtcclxuICAgICAgICBxLmV4cGVydE1vZGUgPSBxT2JqLm9wdGlvbnMuZXhwZXJ0bW9kZSB8fCBmYWxzZTtcclxuICAgICAgICBxLnNjb3BlID0gcU9iai5vcHRpb25zLnNjb3BlO1xyXG4gICAgICAgIHEucmVzb2x2ZVJlZmVyZW5jZSA9IHFPYmoub3B0aW9ucy5yZXNvbHZlUmVmZXJlbmNlIHx8IHRydWU7XHJcbiAgICAgICAgcS5zZWFyY2hNb2RlID1cclxuICAgICAgICAgIHFPYmoub3B0aW9ucy5zZWFyY2htb2RlIHx8IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgcXVlcnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+XHJcbiAgICovXHJcbiAgcHVibGljIHNlYXJjaChxdWVyeTogU2VhcmNoUXVlcnkpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5LmdldFF1ZXJ5SnNvbigpKS5waXBlKFxyXG4gICAgICBtYXAocmVzID0+IHRoaXMuY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKHJlcykpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgU2VhcmNoIHJlc3VsdHNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VhcmNoU3RhdGUocXVlcnk6IGFueSk6IE9ic2VydmFibGU8U2VhcmNoU3RhdGU+IHtcclxuICAgIFxyXG4gICAgaWYocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xyXG4gICAgICBxdWVyeSA9IHF1ZXJ5LmdldFF1ZXJ5SnNvbigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5LCB0cnVlKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBuZXcgU2VhcmNoU3RhdGUoKTtcclxuICAgICAgICBzdGF0ZS5jb3VudCA9IHJlcy5oaXRzLnRvdGFsO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYmFzZVBhcmFtID0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba107XHJcbiAgICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbnMgPSByZXMuYWdncmVnYXRpb25zW2Jhc2VQYXJhbV1cclxuICAgICAgICAgICAgPyByZXMuYWdncmVnYXRpb25zW2Jhc2VQYXJhbV0uYnVja2V0c1xyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgYWdncmVnYXRpb25zLmZvckVhY2goYWdncmVnYXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7a2V5LCBkb2NfY291bnQsIGNvbnRleHRmb2xkZXJ0eXBlfSA9IGFnZ3JlZ2F0aW9uO1xyXG4gICAgICAgICAgICBzdGF0ZS5hZGRBZ2dyZWdhdGlvbnMoYmFzZVBhcmFtLCBrZXksIGRvY19jb3VudCwgYWdncmVnYXRpb24pO1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogdHlwZSBhZ2dyZWdhdGlvbnMgbWF5IGFsc28gY29udGFpbiBidWNrZXRzIGZvciB0aGVpciBjb250ZXh0IHR5cGVzXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgYmFzZVBhcmFtID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFICYmXHJcbiAgICAgICAgICAgICAgY29udGV4dGZvbGRlcnR5cGVcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dGZvbGRlcnR5cGUuYnVja2V0cy5mb3JFYWNoKGN0eEFnZyA9PiB7XHJcbiAgICAgICAgICAgICAgICBzdGF0ZS5hZGRBZ2dyZWdhdGlvbnMoXHJcbiAgICAgICAgICAgICAgICAgICdjb250ZXh0dHlwZScsXHJcbiAgICAgICAgICAgICAgICAgIGN0eEFnZy5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGN0eEFnZy5kb2NfY291bnQsXHJcbiAgICAgICAgICAgICAgICAgIGN0eEFnZ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBzdGF0ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgcGFydCBvZiBhIHF1ZXJpZXMgcmVzdWx0LiBUaGlzIGNhbiBiZSB1c2VkIGZvciBwYWdpbmcgb2YgcmVzdWx0c1xyXG4gICAqIG9yIGxhenkgbG9hZGluZyBsYXJnZSByZXN1bHRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBiZSBleGVjdXRlZFxyXG4gICAqIEBwYXJhbSBmcm9tSW5kZXggVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gZmV0Y2ggcmVzdWx0c1xyXG4gICAqIEBwYXJhbSBjaHVua1NpemUgU2l6ZSBvZiB0aGUgY2h1bmsgdG8gYmUgZmV0Y2hlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDaHVua2VkUmVzdWx0KFxyXG4gICAgcXVlcnk6IFNlYXJjaFF1ZXJ5LFxyXG4gICAgZnJvbUluZGV4OiBudW1iZXIsXHJcbiAgICBjaHVua1NpemU6IG51bWJlclxyXG4gICk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PiB7XHJcbiAgICBjb25zdCBxID0gcXVlcnkuZ2V0UXVlcnlKc29uKCk7XHJcblxyXG4gICAgcS5mcm9tID0gZnJvbUluZGV4O1xyXG4gICAgY29uc3QgcXVlcnlVcmkgPSBgc2VhcmNoIWNodW5rOiR7Y2h1bmtTaXplfSEke0pTT04uc3RyaW5naWZ5KHEpfWA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShxdWVyeVVyaSwgKCkgPT5cclxuICAgICAgdGhpcy5leGVjdXRlUXVlcnkocSwgZmFsc2UsIGNodW5rU2l6ZSkucGlwZShcclxuICAgICAgICBtYXAocmVzID0+IHRoaXMuY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKHJlcykpXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlKc29uIFRoZSBxdWVyeSBKU09OIHRvIGJlIGV4ZWN1dGVkXHJcbiAgICogQHBhcmFtIGFnZ3JlZ2F0ZVNlYXJjaCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gZXhlY3V0ZSBhbiBhZ2dyZWdhdGlvbiBzZWFyY2ggKG5vIGFjdHVhbCByZXN1bHRzKVxyXG4gICAqIEBwYXJhbSBjdXN0b21TaXplIEN1c3RvbSBudW1iZXIgb2YgcmVzdWx0cyB0byBiZSBmZXRjaGVkLCBpZiBub3Qgc2V0IHRoZSBkZWZhdWx0IHNpemUgd2lsbCBiZSBhcHBsaWVkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcHVibGljIGV4ZWN1dGVRdWVyeShcclxuICAgIHF1ZXJ5SnNvbjogYW55LFxyXG4gICAgYWdncmVnYXRlU2VhcmNoPzogYm9vbGVhbixcclxuICAgIGN1c3RvbVNpemU/OiBudW1iZXJcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVyaTogc3RyaW5nO1xyXG4gICAgbGV0IHF1ZXJ5ID0gcXVlcnlKc29uO1xyXG4gICAgaWYgKGFnZ3JlZ2F0ZVNlYXJjaCkge1xyXG4gICAgICB1cmkgPSBgL2FnZ3JlZ2F0ZWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzaXplID0gY3VzdG9tU2l6ZSB8fCB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC5saW1pdCcpO1xyXG4gICAgICB1cmkgPSBgLz9zaXplPSR7c2l6ZX1gO1xyXG4gICAgfVxyXG4gICAgcXVlcnkub3B0aW9ucyA9IHsuLi5xdWVyeS5vcHRpb25zLCB0cmFja3RvdGFsaGl0czogdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gudHJhY2tUb3RhbEhpdHMnKSB8fCBmYWxzZSwgdGltZXpvbmU6IFV0aWxzLmdldFRpbWV6b25lT2Zmc2V0KCl9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSArIEpTT04uc3RyaW5naWZ5KHF1ZXJ5KSwgKCkgPT4gdGhpcy5iYWNrZW5kLnBvc3QodXJpLCBxdWVyeSwgdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWRzIGEgY3N2LWZpbGUgb2YgdGhlIHJlc3VsdHMgb2YgYSBnaXZlbiBzZWFyY2gtcXVlcnlcclxuICAgKlxyXG4gICAqIEBwYXJhbSBxdWVyeUpzb24gVGhlIHF1ZXJ5IEpTT04gdG8gYmUgZXhlY3V0ZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBwdWJsaWMgZG93bmxvYWRDc3ZGcm9tUXVlcnkocXVlcnlKc29uOiBvYmplY3QpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdCgnL2V4cG9ydCcsIHF1ZXJ5SnNvbiwgdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKSwge1xyXG4gICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlcy5ib2R5XSwge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04J1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIHRoaXMuZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlcykpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXM6IEh0dHBSZXNwb25zZTxhbnk+KSB7XHJcbiAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIgPVxyXG4gICAgICByZXMuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKSB8fCAnJztcclxuICAgIHJldHVybiBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIuc3BsaXQoJ2ZpbGVuYW1lPScpWzFdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBzZWFyY2ggZm9yIGZldGNoaW5nIHN1Z2dlc3Rpb25zIG9uIGEgZ2l2ZW4gc2VhcmNoIHRlcm0uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGVybSBUaGUgc2VhcmNoIHRlcm1cclxuICAgKiBAcmV0dXJuXHJcbiAgICovXHJcbiAgcHVibGljIGF1dG9jb21wbGV0ZSh0ZXJtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0SnNvbihcclxuICAgICAgYC9hdXRvY29tcGxldGU/cHJlZml4PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pfWAsXHJcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gY3JlYXRlIGEgU2VhcmNoRmlsdGVyIGZvciBhIGZvcm0gZWxlbWVudC4gQmFzZWQgb24gdGhlIHRhcmdldCB0eXBlc1xyXG4gICAqIGl0J2xsIGNyZWF0ZSB0aGUgcmlnaHQga2luZCBvZiBmaWx0ZXIgdGhhdCB5b3UgdGhlbiBjYW4gYWRkIHRvIGEgU2VhcmNoUXVlcnlcclxuICAgKlxyXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlc1xyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudE5hbWVcclxuICAgKiBAcGFyYW0gZWxlbWVudFZhbHVlXHJcbiAgICogQHJldHVybnMgU2VhcmNoRmlsdGVyW10gQW4gYXJyYXkgb2Ygc2VhcmNoIGZpbHRlcnMgbW9zdCBvZiB0aGUgdGltZSBjb250YWluaW5nIG9ubHkgb25lIGVudHJ5LCBidXRcclxuICAgKiBmb3IgdGFibGUgZWxlbWVudHMgdGhpcyBjb3VsZCBiZSBtb3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldFNlYXJjaEZpbHRlcihcclxuICAgIHRhcmdldFR5cGVzOiBPYmplY3RUeXBlW10sXHJcbiAgICBmb3JtRWxlbWVudE5hbWU6IHN0cmluZyxcclxuICAgIGVsZW1lbnRWYWx1ZTogYW55XHJcbiAgKTogU2VhcmNoRmlsdGVyW10ge1xyXG4gICAgY29uc3QgZmlsdGVyOiBTZWFyY2hGaWx0ZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyVHlwZTogU2VhcmNoRmlsdGVyVHlwZSA9IHRoaXMuaWRlbnRpZnlTZWFyY2hGaWx0ZXIoXHJcbiAgICAgIHRhcmdldFR5cGVzLFxyXG4gICAgICBmb3JtRWxlbWVudE5hbWVcclxuICAgICk7XHJcbiAgICBjb25zdCBmb3JtRWxlbWVudCA9IHRhcmdldFR5cGVzWzBdLmVsZW1lbnRzLmZpbmQoZWwgPT4gZWwucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZSk7XHJcblxyXG4gICAgaWYgKGVsZW1lbnRWYWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKGZvcm1FbGVtZW50TmFtZSwgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMLCBudWxsKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChmb3JtRWxlbWVudCAmJiBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3BhdGgnKSB7XHJcbiAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTUFUQ0gsXHJcbiAgICAgICAgICBlbGVtZW50VmFsdWVcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnRWYWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIgZm9yIGVsZW1lbnRzIHRoYXQgc3VwcG9ydCByYW5nZXMgbGlrZSBEQVRFVElNRSBhbmQgTlVNQkVSXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZWxlbWVudFZhbHVlLmZpcnN0VmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICBlbGVtZW50VmFsdWUuZmlyc3RWYWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgZm9ybUVsZW1lbnROYW1lLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUub3BlcmF0b3IsXHJcbiAgICAgICAgICAgIGVsZW1lbnRWYWx1ZS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUuc2Vjb25kVmFsdWUsXHJcbiAgICAgICAgICAgIGZpbHRlclR5cGUuZGF0ZXRpbWUgPyB7dGltZTogZmlsdGVyVHlwZS53aXRodGltZX0gOiB1bmRlZmluZWRcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKChmaWx0ZXJUeXBlLm11bHRpc2VsZWN0IHx8IEFycmF5LmlzQXJyYXkoZWxlbWVudFZhbHVlKSkgJiYgIWZpbHRlclR5cGUudGFibGUpIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIgZm9yIG11bHRpc2VsZWN0IGVsZW1lbnRzIGxpa2UgQ09ERVNZU1RFTSBhbmQgT1JHQU5JWkFUSU9OXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50VmFsdWUpICYmIGVsZW1lbnRWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcclxuICAgICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWVcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUudGFibGUpIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIocykgZm9yIHRhYmxlIGVsZW1lbnRzXHJcbiAgICAgICAqL1xyXG4gICAgICBjb25zdCBxdWVyeVJvdyA9IGVsZW1lbnRWYWx1ZVswXTtcclxuICAgICAgT2JqZWN0LmtleXMocXVlcnlSb3cpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIGlmKHF1ZXJ5Um93W2tleV0gIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgJHtmb3JtRWxlbWVudE5hbWV9LiR7a2V5fWA7XHJcbiAgICAgICAgICBpZiAocXVlcnlSb3dba2V5XSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgICAgIHF1ZXJ5Um93W2tleV0ub3BlcmF0b3IsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLmZpcnN0VmFsdWUsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLnNlY29uZFZhbHVlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocXVlcnlSb3dba2V5XSkgPyBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU4gOiBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvKipcclxuICAgICAgICogZGVmYXVsdCB3aWxsIHVzZSBlcXVhbGl0eSBvcGVyYXRvclxyXG4gICAgICAgKi9cclxuICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcclxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCxcclxuICAgICAgICAgIGVsZW1lbnRWYWx1ZVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWx0ZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpZGVudGlmaWVzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgZW5hYmxlZCB0byBjb250YWluIG11bHRpcGxlIHZhbHVlc1xyXG4gICAqIHRyeSB0byBmaW5kIHRoZSBmb3JtIGVsZW1lbnQgaW5zaWRlIG9mIHRoZSBwcm92aWRlZCBvYmplY3QgdHlwZXMgdG8gZ2V0IGl0cyB0eXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZVtdIHRhcmdldFR5cGVzXHJcbiAgICogQHBhcmFtIHN0cmluZyBmb3JtRWxlbWVudE5hbWVcclxuICAgKiBAcmV0dXJuIFNlYXJjaEZpbHRlclR5cGVcclxuICAgKi9cclxuICBwcml2YXRlIGlkZW50aWZ5U2VhcmNoRmlsdGVyKFxyXG4gICAgdGFyZ2V0VHlwZXM6IE9iamVjdFR5cGVbXSxcclxuICAgIGZvcm1FbGVtZW50TmFtZTogc3RyaW5nXHJcbiAgKTogU2VhcmNoRmlsdGVyVHlwZSB7XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBsZXQgbWF0Y2g7XHJcbiAgICB3aGlsZSAoIW1hdGNoICYmIGkgPCB0YXJnZXRUeXBlcy5sZW5ndGgpIHtcclxuICAgICAgbWF0Y2ggPSB0YXJnZXRUeXBlc1tpXS5lbGVtZW50cy5maW5kKFxyXG4gICAgICAgIGVsZW1lbnQgPT4gZWxlbWVudC5xbmFtZSA9PT0gZm9ybUVsZW1lbnROYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtdWx0aXNlbGVjdDogdGhpcy5pc011bHRpc2VsZWN0U2VhcmNoRmlsdGVyKG1hdGNoKSxcclxuICAgICAgdGFibGU6IG1hdGNoICYmIG1hdGNoLnR5cGUgPT09ICdUQUJMRScsXHJcbiAgICAgIGRhdGV0aW1lOiBtYXRjaCAmJiBtYXRjaC50eXBlID09PSAnREFURVRJTUUnLFxyXG4gICAgICB3aXRodGltZTogbWF0Y2ggJiYgbWF0Y2gud2l0aHRpbWVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpZGVudGlmaWVzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgZW5hYmxlZCB0byBjb250YWluIG11bHRpcGxlIHZhbHVlc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50XHJcbiAgICogQHJldHVybiBib29sZWFuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc011bHRpc2VsZWN0U2VhcmNoRmlsdGVyKGZvcm1FbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGZvcm1FbGVtZW50ICYmXHJcbiAgICAgIChmb3JtRWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fFxyXG4gICAgICAgIGZvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyB8fFxyXG4gICAgICAgIC8vIC4uLlxyXG4gICAgICAgIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJlxyXG4gICAgICAgICAgZm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcicpIHx8XHJcbiAgICAgICAgLy8gbXVsdGlzZWxlY3QgcmVmZXJlbmNlIGZpZWxkc1xyXG4gICAgICAgIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJiBmb3JtRWxlbWVudC5tdWx0aXNlbGVjdCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIFNlYXJjaFJlc3VsdCBmcm9tIHRoZSByZXNwb25zZSBzZW50IGJ5IHRoZSBzZXJ2ZXJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBiYWNrZW5kUmVzcG9uc2UgU2VydmVyIHJlc3BvbnNlXHJcbiAgICogQHJldHVyblRoZSBTZWFyY2hSZXN1bHQgU2VhcmNoUmVzdWx0IG9iamVjdCBjcmVhdGVkIGZyb20gdGhlIHNlcnZlciByZXNwb25zZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVSZXN1bHRGcm9tUmVzcG9uc2UoYmFja2VuZFJlc3BvbnNlKTogU2VhcmNoUmVzdWx0IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQoKTtcclxuICAgIHJlc3VsdC5zdWdnZXN0cyA9IGJhY2tlbmRSZXNwb25zZS5zdWdnZXN0O1xyXG4gICAgcmVzdWx0LmZpZWxkcyA9IGJhY2tlbmRSZXNwb25zZS5jb25maWc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1c2UgaGl0cyBfaWQgZmllbGQgYXMgaWQgcHJvcGVydHksIGJlY2F1c2Ugb3RoZXJ3aXNlIGVtcHR5IHJlc3VsdCBoaXRzIHdvdWxkIG5vdCBjb250YWluIGFuIGlkXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IGhpdHMgPSBiYWNrZW5kUmVzcG9uc2UuaGl0cy5oaXRzLm1hcChoID0+ICh7XHJcbiAgICAgIC4uLmguX3NvdXJjZSxcclxuICAgICAgaWQ6IGguX2lkLFxyXG4gICAgICAuLi4oaC5zbmlwcGV0cyAmJiB7c25pcHBldHM6IGguc25pcHBldHN9KSxcclxuICAgICAgLy8gaGF2aW5nIHJlcXVlc3RlZCBhIHJlc29sdmVkIHJlZmVyZW5jZSAob3B0aW9ucykgd2UgYWxzbyBwYXNzIGBfcmVmZXJlbmNlYCBpbiB0aGUgcmVzdWx0IGl0ZW1cclxuICAgICAgLi4uKGgucmVmZXJlbmNlcyAmJiB7X3JlZmVyZW5jZXM6IGgucmVmZXJlbmNlc30pLFxyXG4gICAgICAuLi4oaC5jb250ZXh0ICYmIHtjb250ZXh0OiBoLmNvbnRleHR9KVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHJlc3VsdC5jb3VudCA9IGJhY2tlbmRSZXNwb25zZS5oaXRzLnRvdGFsO1xyXG4gICAgcmVzdWx0LmhpdHMgPSBoaXRzIHx8IFtdO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3ZpZGVzIHRoZSBSZXN1bCB0RmllbGQgRGVmaW5pdGlvbiBDb25maWdcclxuICAgKlxyXG4gICAqIEBwYXJhbSBTZWFyY2hRdWVyeSBxdWVyeVxyXG4gICAqIEByZXR1cm4gKHt0eXBlOiBPYmplY3RUeXBlOyBjb250ZXh0VHlwZTogT2JqZWN0VHlwZX0pXHJcbiAgICovXHJcbiAgZ2V0UmVzdWx0RmllbGREZWZpbml0aW9uQ29uZmlnKHF1ZXJ5OiBTZWFyY2hRdWVyeSkge1xyXG4gICAgY29uc3QgdHlwZSA9IChxdWVyeS50eXBlcyB8fCBbXSkubGVuZ3RoID09PSAxID8gcXVlcnkudHlwZXNbMF0gOiBudWxsO1xyXG4gICAgY29uc3QgY29udGV4dFR5cGUgPVxyXG4gICAgICAocXVlcnkuY29udGV4dEZvbGRlclR5cGVzIHx8IFtdKS5sZW5ndGggPT09IDFcclxuICAgICAgICA/IHF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIHJldHVybiB7dHlwZSwgY29udGV4dFR5cGV9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxyXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGxcclxuICApIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHR5cGVOYW1lOiB0eXBlID8gdHlwZS5xbmFtZSA6ICdzeXNvYmplY3QnLFxyXG4gICAgICBjb250ZXh0VHlwZU5hbWU6IHR5cGUgJiYgY29udGV4dFR5cGUgPyBjb250ZXh0VHlwZS5xbmFtZSA6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHJlc3VsdCBmaWVsZCBkZWZpbml0aW9uIGZvciBhIGdpdmVuIG9iamVjdCB0eXBlXHJcbiAgICogVVNFUjogKGRlZmF1bHQpIHRoZSByZXN1bHQgbGlzdCBjb25maWd1cmF0aW9uIHNhdmVkIGJ5IHRoZSBjdXJyZW50IHVzZXJcclxuICAgKiBERUZBVUxUOiB0aGUgZGVmYXVsdCByZXN1bHQgbGlzdCBjb25maWd1cmF0aW9uIChhbHNvIHJldHVybmVkIHdoZW4gdGhlcmUgaXMgbm8gdXNlciBjb25maWd1cmF0aW9uKVxyXG4gICAqIEFMTDogYWxsIGF2YWlsYWJsZSByZXN1bHQgZmllbGRzIGZvciB0aGUgZ2l2ZW4gdHlwZSAoYW5kIGNvbnRleHQpXHJcbiAgICpcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgdHlwZSBUaGUgb2JqZWN0IHR5cGVcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgY29udGV4dFR5cGUgT2JqZWN0IHR5cGUgdGFyZ2V0IHR5cGVzIGFsbG93ZWQgY29udGV4dCB0eXBlXHJcbiAgICogQHBhcmFtIG1vZGUgVGhlIHJlc3VsdCBsaXN0cyBjb25maWd1cmF0aW9uIG1vZGU6XHJcbiAgICogQHJldHVybiBPYnNlcnZhYmxlPEZpZWxkRGVmaW5pdGlvbj5cclxuICAgKi9cclxuICBmZXRjaFJlc3VsdEZpZWxkRGVmaW5pdGlvbihcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgbW9kZVxyXG4gICkge1xyXG4gICAgY29uc3Qge3R5cGVOYW1lLCBjb250ZXh0VHlwZU5hbWV9ID0gdGhpcy5yZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxyXG4gICAgICB0eXBlLFxyXG4gICAgICBjb250ZXh0VHlwZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvdXNlci9jb25maWcvcmVzdWx0LyR7dHlwZU5hbWV9YCwge1xyXG4gICAgICBjb250ZXh0dHlwZTogY29udGV4dFR5cGVOYW1lLFxyXG4gICAgICBtb2RlXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldEpzb24odXJsKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+XHJcbiAgICAgICAgICAgIG5ldyBGaWVsZERlZmluaXRpb24oXHJcbiAgICAgICAgICAgICAgcmVzLmVsZW1lbnRzLFxyXG4gICAgICAgICAgICAgIHJlcy5zb3J0b3JkZXIsXHJcbiAgICAgICAgICAgICAgcmVzLmdyb3Vwb3JkZXIsXHJcbiAgICAgICAgICAgICAgcmVzLnBpbm5lZCxcclxuICAgICAgICAgICAgICByZXMubW9kZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZXMgYSBjb2x1bW4gZGVmaW5pdGlvbiBhcyByZXN1bHQgb3IgY29tbW9uIHJlc3VsdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCB0eXBlIFRoZSBvYmplY3QgdHlwZVxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCBjb250ZXh0VHlwZSBPYmplY3QgdHlwZSB0YXJnZXQgdHlwZXMgYWxsb3dlZCBjb250ZXh0IHR5cGVcclxuICAgKiBAcGFyYW0gRmllbGREZWZpbml0aW9uIGRhdGEgVGhlIHJlc3VsdCBsaXN0IGNvbmZpZ3VyYXRpb24gdG8gYmUgcGVyc2lzdGVkXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gY29tbW9uIEZsYWcgZW5hYmxlcyB0byBzZXQgY29uZmlnIGFzIGRlZmF1bHQgLyBjb21tb24gcmVzdWx0XHJcbiAgICogQHJldHVybiBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBzYXZlUmVzdWx0RmllbGREZWZpbml0aW9uKFxyXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBkYXRhOiBGaWVsZERlZmluaXRpb24sXHJcbiAgICBjb21tb24gPSBmYWxzZVxyXG4gICkge1xyXG4gICAgY29uc3QgYmFzZVVyaSA9IGNvbW1vblxyXG4gICAgICA/ICcvdXNlci9jb25maWcvY29tbW9ucmVzdWx0LydcclxuICAgICAgOiAnL3VzZXIvY29uZmlnL3Jlc3VsdC8nO1xyXG4gICAgY29uc3Qge3R5cGVOYW1lLCBjb250ZXh0VHlwZU5hbWV9ID0gdGhpcy5yZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxyXG4gICAgICB0eXBlLFxyXG4gICAgICBjb250ZXh0VHlwZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGJhc2VVcmkgKyB0eXBlTmFtZSwge1xyXG4gICAgICBjb250ZXh0dHlwZTogY29udGV4dFR5cGVOYW1lXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdCh1cmwsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIGNvbHVtbiBkZWZpbml0aW9uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIHR5cGUgVGhlIG9iamVjdCB0eXBlXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIGNvbnRleHRUeXBlIE9iamVjdCB0eXBlIHRhcmdldCB0eXBlcyBhbGxvd2VkIGNvbnRleHQgdHlwZVxyXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcmVtb3ZlUmVzdWx0RmllbGREZWZpbml0aW9uKFxyXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGxcclxuICApIHtcclxuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgICAgdHlwZSxcclxuICAgICAgY29udGV4dFR5cGVcclxuICAgICk7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL3VzZXIvY29uZmlnL3Jlc3VsdC8ke3R5cGVOYW1lfWAsIHtcclxuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdmFsdWUgdG8gYmUgYWRkZWQgdG8gYSBmb3JtIGVsZW1lbnQgYnkgZXh0cmFjdGluZyBpdCBmcm9tIGFcclxuICAgKiBzZWFyY2ggZmlsdGVyLiBUaGUga2luZCBvZiB2YWx1ZSBkaWZmZXJzIGJhc2VkIG9uIHRoZSBmb3JtIGVsZW1lbnRzIHR5cGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXHJcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50VHlwZSBGb3JtIGVsZW1lbnRzIHR5cGUgKCdTVFJJTkcnLCAnREFURScsICdDT0RFU1lTVEVNJywgLi4uKVxyXG4gICAqIEByZXR1cm5zIHRoZSBleHRyYWN0ZWQgdmFsdWVcclxuICAgKi9cclxuICBmaWx0ZXJUb0VsZW1lbnRWYWx1ZShmaWx0ZXI6IFNlYXJjaEZpbHRlciwgZm9ybUVsZW1lbnRUeXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgLy8gdHlwZXMgdGhhdCBzdXBwb3J0IHJhbmdlc1xyXG4gICAgICBpZiAoKGZvcm1FbGVtZW50VHlwZSA9PT0gJ05VTUJFUicgfHwgZm9ybUVsZW1lbnRUeXBlID09PSAnREFURVRJTUUnKSAmJiBmaWx0ZXIuZmlyc3RWYWx1ZSkge1xyXG4gICAgICAgIHZhbHVlID0gbmV3IFJhbmdlVmFsdWUoXHJcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IsXHJcbiAgICAgICAgICBmaWx0ZXIuZmlyc3RWYWx1ZSxcclxuICAgICAgICAgIGZpbHRlci5zZWNvbmRWYWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFsdWUgPSBmaWx0ZXIuZmlyc3RWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHRhYmxlIHZhbHVlIGJ5IGV4dHJhY3RpbmcgdGhlIGRhdGEgZnJvbSB0aGUgY29ycmVzcG9uZGluZ1xyXG4gICAqIHNlYXJjaCBmaWx0ZXJzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBmaWx0ZXJzIFRoZSBmaWx0ZXJzIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxyXG4gICAqIEBwYXJhbSB0YWJsZUVsZW1lbnRzIHRoZSBmb3JtIGVsZW1lbnRzIG9mIHRoZSB0YWJsZVxyXG4gICAqIEByZXR1cm5zIHRoZSB0YWJsZSB2YWx1ZSBleHRyYWN0ZWQgZnJvbSBhbGwgZmlsdGVyc1xyXG4gICAqL1xyXG4gIHRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdLCB0YWJsZUVsZW1lbnRzKXtcclxuICAgIGxldCB2YWx1ZSA9IHt9O1xyXG4gICAgZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICBsZXQga2V5ID0gdGFibGVFbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gZi5wcm9wZXJ0eSkubmFtZTtcclxuICAgICAgbGV0IHR5cGUgPSB0YWJsZUVsZW1lbnRzLmZpbmQoZSA9PiBlLnFuYW1lID09PSBmLnByb3BlcnR5KS50eXBlO1xyXG4gICAgICB2YWx1ZVtrZXldID0gdGhpcy5maWx0ZXJUb0VsZW1lbnRWYWx1ZShmLCB0eXBlKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFt2YWx1ZV07XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -59,6 +59,7 @@ export class StoredQuery extends SearchQuery {
59
59
  this.filters = searchQuery ? searchQuery.filters : [];
60
60
  this.suggest = searchQuery ? searchQuery.suggest : false;
61
61
  this.expertMode = searchQuery ? searchQuery.expertMode : false;
62
+ this.scope = searchQuery ? searchQuery.scope : null;
62
63
  this.searchMode = searchQuery ? searchQuery.searchMode : 'idx';
63
64
  }
64
65
  /**
@@ -94,4 +95,4 @@ export class StoredQuery extends SearchQuery {
94
95
  * temporary id for new stored queries
95
96
  */
96
97
  StoredQuery.ID_NEW = 'new';
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3N0b3JlZC1xdWVyaWVzL3N0b3JlZC1xdWVyeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUErQnpEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUF1QjFDLFlBQVksSUFBbUI7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCOzs7ZUFHRztZQUNILElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQy9DLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDNUIsSUFBSTt3QkFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMzQixNQUFNLEtBQUssR0FBc0I7NEJBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzs0QkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO3lCQUNoQixDQUFDO3dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUM1QjtvQkFBQyxPQUFPLENBQUMsRUFBRTt3QkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUMzRDtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBckNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQXFDRDs7Ozs7OztPQU9HO0lBQ0ksUUFBUSxDQUFDLFdBQXdCO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RSxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsd0JBQXdCO1FBRXRCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckUsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixTQUFTLEVBQUUsZUFBZTtZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQ3hDLENBQUM7O0FBeEdEOztHQUVHO0FBQ0ksa0JBQU0sR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NlYXJjaFF1ZXJ5fSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLXF1ZXJ5Lm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqIEludGVyZmFjZSBmb3IgdGhlIGRhdGEgdXNlZCBmb3IgYmFja2VuZCBjb21tdW5pY2F0aW9uLlxyXG4gKiBUaGlzIGlzIHRoZSBraW5kIG9mIGRhdGEgd2UnbGwgZ2V0IGZyb20gdGhlIHNlcnZlciBhbmQgd2VcclxuICogaGF2ZSB0byBwcm92aWRlIHdoZW4gc2VuZGluZyBzdG9yZWQgcXVlcmllcyB0byB0aGUgc2VydmVyLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJU3RvcmVkUXVlcnkge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHF1ZXJ5OiBzdHJpbmc7XHJcbiAgZmF2b3JpdGU/OiBib29sZWFuO1xyXG4gIHNoYXJlZD86IGJvb2xlYW47XHJcbiAgdXNlcj86IHN0cmluZztcclxuICB2ZXJzaW9uPzogbnVtYmVyO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbiAgcGFyYW1ldGVyPzogc3RyaW5nW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqIEludGVyZmFjZSBmb3IgZHluYW1pYyBwYXJhbWV0ZXIgcHJvcGVydGllcy5cclxuICogRm9ybSBlbGVtZW50cyB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvIHRoaXMgZm9ybWF0IHRvIHNhdmUgb25seVxyXG4gKiByZXF1aXJlZCBwcm9wZXJ0aWVzXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElTdG9yZWRRdWVyeVBhcmFtIHtcclxuICBxbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFN0b3JlZCBxdWVyeSBpcyBhbiBleHRlbnNpb24gb2YgYSBTZWFyY2hRdWVyeS4gSXQgYWRkcyBwcm9wZXJ0aWVzIGxpa2VcclxuICogbmFtZSBhbmQgYSBsaXN0IG9mIGR5bmFtaWMgZmlsdGVyIHByb3BlcnRpZXMgYW5kIHRoZSBhYmlsaXR5IHRvIGdlbmVyYXRlXHJcbiAqIGFuIG9iamVjdCBmcm9tIGl0cyBwcm9wZXJ0aWVzIHRoYXQgY291bGQgYmUgcHdlcnNpc3RlZCBvbiB0aGUgYmFja2VuZCBzaWRlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN0b3JlZFF1ZXJ5IGV4dGVuZHMgU2VhcmNoUXVlcnkge1xyXG5cclxuICAvKipcclxuICAgKiB0ZW1wb3JhcnkgaWQgZm9yIG5ldyBzdG9yZWQgcXVlcmllc1xyXG4gICAqL1xyXG4gIHN0YXRpYyBJRF9ORVcgPSAnbmV3JztcclxuXHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZmF2b3JpdGU6IGJvb2xlYW47XHJcbiAgc2hhcmVkOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlciB0aGF0IGNyZWF0ZWQgdGhpcyBxdWVyeVxyXG4gICAqL1xyXG4gIHVzZXI6IHN0cmluZztcclxuICB2ZXJzaW9uOiBudW1iZXI7XHJcbiAgcm9sZXM6IHN0cmluZ1tdO1xyXG4gIHBhcmFtZXRlcjogSVN0b3JlZFF1ZXJ5UGFyYW1bXTtcclxuXHJcbiAgZ2V0IHRpdGxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmFtZSB8fCAnJztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKGl0ZW0/OiBJU3RvcmVkUXVlcnkpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgdGhpcy5pZCA9IFN0b3JlZFF1ZXJ5LklEX05FVztcclxuICAgICAgdGhpcy5wYXJhbWV0ZXIgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaWQgPSBpdGVtLmlkO1xyXG4gICAgICB0aGlzLm5hbWUgPSBpdGVtLm5hbWU7XHJcbiAgICAgIHRoaXMuZmF2b3JpdGUgPSBpdGVtLmZhdm9yaXRlO1xyXG4gICAgICB0aGlzLnNoYXJlZCA9IGl0ZW0uc2hhcmVkO1xyXG4gICAgICB0aGlzLnVzZXIgPSBpdGVtLnVzZXI7XHJcbiAgICAgIHRoaXMudmVyc2lvbiA9IGl0ZW0udmVyc2lvbjtcclxuICAgICAgdGhpcy5yb2xlcyA9IGl0ZW0ucm9sZXMgfHwgW107XHJcbiAgICAgIHRoaXMucGFyYW1ldGVyID0gW107XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBwYXJhbWV0ZXJzIGNvbnRhaW4gbWV0YSBkYXRhIGZvciB0aGUgZHluYW1pYyBmaWVsZHMgb2YgdGhlIHN0b3JlZCBxdWVyeVxyXG4gICAgICAgKiB0aGUgdmFsdWVzIG9mIHRob3NlIGZpZWxkcyAoaWYgc2V0KSBhcmUgcGFydCBvZiB0aGUgcXVlcmllcyBmaWx0ZXJzXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoaXRlbS5wYXJhbWV0ZXIgJiYgaXRlbS5wYXJhbWV0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IHAgb2YgaXRlbS5wYXJhbWV0ZXIpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBPYmogPSBKU09OLnBhcnNlKHApO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbTogSVN0b3JlZFF1ZXJ5UGFyYW0gPSB7XHJcbiAgICAgICAgICAgICAgcW5hbWU6IHBPYmoucW5hbWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogcE9iai50eXBlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtZXRlci5wdXNoKHBhcmFtKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHBhcnNpbmcgc3RvcmVkIHF1ZXJ5IHBhcmFtZXRlcicsIGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyB0aGUgcHJvcGVydGllcyBvZiBhIFNlYXJjaFF1ZXJ5IHRvIHRoZSBjdXJyZW50IFN0b3JlZFF1ZXJ5IGluc3RhbmNlLlxyXG4gICAqIFRoaXMgaXMgdXNlZCB3aGVuIGxvYWRpbmcgc3RvcmVkIHF1ZXJpZXMgZnJvbSB0aGUgc2VhcmNoIHNlcnZpY2UgYW5kIHdoZW4geW91XHJcbiAgICogd2FudCB0byBjcmVhdGUgYSBTdG9yZWRRdWVyeSBmcm9tIGEgU2VhcmNoUXVlcnkuXHJcbiAgICogc2tpcCBgZmllbGRzYCBhbmQgYHNvcnRPcHRpb25zYCBwcm9wZXJ0aWVzIGFzIHRoZXkgbWFrZSBubyBzZW5zZSBmb3Igc3RvcmVkIHF1ZXJpZXNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZWFyY2hRdWVyeSBUaGUgc2VhcmNoIHF1ZXJ5IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXHJcbiAgICovXHJcbiAgcHVibGljIHNldFF1ZXJ5KHNlYXJjaFF1ZXJ5OiBTZWFyY2hRdWVyeSkge1xyXG4gICAgICB0aGlzLnRlcm0gPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LnRlcm0gOiAnJztcclxuICAgICAgdGhpcy50eXBlcyA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkudHlwZXMgOiBbXTtcclxuICAgICAgdGhpcy5jb250ZXh0Rm9sZGVyVHlwZXMgPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcyA6IFtdO1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LmZpbHRlcnMgOiBbXTtcclxuICAgICAgdGhpcy5zdWdnZXN0ID0gc2VhcmNoUXVlcnkgPyBzZWFyY2hRdWVyeS5zdWdnZXN0IDogZmFsc2U7XHJcbiAgICAgIHRoaXMuZXhwZXJ0TW9kZSA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkuZXhwZXJ0TW9kZSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaE1vZGUgPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LnNlYXJjaE1vZGUgOiAnaWR4JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnQgSVN0b3JlZFF1ZXJ5UGFyYW0gb2JqZWN0cyB0byBhcnJheSBvZiBzdHJpbmdzXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBJU3RvcmVkUXVlcnlcclxuICAgKi9cclxuICB0b1BlcnNpc3RhYmxlU3RvcmVkUXVlcnkoKTogSVN0b3JlZFF1ZXJ5IHtcclxuXHJcbiAgICBjb25zdCBzdHJpbmdQYXJhbWV0ZXIgPSBbXTtcclxuICAgIHRoaXMucGFyYW1ldGVyLmZvckVhY2gocCA9PiBzdHJpbmdQYXJhbWV0ZXIucHVzaChKU09OLnN0cmluZ2lmeShwKSkpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgIGZhdm9yaXRlOiB0aGlzLmZhdm9yaXRlLFxyXG4gICAgICBzaGFyZWQ6IHRoaXMuc2hhcmVkLFxyXG4gICAgICB1c2VyOiB0aGlzLnVzZXIsXHJcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcclxuICAgICAgcm9sZXM6IHRoaXMucm9sZXMsXHJcbiAgICAgIHBhcmFtZXRlcjogc3RyaW5nUGFyYW1ldGVyLFxyXG4gICAgICBxdWVyeTogSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRRdWVyeUpzb24oKSlcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBRdWVyeSBpcyBuZXcgb3IgYWxscmVhZHkgU3RvcmVkXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBib29sZWFuXHJcbiAgICovXHJcbiAgaXNOZXcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pZCA9PT0gU3RvcmVkUXVlcnkuSURfTkVXO1xyXG4gIH1cclxufVxyXG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3N0b3JlZC1xdWVyaWVzL3N0b3JlZC1xdWVyeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUErQnpEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUF1QjFDLFlBQVksSUFBbUI7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCOzs7ZUFHRztZQUNILElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQy9D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QUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VhcmNoUXVlcnl9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gtcXVlcnkubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICogSW50ZXJmYWNlIGZvciB0aGUgZGF0YSB1c2VkIGZvciBiYWNrZW5kIGNvbW11bmljYXRpb24uXHJcbiAqIFRoaXMgaXMgdGhlIGtpbmQgb2YgZGF0YSB3ZSdsbCBnZXQgZnJvbSB0aGUgc2VydmVyIGFuZCB3ZVxyXG4gKiBoYXZlIHRvIHByb3ZpZGUgd2hlbiBzZW5kaW5nIHN0b3JlZCBxdWVyaWVzIHRvIHRoZSBzZXJ2ZXIuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElTdG9yZWRRdWVyeSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgcXVlcnk6IHN0cmluZztcclxuICBmYXZvcml0ZT86IGJvb2xlYW47XHJcbiAgc2hhcmVkPzogYm9vbGVhbjtcclxuICB1c2VyPzogc3RyaW5nO1xyXG4gIHZlcnNpb24/OiBudW1iZXI7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxuICBwYXJhbWV0ZXI/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICogSW50ZXJmYWNlIGZvciBkeW5hbWljIHBhcmFtZXRlciBwcm9wZXJ0aWVzLlxyXG4gKiBGb3JtIGVsZW1lbnRzIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gdGhpcyBmb3JtYXQgdG8gc2F2ZSBvbmx5XHJcbiAqIHJlcXVpcmVkIHByb3BlcnRpZXNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlZFF1ZXJ5UGFyYW0ge1xyXG4gIHFuYW1lOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogU3RvcmVkIHF1ZXJ5IGlzIGFuIGV4dGVuc2lvbiBvZiBhIFNlYXJjaFF1ZXJ5LiBJdCBhZGRzIHByb3BlcnRpZXMgbGlrZVxyXG4gKiBuYW1lIGFuZCBhIGxpc3Qgb2YgZHluYW1pYyBmaWx0ZXIgcHJvcGVydGllcyBhbmQgdGhlIGFiaWxpdHkgdG8gZ2VuZXJhdGVcclxuICogYW4gb2JqZWN0IGZyb20gaXRzIHByb3BlcnRpZXMgdGhhdCBjb3VsZCBiZSBwd2Vyc2lzdGVkIG9uIHRoZSBiYWNrZW5kIHNpZGUuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RvcmVkUXVlcnkgZXh0ZW5kcyBTZWFyY2hRdWVyeSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIHRlbXBvcmFyeSBpZCBmb3IgbmV3IHN0b3JlZCBxdWVyaWVzXHJcbiAgICovXHJcbiAgc3RhdGljIElEX05FVyA9ICduZXcnO1xyXG5cclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBmYXZvcml0ZTogYm9vbGVhbjtcclxuICBzaGFyZWQ6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogdGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyIHRoYXQgY3JlYXRlZCB0aGlzIHF1ZXJ5XHJcbiAgICovXHJcbiAgdXNlcjogc3RyaW5nO1xyXG4gIHZlcnNpb246IG51bWJlcjtcclxuICByb2xlczogc3RyaW5nW107XHJcbiAgcGFyYW1ldGVyOiBJU3RvcmVkUXVlcnlQYXJhbVtdO1xyXG5cclxuICBnZXQgdGl0bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uYW1lIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoaXRlbT86IElTdG9yZWRRdWVyeSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICB0aGlzLmlkID0gU3RvcmVkUXVlcnkuSURfTkVXO1xyXG4gICAgICB0aGlzLnBhcmFtZXRlciA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pZCA9IGl0ZW0uaWQ7XHJcbiAgICAgIHRoaXMubmFtZSA9IGl0ZW0ubmFtZTtcclxuICAgICAgdGhpcy5mYXZvcml0ZSA9IGl0ZW0uZmF2b3JpdGU7XHJcbiAgICAgIHRoaXMuc2hhcmVkID0gaXRlbS5zaGFyZWQ7XHJcbiAgICAgIHRoaXMudXNlciA9IGl0ZW0udXNlcjtcclxuICAgICAgdGhpcy52ZXJzaW9uID0gaXRlbS52ZXJzaW9uO1xyXG4gICAgICB0aGlzLnJvbGVzID0gaXRlbS5yb2xlcyB8fCBbXTtcclxuICAgICAgdGhpcy5wYXJhbWV0ZXIgPSBbXTtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIHBhcmFtZXRlcnMgY29udGFpbiBtZXRhIGRhdGEgZm9yIHRoZSBkeW5hbWljIGZpZWxkcyBvZiB0aGUgc3RvcmVkIHF1ZXJ5XHJcbiAgICAgICAqIHRoZSB2YWx1ZXMgb2YgdGhvc2UgZmllbGRzIChpZiBzZXQpIGFyZSBwYXJ0IG9mIHRoZSBxdWVyaWVzIGZpbHRlcnNcclxuICAgICAgICovXHJcbiAgICAgIGlmIChpdGVtLnBhcmFtZXRlciAmJiBpdGVtLnBhcmFtZXRlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgcCBvZiBpdGVtLnBhcmFtZXRlcikge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcE9iaiA9IEpTT04ucGFyc2UocCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtOiBJU3RvcmVkUXVlcnlQYXJhbSA9IHtcclxuICAgICAgICAgICAgICBxbmFtZTogcE9iai5xbmFtZSxcclxuICAgICAgICAgICAgICB0eXBlOiBwT2JqLnR5cGUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1ldGVyLnB1c2gocGFyYW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgcGFyc2luZyBzdG9yZWQgcXVlcnkgcGFyYW1ldGVyJywgZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgU2VhcmNoUXVlcnkgdG8gdGhlIGN1cnJlbnQgU3RvcmVkUXVlcnkgaW5zdGFuY2UuXHJcbiAgICogVGhpcyBpcyB1c2VkIHdoZW4gbG9hZGluZyBzdG9yZWQgcXVlcmllcyBmcm9tIHRoZSBzZWFyY2ggc2VydmljZSBhbmQgd2hlbiB5b3VcclxuICAgKiB3YW50IHRvIGNyZWF0ZSBhIFN0b3JlZFF1ZXJ5IGZyb20gYSBTZWFyY2hRdWVyeS5cclxuICAgKiBza2lwIGBmaWVsZHNgIGFuZCBgc29ydE9wdGlvbnNgIHByb3BlcnRpZXMgYXMgdGhleSBtYWtlIG5vIHNlbnNlIGZvciBzdG9yZWQgcXVlcmllc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHNlYXJjaFF1ZXJ5IFRoZSBzZWFyY2ggcXVlcnkgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cclxuICAgKi9cclxuICBwdWJsaWMgc2V0UXVlcnkoc2VhcmNoUXVlcnk6IFNlYXJjaFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMudGVybSA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkudGVybSA6ICcnO1xyXG4gICAgICB0aGlzLnR5cGVzID0gc2VhcmNoUXVlcnkgPyBzZWFyY2hRdWVyeS50eXBlcyA6IFtdO1xyXG4gICAgICB0aGlzLmNvbnRleHRGb2xkZXJUeXBlcyA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkuY29udGV4dEZvbGRlclR5cGVzIDogW107XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkuZmlsdGVycyA6IFtdO1xyXG4gICAgICB0aGlzLnN1Z2dlc3QgPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LnN1Z2dlc3QgOiBmYWxzZTtcclxuICAgICAgdGhpcy5leHBlcnRNb2RlID0gc2VhcmNoUXVlcnkgPyBzZWFyY2hRdWVyeS5leHBlcnRNb2RlIDogZmFsc2U7XHJcbiAgICAgIHRoaXMuc2NvcGUgPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LnNjb3BlIDogbnVsbDtcclxuICAgICAgdGhpcy5zZWFyY2hNb2RlID0gc2VhcmNoUXVlcnkgPyBzZWFyY2hRdWVyeS5zZWFyY2hNb2RlIDogJ2lkeCc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0IElTdG9yZWRRdWVyeVBhcmFtIG9iamVjdHMgdG8gYXJyYXkgb2Ygc3RyaW5nc1xyXG4gICAqXHJcbiAgICogQHJldHVybnMgSVN0b3JlZFF1ZXJ5XHJcbiAgICovXHJcbiAgdG9QZXJzaXN0YWJsZVN0b3JlZFF1ZXJ5KCk6IElTdG9yZWRRdWVyeSB7XHJcblxyXG4gICAgY29uc3Qgc3RyaW5nUGFyYW1ldGVyID0gW107XHJcbiAgICB0aGlzLnBhcmFtZXRlci5mb3JFYWNoKHAgPT4gc3RyaW5nUGFyYW1ldGVyLnB1c2goSlNPTi5zdHJpbmdpZnkocCkpKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxyXG4gICAgICBmYXZvcml0ZTogdGhpcy5mYXZvcml0ZSxcclxuICAgICAgc2hhcmVkOiB0aGlzLnNoYXJlZCxcclxuICAgICAgdXNlcjogdGhpcy51c2VyLFxyXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXHJcbiAgICAgIHJvbGVzOiB0aGlzLnJvbGVzLFxyXG4gICAgICBwYXJhbWV0ZXI6IHN0cmluZ1BhcmFtZXRlcixcclxuICAgICAgcXVlcnk6IEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0UXVlcnlKc29uKCkpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgUXVlcnkgaXMgbmV3IG9yIGFsbHJlYWR5IFN0b3JlZFxyXG4gICAqXHJcbiAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAqL1xyXG4gIGlzTmV3KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IFN0b3JlZFF1ZXJ5LklEX05FVztcclxuICB9XHJcbn1cclxuIl19
@@ -3275,14 +3275,14 @@ class AuthService {
3275
3275
  // remove stored access data
3276
3276
  this.storage.removeItem(this.TOKEN_STORAGE_KEY).subscribe();
3277
3277
  if (this.coreConfig.environment.production && EnvironmentEnaio.isWebEnvironment()) {
3278
- window.location.href = '/logout';
3278
+ window.location.href = this.config.getLoginBase() + '/logout';
3279
3279
  return;
3280
3280
  }
3281
3281
  }
3282
3282
  if (gatewayLogout) {
3283
3283
  // by default we are just resetting internal state to 'logged out' and in
3284
3284
  // some cases call gateways logout endpoint to do logout stuff there silently
3285
- this.http.get(`${this.profile.host || ''}/logout`).subscribe();
3285
+ this.http.get(`${this.profile.host || ''}${this.config.getLoginBase()}/logout`).subscribe();
3286
3286
  }
3287
3287
  this.backend.setAuthProfile(this.profile);
3288
3288
  this.eventService.trigger(EnaioEvent.LOGOUT);
@@ -4061,6 +4061,13 @@ DmsService.ctorParameters = () => [
4061
4061
  { type: EventService }
4062
4062
  ];
4063
4063
 
4064
+ //export type QueryScope = 'indexdate' | 'content' | 'all';
4065
+ var QueryScope;
4066
+ (function (QueryScope) {
4067
+ QueryScope["ALL"] = "all";
4068
+ QueryScope["CONTENT"] = "content";
4069
+ QueryScope["INDEX_DATA"] = "indexdata";
4070
+ })(QueryScope || (QueryScope = {}));
4064
4071
  /**
4065
4072
  * The SearchQuery Class
4066
4073
  *
@@ -4241,6 +4248,7 @@ class SearchQuery {
4241
4248
  // add options when they differ from the default values
4242
4249
  if (this.applyOptions()) {
4243
4250
  queryJson.options = {};
4251
+ queryJson.options.scope = this.scope;
4244
4252
  if (this.suggest) {
4245
4253
  queryJson.options.suggest = true;
4246
4254
  }
@@ -4273,6 +4281,7 @@ class SearchQuery {
4273
4281
  // determines whether or not the query send to the search service should contain options
4274
4282
  applyOptions() {
4275
4283
  return (this.expertMode ||
4284
+ !!this.scope ||
4276
4285
  this.suggest ||
4277
4286
  this.highlighting ||
4278
4287
  this.resolveReference ||
@@ -4607,6 +4616,7 @@ class StoredQuery extends SearchQuery {
4607
4616
  this.filters = searchQuery ? searchQuery.filters : [];
4608
4617
  this.suggest = searchQuery ? searchQuery.suggest : false;
4609
4618
  this.expertMode = searchQuery ? searchQuery.expertMode : false;
4619
+ this.scope = searchQuery ? searchQuery.scope : null;
4610
4620
  this.searchMode = searchQuery ? searchQuery.searchMode : 'idx';
4611
4621
  }
4612
4622
  /**
@@ -4783,6 +4793,7 @@ class SearchService {
4783
4793
  if (qObj.options) {
4784
4794
  q.suggest = qObj.options.suggest || false;
4785
4795
  q.expertMode = qObj.options.expertmode || false;
4796
+ q.scope = qObj.options.scope;
4786
4797
  q.resolveReference = qObj.options.resolveReference || true;
4787
4798
  q.searchMode =
4788
4799
  qObj.options.searchmode || SearchQuery.DEFAULT_SEARCH_MODE;
@@ -5826,5 +5837,5 @@ class UploadFileItem {
5826
5837
  * Generated bundle index. Do not edit.
5827
5838
  */
5828
5839
 
5829
- export { AppCacheService, AuthService, BackendService, BpmService, CORE_CONFIG, CUSTOM_CONFIG, CapabilitiesService, ClipboardAction, ClipboardService, Config, CoreConfig, CoreInit, Direction, DmsObject, DmsObjectAttachment, DmsObjectHistoryEntry, DmsService, EnaioEvent, EnvironmentEnaio, EnvironmentService, EoCoreModule, EoError, EoSharedModule, EoUser, EoxMissingTranslationHandler, EoxTranslateJsonLoader, EventService, FieldDefinition, InboxItem, InboxService, LocalStorageService, Logger, NotificationsService, ObjectType, PrepareService, PreparedItem, Process, RangeValue, SearchFilter, SearchQuery, SearchResult, SearchService, SearchState, SortOption, StoredQueriesService, StoredQuery, SubscriptionMode, SystemService, SystemStatusEnum, UploadFileItem, UploadRegistryService, UploadService, UploadTarget, UserService, Utils, WorkItem, WorkItemHistoryEntry, init_module, SystemStatusService as ɵa, ConsoleLogService as ɵb, AuthInterceptor as ɵc };
5840
+ export { AppCacheService, AuthService, BackendService, BpmService, CORE_CONFIG, CUSTOM_CONFIG, CapabilitiesService, ClipboardAction, ClipboardService, Config, CoreConfig, CoreInit, Direction, DmsObject, DmsObjectAttachment, DmsObjectHistoryEntry, DmsService, EnaioEvent, EnvironmentEnaio, EnvironmentService, EoCoreModule, EoError, EoSharedModule, EoUser, EoxMissingTranslationHandler, EoxTranslateJsonLoader, EventService, FieldDefinition, InboxItem, InboxService, LocalStorageService, Logger, NotificationsService, ObjectType, PrepareService, PreparedItem, Process, QueryScope, RangeValue, SearchFilter, SearchQuery, SearchResult, SearchService, SearchState, SortOption, StoredQueriesService, StoredQuery, SubscriptionMode, SystemService, SystemStatusEnum, UploadFileItem, UploadRegistryService, UploadService, UploadTarget, UserService, Utils, WorkItem, WorkItemHistoryEntry, init_module, SystemStatusService as ɵa, ConsoleLogService as ɵb, AuthInterceptor as ɵc };
5830
5841
  //# sourceMappingURL=eo-sdk-client-projects-eo-sdk-core.js.map