@ethlete/query 0.1.0-next.9 → 1.0.0

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 (40) hide show
  1. package/esm2020/lib/auth/auth-provider.types.mjs +1 -1
  2. package/esm2020/lib/auth/auth-provider.utils.mjs +1 -1
  3. package/esm2020/lib/auth/basic-auth-provider.mjs +4 -5
  4. package/esm2020/lib/auth/bearer-auth-provider.mjs +117 -60
  5. package/esm2020/lib/auth/custom-header-auth-provider.mjs +4 -5
  6. package/esm2020/lib/directives/infinity-query-trigger.directive.mjs +3 -3
  7. package/esm2020/lib/directives/infinity-query.directive.mjs +7 -9
  8. package/esm2020/lib/directives/query.directive.mjs +23 -19
  9. package/esm2020/lib/infinite-query/infinity-query.mjs +15 -11
  10. package/esm2020/lib/query/query.mjs +111 -86
  11. package/esm2020/lib/query/query.types.mjs +1 -1
  12. package/esm2020/lib/query/query.utils.mjs +51 -4
  13. package/esm2020/lib/query-client/query-client.mjs +25 -13
  14. package/esm2020/lib/query-client/query-client.types.mjs +1 -1
  15. package/esm2020/lib/query-form/query-form.mjs +7 -6
  16. package/esm2020/lib/request/request.mjs +168 -19
  17. package/esm2020/lib/request/request.types.mjs +1 -1
  18. package/esm2020/lib/request/request.util.mjs +66 -91
  19. package/fesm2015/ethlete-query.mjs +673 -398
  20. package/fesm2015/ethlete-query.mjs.map +1 -1
  21. package/fesm2020/ethlete-query.mjs +657 -389
  22. package/fesm2020/ethlete-query.mjs.map +1 -1
  23. package/lib/auth/auth-provider.types.d.ts +30 -22
  24. package/lib/auth/auth-provider.utils.d.ts +2 -1
  25. package/lib/auth/basic-auth-provider.d.ts +0 -2
  26. package/lib/auth/bearer-auth-provider.d.ts +14 -14
  27. package/lib/auth/custom-header-auth-provider.d.ts +0 -2
  28. package/lib/directives/infinity-query.directive.d.ts +1 -2
  29. package/lib/directives/query.directive.d.ts +6 -5
  30. package/lib/infinite-query/infinity-query.types.d.ts +4 -4
  31. package/lib/query/query.d.ts +6 -6
  32. package/lib/query/query.types.d.ts +78 -43
  33. package/lib/query/query.utils.d.ts +21 -5
  34. package/lib/query-client/query-client.d.ts +13 -11
  35. package/lib/query-client/query-client.types.d.ts +22 -10
  36. package/lib/query-form/query-form.types.d.ts +2 -2
  37. package/lib/request/request.d.ts +3 -9
  38. package/lib/request/request.types.d.ts +63 -15
  39. package/lib/request/request.util.d.ts +74 -7
  40. package/package.json +2 -5
@@ -2,16 +2,6 @@
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import { filterSuccess, takeUntilResponse } from '../query';
4
4
  export class InfinityQuery {
5
- constructor(_config) {
6
- this._config = _config;
7
- this._currentPage$ = new BehaviorSubject(null);
8
- this._currentCalculatedPage$ = new BehaviorSubject(null);
9
- this._totalPages$ = new BehaviorSubject(null);
10
- this._itemsPerPage$ = new BehaviorSubject(this._config.limitParam?.value ?? 10);
11
- this._currentQuery$ = new BehaviorSubject(null);
12
- this._data$ = new BehaviorSubject([]);
13
- this._subscriptions = [];
14
- }
15
5
  get currentPage$() {
16
6
  return this._currentPage$.asObservable();
17
7
  }
@@ -48,6 +38,16 @@ export class InfinityQuery {
48
38
  get data() {
49
39
  return this._data$.getValue();
50
40
  }
41
+ constructor(_config) {
42
+ this._config = _config;
43
+ this._currentPage$ = new BehaviorSubject(null);
44
+ this._currentCalculatedPage$ = new BehaviorSubject(null);
45
+ this._totalPages$ = new BehaviorSubject(null);
46
+ this._itemsPerPage$ = new BehaviorSubject(this._config.limitParam?.value ?? 10);
47
+ this._currentQuery$ = new BehaviorSubject(null);
48
+ this._data$ = new BehaviorSubject([]);
49
+ this._subscriptions = [];
50
+ }
51
51
  nextPage() {
52
52
  const newPage = (this._currentPage$.value ?? 0) + 1;
53
53
  const calculatedPage = this._config?.pageParam?.valueCalculator?.({
@@ -55,6 +55,10 @@ export class InfinityQuery {
55
55
  totalPages: this.totalPages,
56
56
  itemsPerPage: this.itemsPerPage,
57
57
  }) ?? newPage;
58
+ if (this.totalPages !== null && calculatedPage > this.totalPages) {
59
+ console.error('Cannot load more pages, already at the end. Make sure to not render the infinity query trigger using *ngIf canLoadMore');
60
+ return;
61
+ }
58
62
  const args = this._prepareArgs(this._config, calculatedPage);
59
63
  const query = this._config.queryCreator.prepare(args).execute();
60
64
  this._handleNewQuery(query);
@@ -158,4 +162,4 @@ export class InfinityQuery {
158
162
  }
159
163
  }
160
164
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTVFLE1BQU0sT0FBTyxhQUFhO0lBZ0V4QixZQUFvQixPQUFpRjtRQUFqRixZQUFPLEdBQVAsT0FBTyxDQUEwRTtRQXpEcEYsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDekQsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ25FLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3hELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7UUFDekQsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFtQixFQUE2QixDQUFDLENBQUM7UUFFdkYsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO0lBa0Q0RCxDQUFDO0lBaER6RyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMs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QUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyU3VjY2VzcywgUXVlcnlTdGF0ZURhdGEsIHRha2VVbnRpbFJlc3BvbnNlIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgQW55UXVlcnlDcmVhdG9yLCBRdWVyeUNyZWF0b3JBcmdzLCBRdWVyeUNyZWF0b3JSZXR1cm5UeXBlIH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IEluZmluaXR5UXVlcnlDb25maWcsIEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIH0gZnJvbSAnLi9pbmZpbml0eS1xdWVyeS50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBJbmZpbml0eVF1ZXJ5PFxuICBRdWVyeUNyZWF0b3IgZXh0ZW5kcyBBbnlRdWVyeUNyZWF0b3IsXG4gIFF1ZXJ5IGV4dGVuZHMgUXVlcnlDcmVhdG9yUmV0dXJuVHlwZTxRdWVyeUNyZWF0b3I+LFxuICBBcmdzIGV4dGVuZHMgUXVlcnlDcmVhdG9yQXJnczxRdWVyeUNyZWF0b3I+LFxuICBRdWVyeVJlc3BvbnNlIGV4dGVuZHMgUXVlcnlTdGF0ZURhdGE8UXVlcnlbJ3N0YXRlJ10+LFxuICBJbmZpbml0eVJlc3BvbnNlIGV4dGVuZHMgdW5rbm93bltdLFxuPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b3RhbFBhZ2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zUGVyUGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odGhpcy5fY29uZmlnLmxpbWl0UGFyYW0/LnZhbHVlID8/IDEwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFF1ZXJ5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnkgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEluZmluaXR5UmVzcG9uc2U+KFtdIGFzIGFueSBhcyBJbmZpbml0eVJlc3BvbnNlKTtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGdldCBjdXJyZW50UGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudENhbGN1bGF0ZWRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBpdGVtc1BlclBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRRdWVyeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRRdWVyeSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudFF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UXVlcnkkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgZGF0YSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEkLmdldFZhbHVlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb25maWc6IEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPikge31cblxuICBuZXh0UGFnZSgpIHtcbiAgICBjb25zdCBuZXdQYWdlID0gKHRoaXMuX2N1cnJlbnRQYWdlJC52YWx1ZSA/PyAwKSArIDE7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBhZ2UgPVxuICAgICAgdGhpcy5fY29uZmlnPy5wYWdlUGFyYW0/LnZhbHVlQ2FsY3VsYXRvcj8uKHtcbiAgICAgICAgcGFnZTogbmV3UGFnZSxcbiAgICAgICAgdG90YWxQYWdlczogdGhpcy50b3RhbFBhZ2VzLFxuICAgICAgICBpdGVtc1BlclBhZ2U6IHRoaXMuaXRlbXNQZXJQYWdlLFxuICAgICAgfSkgPz8gbmV3UGFnZTtcblxuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLl9wcmVwYXJlQXJncyh0aGlzLl9jb25maWcsIGNhbGN1bGF0ZWRQYWdlKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fY29uZmlnLnF1ZXJ5Q3JlYXRvci5wcmVwYXJlKGFyZ3MpLmV4ZWN1dGUoKSBhcyBRdWVyeTtcbiAgICB0aGlzLl9oYW5kbGVOZXdRdWVyeShxdWVyeSk7XG5cbiAgICB0aGlzLl9jdXJyZW50UGFnZSQubmV4dChuZXdQYWdlKTtcbiAgICB0aGlzLl9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkLm5leHQoY2FsY3VsYXRlZFBhZ2UpO1xuICAgIHRoaXMuX2N1cnJlbnRRdWVyeSQubmV4dChxdWVyeSk7XG4gIH1cblxuICByZXNldChcbiAgICBuZXdDb25maWc/OiBPbWl0PFxuICAgICAgSW5maW5pdHlRdWVyeUNvbmZpZzxRdWVyeUNyZWF0b3IsIEFyZ3MsIFF1ZXJ5UmVzcG9uc2UsIEluZmluaXR5UmVzcG9uc2U+LFxuICAgICAgJ3F1ZXJ5Q3JlYXRvcicgfCAncmVzcG9uc2UnXG4gICAgPixcbiAgKSB7XG4gICAgdGhpcy5fZGVzdHJveSgpO1xuXG4gICAgdGhpcy5fY29uZmlnID0geyAuLi50aGlzLl9jb25maWcsIC4uLihuZXdDb25maWcgPz8ge30pIH07XG5cbiAgICB0aGlzLl9jdXJyZW50UGFnZSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fdG90YWxQYWdlcyQubmV4dChudWxsKTtcbiAgICB0aGlzLl9pdGVtc1BlclBhZ2UkLm5leHQodGhpcy5fY29uZmlnLmxpbWl0UGFyYW0/LnZhbHVlID8/IDEwKTtcbiAgICB0aGlzLl9jdXJyZW50UXVlcnkkLm5leHQobnVsbCk7XG5cbiAgICB0aGlzLl9kYXRhJC5uZXh0KFtdIGFzIGFueSBhcyBJbmZpbml0eVJlc3BvbnNlKTtcbiAgfVxuXG4gIF9kZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlTmV3UXVlcnkocXVlcnk6IFF1ZXJ5KSB7XG4gICAgY29uc3Qgc3RhdGVDaGFuZ2VzU3ViID0gcXVlcnkuc3RhdGUkLnBpcGUodGFrZVVudGlsUmVzcG9uc2UoKSwgZmlsdGVyU3VjY2VzcygpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHN0YXRlKSA9PiB7XG4gICAgICAgIGxldCBuZXdEYXRhID0gdGhpcy5fY29uZmlnPy5yZXNwb25zZS52YWx1ZUV4dHJhY3RvcihzdGF0ZS5yZXNwb25zZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZXNwb25zZS5yZXZlcnNlKSB7XG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi5uZXdEYXRhXS5yZXZlcnNlKCkgYXMgSW5maW5pdHlSZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcucmVzcG9uc2UuYXBwZW5kSXRlbXNUbyA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIG5ld0RhdGEgPSBbLi4ubmV3RGF0YSwgLi4udGhpcy5kYXRhXSBhcyBJbmZpbml0eVJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0RhdGEgPSBbLi4udGhpcy5kYXRhLCAuLi5uZXdEYXRhXSBhcyBJbmZpbml0eVJlc3BvbnNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGF0YSQubmV4dChuZXdEYXRhKTtcblxuICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID1cbiAgICAgICAgICB0aGlzLl9jb25maWcucmVzcG9uc2UudG90YWxQYWdlc0V4dHJhY3Rvcj8uKHtcbiAgICAgICAgICAgIHJlc3BvbnNlOiBzdGF0ZS5yZXNwb25zZSxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICAgICAgfSkgPz9cbiAgICAgICAgICBzdGF0ZS5yZXNwb25zZT8udG90YWxQYWdlcyA/P1xuICAgICAgICAgIG51bGw7XG5cbiAgICAgICAgdGhpcy5fdG90YWxQYWdlcyQubmV4dCh0b3RhbFBhZ2VzKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zID0gdGhpcy5fc3Vic2NyaXB0aW9ucy5maWx0ZXIoKHN1YikgPT4gc3ViICE9PSBzdGF0ZUNoYW5nZXNTdWIpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChzdGF0ZUNoYW5nZXNTdWIpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUFyZ3MoY29uZmlnOiBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sIHBhZ2U6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2VQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5wYWdlUGFyYW0/LmxvY2F0aW9uKTtcblxuICAgIGNvbnN0IHBhZ2VBcmdzID0ge1xuICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5wYWdlUGFyYW0/LmtleSA/PyAncGFnZSddOiBwYWdlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbGltaXRQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5saW1pdFBhcmFtPy5sb2NhdGlvbik7XG5cbiAgICBjb25zdCBsaW1pdEFyZ3MgPSB7XG4gICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5saW1pdFBhcmFtPy5rZXkgPz8gJ2xpbWl0J106IGNvbmZpZz8ubGltaXRQYXJhbT8udmFsdWUgPz8gMTAsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gY29uZmlnPy5kZWZhdWx0QXJncyA/PyB7fTtcblxuICAgIGNvbnN0IG1lcmdlZEFyZ3MgPVxuICAgICAgcGFnZVBhcmFtTG9jYXRpb24gPT09IGxpbWl0UGFyYW1Mb2NhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bcGFnZVBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ucGFnZUFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgICAgLi4ubGltaXRBcmdzW2xpbWl0UGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgICAgICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW3BhZ2VQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLnBhZ2VBcmdzW3BhZ2VQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW2xpbWl0UGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5saW1pdEFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBtZXJnZWRBcmdzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGFnZVBhcmFtTG9jYXRpb24obG9jYXRpb246IEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbG9jID0gbG9jYXRpb24gPz8gJ3F1ZXJ5JztcblxuICAgIHN3aXRjaCAobG9jKSB7XG4gICAgICBjYXNlICdwYXRoJzpcbiAgICAgICAgcmV0dXJuICdwYXRoUGFyYW1zJztcbiAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgcmV0dXJuICdxdWVyeVBhcmFtcyc7XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgcmV0dXJuICdib2R5JztcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgIHJldHVybiAnaGVhZGVycyc7XG4gICAgICBjYXNlICd2YXJpYWJsZSc6XG4gICAgICAgIHJldHVybiAndmFyaWFibGVzJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWdlUGFyYW1Mb2NhdGlvbjogJHtsb2N9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTVFLE1BQU0sT0FBTyxhQUFhO0lBZ0J4QixJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFB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QUFDO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxXQUFXLENBQUM7WUFDckI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJTdWNjZXNzLCBRdWVyeVN0YXRlRGF0YSwgdGFrZVVudGlsUmVzcG9uc2UgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIFF1ZXJ5Q3JlYXRvckFyZ3MsIFF1ZXJ5Q3JlYXRvclJldHVyblR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSW5maW5pdHlRdWVyeUNvbmZpZywgSW5maW5pdHlRdWVyeVBhcmFtTG9jYXRpb24gfSBmcm9tICcuL2luZmluaXR5LXF1ZXJ5LnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEluZmluaXR5UXVlcnk8XG4gIFF1ZXJ5Q3JlYXRvciBleHRlbmRzIEFueVF1ZXJ5Q3JlYXRvcixcbiAgUXVlcnkgZXh0ZW5kcyBRdWVyeUNyZWF0b3JSZXR1cm5UeXBlPFF1ZXJ5Q3JlYXRvcj4sXG4gIEFyZ3MgZXh0ZW5kcyBRdWVyeUNyZWF0b3JBcmdzPFF1ZXJ5Q3JlYXRvcj4sXG4gIFF1ZXJ5UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVN0YXRlRGF0YTxRdWVyeVsnc3RhdGUnXT4sXG4gIEluZmluaXR5UmVzcG9uc2UgZXh0ZW5kcyB1bmtub3duW10sXG4+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudENhbGN1bGF0ZWRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RvdGFsUGFnZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXNQZXJQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UXVlcnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW5maW5pdHlSZXNwb25zZT4oW10gYXMgYW55IGFzIEluZmluaXR5UmVzcG9uc2UpO1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgZ2V0IGN1cnJlbnRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDYWxjdWxhdGVkUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMkKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXRlbXNQZXJQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudFF1ZXJ5JCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFF1ZXJ5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRRdWVyeSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBkYXRhJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbmZpZzogSW5maW5pdHlRdWVyeUNvbmZpZzxRdWVyeUNyZWF0b3IsIEFyZ3MsIFF1ZXJ5UmVzcG9uc2UsIEluZmluaXR5UmVzcG9uc2U+KSB7fVxuXG4gIG5leHRQYWdlKCkge1xuICAgIGNvbnN0IG5ld1BhZ2UgPSAodGhpcy5fY3VycmVudFBhZ2UkLnZhbHVlID8/IDApICsgMTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUGFnZSA9XG4gICAgICB0aGlzLl9jb25maWc/LnBhZ2VQYXJhbT8udmFsdWVDYWxjdWxhdG9yPy4oe1xuICAgICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgICB0b3RhbFBhZ2VzOiB0aGlzLnRvdGFsUGFnZXMsXG4gICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICB9KSA/PyBuZXdQYWdlO1xuXG4gICAgaWYgKHRoaXMudG90YWxQYWdlcyAhPT0gbnVsbCAmJiBjYWxjdWxhdGVkUGFnZSA+IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBsb2FkIG1vcmUgcGFnZXMsIGFscmVhZHkgYXQgdGhlIGVuZC4gTWFrZSBzdXJlIHRvIG5vdCByZW5kZXIgdGhlIGluZmluaXR5IHF1ZXJ5IHRyaWdnZXIgdXNpbmcgKm5nSWYgY2FuTG9hZE1vcmUnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmdzID0gdGhpcy5fcHJlcGFyZUFyZ3ModGhpcy5fY29uZmlnLCBjYWxjdWxhdGVkUGFnZSk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuX2NvbmZpZy5xdWVyeUNyZWF0b3IucHJlcGFyZShhcmdzKS5leGVjdXRlKCkgYXMgUXVlcnk7XG4gICAgdGhpcy5faGFuZGxlTmV3UXVlcnkocXVlcnkpO1xuXG4gICAgdGhpcy5fY3VycmVudFBhZ2UkLm5leHQobmV3UGFnZSk7XG4gICAgdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5uZXh0KGNhbGN1bGF0ZWRQYWdlKTtcbiAgICB0aGlzLl9jdXJyZW50UXVlcnkkLm5leHQocXVlcnkpO1xuICB9XG5cbiAgcmVzZXQoXG4gICAgbmV3Q29uZmlnPzogT21pdDxcbiAgICAgIEluZmluaXR5UXVlcnlDb25maWc8UXVlcnlDcmVhdG9yLCBBcmdzLCBRdWVyeVJlc3BvbnNlLCBJbmZpbml0eVJlc3BvbnNlPixcbiAgICAgICdxdWVyeUNyZWF0b3InIHwgJ3Jlc3BvbnNlJ1xuICAgID4sXG4gICkge1xuICAgIHRoaXMuX2Rlc3Ryb3koKTtcblxuICAgIHRoaXMuX2NvbmZpZyA9IHsgLi4udGhpcy5fY29uZmlnLCAuLi4obmV3Q29uZmlnID8/IHt9KSB9O1xuXG4gICAgdGhpcy5fY3VycmVudFBhZ2UkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX3RvdGFsUGFnZXMkLm5leHQobnVsbCk7XG4gICAgdGhpcy5faXRlbXNQZXJQYWdlJC5uZXh0KHRoaXMuX2NvbmZpZy5saW1pdFBhcmFtPy52YWx1ZSA/PyAxMCk7XG4gICAgdGhpcy5fY3VycmVudFF1ZXJ5JC5uZXh0KG51bGwpO1xuXG4gICAgdGhpcy5fZGF0YSQubmV4dChbXSBhcyBhbnkgYXMgSW5maW5pdHlSZXNwb25zZSk7XG4gIH1cblxuICBfZGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU5ld1F1ZXJ5KHF1ZXJ5OiBRdWVyeSkge1xuICAgIGNvbnN0IHN0YXRlQ2hhbmdlc1N1YiA9IHF1ZXJ5LnN0YXRlJC5waXBlKHRha2VVbnRpbFJlc3BvbnNlKCksIGZpbHRlclN1Y2Nlc3MoKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICBsZXQgbmV3RGF0YSA9IHRoaXMuX2NvbmZpZz8ucmVzcG9uc2UudmFsdWVFeHRyYWN0b3Ioc3RhdGUucmVzcG9uc2UpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcucmVzcG9uc2UucmV2ZXJzZSkge1xuICAgICAgICAgIG5ld0RhdGEgPSBbLi4ubmV3RGF0YV0ucmV2ZXJzZSgpIGFzIEluZmluaXR5UmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLnJlc3BvbnNlLmFwcGVuZEl0ZW1zVG8gPT09ICdzdGFydCcpIHtcbiAgICAgICAgICBuZXdEYXRhID0gWy4uLm5ld0RhdGEsIC4uLnRoaXMuZGF0YV0gYXMgSW5maW5pdHlSZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdEYXRhID0gWy4uLnRoaXMuZGF0YSwgLi4ubmV3RGF0YV0gYXMgSW5maW5pdHlSZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RhdGEkLm5leHQobmV3RGF0YSk7XG5cbiAgICAgICAgY29uc3QgdG90YWxQYWdlcyA9XG4gICAgICAgICAgdGhpcy5fY29uZmlnLnJlc3BvbnNlLnRvdGFsUGFnZXNFeHRyYWN0b3I/Lih7XG4gICAgICAgICAgICByZXNwb25zZTogc3RhdGUucmVzcG9uc2UsXG4gICAgICAgICAgICBpdGVtc1BlclBhZ2U6IHRoaXMuaXRlbXNQZXJQYWdlLFxuICAgICAgICAgIH0pID8/XG4gICAgICAgICAgc3RhdGUucmVzcG9uc2U/LnRvdGFsUGFnZXMgPz9cbiAgICAgICAgICBudWxsO1xuXG4gICAgICAgIHRoaXMuX3RvdGFsUGFnZXMkLm5leHQodG90YWxQYWdlcyk7XG4gICAgICB9LFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucyA9IHRoaXMuX3N1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWIpID0+IHN1YiAhPT0gc3RhdGVDaGFuZ2VzU3ViKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goc3RhdGVDaGFuZ2VzU3ViKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVBcmdzKGNvbmZpZzogSW5maW5pdHlRdWVyeUNvbmZpZzxRdWVyeUNyZWF0b3IsIEFyZ3MsIFF1ZXJ5UmVzcG9uc2UsIEluZmluaXR5UmVzcG9uc2U+LCBwYWdlOiBudW1iZXIpIHtcbiAgICBjb25zdCBwYWdlUGFyYW1Mb2NhdGlvbiA9IHRoaXMuX2dldFBhZ2VQYXJhbUxvY2F0aW9uKGNvbmZpZz8ucGFnZVBhcmFtPy5sb2NhdGlvbik7XG5cbiAgICBjb25zdCBwYWdlQXJncyA9IHtcbiAgICAgIFtwYWdlUGFyYW1Mb2NhdGlvbl06IHtcbiAgICAgICAgW2NvbmZpZz8ucGFnZVBhcmFtPy5rZXkgPz8gJ3BhZ2UnXTogcGFnZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGxpbWl0UGFyYW1Mb2NhdGlvbiA9IHRoaXMuX2dldFBhZ2VQYXJhbUxvY2F0aW9uKGNvbmZpZz8ubGltaXRQYXJhbT8ubG9jYXRpb24pO1xuXG4gICAgY29uc3QgbGltaXRBcmdzID0ge1xuICAgICAgW2xpbWl0UGFyYW1Mb2NhdGlvbl06IHtcbiAgICAgICAgW2NvbmZpZz8ubGltaXRQYXJhbT8ua2V5ID8/ICdsaW1pdCddOiBjb25maWc/LmxpbWl0UGFyYW0/LnZhbHVlID8/IDEwLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdENvbmZpZyA9IGNvbmZpZz8uZGVmYXVsdEFyZ3MgPz8ge307XG5cbiAgICBjb25zdCBtZXJnZWRBcmdzID1cbiAgICAgIHBhZ2VQYXJhbUxvY2F0aW9uID09PSBsaW1pdFBhcmFtTG9jYXRpb25cbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgICAgICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW3BhZ2VQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLnBhZ2VBcmdzW2xpbWl0UGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICAgIC4uLmxpbWl0QXJnc1tsaW1pdFBhcmFtTG9jYXRpb25dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4uZGVmYXVsdENvbmZpZyxcbiAgICAgICAgICAgIFtwYWdlUGFyYW1Mb2NhdGlvbl06IHtcbiAgICAgICAgICAgICAgLi4uKGNvbmZpZz8uZGVmYXVsdEFyZ3M/LltwYWdlUGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5wYWdlQXJnc1twYWdlUGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW2xpbWl0UGFyYW1Mb2NhdGlvbl06IHtcbiAgICAgICAgICAgICAgLi4uKGNvbmZpZz8uZGVmYXVsdEFyZ3M/LltsaW1pdFBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ubGltaXRBcmdzW2xpbWl0UGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4gbWVyZ2VkQXJncztcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhZ2VQYXJhbUxvY2F0aW9uKGxvY2F0aW9uOiBJbmZpbml0eVF1ZXJ5UGFyYW1Mb2NhdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGxvYyA9IGxvY2F0aW9uID8/ICdxdWVyeSc7XG5cbiAgICBzd2l0Y2ggKGxvYykge1xuICAgICAgY2FzZSAncGF0aCc6XG4gICAgICAgIHJldHVybiAncGF0aFBhcmFtcyc7XG4gICAgICBjYXNlICdxdWVyeSc6XG4gICAgICAgIHJldHVybiAncXVlcnlQYXJhbXMnO1xuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAgIHJldHVybiAnYm9keSc7XG4gICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICByZXR1cm4gJ2hlYWRlcnMnO1xuICAgICAgY2FzZSAndmFyaWFibGUnOlxuICAgICAgICByZXR1cm4gJ3ZhcmlhYmxlcyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFnZVBhcmFtTG9jYXRpb246ICR7bG9jfWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,24 +1,10 @@
1
- import { BehaviorSubject, interval, takeUntil } from 'rxjs';
1
+ import { BehaviorSubject, interval, Subject, takeUntil, tap } from 'rxjs';
2
2
  import { transformGql } from '../gql';
3
- import { buildBody, guessContentType, isAbortRequestError, isRequestError, request, transformMethod, } from '../request';
4
- import { deepFreeze } from '../utils';
5
- import { isGqlQueryConfig, isQueryStateLoading, isQueryStateSuccess, mergeHeaders } from './query.utils';
3
+ import { request, transformMethod } from '../request';
4
+ import { filterSuccess, getDefaultHeaders, isGqlQueryConfig, isQueryStateLoading, isQueryStateSuccess, mergeHeaders, takeUntilResponse, } from './query.utils';
6
5
  export class Query {
7
- constructor(_client, _queryConfig, _route, _args) {
8
- this._client = _client;
9
- this._queryConfig = _queryConfig;
10
- this._route = _route;
11
- this._args = _args;
12
- this._currentId = 0;
13
- this._abortController = new AbortController();
14
- this._pollingSubscription = null;
15
- this._state$ = new BehaviorSubject({
16
- type: "PREPARED" /* QueryStateType.Prepared */,
17
- meta: { id: this._currentId },
18
- });
19
- }
20
6
  get _nextId() {
21
- return this._currentId++;
7
+ return ++this._currentId;
22
8
  }
23
9
  get state$() {
24
10
  return this._state$.asObservable();
@@ -36,6 +22,19 @@ export class Query {
36
22
  }
37
23
  return ts < Date.now();
38
24
  }
25
+ constructor(_client, _queryConfig, _routeWithParams, _args) {
26
+ this._client = _client;
27
+ this._queryConfig = _queryConfig;
28
+ this._routeWithParams = _routeWithParams;
29
+ this._args = _args;
30
+ this._currentId = 0;
31
+ this._pollingSubscription = null;
32
+ this._onAbort$ = new Subject();
33
+ this._state$ = new BehaviorSubject({
34
+ type: "PREPARED" /* QueryStateType.Prepared */,
35
+ meta: { id: this._currentId },
36
+ });
37
+ }
39
38
  clone() {
40
39
  return this._client.fetch(this._queryConfig);
41
40
  }
@@ -50,22 +49,20 @@ export class Query {
50
49
  if (isQueryStateLoading(this._state$.value)) {
51
50
  this.abort();
52
51
  }
53
- const meta = deepFreeze({ id });
52
+ const meta = { id };
54
53
  this._state$.next({
55
54
  type: "LOADING" /* QueryStateType.Loading */,
56
55
  meta,
57
56
  });
58
- let body = null;
59
- let contentType = null;
57
+ this._updateUseResultInDependencies();
58
+ let body;
60
59
  if (isGqlQueryConfig(this._queryConfig)) {
61
60
  const queryTemplate = this._queryConfig.query;
62
61
  const query = transformGql(queryTemplate);
63
- contentType = 'application/json';
64
62
  body = query(this._args?.variables);
65
63
  }
66
64
  else {
67
- body = buildBody(this._args?.body);
68
- contentType = guessContentType(this._args?.body);
65
+ body = this._args?.body;
69
66
  }
70
67
  let authHeader = null;
71
68
  if (this._queryConfig.secure) {
@@ -79,57 +76,83 @@ export class Query {
79
76
  authHeader = this._client.authProvider.header;
80
77
  }
81
78
  }
82
- let headers = mergeHeaders(authHeader, this._args?.headers);
83
- if (contentType && !headers?.['Content-Type'] && !headers?.['content-type']) {
84
- if (headers) {
85
- headers['Content-Type'] = contentType;
86
- }
87
- else {
88
- headers = {
89
- 'Content-Type': contentType,
90
- };
91
- }
92
- }
93
79
  request({
94
- route: this._route,
95
- init: {
96
- method: transformMethod(this._queryConfig.method),
97
- signal: this._abortController.signal,
98
- body,
99
- headers: headers || undefined,
100
- },
80
+ urlWithParams: this._routeWithParams,
81
+ method: transformMethod(this._queryConfig.method),
82
+ body,
83
+ headers: mergeHeaders(getDefaultHeaders(this._client.config.request?.headers, this._queryConfig.method), authHeader, this._args?.headers) || undefined,
101
84
  cacheAdapter: this._client.config.request?.cacheAdapter,
85
+ reportProgress: this._queryConfig.reportProgress,
86
+ responseType: this._queryConfig.responseType,
87
+ withCredentials: this._queryConfig.withCredentials,
102
88
  })
103
- .then((response) => {
104
- const isResponseObject = typeof response === 'object';
105
- const isGql = isGqlQueryConfig(this._queryConfig);
106
- let responseData = null;
107
- if (isGql &&
108
- isResponseObject &&
109
- !!response.data &&
110
- typeof response.data === 'object' &&
111
- 'data' in response.data) {
112
- responseData = response.data['data'];
113
- }
114
- else {
115
- responseData = response.data;
116
- }
117
- const transformedResponse = this._queryConfig.responseTransformer
118
- ? this._queryConfig.responseTransformer(responseData)
119
- : responseData;
120
- this._state$.next({
121
- type: "SUCCESS" /* QueryStateType.Success */,
122
- response: deepFreeze(transformedResponse),
123
- rawResponse: deepFreeze(responseData),
124
- meta: deepFreeze({ ...meta, expiresAt: response.expiresInTimestamp }),
125
- });
126
- })
127
- .catch((error) => this._handleExecuteError(error, meta));
89
+ .pipe(takeUntil(this._onAbort$))
90
+ .subscribe({
91
+ next: (state) => {
92
+ if (state.type === 'start') {
93
+ this._state$.next({
94
+ type: "LOADING" /* QueryStateType.Loading */,
95
+ meta,
96
+ });
97
+ }
98
+ else if (state.type === 'download-progress') {
99
+ this._state$.next({
100
+ type: "LOADING" /* QueryStateType.Loading */,
101
+ progress: state.progress,
102
+ partialText: state.partialText,
103
+ meta,
104
+ });
105
+ }
106
+ else if (state.type === 'upload-progress') {
107
+ this._state$.next({
108
+ type: "LOADING" /* QueryStateType.Loading */,
109
+ progress: state.progress,
110
+ meta,
111
+ });
112
+ }
113
+ else if (state.type === 'success') {
114
+ const isResponseObject = typeof state.response === 'object';
115
+ const isGql = isGqlQueryConfig(this._queryConfig);
116
+ let responseData = null;
117
+ if (isGql &&
118
+ isResponseObject &&
119
+ !!state.response &&
120
+ typeof state.response === 'object' &&
121
+ 'data' in state.response) {
122
+ responseData = state.response['data'];
123
+ }
124
+ else {
125
+ responseData = state.response;
126
+ }
127
+ const transformedResponse = this._queryConfig.responseTransformer
128
+ ? this._queryConfig.responseTransformer(responseData)
129
+ : responseData;
130
+ this._state$.next({
131
+ type: "SUCCESS" /* QueryStateType.Success */,
132
+ rawResponse: state.response,
133
+ response: transformedResponse,
134
+ meta: { ...meta, expiresAt: state.expiresInTimestamp },
135
+ });
136
+ }
137
+ else if (state.type === 'failure') {
138
+ this._state$.next({
139
+ type: "FAILURE" /* QueryStateType.Failure */,
140
+ error: state.error,
141
+ meta,
142
+ });
143
+ }
144
+ else if (state.type === 'cancel') {
145
+ this._state$.next({
146
+ type: "CANCELLED" /* QueryStateType.Cancelled */,
147
+ meta,
148
+ });
149
+ }
150
+ },
151
+ });
128
152
  return this;
129
153
  }
130
154
  abort() {
131
- this._abortController.abort();
132
- this._abortController = new AbortController();
155
+ this._onAbort$.next();
133
156
  return this;
134
157
  }
135
158
  poll(config) {
@@ -146,23 +169,25 @@ export class Query {
146
169
  this._pollingSubscription = null;
147
170
  return this;
148
171
  }
149
- _handleExecuteError(error, meta) {
150
- if (isAbortRequestError(error)) {
151
- this._state$.next({
152
- type: "CANCELLED" /* QueryStateType.Cancelled */,
153
- meta,
154
- });
155
- }
156
- else if (isRequestError(error)) {
157
- this._state$.next({
158
- type: "FAILURE" /* QueryStateType.Failure */,
159
- error,
160
- meta,
161
- });
162
- }
163
- else {
164
- throw error;
172
+ _updateUseResultInDependencies() {
173
+ if (!this._args?.useResultIn?.length) {
174
+ return;
165
175
  }
176
+ this.state$
177
+ .pipe(filterSuccess(), takeUntil(this._onAbort$), takeUntilResponse(), tap((state) => {
178
+ if (!this._args?.useResultIn) {
179
+ return;
180
+ }
181
+ for (const query of this._args.useResultIn) {
182
+ query._state$.next({
183
+ type: "SUCCESS" /* QueryStateType.Success */,
184
+ meta: { ...state.meta, id: query._nextId },
185
+ rawResponse: state.rawResponse,
186
+ response: state.response,
187
+ });
188
+ }
189
+ }))
190
+ .subscribe();
166
191
  }
167
192
  }
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXRDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixjQUFjLEVBRWQsT0FBTyxFQUNQLGVBQWUsR0FDaEIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVl0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE1BQU0sT0FBTyxLQUFLO0lBdUNoQixZQUNVLE9BQW9CLEVBQ3BCLFlBRTJELEVBQzNELE1BQWEsRUFDYixLQUE0QjtRQUw1QixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGlCQUFZLEdBQVosWUFBWSxDQUUrQztRQUMzRCxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUF0QzlCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3pDLHlCQUFvQixHQUF3QixJQUFJLENBQUM7UUFzQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQXdEO1lBQ3hGLElBQUksMENBQXlCO1lBQzdCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUM7SUF0Q0QsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFD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LENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUVqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUFjLEVBQUUsSUFBb0I7UUFDOUQsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEIsSUFBSSw0Q0FBMEI7Z0JBQzlCLElBQUk7YUFDTCxDQUFDLENBQUM7U0FDSjthQUFNLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixJQUFJLHdDQUF3QjtnQkFDNUIsS0FBSztnQkFDTCxJQUFJO2FBQ0wsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDO1NBQ2I7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGludGVydmFsLCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdHJhbnNmb3JtR3FsIH0gZnJvbSAnLi4vZ3FsJztcbmltcG9ydCB7IERlZmF1bHRSZXNwb25zZVRyYW5zZm9ybWVyLCBRdWVyeUNsaWVudCwgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgYnVpbGRCb2R5LFxuICBndWVzc0NvbnRlbnRUeXBlLFxuICBpc0Fib3J0UmVxdWVzdEVycm9yLFxuICBpc1JlcXVlc3RFcnJvcixcbiAgTWV0aG9kIGFzIE1ldGhvZFR5cGUsXG4gIHJlcXVlc3QsXG4gIHRyYW5zZm9ybU1ldGhvZCxcbn0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBkZWVwRnJlZXplIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFBvbGxDb25maWcsXG4gIFF1ZXJ5Q29uZmlnLFxuICBRdWVyeVN0YXRlLFxuICBRdWVyeVN0YXRlTWV0YSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIFJvdXRlVHlwZSxcbiAgUnVuUXVlcnlPcHRpb25zLFxufSBmcm9tICcuL3F1ZXJ5LnR5cGVzJztcbmltcG9ydCB7IGlzR3FsUXVlcnlDb25maWcsIGlzUXVlcnlTdGF0ZUxvYWRpbmcsIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsIG1lcmdlSGVhZGVycyB9IGZyb20gJy4vcXVlcnkudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUXVlcnk8XG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBNZXRob2QgZXh0ZW5kcyBNZXRob2RUeXBlLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+ID0gRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXI8UmVzcG9uc2U+LFxuPiB7XG4gIHByaXZhdGUgX2N1cnJlbnRJZCA9IDA7XG4gIHByaXZhdGUgX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcHJpdmF0ZSBfcG9sbGluZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlTdGF0ZTxSZXR1cm5UeXBlPFJlc3BvbnNlVHJhbnNmb3JtZXI+LCBSZXNwb25zZT4+O1xuXG4gIHByaXZhdGUgZ2V0IF9uZXh0SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRJZCsrO1xuICB9XG5cbiAgZ2V0IHN0YXRlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNFeHBpcmVkKCkge1xuICAgIGlmICghaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLnN0YXRlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHRzID0gdGhpcy5zdGF0ZS5tZXRhLmV4cGlyZXNBdDtcblxuICAgIGlmICghdHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0cyA8IERhdGUubm93KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jbGllbnQ6IFF1ZXJ5Q2xpZW50LFxuICAgIHByaXZhdGUgX3F1ZXJ5Q29uZmlnOlxuICAgICAgfCBRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICAgIHByaXZhdGUgX3JvdXRlOiBSb3V0ZSxcbiAgICBwcml2YXRlIF9hcmdzOiBBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuX3N0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlTdGF0ZTxSZXR1cm5UeXBlPFJlc3BvbnNlVHJhbnNmb3JtZXI+LCBSZXNwb25zZT4+KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkLFxuICAgICAgbWV0YTogeyBpZDogdGhpcy5fY3VycmVudElkIH0sXG4gICAgfSk7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xpZW50LmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBNZXRob2QsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgfVxuXG4gIGV4ZWN1dGU8Q29tcHV0ZWRSZXNwb25zZSBleHRlbmRzIFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4+KG9wdGlvbnM/OiBSdW5RdWVyeU9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBpcmVkICYmICFvcHRpb25zPy5za2lwQ2FjaGUgJiYgaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLnN0YXRlKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSAmJiAhdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZXhlY3V0ZSBzZWN1cmUgcXVlcnkgd2l0aG91dCBhdXRoIHByb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9uZXh0SWQ7XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyh0aGlzLl9zdGF0ZSQudmFsdWUpKSB7XG4gICAgICB0aGlzLmFib3J0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YSA9IGRlZXBGcmVlemUoeyBpZCB9KTtcblxuICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICBtZXRhLFxuICAgIH0pO1xuXG4gICAgbGV0IGJvZHk6IHN0cmluZyB8IEZvcm1EYXRhIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGNvbnRlbnRUeXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKSkge1xuICAgICAgY29uc3QgcXVlcnlUZW1wbGF0ZSA9IHRoaXMuX3F1ZXJ5Q29uZmlnLnF1ZXJ5O1xuICAgICAgY29uc3QgcXVlcnkgPSB0cmFuc2Zvcm1HcWwocXVlcnlUZW1wbGF0ZSk7XG5cbiAgICAgIGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgICAgYm9keSA9IHF1ZXJ5KHRoaXMuX2FyZ3M/LnZhcmlhYmxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvZHkgPSBidWlsZEJvZHkodGhpcy5fYXJncz8uYm9keSk7XG4gICAgICBjb250ZW50VHlwZSA9IGd1ZXNzQ29udGVudFR5cGUodGhpcy5fYXJncz8uYm9keSk7XG4gICAgfVxuXG4gICAgbGV0IGF1dGhIZWFkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9xdWVyeUNvbmZpZy5zZWN1cmUpIHtcbiAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuX2NsaWVudC5hdXRoUHJvdmlkZXI/LmhlYWRlcjtcblxuICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICBhdXRoSGVhZGVyID0gaGVhZGVyO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5fY2xpZW50LmF1dGhQcm92aWRlcj8uaGVhZGVyKSB7XG4gICAgICBpZiAodGhpcy5fcXVlcnlDb25maWcuc2VjdXJlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcXVlcnlDb25maWcuc2VjdXJlKSB7XG4gICAgICAgIGF1dGhIZWFkZXIgPSB0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyLmhlYWRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaGVhZGVycyA9IG1lcmdlSGVhZGVycyhhdXRoSGVhZGVyLCB0aGlzLl9hcmdzPy5oZWFkZXJzKTtcblxuICAgIGlmIChjb250ZW50VHlwZSAmJiAhaGVhZGVycz8uWydDb250ZW50LVR5cGUnXSAmJiAhaGVhZGVycz8uWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgaWYgKGhlYWRlcnMpIHtcbiAgICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBjb250ZW50VHlwZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlcnMgPSB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRUeXBlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlcXVlc3Q8UmVzcG9uc2U+KHtcbiAgICAgIHJvdXRlOiB0aGlzLl9yb3V0ZSxcbiAgICAgIGluaXQ6IHtcbiAgICAgICAgbWV0aG9kOiB0cmFuc2Zvcm1NZXRob2QodGhpcy5fcXVlcnlDb25maWcubWV0aG9kKSxcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBib2R5LFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzIHx8IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjYWNoZUFkYXB0ZXI6IHRoaXMuX2NsaWVudC5jb25maWcucmVxdWVzdD8uY2FjaGVBZGFwdGVyLFxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc3QgaXNSZXNwb25zZU9iamVjdCA9IHR5cGVvZiByZXNwb25zZSA9PT0gJ29iamVjdCc7XG5cbiAgICAgICAgY29uc3QgaXNHcWwgPSBpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKTtcblxuICAgICAgICBsZXQgcmVzcG9uc2VEYXRhOiBSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNHcWwgJiZcbiAgICAgICAgICBpc1Jlc3BvbnNlT2JqZWN0ICYmXG4gICAgICAgICAgISFyZXNwb25zZS5kYXRhICYmXG4gICAgICAgICAgdHlwZW9mIHJlc3BvbnNlLmRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgJ2RhdGEnIGluIHJlc3BvbnNlLmRhdGFcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzcG9uc2VEYXRhID0gKHJlc3BvbnNlLmRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pWydkYXRhJ10gYXMgUmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuZGF0YSBhcyBSZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzcG9uc2UgPSB0aGlzLl9xdWVyeUNvbmZpZy5yZXNwb25zZVRyYW5zZm9ybWVyXG4gICAgICAgICAgPyB0aGlzLl9xdWVyeUNvbmZpZy5yZXNwb25zZVRyYW5zZm9ybWVyKHJlc3BvbnNlRGF0YSlcbiAgICAgICAgICA6IHJlc3BvbnNlRGF0YTtcblxuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcyxcbiAgICAgICAgICByZXNwb25zZTogZGVlcEZyZWV6ZSh0cmFuc2Zvcm1lZFJlc3BvbnNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSBhcyBDb21wdXRlZFJlc3BvbnNlLFxuICAgICAgICAgIHJhd1Jlc3BvbnNlOiBkZWVwRnJlZXplKHJlc3BvbnNlRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgYXMgUmVzcG9uc2UsXG4gICAgICAgICAgbWV0YTogZGVlcEZyZWV6ZSh7IC4uLm1ldGEsIGV4cGlyZXNBdDogcmVzcG9uc2UuZXhwaXJlc0luVGltZXN0YW1wIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB0aGlzLl9oYW5kbGVFeGVjdXRlRXJyb3IoZXJyb3IsIG1ldGEpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwb2xsKGNvbmZpZzogUG9sbENvbmZpZykge1xuICAgIGlmICh0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwoY29uZmlnLmludGVydmFsKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGNvbmZpZy50YWtlVW50aWwpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmV4ZWN1dGUoeyBza2lwQ2FjaGU6IHRydWUgfSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdG9wUG9sbGluZygpIHtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVFeGVjdXRlRXJyb3IoZXJyb3I6IHVua25vd24sIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhKSB7XG4gICAgaWYgKGlzQWJvcnRSZXF1ZXN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkNhbmNlbGxlZCxcbiAgICAgICAgbWV0YSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNSZXF1ZXN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBtZXRhLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuIl19
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFdEMsT0FBTyxFQUF3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBWTVFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsTUFBTSxPQUFPLEtBQUs7SUFhaEIsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVyQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6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TSxFQUFFO1lBQ3BDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxNQUFNO2FBQ1IsSUFBSSxDQUNILGFBQWEsRUFBRSxFQUNmLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLGlCQUFpQixFQUFFLEVBQ25CLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUM1QixPQUFPO2FBQ1I7WUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDakIsSUFBSSx3Q0FBd0I7b0JBQzVCLElBQUksRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDMUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7aUJBQ3pCLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1HcWwgfSBmcm9tICcuLi9ncWwnO1xuaW1wb3J0IHsgRGVmYXVsdFJlc3BvbnNlVHJhbnNmb3JtZXIsIFF1ZXJ5Q2xpZW50LCBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZSB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBNZXRob2QgYXMgTWV0aG9kVHlwZSwgcmVxdWVzdCwgdHJhbnNmb3JtTWV0aG9kIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQge1xuICBCYXNlQXJndW1lbnRzLFxuICBHcWxRdWVyeUNvbmZpZyxcbiAgUG9sbENvbmZpZyxcbiAgUXVlcnlTdGF0ZSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIFJlc3RRdWVyeUNvbmZpZyxcbiAgUm91dGVUeXBlLFxuICBSdW5RdWVyeU9wdGlvbnMsXG4gIFdpdGhVc2VSZXN1bHRJbixcbn0gZnJvbSAnLi9xdWVyeS50eXBlcyc7XG5pbXBvcnQge1xuICBmaWx0ZXJTdWNjZXNzLFxuICBnZXREZWZhdWx0SGVhZGVycyxcbiAgaXNHcWxRdWVyeUNvbmZpZyxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgbWVyZ2VIZWFkZXJzLFxuICB0YWtlVW50aWxSZXNwb25zZSxcbn0gZnJvbSAnLi9xdWVyeS51dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeTxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIChCYXNlQXJndW1lbnRzICYgV2l0aFVzZVJlc3VsdEluPFJlc3BvbnNlLCBSZXNwb25zZVRyYW5zZm9ybWVyPikgfCB1bmRlZmluZWQsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIE1ldGhvZCBleHRlbmRzIE1ldGhvZFR5cGUsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gPSBEZWZhdWx0UmVzcG9uc2VUcmFuc2Zvcm1lcjxSZXNwb25zZT4sXG4+IHtcbiAgcHJpdmF0ZSBfY3VycmVudElkID0gMDtcbiAgcHJpdmF0ZSBfcG9sbGluZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29uQWJvcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeVN0YXRlPFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4sIFJlc3BvbnNlPj47XG5cbiAgcHJpdmF0ZSBnZXQgX25leHRJZCgpIHtcbiAgICByZXR1cm4gKyt0aGlzLl9jdXJyZW50SWQ7XG4gIH1cblxuICBnZXQgc3RhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0V4cGlyZWQoKSB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMuc3RhdGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdHMgPSB0aGlzLnN0YXRlLm1ldGEuZXhwaXJlc0F0O1xuXG4gICAgaWYgKCF0cykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzIDwgRGF0ZS5ub3coKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfcXVlcnlDb25maWc6XG4gICAgICB8IFJlc3RRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LFxuICAgIHByaXZhdGUgX3JvdXRlV2l0aFBhcmFtczogUm91dGUsXG4gICAgcHJpdmF0ZSBfYXJnczogQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLl9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5U3RhdGU8UmV0dXJuVHlwZTxSZXNwb25zZVRyYW5zZm9ybWVyPiwgUmVzcG9uc2U+Pih7XG4gICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5QcmVwYXJlZCxcbiAgICAgIG1ldGE6IHsgaWQ6IHRoaXMuX2N1cnJlbnRJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudC5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgTWV0aG9kLCBSZXNwb25zZVRyYW5zZm9ybWVyPih0aGlzLl9xdWVyeUNvbmZpZyk7XG4gIH1cblxuICBleGVjdXRlPENvbXB1dGVkUmVzcG9uc2UgZXh0ZW5kcyBSZXR1cm5UeXBlPFJlc3BvbnNlVHJhbnNmb3JtZXI+PihvcHRpb25zPzogUnVuUXVlcnlPcHRpb25zKSB7XG4gICAgaWYgKCF0aGlzLmlzRXhwaXJlZCAmJiAhb3B0aW9ucz8uc2tpcENhY2hlICYmIGlzUXVlcnlTdGF0ZVN1Y2Nlc3ModGhpcy5zdGF0ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9xdWVyeUNvbmZpZy5zZWN1cmUgJiYgIXRoaXMuX2NsaWVudC5hdXRoUHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGV4ZWN1dGUgc2VjdXJlIHF1ZXJ5IHdpdGhvdXQgYXV0aCBwcm92aWRlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gdGhpcy5fbmV4dElkO1xuXG4gICAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcodGhpcy5fc3RhdGUkLnZhbHVlKSkge1xuICAgICAgdGhpcy5hYm9ydCgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGEgPSB7IGlkIH07XG5cbiAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLFxuICAgICAgbWV0YSxcbiAgICB9KTtcblxuICAgIHRoaXMuX3VwZGF0ZVVzZVJlc3VsdEluRGVwZW5kZW5jaWVzKCk7XG5cbiAgICBsZXQgYm9keTogdW5rbm93bjtcblxuICAgIGlmIChpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKSkge1xuICAgICAgY29uc3QgcXVlcnlUZW1wbGF0ZSA9IHRoaXMuX3F1ZXJ5Q29uZmlnLnF1ZXJ5O1xuICAgICAgY29uc3QgcXVlcnkgPSB0cmFuc2Zvcm1HcWwocXVlcnlUZW1wbGF0ZSk7XG5cbiAgICAgIGJvZHkgPSBxdWVyeSh0aGlzLl9hcmdzPy52YXJpYWJsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib2R5ID0gdGhpcy5fYXJncz8uYm9keTtcbiAgICB9XG5cbiAgICBsZXQgYXV0aEhlYWRlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSkge1xuICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlcj8uaGVhZGVyO1xuXG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGF1dGhIZWFkZXIgPSBoZWFkZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyPy5oZWFkZXIpIHtcbiAgICAgIGlmICh0aGlzLl9xdWVyeUNvbmZpZy5zZWN1cmUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9xdWVyeUNvbmZpZy5zZWN1cmUpIHtcbiAgICAgICAgYXV0aEhlYWRlciA9IHRoaXMuX2NsaWVudC5hdXRoUHJvdmlkZXIuaGVhZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlcXVlc3Q8UmVzcG9uc2U+KHtcbiAgICAgIHVybFdpdGhQYXJhbXM6IHRoaXMuX3JvdXRlV2l0aFBhcmFtcyxcbiAgICAgIG1ldGhvZDogdHJhbnNmb3JtTWV0aG9kKHRoaXMuX3F1ZXJ5Q29uZmlnLm1ldGhvZCksXG4gICAgICBib2R5LFxuICAgICAgaGVhZGVyczpcbiAgICAgICAgbWVyZ2VIZWFkZXJzKFxuICAgICAgICAgIGdldERlZmF1bHRIZWFkZXJzKHRoaXMuX2NsaWVudC5jb25maWcucmVxdWVzdD8uaGVhZGVycywgdGhpcy5fcXVlcnlDb25maWcubWV0aG9kKSxcbiAgICAgICAgICBhdXRoSGVhZGVyLFxuICAgICAgICAgIHRoaXMuX2FyZ3M/LmhlYWRlcnMsXG4gICAgICAgICkgfHwgdW5kZWZpbmVkLFxuICAgICAgY2FjaGVBZGFwdGVyOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LmNhY2hlQWRhcHRlcixcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0aGlzLl9xdWVyeUNvbmZpZy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogdGhpcy5fcXVlcnlDb25maWcucmVzcG9uc2VUeXBlLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLl9xdWVyeUNvbmZpZy53aXRoQ3JlZGVudGlhbHMsXG4gICAgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZyxcbiAgICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gJ2Rvd25sb2FkLXByb2dyZXNzJykge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLFxuICAgICAgICAgICAgICBwcm9ncmVzczogc3RhdGUucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgIHBhcnRpYWxUZXh0OiBzdGF0ZS5wYXJ0aWFsVGV4dCxcbiAgICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gJ3VwbG9hZC1wcm9ncmVzcycpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZyxcbiAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHN0YXRlLnByb2dyZXNzLFxuICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVzcG9uc2VPYmplY3QgPSB0eXBlb2Ygc3RhdGUucmVzcG9uc2UgPT09ICdvYmplY3QnO1xuICAgICAgICAgICAgY29uc3QgaXNHcWwgPSBpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKTtcblxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlRGF0YTogUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaXNHcWwgJiZcbiAgICAgICAgICAgICAgaXNSZXNwb25zZU9iamVjdCAmJlxuICAgICAgICAgICAgICAhIXN0YXRlLnJlc3BvbnNlICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBzdGF0ZS5yZXNwb25zZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgJ2RhdGEnIGluIHN0YXRlLnJlc3BvbnNlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmVzcG9uc2VEYXRhID0gc3RhdGUucmVzcG9uc2VbJ2RhdGEnXSBhcyBSZXNwb25zZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IHN0YXRlLnJlc3BvbnNlIGFzIFJlc3BvbnNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFJlc3BvbnNlID0gdGhpcy5fcXVlcnlDb25maWcucmVzcG9uc2VUcmFuc2Zvcm1lclxuICAgICAgICAgICAgICA/IHRoaXMuX3F1ZXJ5Q29uZmlnLnJlc3BvbnNlVHJhbnNmb3JtZXIocmVzcG9uc2VEYXRhKVxuICAgICAgICAgICAgICA6IHJlc3BvbnNlRGF0YTtcblxuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5TdWNjZXNzLFxuICAgICAgICAgICAgICByYXdSZXNwb25zZTogc3RhdGUucmVzcG9uc2UsXG4gICAgICAgICAgICAgIHJlc3BvbnNlOiB0cmFuc2Zvcm1lZFJlc3BvbnNlIGFzIENvbXB1dGVkUmVzcG9uc2UsXG4gICAgICAgICAgICAgIG1ldGE6IHsgLi4ubWV0YSwgZXhwaXJlc0F0OiBzdGF0ZS5leHBpcmVzSW5UaW1lc3RhbXAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmUsXG4gICAgICAgICAgICAgIGVycm9yOiBzdGF0ZS5lcnJvcixcbiAgICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuQ2FuY2VsbGVkLFxuICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuX29uQWJvcnQkLm5leHQoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcG9sbChjb25maWc6IFBvbGxDb25maWcpIHtcbiAgICBpZiAodGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IGludGVydmFsKGNvbmZpZy5pbnRlcnZhbClcbiAgICAgIC5waXBlKHRha2VVbnRpbChjb25maWcudGFrZVVudGlsKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlIH0pKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RvcFBvbGxpbmcoKSB7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVXNlUmVzdWx0SW5EZXBlbmRlbmNpZXMoKSB7XG4gICAgaWYgKCF0aGlzLl9hcmdzPy51c2VSZXN1bHRJbj8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXJTdWNjZXNzKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCksXG4gICAgICAgIHRha2VVbnRpbFJlc3BvbnNlKCksXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuX2FyZ3M/LnVzZVJlc3VsdEluKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiB0aGlzLl9hcmdzLnVzZVJlc3VsdEluKSB7XG4gICAgICAgICAgICBxdWVyeS5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5TdWNjZXNzLFxuICAgICAgICAgICAgICBtZXRhOiB7IC4uLnN0YXRlLm1ldGEsIGlkOiBxdWVyeS5fbmV4dElkIH0sXG4gICAgICAgICAgICAgIHJhd1Jlc3BvbnNlOiBzdGF0ZS5yYXdSZXNwb25zZSxcbiAgICAgICAgICAgICAgcmVzcG9uc2U6IHN0YXRlLnJlc3BvbnNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlIH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IE1ldGhvZCwgUGF0aFBhcmFtcywgUXVlcnlQYXJhbXMsIFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tICcuL3F1ZXJ5JztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUNvbmZpZzxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4+IHtcbiAgLyoqXG4gICAqIFRoZSBodHRwIG1ldGhvZCB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIG1ldGhvZDogTWV0aG9kO1xuXG4gIC8qKlxuICAgKiBUaGUgYXBpIHJvdXRlIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcm91dGU6IFJvdXRlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBhdXRoIHByb3ZpZGVyIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIHF1ZXJ5LlxuICAgKiBUaGUgcXVlcnkgKip3aWxsIHRocm93KiogaWYgdGhlIHF1ZXJ5IGNsaWVudCdzIGF1dGggcHJvdmlkZXIgaXMgdW5zZXQuXG4gICAqL1xuICBzZWN1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzcG9uc2UgdHJhbnNmb3JtZXIgdG8gdXNlIGZvciB0aGUgcXVlcnkuXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0cmFuc2Zvcm1zIHRoZSByZXNwb25zZSB0byB0aGUgZGVzaXJlZCB0eXBlLlxuICAgKi9cbiAgcmVzcG9uc2VUcmFuc2Zvcm1lcj86IFJlc3BvbnNlVHJhbnNmb3JtZXI7XG5cbiAgLyoqXG4gICAqIE9iamVjdCBjb250YWluaW5nIHRoZSBxdWVyeSdzIHR5cGUgaW5mb3JtYXRpb24uXG4gICAqL1xuICB0eXBlcz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXNwb25zZS5cbiAgICAgKi9cbiAgICByZXNwb25zZT86IFJlc3BvbnNlO1xuXG4gICAgLyoqXG4gICAgICogQXJndW1lbnRzIGZvciBleGVjdXRpbmcgdGhlIHF1ZXJ5LlxuICAgICAqXG4gICAgICogLSBgcGF0aFBhcmFtc2A6IFRoZSBwYXRoIHBhcmFtZXRlcnMgZm9yIHRoZSBxdWVyeS4gKGluIGZyb250IG9mIHRoZSA/IGluIHRoZSB1cmwpXG4gICAgICogLSBgcXVlcnlQYXJhbXNgOiBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHF1ZXJ5LiAoYWZ0ZXIgdGhlID8gaW4gdGhlIHVybClcbiAgICAgKiAtIGBib2R5YDogVGhlIGJvZHkgZm9yIHRoZSBxdWVyeS4gVW5hdmFpbGFibGUgZm9yIEdFVCwgSEVBRCBhbmQgT1BUSU9OUyByZXF1ZXN0cy5cbiAgICAgKiAtIGBoZWFkZXJzYDogVGhlIGhlYWRlcnMgZm9yIHRoZSBxdWVyeS5cbiAgICAgKi9cbiAgICBhcmdzPzogQXJndW1lbnRzO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdxbFF1ZXJ5Q29uZmlnPFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+IHwgdW5kZWZpbmVkLFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiB8IHVuZGVmaW5lZCxcbj4ge1xuICBtZXRob2Q6IE1ldGhvZDtcbiAgcXVlcnk6IHN0cmluZztcbiAgcm91dGU/OiBSb3V0ZTtcbiAgc2VjdXJlPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VUcmFuc2Zvcm1lcj86IFJlc3BvbnNlVHJhbnNmb3JtZXI7XG4gIHR5cGVzPzoge1xuICAgIHJlc3BvbnNlPzogUmVzcG9uc2U7XG4gICAgYXJncz86IEFyZ3VtZW50cztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiB8IHVuZGVmaW5lZCxcbj4gPSBPbWl0PFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyPiwgJ21ldGhvZCc+O1xuXG5leHBvcnQgdHlwZSBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+IHwgdW5kZWZpbmVkLFxuPiA9IE9taXQ8R3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LCAnbWV0aG9kJz47XG5cbmV4cG9ydCB0eXBlIEJhc2VBcmd1bWVudHMgPSBXaXRoSGVhZGVycyAmIFdpdGhWYXJpYWJsZXMgJiBXaXRoQm9keSAmIFdpdGhRdWVyeVBhcmFtcyAmIFdpdGhQYXRoUGFyYW1zO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhIZWFkZXJzIHtcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFZhcmlhYmxlcyB7XG4gIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhCb2R5IHtcbiAgYm9keT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFF1ZXJ5UGFyYW1zIHtcbiAgcXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGF0aFBhcmFtcyB7XG4gIHBhdGhQYXJhbXM/OiBQYXRoUGFyYW1zO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuZXhwb3J0IHR5cGUgRW1wdHlPYmplY3QgPSB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBSdW5RdWVyeU9wdGlvbnMge1xuICBza2lwQ2FjaGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBSb3V0ZVR5cGU8QXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZD4gPSBBcmd1bWVudHMgZXh0ZW5kcyB7XG4gIHBhdGhQYXJhbXM6IGluZmVyIFBhdGhQYXJhbXM7XG59XG4gID8gKHA6IFBhdGhQYXJhbXMpID0+IFJvdXRlU3RyaW5nXG4gIDogUm91dGVTdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFJvdXRlU3RyaW5nID0gYC8ke3N0cmluZ31gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGxDb25maWcge1xuICBpbnRlcnZhbDogbnVtYmVyO1xuICB0YWtlVW50aWw6IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIFF1ZXJ5U3RhdGVUeXBlIHtcbiAgUHJlcGFyZWQgPSAnUFJFUEFSRUQnLFxuICBMb2FkaW5nID0gJ0xPQURJTkcnLFxuICBTdWNjZXNzID0gJ1NVQ0NFU1MnLFxuICBGYWlsdXJlID0gJ0ZBSUxVUkUnLFxuICBDYW5jZWxsZWQgPSAnQ0FOQ0VMTEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlZCB7XG4gIHJlYWRvbmx5IHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkO1xuICByZWFkb25seSBtZXRhOiBRdWVyeVN0YXRlTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWNjZXNzPFJlc3BvbnNlID0gdW5rbm93biwgUmF3UmVzcG9uc2UgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3M7XG4gIHJlYWRvbmx5IHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgcmVhZG9ubHkgcmF3UmVzcG9uc2U6IFJhd1Jlc3BvbnNlO1xuICByZWFkb25seSBtZXRhOiBRdWVyeVN0YXRlU3VjY2Vzc01ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbHVyZSB7XG4gIHJlYWRvbmx5IHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmU7XG4gIHJlYWRvbmx5IGVycm9yOiBSZXF1ZXN0RXJyb3I7XG4gIHJlYWRvbmx5IG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRpbmcge1xuICByZWFkb25seSB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nO1xuICByZWFkb25seSBtZXRhOiBRdWVyeVN0YXRlTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsZWQge1xuICByZWFkb25seSB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQ7XG4gIHJlYWRvbmx5IG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RhdGVNZXRhIHtcbiAgcmVhZG9ubHkgaWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVN0YXRlU3VjY2Vzc01ldGEgZXh0ZW5kcyBRdWVyeVN0YXRlTWV0YSB7XG4gIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlTdGF0ZTxSZXNwb25zZSA9IHVua25vd24sIFJhd1Jlc3BvbnNlID0gdW5rbm93bj4gPVxuICB8IExvYWRpbmdcbiAgfCBTdWNjZXNzPFJlc3BvbnNlLCBSYXdSZXNwb25zZT5cbiAgfCBGYWlsdXJlXG4gIHwgQ2FuY2VsbGVkXG4gIHwgUHJlcGFyZWQ7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5U3RhdGVEYXRhPFQgZXh0ZW5kcyBRdWVyeVN0YXRlID0gUXVlcnlTdGF0ZT4gPSBUIGV4dGVuZHMgU3VjY2VzczxpbmZlciBSZXNwb25zZT4gPyBSZXNwb25zZSA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBRdWVyeVN0YXRlUmF3RGF0YTxUIGV4dGVuZHMgUXVlcnlTdGF0ZSA9IFF1ZXJ5U3RhdGU+ID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBUIGV4dGVuZHMgU3VjY2VzczxpbmZlciBSZXNwb25zZSwgaW5mZXIgUmF3UmVzcG9uc2U+ID8gUmF3UmVzcG9uc2UgOiBuZXZlcjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEFueVF1ZXJ5ID0gUXVlcnk8YW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBRdWVyeVR5cGU8XG4gIFQgZXh0ZW5kcyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcmVwYXJlOiAoYXJnczogYW55KSA9PiBBbnlRdWVyeTtcbiAgfSxcbj4gPSBUWydwcmVwYXJlJ10gZXh0ZW5kcyAoKSA9PiBpbmZlciBSXG4gID8gUlxuICA6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFRbJ3ByZXBhcmUnXSBleHRlbmRzIChhcmdzOiBhbnkpID0+IGluZmVyIFJcbiAgPyBSXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UmVzcG9uc2VUeXBlPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+ID0gUSBleHRlbmRzIEFueVF1ZXJ5XG4gID8gUXVlcnlTdGF0ZURhdGE8UVsnc3RhdGUnXT4gfCBudWxsXG4gIDogbnVsbDtcblxuZXhwb3J0IHR5cGUgUXVlcnlSYXdSZXNwb25zZVR5cGU8USBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4gPSBRIGV4dGVuZHMgQW55UXVlcnlcbiAgPyBRdWVyeVN0YXRlUmF3RGF0YTxRWydzdGF0ZSddPiB8IG51bGxcbiAgOiBudWxsO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgUXVlcnlDcmVhdG9yUmV0dXJuVHlwZSwgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgTWV0aG9kLCBQYXRoUGFyYW1zLCBRdWVyeVBhcmFtcywgUmVxdWVzdEVycm9yLCBSZXF1ZXN0UHJvZ3Jlc3MgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi9xdWVyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDb25maWdCYXNlPFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiB8IHVuZGVmaW5lZCxcbj4ge1xuICAvKipcbiAgICogVGhlIGh0dHAgbWV0aG9kIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgbWV0aG9kOiBNZXRob2Q7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGF1dGggcHJvdmlkZXIgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgcXVlcnkuXG4gICAqIFRoZSBxdWVyeSAqKndpbGwgdGhyb3cqKiBpZiB0aGUgcXVlcnkgY2xpZW50J3MgYXV0aCBwcm92aWRlciBpcyB1bnNldC5cbiAgICovXG4gIHNlY3VyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZXNwb25zZSB0cmFuc2Zvcm1lciB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICogQSBmdW5jdGlvbiB0aGF0IHRyYW5zZm9ybXMgdGhlIHJlc3BvbnNlIHRvIHRoZSBkZXNpcmVkIHR5cGUuXG4gICAqL1xuICByZXNwb25zZVRyYW5zZm9ybWVyPzogUmVzcG9uc2VUcmFuc2Zvcm1lcjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgcXVlcnkgc2hvdWxkIGVtaXQgcHJvZ3Jlc3MgZXZlbnRzLlxuICAgKi9cbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBxdWVyeSdzIHJlc3BvbnNlIHR5cGUuXG4gICAqIEBkZWZhdWx0ICdqc29uJ1xuICAgKi9cbiAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlcXVlc3Qgc2hvdWxkIGJlIHNlbnQgd2l0aCBvdXRnb2luZyBjcmVkZW50aWFscyAoY29va2llcykuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPYmplY3QgY29udGFpbmluZyB0aGUgcXVlcnkncyB0eXBlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgdHlwZXM/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzcG9uc2UuXG4gICAgICovXG4gICAgcmVzcG9uc2U/OiBSZXNwb25zZTtcblxuICAgIC8qKlxuICAgICAqIEFyZ3VtZW50cyBmb3IgZXhlY3V0aW5nIHRoZSBxdWVyeS5cbiAgICAgKlxuICAgICAqIC0gYHBhdGhQYXJhbXNgOiBUaGUgcGF0aCBwYXJhbWV0ZXJzIGZvciB0aGUgcXVlcnkuIChpbiBmcm9udCBvZiB0aGUgPyBpbiB0aGUgdXJsKVxuICAgICAqIC0gYHF1ZXJ5UGFyYW1zYDogVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSBxdWVyeS4gKGFmdGVyIHRoZSA/IGluIHRoZSB1cmwpXG4gICAgICogLSBgYm9keWA6IFRoZSBib2R5IGZvciB0aGUgcXVlcnkuIFVuYXZhaWxhYmxlIGZvciBHRVQsIEhFQUQgYW5kIE9QVElPTlMgcmVxdWVzdHMuXG4gICAgICogLSBgaGVhZGVyc2A6IFRoZSBoZWFkZXJzIGZvciB0aGUgcXVlcnkuXG4gICAgICogLSBgdmFyaWFibGVzYDogVGhlIHZhcmlhYmxlcyBmb3IgdGhlIHF1ZXJ5LiAoZ3JhcGhxbCBvbmx5KVxuICAgICAqL1xuICAgIGFyZ3M/OiBBcmd1bWVudHM7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdFF1ZXJ5Q29uZmlnPFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiB8IHVuZGVmaW5lZCxcbj4gZXh0ZW5kcyBRdWVyeUNvbmZpZ0Jhc2U8UmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4ge1xuICAvKipcbiAgICogVGhlIGFwaSByb3V0ZSB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIHJvdXRlOiBSb3V0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcWxRdWVyeUNvbmZpZzxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPiB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4+IGV4dGVuZHMgUXVlcnlDb25maWdCYXNlPFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+IHtcbiAgLyoqXG4gICAqIFRoZSBncmFwaHFsIHF1ZXJ5IHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcXVlcnk6IHN0cmluZztcblxuICAvKipcbiAgICogU3Vicm91dGUgdG8gdXNlIGZvciB0aGUgcXVlcnkuXG4gICAqL1xuICByb3V0ZT86IFJvdXRlO1xufVxuXG5leHBvcnQgdHlwZSBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+IHwgdW5kZWZpbmVkLFxuPiA9IE9taXQ8UmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyPiwgJ21ldGhvZCc+O1xuXG5leHBvcnQgdHlwZSBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGU8UmVzcG9uc2U+IHwgdW5kZWZpbmVkLFxuPiA9IE9taXQ8R3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+LCAnbWV0aG9kJz47XG5cbmV4cG9ydCB0eXBlIEJhc2VBcmd1bWVudHMgPSBXaXRoSGVhZGVycyAmIFdpdGhWYXJpYWJsZXMgJiBXaXRoQm9keSAmIFdpdGhRdWVyeVBhcmFtcyAmIFdpdGhQYXRoUGFyYW1zO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhIZWFkZXJzIHtcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFZhcmlhYmxlcyB7XG4gIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhCb2R5IHtcbiAgYm9keT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFF1ZXJ5UGFyYW1zIHtcbiAgcXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGF0aFBhcmFtcyB7XG4gIHBhdGhQYXJhbXM/OiBQYXRoUGFyYW1zO1xufVxuXG5leHBvcnQgdHlwZSBXaXRoVXNlUmVzdWx0SW48UmVzcG9uc2UsIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4+ID0ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1c2VSZXN1bHRJbj86IFF1ZXJ5PFJlc3BvbnNlLCBhbnksIGFueSwgYW55LCBSZXNwb25zZVRyYW5zZm9ybWVyPltdO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCB0eXBlIEVtcHR5T2JqZWN0ID0ge307XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuUXVlcnlPcHRpb25zIHtcbiAgc2tpcENhY2hlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVUeXBlPEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQ+ID0gQXJndW1lbnRzIGV4dGVuZHMge1xuICBwYXRoUGFyYW1zOiBpbmZlciBQYXRoUGFyYW1zO1xufVxuICA/IChwOiBQYXRoUGFyYW1zKSA9PiBSb3V0ZVN0cmluZ1xuICA6IFJvdXRlU3RyaW5nO1xuXG5leHBvcnQgdHlwZSBSb3V0ZVN0cmluZyA9IGAvJHtzdHJpbmd9YDtcblxuZXhwb3J0IGludGVyZmFjZSBQb2xsQ29uZmlnIHtcbiAgaW50ZXJ2YWw6IG51bWJlcjtcbiAgdGFrZVVudGlsOiBPYnNlcnZhYmxlPHVua25vd24+O1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBRdWVyeVN0YXRlVHlwZSB7XG4gIFByZXBhcmVkID0gJ1BSRVBBUkVEJyxcbiAgTG9hZGluZyA9ICdMT0FESU5HJyxcbiAgU3VjY2VzcyA9ICdTVUNDRVNTJyxcbiAgRmFpbHVyZSA9ICdGQUlMVVJFJyxcbiAgQ2FuY2VsbGVkID0gJ0NBTkNFTExFRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZWQge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5QcmVwYXJlZDtcbiAgbWV0YTogUXVlcnlTdGF0ZU1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VjY2VzczxSZXNwb25zZSA9IHVua25vd24sIFJhd1Jlc3BvbnNlID0gdW5rbm93bj4ge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5TdWNjZXNzO1xuICByZXNwb25zZTogUmVzcG9uc2U7XG4gIHJhd1Jlc3BvbnNlOiBSYXdSZXNwb25zZTtcbiAgbWV0YTogUXVlcnlTdGF0ZVN1Y2Nlc3NNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlO1xuICBlcnJvcjogUmVxdWVzdEVycm9yO1xuICBtZXRhOiBRdWVyeVN0YXRlTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkaW5nIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZztcbiAgbWV0YTogUXVlcnlTdGF0ZU1ldGE7XG4gIHBhcnRpYWxUZXh0Pzogc3RyaW5nO1xuICBwcm9ncmVzcz86IFJlcXVlc3RQcm9ncmVzcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsZWQge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQ7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RhdGVNZXRhIHtcbiAgaWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVN0YXRlU3VjY2Vzc01ldGEgZXh0ZW5kcyBRdWVyeVN0YXRlTWV0YSB7XG4gIGV4cGlyZXNBdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlTdGF0ZTxSZXNwb25zZSA9IHVua25vd24sIFJhd1Jlc3BvbnNlID0gdW5rbm93bj4gPVxuICB8IExvYWRpbmdcbiAgfCBTdWNjZXNzPFJlc3BvbnNlLCBSYXdSZXNwb25zZT5cbiAgfCBGYWlsdXJlXG4gIHwgQ2FuY2VsbGVkXG4gIHwgUHJlcGFyZWQ7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5U3RhdGVEYXRhPFQgZXh0ZW5kcyBRdWVyeVN0YXRlID0gUXVlcnlTdGF0ZT4gPSBUIGV4dGVuZHMgU3VjY2VzczxpbmZlciBSZXNwb25zZT4gPyBSZXNwb25zZSA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBRdWVyeVN0YXRlUmF3RGF0YTxUIGV4dGVuZHMgUXVlcnlTdGF0ZSA9IFF1ZXJ5U3RhdGU+ID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBUIGV4dGVuZHMgU3VjY2VzczxpbmZlciBSZXNwb25zZSwgaW5mZXIgUmF3UmVzcG9uc2U+ID8gUmF3UmVzcG9uc2UgOiBuZXZlcjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEFueVF1ZXJ5ID0gUXVlcnk8YW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBRdWVyeVR5cGU8XG4gIFQgZXh0ZW5kcyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcmVwYXJlOiAoYXJnczogYW55KSA9PiBBbnlRdWVyeTtcbiAgfSxcbj4gPSBUWydwcmVwYXJlJ10gZXh0ZW5kcyAoKSA9PiBpbmZlciBSXG4gID8gUlxuICA6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFRbJ3ByZXBhcmUnXSBleHRlbmRzIChhcmdzOiBhbnkpID0+IGluZmVyIFJcbiAgPyBSXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UmVzcG9uc2VUeXBlPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+ID0gUSBleHRlbmRzIEFueVF1ZXJ5XG4gID8gUXVlcnlTdGF0ZURhdGE8UVsnc3RhdGUnXT4gfCBudWxsXG4gIDogbnVsbDtcblxuZXhwb3J0IHR5cGUgUXVlcnlSYXdSZXNwb25zZVR5cGU8USBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4gPSBRIGV4dGVuZHMgQW55UXVlcnlcbiAgPyBRdWVyeVN0YXRlUmF3RGF0YTxRWydzdGF0ZSddPiB8IG51bGxcbiAgOiBudWxsO1xuXG5leHBvcnQgdHlwZSBBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uID0geyBbbmFtZTogc3RyaW5nXTogQW55UXVlcnlDcmVhdG9yIH07XG5cbmV4cG9ydCB0eXBlIEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxUIGV4dGVuZHMgeyBbbmFtZTogc3RyaW5nXTogQW55UXVlcnlDcmVhdG9yIH0+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogeyB0eXBlOiBLOyBxdWVyeTogUXVlcnlDcmVhdG9yUmV0dXJuVHlwZTxUW0tdPiB9O1xufVtrZXlvZiBUXTtcblxuZXhwb3J0IHR5cGUgUXVlcnlPZjxUIGV4dGVuZHMgQW55UXVlcnlPZkNyZWF0b3JDb2xsZWN0aW9uPEFueVF1ZXJ5Q3JlYXRvckNvbGxlY3Rpb24+IHwgQW55UXVlcnkgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyBBbnlRdWVyeSA/IFQgOiBUIGV4dGVuZHMgQW55UXVlcnlPZkNyZWF0b3JDb2xsZWN0aW9uPEFueVF1ZXJ5Q3JlYXRvckNvbGxlY3Rpb24+ID8gVFsncXVlcnknXSA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBBbnlRdWVyeVJlc3BvbnNlT2ZDcmVhdG9yQ29sbGVjdGlvbjxUIGV4dGVuZHMgQW55UXVlcnlPZkNyZWF0b3JDb2xsZWN0aW9uPEFueVF1ZXJ5Q3JlYXRvckNvbGxlY3Rpb24+PiA9XG4gIFF1ZXJ5UmVzcG9uc2VUeXBlPFRbJ3F1ZXJ5J10+O1xuZXhwb3J0IHR5cGUgQW55UXVlcnlSYXdSZXNwb25zZU9mQ3JlYXRvckNvbGxlY3Rpb248VCBleHRlbmRzIEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uPj4gPVxuICBRdWVyeVJhd1Jlc3BvbnNlVHlwZTxUWydxdWVyeSddPjtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { filter, takeWhile } from 'rxjs';
1
+ import { BehaviorSubject, filter, of, switchMap, takeWhile } from 'rxjs';
2
2
  export function filterSuccess() {
3
3
  return function (source) {
4
4
  return source.pipe(filter((value) => isQueryStateSuccess(value)));
@@ -9,9 +9,34 @@ export function filterFailure() {
9
9
  return source.pipe(filter((value) => isQueryStateFailure(value)));
10
10
  };
11
11
  }
12
- export function takeUntilResponse() {
12
+ export function filterQueryStates(allowedStates) {
13
13
  return function (source) {
14
- return source.pipe(takeWhile((value) => isQueryStateLoading(value), true));
14
+ return source.pipe(filter((value) => value && allowedStates.includes(value.type)));
15
+ };
16
+ }
17
+ export function takeUntilResponse(config) {
18
+ return function (source) {
19
+ return source.pipe(takeWhile((value) => {
20
+ if (config?.excludeNull && value === null) {
21
+ return false;
22
+ }
23
+ return isQueryStateLoading(value) || value === null;
24
+ }, true));
25
+ };
26
+ }
27
+ export function filterNull() {
28
+ return function (source) {
29
+ return source.pipe(filter((value) => value !== null));
30
+ };
31
+ }
32
+ export function switchQueryState() {
33
+ return function (source) {
34
+ return source.pipe(switchMap((value) => value?.state$ ?? of(null)));
35
+ };
36
+ }
37
+ export function switchQueryCollectionState() {
38
+ return function (source) {
39
+ return source.pipe(switchMap((value) => value?.query.state$ ?? of(null)));
15
40
  };
16
41
  }
17
42
  export const isQueryStateLoading = (state) => state?.type === "LOADING" /* QueryStateType.Loading */;
@@ -39,4 +64,26 @@ export const isGqlQueryConfig = (config) => {
39
64
  }
40
65
  return true;
41
66
  };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFvQnJELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sVUFJTCxNQUFxQjtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUErQyxDQUFDO0lBQ2xILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLFVBQXVDLE1BQXFCO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQXdCLENBQUM7SUFDM0YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxVQUFnQyxNQUFxQjtRQUMxRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQW9DLEVBQW9CLEVBQUUsQ0FDNUYsS0FBSyxFQUFFLElBQUksMkNBQTJCLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFvQyxFQUFvQixFQUFFLENBQzVGLEtBQUssRUFBRSxJQUFJLDJDQUEyQixDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBb0MsRUFBb0IsRUFBRSxDQUM1RixLQUFLLEVBQUUsSUFBSSwyQ0FBMkIsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQW9DLEVBQXNCLEVBQUUsQ0FDaEcsS0FBSyxFQUFFLElBQUksK0NBQTZCLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFvQyxFQUFxQixFQUFFLENBQzlGLEtBQUssRUFBRSxJQUFJLDZDQUE0QixDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsT0FBaUQsRUFBRSxFQUFFO0lBQ25GLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxHQUFHLENBQUM7U0FDWjtRQUVELE9BQU87WUFDTCxHQUFHLEdBQUc7WUFDTixHQUFHLE9BQU87U0FDWCxDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FNOUIsTUFBZSxFQUM0RCxFQUFFO0lBQzdFLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDbEUsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsRUFBRTtRQUN4QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIE9ic2VydmFibGUsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgUmVxdWVzdEhlYWRlcnMgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIENhbmNlbGxlZCxcbiAgRmFpbHVyZSxcbiAgR3FsUXVlcnlDb25maWcsXG4gIExvYWRpbmcsXG4gIFByZXBhcmVkLFxuICBRdWVyeVN0YXRlLFxuICBRdWVyeVN0YXRlRGF0YSxcbiAgUXVlcnlTdGF0ZVJhd0RhdGEsXG4gIFF1ZXJ5U3RhdGVUeXBlLFxuICBSb3V0ZVR5cGUsXG4gIFN1Y2Nlc3MsXG59IGZyb20gJy4vcXVlcnkudHlwZXMnO1xuXG50eXBlIE9taXROdWxsPFQ+ID0gVCBleHRlbmRzIG51bGwgPyBuZXZlciA6IFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJTdWNjZXNzKCkge1xuICByZXR1cm4gZnVuY3Rpb24gPFxuICAgIFQgZXh0ZW5kcyBRdWVyeVN0YXRlIHwgbnVsbCxcbiAgICBSZXNwb25zZSBleHRlbmRzIFF1ZXJ5U3RhdGVEYXRhPE9taXROdWxsPFQ+PixcbiAgICBSYXdSZXNwb25zZSBleHRlbmRzIFF1ZXJ5U3RhdGVSYXdEYXRhPE9taXROdWxsPFQ+PixcbiAgPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gaXNRdWVyeVN0YXRlU3VjY2Vzcyh2YWx1ZSkpKSBhcyBPYnNlcnZhYmxlPFN1Y2Nlc3M8UmVzcG9uc2UsIFJhd1Jlc3BvbnNlPj47XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJGYWlsdXJlKCkge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBRdWVyeVN0YXRlIHwgbnVsbD4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKGZpbHRlcigodmFsdWUpID0+IGlzUXVlcnlTdGF0ZUZhaWx1cmUodmFsdWUpKSkgYXMgT2JzZXJ2YWJsZTxGYWlsdXJlPjtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRha2VVbnRpbFJlc3BvbnNlKCkge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBRdWVyeVN0YXRlPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUodGFrZVdoaWxlKCh2YWx1ZSkgPT4gaXNRdWVyeVN0YXRlTG9hZGluZyh2YWx1ZSksIHRydWUpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzUXVlcnlTdGF0ZUxvYWRpbmcgPSAoc3RhdGU6IFF1ZXJ5U3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RhdGUgaXMgTG9hZGluZyA9PlxuICBzdGF0ZT8udHlwZSA9PT0gUXVlcnlTdGF0ZVR5cGUuTG9hZGluZztcblxuZXhwb3J0IGNvbnN0IGlzUXVlcnlTdGF0ZVN1Y2Nlc3MgPSAoc3RhdGU6IFF1ZXJ5U3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RhdGUgaXMgU3VjY2VzcyA9PlxuICBzdGF0ZT8udHlwZSA9PT0gUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcztcblxuZXhwb3J0IGNvbnN0IGlzUXVlcnlTdGF0ZUZhaWx1cmUgPSAoc3RhdGU6IFF1ZXJ5U3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RhdGUgaXMgRmFpbHVyZSA9PlxuICBzdGF0ZT8udHlwZSA9PT0gUXVlcnlTdGF0ZVR5cGUuRmFpbHVyZTtcblxuZXhwb3J0IGNvbnN0IGlzUXVlcnlTdGF0ZUNhbmNlbGxlZCA9IChzdGF0ZTogUXVlcnlTdGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBzdGF0ZSBpcyBDYW5jZWxsZWQgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkNhbmNlbGxlZDtcblxuZXhwb3J0IGNvbnN0IGlzUXVlcnlTdGF0ZVByZXBhcmVkID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIFByZXBhcmVkID0+XG4gIHN0YXRlPy50eXBlID09PSBRdWVyeVN0YXRlVHlwZS5QcmVwYXJlZDtcblxuZXhwb3J0IGNvbnN0IG1lcmdlSGVhZGVycyA9ICguLi5oZWFkZXJzOiBBcnJheTxSZXF1ZXN0SGVhZGVycyB8IG51bGwgfCB1bmRlZmluZWQ+KSA9PiB7XG4gIHJldHVybiBoZWFkZXJzLnJlZHVjZSgoYWNjLCBoZWFkZXJzKSA9PiB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2MsXG4gICAgICAuLi5oZWFkZXJzLFxuICAgIH07XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0dxbFF1ZXJ5Q29uZmlnID0gPFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPiB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiB8IHVuZGVmaW5lZCxcbj4oXG4gIGNvbmZpZzogdW5rbm93bixcbik6IGNvbmZpZyBpcyBHcWxRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lcj4gPT4ge1xuICBpZiAoIWNvbmZpZyB8fCB0eXBlb2YgY29uZmlnICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGNvbmZpZykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISgncXVlcnknIGluIGNvbmZpZykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXX0=
67
+ export const isQuery = (query) => {
68
+ if (!query || typeof query !== 'object' || Array.isArray(query)) {
69
+ return false;
70
+ }
71
+ if (!('state$' in query)) {
72
+ return false;
73
+ }
74
+ return true;
75
+ };
76
+ export const createQueryCollection = (
77
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
78
+ queryMap) => new BehaviorSubject(null);
79
+ export const extractQuery = (v) => (isQuery(v) ? v : v?.query) ?? null;
80
+ export const getDefaultHeaders = (headers, method) => {
81
+ if (!headers) {
82
+ return {};
83
+ }
84
+ if (method in headers) {
85
+ return (headers[method] ?? {});
86
+ }
87
+ return headers;
88
+ };
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUEyQnJGLE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sVUFJTCxNQUFxQjtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUErQyxDQUFDO0lBQ2xILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLFVBQXVDLE1BQXFCO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQXdCLENBQUM7SUFDM0YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxhQUErQjtJQUMvRCxPQUFPLFVBQXVDLE1BQXFCO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFrQixDQUFDO0lBQ3RHLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBa0M7SUFDbEUsT0FBTyxVQUF1QyxNQUFxQjtRQUNqRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFB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QyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDL0QsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsRUFBRTtRQUN4QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztBQUNuQyw2REFBNkQ7QUFDN0QsUUFBVyxFQUNYLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBVyxJQUFJLENBQUMsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsQ0FBSSxFQUNKLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLE9BQW9FLEVBQ3BFLE1BQWMsRUFDZCxFQUFFO0lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7UUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQW1CLENBQUM7S0FDbEQ7SUFFRCxPQUFPLE9BQXlCLENBQUM7QUFDbkMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVzcG9uc2VUcmFuc2Zvcm1lclR5cGUgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgTWV0aG9kLCBSZXF1ZXN0SGVhZGVycywgUmVxdWVzdEhlYWRlcnNNZXRob2RNYXAgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEFueVF1ZXJ5LFxuICBBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uLFxuICBBbnlRdWVyeU9mQ3JlYXRvckNvbGxlY3Rpb24sXG4gIEFueVF1ZXJ5UmF3UmVzcG9uc2VPZkNyZWF0b3JDb2xsZWN0aW9uLFxuICBBbnlRdWVyeVJlc3BvbnNlT2ZDcmVhdG9yQ29sbGVjdGlvbixcbiAgQmFzZUFyZ3VtZW50cyxcbiAgQ2FuY2VsbGVkLFxuICBGYWlsdXJlLFxuICBHcWxRdWVyeUNvbmZpZyxcbiAgTG9hZGluZyxcbiAgUHJlcGFyZWQsXG4gIFF1ZXJ5UmF3UmVzcG9uc2VUeXBlLFxuICBRdWVyeVJlc3BvbnNlVHlwZSxcbiAgUXVlcnlTdGF0ZSxcbiAgUXVlcnlTdGF0ZURhdGEsXG4gIFF1ZXJ5U3RhdGVSYXdEYXRhLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgUm91dGVUeXBlLFxuICBTdWNjZXNzLFxufSBmcm9tICcuL3F1ZXJ5LnR5cGVzJztcblxudHlwZSBPbWl0TnVsbDxUPiA9IFQgZXh0ZW5kcyBudWxsID8gbmV2ZXIgOiBUO1xuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU3VjY2VzcygpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxcbiAgICBUIGV4dGVuZHMgUXVlcnlTdGF0ZSB8IG51bGwsXG4gICAgUmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVN0YXRlRGF0YTxPbWl0TnVsbDxUPj4sXG4gICAgUmF3UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVN0YXRlUmF3RGF0YTxPbWl0TnVsbDxUPj4sXG4gID4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKGZpbHRlcigodmFsdWUpID0+IGlzUXVlcnlTdGF0ZVN1Y2Nlc3ModmFsdWUpKSkgYXMgT2JzZXJ2YWJsZTxTdWNjZXNzPFJlc3BvbnNlLCBSYXdSZXNwb25zZT4+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRmFpbHVyZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgUXVlcnlTdGF0ZSB8IG51bGw+KHNvdXJjZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBzb3VyY2UucGlwZShmaWx0ZXIoKHZhbHVlKSA9PiBpc1F1ZXJ5U3RhdGVGYWlsdXJlKHZhbHVlKSkpIGFzIE9ic2VydmFibGU8RmFpbHVyZT47XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJRdWVyeVN0YXRlcyhhbGxvd2VkU3RhdGVzOiBRdWVyeVN0YXRlVHlwZVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIFF1ZXJ5U3RhdGUgfCBudWxsPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgJiYgYWxsb3dlZFN0YXRlcy5pbmNsdWRlcyh2YWx1ZS50eXBlKSkpIGFzIE9ic2VydmFibGU8VD47XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWtlVW50aWxSZXNwb25zZShjb25maWc/OiB7IGV4Y2x1ZGVOdWxsPzogYm9vbGVhbiB9KSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIFF1ZXJ5U3RhdGUgfCBudWxsPihzb3VyY2U6IE9ic2VydmFibGU8VD4pIHtcbiAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChjb25maWc/LmV4Y2x1ZGVOdWxsICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzUXVlcnlTdGF0ZUxvYWRpbmcodmFsdWUpIHx8IHZhbHVlID09PSBudWxsO1xuICAgICAgfSwgdHJ1ZSksXG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck51bGwoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VD4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKGZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBPbWl0TnVsbDxUPiA9PiB2YWx1ZSAhPT0gbnVsbCkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3dpdGNoUXVlcnlTdGF0ZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxcbiAgICBUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsLFxuICAgIFJlc3BvbnNlIGV4dGVuZHMgUXVlcnlSZXNwb25zZVR5cGU8T21pdE51bGw8VD4+LFxuICAgIFJhd1Jlc3BvbnNlIGV4dGVuZHMgUXVlcnlSYXdSZXNwb25zZVR5cGU8T21pdE51bGw8VD4+LFxuICA+KHNvdXJjZTogT2JzZXJ2YWJsZTxUPikge1xuICAgIHJldHVybiBzb3VyY2UucGlwZShzd2l0Y2hNYXAoKHZhbHVlKSA9PiB2YWx1ZT8uc3RhdGUkID8/IG9mKG51bGwpKSkgYXMgT2JzZXJ2YWJsZTxRdWVyeVN0YXRlPFxuICAgICAgT21pdE51bGw8UmVzcG9uc2U+LFxuICAgICAgT21pdE51bGw8UmF3UmVzcG9uc2U+XG4gICAgPiB8IG51bGw+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3dpdGNoUXVlcnlDb2xsZWN0aW9uU3RhdGUoKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8XG4gICAgVCBleHRlbmRzIEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uPiB8IG51bGwsXG4gICAgUmVzcG9uc2UgZXh0ZW5kcyBBbnlRdWVyeVJlc3BvbnNlT2ZDcmVhdG9yQ29sbGVjdGlvbjxPbWl0TnVsbDxUPj4sXG4gICAgUmF3UmVzcG9uc2UgZXh0ZW5kcyBBbnlRdWVyeVJhd1Jlc3BvbnNlT2ZDcmVhdG9yQ29sbGVjdGlvbjxPbWl0TnVsbDxUPj4sXG4gID4oc291cmNlOiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKHN3aXRjaE1hcCgodmFsdWUpID0+IHZhbHVlPy5xdWVyeS5zdGF0ZSQgPz8gb2YobnVsbCkpKSBhcyBPYnNlcnZhYmxlPFF1ZXJ5U3RhdGU8XG4gICAgICBPbWl0TnVsbDxSZXNwb25zZT4sXG4gICAgICBPbWl0TnVsbDxSYXdSZXNwb25zZT5cbiAgICA+IHwgbnVsbD47XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVMb2FkaW5nID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIExvYWRpbmcgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmc7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVTdWNjZXNzID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIFN1Y2Nlc3MgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3M7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVGYWlsdXJlID0gKHN0YXRlOiBRdWVyeVN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0YXRlIGlzIEZhaWx1cmUgPT5cbiAgc3RhdGU/LnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmU7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVDYW5jZWxsZWQgPSAoc3RhdGU6IFF1ZXJ5U3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RhdGUgaXMgQ2FuY2VsbGVkID0+XG4gIHN0YXRlPy50eXBlID09PSBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQ7XG5cbmV4cG9ydCBjb25zdCBpc1F1ZXJ5U3RhdGVQcmVwYXJlZCA9IChzdGF0ZTogUXVlcnlTdGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBzdGF0ZSBpcyBQcmVwYXJlZCA9PlxuICBzdGF0ZT8udHlwZSA9PT0gUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQ7XG5cbmV4cG9ydCBjb25zdCBtZXJnZUhlYWRlcnMgPSAoLi4uaGVhZGVyczogQXJyYXk8UmVxdWVzdEhlYWRlcnMgfCBudWxsIHwgdW5kZWZpbmVkPikgPT4ge1xuICByZXR1cm4gaGVhZGVycy5yZWR1Y2UoKGFjYywgaGVhZGVycykgPT4ge1xuICAgIGlmICghaGVhZGVycykge1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWNjLFxuICAgICAgLi4uaGVhZGVycyxcbiAgICB9O1xuICB9LCB7fSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNHcWxRdWVyeUNvbmZpZyA9IDxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4gfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4+KFxuICBjb25maWc6IHVua25vd24sXG4pOiBjb25maWcgaXMgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFJlc3BvbnNlVHJhbnNmb3JtZXI+ID0+IHtcbiAgaWYgKCFjb25maWcgfHwgdHlwZW9mIGNvbmZpZyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShjb25maWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3F1ZXJ5JyBpbiBjb25maWcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNRdWVyeSA9IDxUIGV4dGVuZHMgQW55UXVlcnk+KHF1ZXJ5OiB1bmtub3duKTogcXVlcnkgaXMgVCA9PiB7XG4gIGlmICghcXVlcnkgfHwgdHlwZW9mIHF1ZXJ5ICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHF1ZXJ5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdzdGF0ZSQnIGluIHF1ZXJ5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1ZXJ5Q29sbGVjdGlvbiA9IDxUIGV4dGVuZHMgQW55UXVlcnlDcmVhdG9yQ29sbGVjdGlvbiwgUiBleHRlbmRzIEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxUPj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcXVlcnlNYXA6IFQsXG4pID0+IG5ldyBCZWhhdmlvclN1YmplY3Q8UiB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdFF1ZXJ5ID0gPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uPiB8IG51bGw+KFxuICB2OiBULFxuKSA9PiAoaXNRdWVyeSh2KSA/IHYgOiB2Py5xdWVyeSkgPz8gbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRIZWFkZXJzID0gKFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyB8IFJlcXVlc3RIZWFkZXJzTWV0aG9kTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgbWV0aG9kOiBNZXRob2QsXG4pID0+IHtcbiAgaWYgKCFoZWFkZXJzKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaWYgKG1ldGhvZCBpbiBoZWFkZXJzKSB7XG4gICAgcmV0dXJuIChoZWFkZXJzW21ldGhvZF0gPz8ge30pIGFzIFJlcXVlc3RIZWFkZXJzO1xuICB9XG5cbiAgcmV0dXJuIGhlYWRlcnMgYXMgUmVxdWVzdEhlYWRlcnM7XG59O1xuIl19