@agorapulse/ui-components 18.0.23 → 18.0.25

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 (44) hide show
  1. package/agorapulse-ui-components-18.0.25.tgz +0 -0
  2. package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +3 -3
  3. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +40 -6
  4. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +21 -14
  5. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +46 -20
  6. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.mjs +4 -1
  7. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.mjs +5 -3
  8. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.mjs +4 -2
  9. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover-item.component.mjs +39 -10
  10. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover.component.mjs +3 -4
  11. package/esm2022/nav-selector/nav-selector.component.mjs +20 -7
  12. package/esm2022/nav-selector/nav-selector.mjs +1 -1
  13. package/esm2022/nav-selector/nav-selector.state.mjs +17 -5
  14. package/esm2022/nav-selector/public_api.mjs +2 -1
  15. package/esm2022/nav-selector/utils/nav-selector.builder.mjs +6 -3
  16. package/esm2022/nav-selector/utils/nav-selector.filter.mjs +2 -1
  17. package/esm2022/nav-selector/utils/nav-selector.folding.mjs +106 -46
  18. package/esm2022/nav-selector/utils/nav-selector.minifying.mjs +6 -2
  19. package/esm2022/popmenu/popmenu.directive.mjs +1 -1
  20. package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +2 -2
  21. package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +2 -2
  22. package/esm2022/select/dropdown-search-form/dropdown-search-form.component.mjs +2 -4
  23. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +2 -2
  24. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -1
  25. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +504 -310
  26. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
  27. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
  28. package/fesm2022/agorapulse-ui-components-select.mjs +3 -5
  29. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  30. package/nav-selector/nav-selector-category/nav-selector-category.component.d.ts +10 -0
  31. package/nav-selector/nav-selector-group/nav-selector-group.component.d.ts +1 -0
  32. package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +5 -1
  33. package/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.d.ts +2 -1
  34. package/nav-selector/nav-selector-popover/nav-selector-popover-item.component.d.ts +7 -2
  35. package/nav-selector/nav-selector.component.d.ts +1 -0
  36. package/nav-selector/nav-selector.d.ts +2 -0
  37. package/nav-selector/nav-selector.state.d.ts +2 -0
  38. package/nav-selector/public_api.d.ts +1 -0
  39. package/nav-selector/utils/nav-selector.folding.d.ts +32 -9
  40. package/package.json +7 -7
  41. package/popmenu/popmenu.directive.d.ts +6 -4
  42. package/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.d.ts +1 -1
  43. package/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.d.ts +1 -1
  44. package/agorapulse-ui-components-18.0.23.tgz +0 -0
@@ -22,6 +22,7 @@ export class NavSelectorState {
22
22
  title: '',
23
23
  only: '',
24
24
  tokenInvalid: '',
25
+ groupTokenInvalid: '',
25
26
  featureLocked: '',
26
27
  searchPlaceholder: '',
27
28
  noResults: '',
@@ -78,7 +79,7 @@ export class NavSelectorState {
78
79
  });
79
80
  }
80
81
  onGroupToggleFolding(group) {
81
- this.entries.update(entries => NavSelectorFolding.toggleFolding(entries, group.uid, this.multipleModeEnabled(), !this.expanded()));
82
+ this.entries.update(entries => NavSelectorFolding.toggleFolding(entries, group.uid, this.getFoldingOptions()));
82
83
  }
83
84
  onNodeSelect(node) {
84
85
  this.entries.update(entries => NavSelectorMultiSelect.selectInMultipleMode(entries, node.uid));
@@ -95,7 +96,7 @@ export class NavSelectorState {
95
96
  }
96
97
  }
97
98
  onLeafToggleFolding(leaf) {
98
- this.entries.update(entries => NavSelectorFolding.toggleFolding(entries, leaf.uid, this.multipleModeEnabled(), !this.expanded()));
99
+ this.entries.update(entries => NavSelectorFolding.toggleFolding(entries, leaf.uid, this.getFoldingOptions()));
99
100
  }
100
101
  onLeafDetailClicked(leafDetail) {
101
102
  this.entries.update(entries => NavSelectorSingleSelect.select(entries, leafDetail.uid));
@@ -126,6 +127,11 @@ export class NavSelectorState {
126
127
  this.toggleExpanded();
127
128
  }
128
129
  }
130
+ forceMinify() {
131
+ this.expanded.set(false);
132
+ this.expandedAfterDelay.set(this.expanded());
133
+ this.entries.update(entries => NavSelectorAccessibility.resetFocus(NavSelectorMinifying.minify(entries, this.multipleModeEnabled())));
134
+ }
129
135
  onSelectionChange(uids) {
130
136
  // Avoid infinite loop if you put unexisting uids as select will generate the same entries but with different reference
131
137
  if (JSON.stringify(uids) === JSON.stringify(this.lastSelectedUids())) {
@@ -172,14 +178,20 @@ export class NavSelectorState {
172
178
  return [];
173
179
  });
174
180
  }
181
+ getFoldingOptions() {
182
+ return {
183
+ multipleMode: this.multipleModeEnabled(),
184
+ minified: !this.expanded(),
185
+ };
186
+ }
175
187
  updateLeafAction(leafActionProjection) {
176
188
  this.leafActionProjection.set(leafActionProjection);
177
189
  }
178
190
  fold(entry) {
179
- this.entries.update(entries => NavSelectorFolding.fold(entries, entry.uid, this.multipleModeEnabled(), !this.expanded()));
191
+ this.entries.update(entries => NavSelectorFolding.fold(entries, entry.uid, this.getFoldingOptions()));
180
192
  }
181
193
  unfold(entry) {
182
- this.entries.update(entries => NavSelectorFolding.unfold(entries, entry.uid, this.multipleModeEnabled(), !this.expanded()));
194
+ this.entries.update(entries => NavSelectorFolding.unfold(entries, entry.uid, this.getFoldingOptions()));
183
195
  }
184
196
  updateDetailsDisplayedLimit(detailsDisplayedLimit) {
185
197
  this.entries.update(entries => NavSelectorViewMore.changeViewMoreDetailsDisplayedLimit(entries, detailsDisplayedLimit));
@@ -196,4 +208,4 @@ export class NavSelectorState {
196
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorState, decorators: [{
197
209
  type: Injectable
198
210
  }], ctorParameters: () => [] });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFJSCwrQkFBK0IsRUFDL0IsK0JBQStCLEdBR2xDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBRXJFOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLE9BQU8sR0FBRyxNQUFNLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLG1CQUFtQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUM3QyxNQUFNLEdBQUcsTUFBTSxDQUE2QjtRQUNoRCxLQUFLLEVBQUUsRUFBRTtRQUNULElBQUksRUFBRSxFQUFFO1FBQ1IsWUFBWSxFQUFFLEVBQUU7UUFDaEIsYUFBYSxFQUFFLEVBQUU7UUFDakIsaUJBQWlCLEVBQUUsRUFBRTtRQUNyQixTQUFTLEVBQUUsRUFBRTtRQUNiLFFBQVEsRUFBRSxFQUFFO1FBQ1osUUFBUSxFQUFFLEVBQUU7S0FDZixDQUFDLENBQUM7SUFDSyxnQkFBZ0IsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7SUFFaEQscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2pELE1BQU0sR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFFNUIsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN6RSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVqQyxvQkFBb0IsR0FBRyxNQUFNLENBQWtELFNBQVMsQ0FBQyxDQUFDO0lBRTFGLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxDLDBCQUEwQixHQUE4QyxJQUFJLENBQUM7SUFFN0U7UUFDSSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWdCO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUEyQixFQUFFLHdCQUFrQyxFQUFFLHFCQUE2QjtRQUN0RyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUN2SCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQ3RILENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQTJCLEVBQUUsd0JBQWtDLEVBQUUscUJBQTZCO1FBQ3hHLElBQUksVUFBc0MsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsVUFBVSxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xILENBQUM7YUFBTSxDQUFDO1lBQ0osVUFBVSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUNqSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsK0JBQStCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQy9GLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUErQjtRQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkksQ0FBQztJQUVELFlBQVksQ0FBQyxJQUE4QjtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQTZCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkcsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUE4QjtRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQTBDO1FBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBNkI7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7WUFDNUUsQ0FBQztZQUNELE9BQU8sb0JBQW9CLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQWM7UUFDNUIsdUhBQXVIO1FBQ3ZILElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNuRSxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0YsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVqRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQyxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsT0FBTyxHQUFHLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RSxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELDRCQUE0QixDQUFDLFFBQTBDO1FBQ25FLElBQUksQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBbUM7UUFDM0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLElBQUksK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLENBQUM7aUJBQU0sSUFBSSwrQkFBK0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsb0JBQXlEO1FBQ3RFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQStCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5SCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQStCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoSSxDQUFDO0lBRUQsMkJBQTJCLENBQUMscUJBQTZCO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsbUNBQW1DLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQTZCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQTZCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO3VHQXpNUSxnQkFBZ0I7MkdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIEluamVjdGFibGUsIHNpZ25hbCwgVGVtcGxhdGVSZWYsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTm9kZSxcbiAgICBOYXZTZWxlY3RvckVudHJ5LFxuICAgIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzLFxufSBmcm9tICcuL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkgfSBmcm9tICcuL3V0aWxzL25hdi1zZWxlY3Rvci5hY2Nlc3NpYmlsaXR5JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yQnVpbGRlciB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLmJ1aWxkZXInO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JGaWx0ZXIgfSBmcm9tICcuL3V0aWxzL25hdi1zZWxlY3Rvci5maWx0ZXInO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JGb2xkaW5nIH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3IuZm9sZGluZyc7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvck1lcmdlciB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLm1lcmdlcic7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvck1pbmlmeWluZyB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLm1pbmlmeWluZyc7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvck11bHRpU2VsZWN0IH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3IubXVsdGktc2VsZWN0JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0IH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3Iuc2luZ2xlLXNlbGVjdCc7XG5pbXBvcnQgeyBOYXZTZWxlY3RvclZpZXdNb3JlIH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3Iudmlldy1tb3JlJztcblxuLyoqXG4gKiBOYXZTZWxlY3RvclN0YXRlIGlzIGEgc2VydmljZSB0aGF0IG1hbmFnZXMgdGhlIHN0YXRlIG9mIHRoZSBuYXYgc2VsZWN0b3IuXG4gKlxuICogSXQgc2hvdWxkIGJlIHByb3ZpZGVkIGJ5IHRoZSBjb21wb25lbnQgdG8gZW5zdXJlIHRoYXQgaWYgbWFueSBuYXYgc2VsZWN0b3JzIGFyZSB1c2VkIGluIHRoZSBzYW1lIHBhZ2UsIHRoZXkgZG9uJ3Qgc2hhcmUgdGhlIHNhbWUgc3RhdGUuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvclN0YXRlIHtcbiAgICBlbnRyaWVzID0gc2lnbmFsPEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdPihbXSk7XG4gICAgcHJpdmF0ZSBtdWx0aXBsZU1vZGVFbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF90ZXh0cyA9IHNpZ25hbDxOYXZTZWxlY3RvclRyYW5zbGF0ZWRUZXh0cz4oe1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIG9ubHk6ICcnLFxuICAgICAgICB0b2tlbkludmFsaWQ6ICcnLFxuICAgICAgICBmZWF0dXJlTG9ja2VkOiAnJyxcbiAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICBub1Jlc3VsdHM6ICcnLFxuICAgICAgICB2aWV3TW9yZTogJycsXG4gICAgICAgIHZpZXdMZXNzOiAnJyxcbiAgICB9KTtcbiAgICBwcml2YXRlIGxhc3RTZWxlY3RlZFVpZHMgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcblxuICAgIGlzTXVsdGlwbGVNb2RlRW5hYmxlZCA9IHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZDtcbiAgICBzZWFyY2ggPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgICBub1Jlc3VsdHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVudHJpZXMoKS5ldmVyeSgoeyBoaWRkZW4gfSkgPT4gaGlkZGVuKSk7XG4gICAgdGV4dHMgPSB0aGlzLl90ZXh0cy5hc1JlYWRvbmx5KCk7XG5cbiAgICBsZWFmQWN0aW9uUHJvamVjdGlvbiA9IHNpZ25hbDxSZWFkb25seUFycmF5PFRlbXBsYXRlUmVmPHVua25vd24+PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIGV4cGFuZGVkID0gc2lnbmFsKHRydWUpO1xuICAgIGV4cGFuZGVkQWZ0ZXJEZWxheSA9IHNpZ25hbCh0cnVlKTtcblxuICAgIHNlbGVjdGVkVWlkc0NoYW5nZUNhbGxiYWNrOiAoKHNlbGVjdGVkVWlkczogc3RyaW5nW10pID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVWlkcyA9IHRoaXMuY29sbGVjdFNlbGVjdGVkVWlkcyh0aGlzLmVudHJpZXMoKSk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVWlkc0NoYW5nZUNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVaWRzQ2hhbmdlQ2FsbGJhY2sobmV3U2VsZWN0ZWRVaWRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoKCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvckZpbHRlci5maWx0ZXIoZW50cmllcywgc2VhcmNoLCB0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZU11bHRpTW9kZUVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQuc2V0KGVuYWJsZWQpO1xuICAgIH1cblxuICAgIGluaXRFbnRyaWVzKGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSwgaW5pdGlhbFNlbGVjdGVkRW50cnlVaWRzOiBzdHJpbmdbXSwgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc2V0KE5hdlNlbGVjdG9yQnVpbGRlci5idWlsZEluTXVsdGlwbGVNb2RlKGVudHJpZXMsIGluaXRpYWxTZWxlY3RlZEVudHJ5VWlkcywgZGV0YWlsc0Rpc3BsYXllZExpbWl0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc2V0KE5hdlNlbGVjdG9yQnVpbGRlci5idWlsZChlbnRyaWVzLCBpbml0aWFsU2VsZWN0ZWRFbnRyeVVpZHM/LlswXSA/PyBudWxsLCBkZXRhaWxzRGlzcGxheWVkTGltaXQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUVudHJpZXMoZW50cmllczogTmF2U2VsZWN0b3JFbnRyeVtdLCBpbml0aWFsU2VsZWN0ZWRFbnRyeVVpZHM6IHN0cmluZ1tdLCBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcikge1xuICAgICAgICBsZXQgbmV3RW50cmllczogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W107XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgbmV3RW50cmllcyA9IE5hdlNlbGVjdG9yQnVpbGRlci5idWlsZEluTXVsdGlwbGVNb2RlKGVudHJpZXMsIGluaXRpYWxTZWxlY3RlZEVudHJ5VWlkcywgZGV0YWlsc0Rpc3BsYXllZExpbWl0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0VudHJpZXMgPSBOYXZTZWxlY3RvckJ1aWxkZXIuYnVpbGQoZW50cmllcywgaW5pdGlhbFNlbGVjdGVkRW50cnlVaWRzPy5bMF0gPz8gbnVsbCwgZGV0YWlsc0Rpc3BsYXllZExpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKG9sZEVudHJpZXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VFbnRyaWVzID0gTmF2U2VsZWN0b3JNZXJnZXIubWVyZ2VJbnRlcm5hbE5hdlNlbGVjdG9yRW50cmllcyhuZXdFbnRyaWVzLCBvbGRFbnRyaWVzKTtcbiAgICAgICAgICAgIHJldHVybiBOYXZTZWxlY3RvckZpbHRlci5maWx0ZXIobWVyZ2VFbnRyaWVzLCB0aGlzLnNlYXJjaCgpLCB0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uR3JvdXBUb2dnbGVGb2xkaW5nKGdyb3VwOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yRm9sZGluZy50b2dnbGVGb2xkaW5nKGVudHJpZXMsIGdyb3VwLnVpZCwgdGhpcy5tdWx0aXBsZU1vZGVFbmFibGVkKCksICF0aGlzLmV4cGFuZGVkKCkpKTtcbiAgICB9XG5cbiAgICBvbk5vZGVTZWxlY3Qobm9kZTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3Rvck11bHRpU2VsZWN0LnNlbGVjdEluTXVsdGlwbGVNb2RlKGVudHJpZXMsIG5vZGUudWlkKSk7XG4gICAgfVxuXG4gICAgb25MZWFmQ2xpY2tlZChsZWFmOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZikge1xuICAgICAgICBpZiAoIWxlYWYuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yTXVsdGlTZWxlY3Quc2VsZWN0SW5NdWx0aXBsZU1vZGUoZW50cmllcywgbGVhZi51aWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvclNpbmdsZVNlbGVjdC5zZWxlY3QoZW50cmllcywgbGVhZi51aWQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGVhZlRvZ2dsZUZvbGRpbmcobGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvckZvbGRpbmcudG9nZ2xlRm9sZGluZyhlbnRyaWVzLCBsZWFmLnVpZCwgdGhpcy5tdWx0aXBsZU1vZGVFbmFibGVkKCksICF0aGlzLmV4cGFuZGVkKCkpKTtcbiAgICB9XG5cbiAgICBvbkxlYWZEZXRhaWxDbGlja2VkKGxlYWZEZXRhaWw6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlscykge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JTaW5nbGVTZWxlY3Quc2VsZWN0KGVudHJpZXMsIGxlYWZEZXRhaWwudWlkKSk7XG4gICAgfVxuXG4gICAgdXBkYXRlVGV4dHModGV4dHM6IE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzKSB7XG4gICAgICAgIHRoaXMuX3RleHRzLnNldCh0ZXh0cyk7XG4gICAgfVxuXG4gICAgc2VsZWN0T25seUxlYWYobGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yTXVsdGlTZWxlY3Quc2VsZWN0T25seUFMZWFmSW5NdWx0aXBsZU1vZGUoZW50cmllcywgbGVhZi51aWQpKTtcbiAgICB9XG5cbiAgICB0b2dnbGVFeHBhbmRlZCgpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZC51cGRhdGUoZXhwYW5kZWQgPT4gIWV4cGFuZGVkKTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmF2U2VsZWN0b3JNaW5pZnlpbmcuZXhwYW5kKGVudHJpZXMsIHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBOYXZTZWxlY3Rvck1pbmlmeWluZy5taW5pZnkoZW50cmllcywgdGhpcy5tdWx0aXBsZU1vZGVFbmFibGVkKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkKCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5leHBhbmRlZEFmdGVyRGVsYXkuc2V0KHRoaXMuZXhwYW5kZWQoKSksIDE1MCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkQWZ0ZXJEZWxheS5zZXQodGhpcy5leHBhbmRlZCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1pbmlmeSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQoKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UodWlkczogc3RyaW5nW10pIHtcbiAgICAgICAgLy8gQXZvaWQgaW5maW5pdGUgbG9vcCBpZiB5b3UgcHV0IHVuZXhpc3RpbmcgdWlkcyBhcyBzZWxlY3Qgd2lsbCBnZW5lcmF0ZSB0aGUgc2FtZSBlbnRyaWVzIGJ1dCB3aXRoIGRpZmZlcmVudCByZWZlcmVuY2VcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHVpZHMpID09PSBKU09OLnN0cmluZ2lmeSh0aGlzLmxhc3RTZWxlY3RlZFVpZHMoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZFVpZHMuc2V0KHVpZHMpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFVpZHMgPSB0aGlzLmNvbGxlY3RTZWxlY3RlZFVpZHModGhpcy5lbnRyaWVzKCkpO1xuICAgICAgICBjb25zdCB1aWRUb1NlbGVjdCA9IHVpZHMuZmlsdGVyKHVpZCA9PiBzZWxlY3RlZFVpZHMuZXZlcnkoc2VsZWN0ZWRVaWQgPT4gc2VsZWN0ZWRVaWQgIT09IHVpZCkpO1xuICAgICAgICBjb25zdCB1aWRUb1Vuc2VsZWN0ID0gc2VsZWN0ZWRVaWRzLmZpbHRlcih1aWQgPT4gdWlkcy5ldmVyeShzZWxlY3RlZFVpZCA9PiBzZWxlY3RlZFVpZCAhPT0gdWlkKSk7XG5cbiAgICAgICAgaWYgKCF1aWRUb1NlbGVjdC5sZW5ndGggJiYgIXVpZFRvVW5zZWxlY3QubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZW50cmllcyA9IHRoaXMuZW50cmllcygpO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCB1aWQgb2YgWy4uLnVpZFRvU2VsZWN0LCAuLi51aWRUb1Vuc2VsZWN0XSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMgPSBOYXZTZWxlY3Rvck11bHRpU2VsZWN0LnNlbGVjdEluTXVsdGlwbGVNb2RlKGVudHJpZXMsIHVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnRyaWVzID0gTmF2U2VsZWN0b3JTaW5nbGVTZWxlY3Quc2VsZWN0KGVudHJpZXMsIHVpZHNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQoZW50cmllcyk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblNlbGVjdGVkVWlkc0NoYW5nZShjYWxsYmFjazogKHNlbGVjdGVkVWlkczogc3RyaW5nW10pID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVpZHNDaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LmZvY3VzTmV4dChlbnRyaWVzKSk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LmZvY3VzUHJldmlvdXMoZW50cmllcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGVjdFNlbGVjdGVkVWlkcyhlbnRyaWVzOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMuZmxhdE1hcChlbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkuZGV0YWlsc0Rpc3BsYXlhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5kZXRhaWxzLmZsYXRNYXAoZGV0YWlsID0+IChkZXRhaWwuc2VsZWN0ZWQgPyBbZGV0YWlsLnVpZF0gOiBbXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuc2VsZWN0ZWQgPyBbZW50cnkudWlkXSA6IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3RTZWxlY3RlZFVpZHMoZW50cnkuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVMZWFmQWN0aW9uKGxlYWZBY3Rpb25Qcm9qZWN0aW9uOiBSZWFkb25seUFycmF5PFRlbXBsYXRlUmVmPHVua25vd24+Pikge1xuICAgICAgICB0aGlzLmxlYWZBY3Rpb25Qcm9qZWN0aW9uLnNldChsZWFmQWN0aW9uUHJvamVjdGlvbik7XG4gICAgfVxuXG4gICAgZm9sZChlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvckZvbGRpbmcuZm9sZChlbnRyaWVzLCBlbnRyeS51aWQsIHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpLCAhdGhpcy5leHBhbmRlZCgpKSk7XG4gICAgfVxuXG4gICAgdW5mb2xkKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yRm9sZGluZy51bmZvbGQoZW50cmllcywgZW50cnkudWlkLCB0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSwgIXRoaXMuZXhwYW5kZWQoKSkpO1xuICAgIH1cblxuICAgIHVwZGF0ZURldGFpbHNEaXNwbGF5ZWRMaW1pdChkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JWaWV3TW9yZS5jaGFuZ2VWaWV3TW9yZURldGFpbHNEaXNwbGF5ZWRMaW1pdChlbnRyaWVzLCBkZXRhaWxzRGlzcGxheWVkTGltaXQpKTtcbiAgICB9XG5cbiAgICB2aWV3TW9yZShsZWFmOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZikge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JWaWV3TW9yZS52aWV3TW9yZShlbnRyaWVzLCBsZWFmLnVpZCkpO1xuICAgIH1cblxuICAgIHZpZXdMZXNzKGxlYWY6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvclZpZXdNb3JlLnZpZXdMZXNzKGVudHJpZXMsIGxlYWYudWlkKSk7XG4gICAgfVxufVxuIl19
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFJSCwrQkFBK0IsRUFDL0IsK0JBQStCLEdBR2xDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLDhCQUE4QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUVyRTs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixPQUFPLEdBQUcsTUFBTSxDQUE2QixFQUFFLENBQUMsQ0FBQztJQUN6QyxtQkFBbUIsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDN0MsTUFBTSxHQUFHLE1BQU0sQ0FBNkI7UUFDaEQsS0FBSyxFQUFFLEVBQUU7UUFDVCxJQUFJLEVBQUUsRUFB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QUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQTZCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO3VHQXpOUSxnQkFBZ0I7MkdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIEluamVjdGFibGUsIHNpZ25hbCwgVGVtcGxhdGVSZWYsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTm9kZSxcbiAgICBOYXZTZWxlY3RvckVudHJ5LFxuICAgIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzLFxufSBmcm9tICcuL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkgfSBmcm9tICcuL3V0aWxzL25hdi1zZWxlY3Rvci5hY2Nlc3NpYmlsaXR5JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yQnVpbGRlciB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLmJ1aWxkZXInO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JGaWx0ZXIgfSBmcm9tICcuL3V0aWxzL25hdi1zZWxlY3Rvci5maWx0ZXInO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JGb2xkaW5nLCBOYXZTZWxlY3RvckZvbGRpbmdPcHRpb25zIH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3IuZm9sZGluZyc7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvck1lcmdlciB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLm1lcmdlcic7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvck1pbmlmeWluZyB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLm1pbmlmeWluZyc7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvck11bHRpU2VsZWN0IH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3IubXVsdGktc2VsZWN0JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0IH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3Iuc2luZ2xlLXNlbGVjdCc7XG5pbXBvcnQgeyBOYXZTZWxlY3RvclZpZXdNb3JlIH0gZnJvbSAnLi91dGlscy9uYXYtc2VsZWN0b3Iudmlldy1tb3JlJztcblxuLyoqXG4gKiBOYXZTZWxlY3RvclN0YXRlIGlzIGEgc2VydmljZSB0aGF0IG1hbmFnZXMgdGhlIHN0YXRlIG9mIHRoZSBuYXYgc2VsZWN0b3IuXG4gKlxuICogSXQgc2hvdWxkIGJlIHByb3ZpZGVkIGJ5IHRoZSBjb21wb25lbnQgdG8gZW5zdXJlIHRoYXQgaWYgbWFueSBuYXYgc2VsZWN0b3JzIGFyZSB1c2VkIGluIHRoZSBzYW1lIHBhZ2UsIHRoZXkgZG9uJ3Qgc2hhcmUgdGhlIHNhbWUgc3RhdGUuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvclN0YXRlIHtcbiAgICBlbnRyaWVzID0gc2lnbmFsPEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdPihbXSk7XG4gICAgcHJpdmF0ZSBtdWx0aXBsZU1vZGVFbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF90ZXh0cyA9IHNpZ25hbDxOYXZTZWxlY3RvclRyYW5zbGF0ZWRUZXh0cz4oe1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIG9ubHk6ICcnLFxuICAgICAgICB0b2tlbkludmFsaWQ6ICcnLFxuICAgICAgICBncm91cFRva2VuSW52YWxpZDogJycsXG4gICAgICAgIGZlYXR1cmVMb2NrZWQ6ICcnLFxuICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJycsXG4gICAgICAgIG5vUmVzdWx0czogJycsXG4gICAgICAgIHZpZXdNb3JlOiAnJyxcbiAgICAgICAgdmlld0xlc3M6ICcnLFxuICAgIH0pO1xuICAgIHByaXZhdGUgbGFzdFNlbGVjdGVkVWlkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuXG4gICAgaXNNdWx0aXBsZU1vZGVFbmFibGVkID0gdGhpcy5tdWx0aXBsZU1vZGVFbmFibGVkO1xuICAgIHNlYXJjaCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAgIG5vUmVzdWx0cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW50cmllcygpLmV2ZXJ5KCh7IGhpZGRlbiB9KSA9PiBoaWRkZW4pKTtcbiAgICB0ZXh0cyA9IHRoaXMuX3RleHRzLmFzUmVhZG9ubHkoKTtcblxuICAgIGxlYWZBY3Rpb25Qcm9qZWN0aW9uID0gc2lnbmFsPFJlYWRvbmx5QXJyYXk8VGVtcGxhdGVSZWY8dW5rbm93bj4+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgZXhwYW5kZWQgPSBzaWduYWwodHJ1ZSk7XG4gICAgZXhwYW5kZWRBZnRlckRlbGF5ID0gc2lnbmFsKHRydWUpO1xuXG4gICAgc2VsZWN0ZWRVaWRzQ2hhbmdlQ2FsbGJhY2s6ICgoc2VsZWN0ZWRVaWRzOiBzdHJpbmdbXSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRVaWRzID0gdGhpcy5jb2xsZWN0U2VsZWN0ZWRVaWRzKHRoaXMuZW50cmllcygpKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVaWRzQ2hhbmdlQ2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVpZHNDaGFuZ2VDYWxsYmFjayhuZXdTZWxlY3RlZFVpZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2goKTtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yRmlsdGVyLmZpbHRlcihlbnRyaWVzLCBzZWFyY2gsIHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlTXVsdGlNb2RlRW5hYmxlZChlbmFibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZC5zZXQoZW5hYmxlZCk7XG4gICAgfVxuXG4gICAgaW5pdEVudHJpZXMoZW50cmllczogTmF2U2VsZWN0b3JFbnRyeVtdLCBpbml0aWFsU2VsZWN0ZWRFbnRyeVVpZHM6IHN0cmluZ1tdLCBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZU1vZGVFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoTmF2U2VsZWN0b3JCdWlsZGVyLmJ1aWxkSW5NdWx0aXBsZU1vZGUoZW50cmllcywgaW5pdGlhbFNlbGVjdGVkRW50cnlVaWRzLCBkZXRhaWxzRGlzcGxheWVkTGltaXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoTmF2U2VsZWN0b3JCdWlsZGVyLmJ1aWxkKGVudHJpZXMsIGluaXRpYWxTZWxlY3RlZEVudHJ5VWlkcz8uWzBdID8/IG51bGwsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRW50cmllcyhlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sIGluaXRpYWxTZWxlY3RlZEVudHJ5VWlkczogc3RyaW5nW10sIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyKSB7XG4gICAgICAgIGxldCBuZXdFbnRyaWVzOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBuZXdFbnRyaWVzID0gTmF2U2VsZWN0b3JCdWlsZGVyLmJ1aWxkSW5NdWx0aXBsZU1vZGUoZW50cmllcywgaW5pdGlhbFNlbGVjdGVkRW50cnlVaWRzLCBkZXRhaWxzRGlzcGxheWVkTGltaXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3RW50cmllcyA9IE5hdlNlbGVjdG9yQnVpbGRlci5idWlsZChlbnRyaWVzLCBpbml0aWFsU2VsZWN0ZWRFbnRyeVVpZHM/LlswXSA/PyBudWxsLCBkZXRhaWxzRGlzcGxheWVkTGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUob2xkRW50cmllcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZUVudHJpZXMgPSBOYXZTZWxlY3Rvck1lcmdlci5tZXJnZUludGVybmFsTmF2U2VsZWN0b3JFbnRyaWVzKG5ld0VudHJpZXMsIG9sZEVudHJpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIE5hdlNlbGVjdG9yRmlsdGVyLmZpbHRlcihtZXJnZUVudHJpZXMsIHRoaXMuc2VhcmNoKCksIHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Hcm91cFRvZ2dsZUZvbGRpbmcoZ3JvdXA6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSkge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JGb2xkaW5nLnRvZ2dsZUZvbGRpbmcoZW50cmllcywgZ3JvdXAudWlkLCB0aGlzLmdldEZvbGRpbmdPcHRpb25zKCkpKTtcbiAgICB9XG5cbiAgICBvbk5vZGVTZWxlY3Qobm9kZTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3Rvck11bHRpU2VsZWN0LnNlbGVjdEluTXVsdGlwbGVNb2RlKGVudHJpZXMsIG5vZGUudWlkKSk7XG4gICAgfVxuXG4gICAgb25MZWFmQ2xpY2tlZChsZWFmOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZikge1xuICAgICAgICBpZiAoIWxlYWYuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yTXVsdGlTZWxlY3Quc2VsZWN0SW5NdWx0aXBsZU1vZGUoZW50cmllcywgbGVhZi51aWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvclNpbmdsZVNlbGVjdC5zZWxlY3QoZW50cmllcywgbGVhZi51aWQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGVhZlRvZ2dsZUZvbGRpbmcobGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvckZvbGRpbmcudG9nZ2xlRm9sZGluZyhlbnRyaWVzLCBsZWFmLnVpZCwgdGhpcy5nZXRGb2xkaW5nT3B0aW9ucygpKSk7XG4gICAgfVxuXG4gICAgb25MZWFmRGV0YWlsQ2xpY2tlZChsZWFmRGV0YWlsOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0LnNlbGVjdChlbnRyaWVzLCBsZWFmRGV0YWlsLnVpZCkpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRleHRzKHRleHRzOiBOYXZTZWxlY3RvclRyYW5zbGF0ZWRUZXh0cykge1xuICAgICAgICB0aGlzLl90ZXh0cy5zZXQodGV4dHMpO1xuICAgIH1cblxuICAgIHNlbGVjdE9ubHlMZWFmKGxlYWY6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3Rvck11bHRpU2VsZWN0LnNlbGVjdE9ubHlBTGVhZkluTXVsdGlwbGVNb2RlKGVudHJpZXMsIGxlYWYudWlkKSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRXhwYW5kZWQoKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQudXBkYXRlKGV4cGFuZGVkID0+ICFleHBhbmRlZCk7XG4gICAgICAgIHRoaXMuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5leHBhbmRlZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5hdlNlbGVjdG9yTWluaWZ5aW5nLmV4cGFuZChlbnRyaWVzLCB0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTmF2U2VsZWN0b3JNaW5pZnlpbmcubWluaWZ5KGVudHJpZXMsIHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5leHBhbmRlZCgpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZXhwYW5kZWRBZnRlckRlbGF5LnNldCh0aGlzLmV4cGFuZGVkKCkpLCAxNTApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRlZEFmdGVyRGVsYXkuc2V0KHRoaXMuZXhwYW5kZWQoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtaW5pZnkoKSB7XG4gICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvcmNlTWluaWZ5KCkge1xuICAgICAgICB0aGlzLmV4cGFuZGVkLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRBZnRlckRlbGF5LnNldCh0aGlzLmV4cGFuZGVkKCkpO1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT5cbiAgICAgICAgICAgIE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eS5yZXNldEZvY3VzKE5hdlNlbGVjdG9yTWluaWZ5aW5nLm1pbmlmeShlbnRyaWVzLCB0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UodWlkczogc3RyaW5nW10pIHtcbiAgICAgICAgLy8gQXZvaWQgaW5maW5pdGUgbG9vcCBpZiB5b3UgcHV0IHVuZXhpc3RpbmcgdWlkcyBhcyBzZWxlY3Qgd2lsbCBnZW5lcmF0ZSB0aGUgc2FtZSBlbnRyaWVzIGJ1dCB3aXRoIGRpZmZlcmVudCByZWZlcmVuY2VcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHVpZHMpID09PSBKU09OLnN0cmluZ2lmeSh0aGlzLmxhc3RTZWxlY3RlZFVpZHMoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZFVpZHMuc2V0KHVpZHMpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFVpZHMgPSB0aGlzLmNvbGxlY3RTZWxlY3RlZFVpZHModGhpcy5lbnRyaWVzKCkpO1xuICAgICAgICBjb25zdCB1aWRUb1NlbGVjdCA9IHVpZHMuZmlsdGVyKHVpZCA9PiBzZWxlY3RlZFVpZHMuZXZlcnkoc2VsZWN0ZWRVaWQgPT4gc2VsZWN0ZWRVaWQgIT09IHVpZCkpO1xuICAgICAgICBjb25zdCB1aWRUb1Vuc2VsZWN0ID0gc2VsZWN0ZWRVaWRzLmZpbHRlcih1aWQgPT4gdWlkcy5ldmVyeShzZWxlY3RlZFVpZCA9PiBzZWxlY3RlZFVpZCAhPT0gdWlkKSk7XG5cbiAgICAgICAgaWYgKCF1aWRUb1NlbGVjdC5sZW5ndGggJiYgIXVpZFRvVW5zZWxlY3QubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZW50cmllcyA9IHRoaXMuZW50cmllcygpO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCB1aWQgb2YgWy4uLnVpZFRvU2VsZWN0LCAuLi51aWRUb1Vuc2VsZWN0XSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMgPSBOYXZTZWxlY3Rvck11bHRpU2VsZWN0LnNlbGVjdEluTXVsdGlwbGVNb2RlKGVudHJpZXMsIHVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnRyaWVzID0gTmF2U2VsZWN0b3JTaW5nbGVTZWxlY3Quc2VsZWN0KGVudHJpZXMsIHVpZHNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQoZW50cmllcyk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblNlbGVjdGVkVWlkc0NoYW5nZShjYWxsYmFjazogKHNlbGVjdGVkVWlkczogc3RyaW5nW10pID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVpZHNDaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LmZvY3VzTmV4dChlbnRyaWVzKSk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LmZvY3VzUHJldmlvdXMoZW50cmllcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGVjdFNlbGVjdGVkVWlkcyhlbnRyaWVzOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMuZmxhdE1hcChlbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkuZGV0YWlsc0Rpc3BsYXlhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5kZXRhaWxzLmZsYXRNYXAoZGV0YWlsID0+IChkZXRhaWwuc2VsZWN0ZWQgPyBbZGV0YWlsLnVpZF0gOiBbXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuc2VsZWN0ZWQgPyBbZW50cnkudWlkXSA6IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3RTZWxlY3RlZFVpZHMoZW50cnkuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvbGRpbmdPcHRpb25zKCk6IE5hdlNlbGVjdG9yRm9sZGluZ09wdGlvbnMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlOiB0aGlzLm11bHRpcGxlTW9kZUVuYWJsZWQoKSxcbiAgICAgICAgICAgIG1pbmlmaWVkOiAhdGhpcy5leHBhbmRlZCgpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHVwZGF0ZUxlYWZBY3Rpb24obGVhZkFjdGlvblByb2plY3Rpb246IFJlYWRvbmx5QXJyYXk8VGVtcGxhdGVSZWY8dW5rbm93bj4+KSB7XG4gICAgICAgIHRoaXMubGVhZkFjdGlvblByb2plY3Rpb24uc2V0KGxlYWZBY3Rpb25Qcm9qZWN0aW9uKTtcbiAgICB9XG5cbiAgICBmb2xkKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yRm9sZGluZy5mb2xkKGVudHJpZXMsIGVudHJ5LnVpZCwgdGhpcy5nZXRGb2xkaW5nT3B0aW9ucygpKSk7XG4gICAgfVxuXG4gICAgdW5mb2xkKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yRm9sZGluZy51bmZvbGQoZW50cmllcywgZW50cnkudWlkLCB0aGlzLmdldEZvbGRpbmdPcHRpb25zKCkpKTtcbiAgICB9XG5cbiAgICB1cGRhdGVEZXRhaWxzRGlzcGxheWVkTGltaXQoZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yVmlld01vcmUuY2hhbmdlVmlld01vcmVEZXRhaWxzRGlzcGxheWVkTGltaXQoZW50cmllcywgZGV0YWlsc0Rpc3BsYXllZExpbWl0KSk7XG4gICAgfVxuXG4gICAgdmlld01vcmUobGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yVmlld01vcmUudmlld01vcmUoZW50cmllcywgbGVhZi51aWQpKTtcbiAgICB9XG5cbiAgICB2aWV3TGVzcyhsZWFmOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZikge1xuICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlKGVudHJpZXMgPT4gTmF2U2VsZWN0b3JWaWV3TW9yZS52aWV3TGVzcyhlbnRyaWVzLCBsZWFmLnVpZCkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,2 +1,3 @@
1
+ export * from './nav-selector-popover/nav-selector-popover-item.component';
1
2
  export * from './nav-selector.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gICAgTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICBOYXZTZWxlY3Rvckdyb3VwLFxuICAgIE5hdlNlbGVjdG9yTGVhZixcbiAgICBOYXZTZWxlY3RvckxlYWZEZXRhaWxzLFxuICAgIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzLFxuICAgIE5vZGVBY2Nlc3NpYmlsaXR5LFxufSBmcm9tICcuL25hdi1zZWxlY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL25hdi1zZWxlY3Rvci5jb21wb25lbnQnO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgICBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgTmF2U2VsZWN0b3JMZWFmLFxuICAgIE5hdlNlbGVjdG9yTGVhZkRldGFpbHMsXG4gICAgTmF2U2VsZWN0b3JUcmFuc2xhdGVkVGV4dHMsXG4gICAgTm9kZUFjY2Vzc2liaWxpdHksXG59IGZyb20gJy4vbmF2LXNlbGVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbmF2LXNlbGVjdG9yLXBvcG92ZXIvbmF2LXNlbGVjdG9yLXBvcG92ZXItaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXYtc2VsZWN0b3IuY29tcG9uZW50JztcbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import { isInternalNavSelectorEntryALeaf, isNavSelectorEntryACategory, isNavSelectorEntryAGroup, isNavSelectorEntryALeaf, } from '../nav-selector';
2
2
  import { NavSelectorAccessibility } from '../utils/nav-selector.accessibility';
3
+ import { NavSelectorFolding } from '../utils/nav-selector.folding';
3
4
  import { NavSelectorMultiSelect } from '../utils/nav-selector.multi-select';
4
5
  import { NavSelectorSingleSelect } from './nav-selector.single-select';
5
6
  const LeafLogics = {
@@ -28,9 +29,10 @@ export class NavSelectorBuilder {
28
29
  */
29
30
  static build(entries, selectedEntryUid, detailsDisplayedLimit) {
30
31
  this.structureChecker(entries);
31
- const builtEntries = this.buildEntries(entries, false, 1, detailsDisplayedLimit);
32
+ let builtEntries = this.buildEntries(entries, false, 1, detailsDisplayedLimit);
32
33
  if (selectedEntryUid) {
33
- return NavSelectorSingleSelect.select(builtEntries, selectedEntryUid);
34
+ builtEntries = NavSelectorSingleSelect.select(builtEntries, selectedEntryUid);
35
+ builtEntries = NavSelectorFolding.unfoldParents(builtEntries, selectedEntryUid, { multipleMode: false, minified: false });
34
36
  }
35
37
  return builtEntries;
36
38
  }
@@ -46,6 +48,7 @@ export class NavSelectorBuilder {
46
48
  if (selectedEntryUids) {
47
49
  for (const selectedEntryUid of selectedEntryUids) {
48
50
  builtEntries = NavSelectorMultiSelect.selectInMultipleMode(builtEntries, selectedEntryUid);
51
+ builtEntries = NavSelectorFolding.unfoldParents(builtEntries, selectedEntryUid, { multipleMode: false, minified: false });
49
52
  }
50
53
  }
51
54
  return builtEntries;
@@ -263,4 +266,4 @@ export class NavSelectorBuilder {
263
266
  .every(([, logic]) => !logic(leaf));
264
267
  }
265
268
  }
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy91dGlscy9uYXYtc2VsZWN0b3IuYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBTUgsK0JBQStCLEVBQy9CLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsdUJBQXVCLEdBTTFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsTUFBTSxVQUFVLEdBQUc7SUFDZixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLE9BQU8sRUFBRSxTQUFTO0NBQ1osQ0FBQztBQUdYOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsNkNBQTZDO0lBQ3JDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBMEQ7UUFDekYsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUk7UUFDN0UsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYTtRQUMxRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO1FBQ3hFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBcUIsRUFBRSxFQUFFLENBQUMsSUFBSSxD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QVcsS0FBSyxJQUFJO1lBQ3pDLElBQUksRUFBRSxjQUFjO1NBQ3ZCLENBQUM7SUFDTixDQUFDO0lBRU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQXFCLEVBQUUsR0FBRyxRQUFzQjtRQUM1RSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO2FBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFpQixDQUFDLENBQUM7YUFDeEQsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksXG4gICAgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwLFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JMZWFmLFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlscyxcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmLFxuICAgIGlzTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeSxcbiAgICBpc05hdlNlbGVjdG9yRW50cnlBR3JvdXAsXG4gICAgaXNOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICBOYXZTZWxlY3RvckVudHJ5LFxuICAgIE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgTmF2U2VsZWN0b3JMZWFmLFxuICAgIE5hdlNlbGVjdG9yTGVhZkRldGFpbHMsXG59IGZyb20gJy4uL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkgfSBmcm9tICcuLi91dGlscy9uYXYtc2VsZWN0b3IuYWNjZXNzaWJpbGl0eSc7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvck11bHRpU2VsZWN0IH0gZnJvbSAnLi4vdXRpbHMvbmF2LXNlbGVjdG9yLm11bHRpLXNlbGVjdCc7XG5pbXBvcnQgeyBOYXZTZWxlY3RvclNpbmdsZVNlbGVjdCB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLnNpbmdsZS1zZWxlY3QnO1xuXG5jb25zdCBMZWFmTG9naWNzID0ge1xuICAgIERJU0FCTEVEOiAnRElTQUJMRUQnLFxuICAgIEZFQVRVUkVfTE9DS0VEOiAnRkVBVFVSRV9MT0NLRUQnLFxuICAgIFRPS0VOX0lOVkFMSUQ6ICdUT0tFTl9JTlZBTElEJyxcbiAgICBDT1VOVEVSOiAnQ09VTlRFUicsXG59IGFzIGNvbnN0O1xudHlwZSBMZWFmTG9naWNzID0ga2V5b2YgdHlwZW9mIExlYWZMb2dpY3M7XG5cbi8qKlxuICogTmF2U2VsZWN0b3JCdWlsZGVyIGlzIGEgdXRpbGl0eSBjbGFzcyB0aGF0IGJ1aWxkcyB0aGUgTmF2U2VsZWN0b3IgZW50cmllcyBmb3Igc2luZ2xlIGFuZCBtdWx0aXBsZSBzZWxlY3QgbW9kZXMuXG4gKiBJdCBhbHNvIGNoZWNrcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBlbnRyaWVzIHRvIGVuc3VyZSB0aGV5IGFyZSB2YWxpZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hdlNlbGVjdG9yQnVpbGRlciB7XG4gICAgLy8gLyFcXC8hXFwgT3JkZXIgb2YgbG9naWNzIGlzIGltcG9ydGFudCAvIVxcLyFcXFxuICAgIHByaXZhdGUgc3RhdGljIExFQUZfTE9HSUNTX1BSSU9SSVRZOiBSZWNvcmQ8TGVhZkxvZ2ljcywgKGxlZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBib29sZWFuPiA9IHtcbiAgICAgICAgW0xlYWZMb2dpY3MuRElTQUJMRURdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLmRpc2FibGVSZWFzb24gIT09IG51bGwsXG4gICAgICAgIFtMZWFmTG9naWNzLkZFQVRVUkVfTE9DS0VEXTogKGxlYWY6IE5hdlNlbGVjdG9yTGVhZikgPT4gbGVhZi5mZWF0dXJlTG9ja2VkLFxuICAgICAgICBbTGVhZkxvZ2ljcy5UT0tFTl9JTlZBTElEXTogKGxlYWY6IE5hdlNlbGVjdG9yTGVhZikgPT4gbGVhZi50b2tlbkludmFsaWQsXG4gICAgICAgIFtMZWFmTG9naWNzLkNPVU5URVJdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLmNvdW50ZXIgIT09IG51bGwsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyB0aGUgTmF2U2VsZWN0b3IgZW50cmllcyBmb3Igc2luZ2xlIHNlbGVjdCBtb2RlLlxuICAgICAqIEBwYXJhbSBlbnRyaWVzIG5hdiBzZWxlY3RvciBlbnRyaWVzXG4gICAgICogQHBhcmFtIHNlbGVjdGVkRW50cnlVaWQgc2VsZWN0ZWQgZW50cnkgdWlkXG4gICAgICogQHBhcmFtIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgbGltaXRcbiAgICAgKi9cbiAgICBzdGF0aWMgYnVpbGQoZW50cmllczogTmF2U2VsZWN0b3JFbnRyeVtdLCBzZWxlY3RlZEVudHJ5VWlkOiBzdHJpbmcgfCBudWxsLCBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcik6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgdGhpcy5zdHJ1Y3R1cmVDaGVja2VyKGVudHJpZXMpO1xuICAgICAgICBjb25zdCBidWlsdEVudHJpZXMgPSB0aGlzLmJ1aWxkRW50cmllcyhlbnRyaWVzLCBmYWxzZSwgMSwgZGV0YWlsc0Rpc3BsYXllZExpbWl0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRW50cnlVaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYXZTZWxlY3RvclNpbmdsZVNlbGVjdC5zZWxlY3QoYnVpbHRFbnRyaWVzLCBzZWxlY3RlZEVudHJ5VWlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVpbHRFbnRyaWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyB0aGUgTmF2U2VsZWN0b3IgZW50cmllcyBmb3IgbXVsdGlwbGUgc2VsZWN0IG1vZGUuXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRFbnRyeVVpZHMgc2VsZWN0ZWQgZW50cnkgdWlkc1xuICAgICAqIEBwYXJhbSBkZXRhaWxzRGlzcGxheWVkTGltaXQgbnVtYmVyIG9mIGRldGFpbHMgZGlzcGxheWVkIGxpbWl0XG4gICAgICovXG4gICAgc3RhdGljIGJ1aWxkSW5NdWx0aXBsZU1vZGUoXG4gICAgICAgIGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSxcbiAgICAgICAgc2VsZWN0ZWRFbnRyeVVpZHM6IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXJcbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIHRoaXMuc3RydWN0dXJlQ2hlY2tlcihlbnRyaWVzLCB0cnVlKTtcbiAgICAgICAgbGV0IGJ1aWx0RW50cmllcyA9IHRoaXMuYnVpbGRFbnRyaWVzKGVudHJpZXMsIHRydWUsIDEsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEVudHJ5VWlkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVudHJ5VWlkIG9mIHNlbGVjdGVkRW50cnlVaWRzKSB7XG4gICAgICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JNdWx0aVNlbGVjdC5zZWxlY3RJbk11bHRpcGxlTW9kZShidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidWlsdEVudHJpZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgc3RydWN0dXJlQ2hlY2tlcihlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sIG11bHRpcGxlTW9kZUVuYWJsZWQgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFHcm91cChlbnRyeSkgfHwgaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5KGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RydWN0dXJlQ2hlY2tlcihlbnRyeS5jaGlsZHJlbiwgbXVsdGlwbGVNb2RlRW5hYmxlZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5kZXRhaWxzLmxlbmd0aCAmJiBtdWx0aXBsZU1vZGVFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYE5hdlNlbGVjdG9yQnVpbGRlcjogTGVhZiAke2VudHJ5LnVpZH0gd2l0aCBkZXRhaWxzIGlzIG5vdCBhbGxvd2VkIGluIG11bHRpcGxlIG1vZGVgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkRW50cmllcyhcbiAgICAgICAgZW50cmllczogTmF2U2VsZWN0b3JFbnRyeVtdLFxuICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuLFxuICAgICAgICBsZXZlbCA9IDEsXG4gICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyXG4gICAgKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICBjb25zdCBuZXdFbnRyaWVzID0gZW50cmllc1xuICAgICAgICAgICAgLm1hcCgoZW50cnksIGlkeCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRW50cnkoZW50cnksIHsgbXVsdGlwbGVNb2RlRW5hYmxlZCwgbGV2ZWwsIGlkeCwgdG90YWxOdW1iZXJPZkVudHJ5OiBlbnRyaWVzLmxlbmd0aCwgZGV0YWlsc0Rpc3BsYXllZExpbWl0IH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmlsdGVyKGl0ID0+IGl0ICE9PSBudWxsKTtcbiAgICAgICAgcmV0dXJuIE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eS5yZXNldEZvY3VzKG5ld0VudHJpZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkRW50cnkoXG4gICAgICAgIGVudHJ5OiBOYXZTZWxlY3RvckVudHJ5LFxuICAgICAgICB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICB0b3RhbE51bWJlck9mRW50cnksXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHsgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjsgbGV2ZWw6IG51bWJlcjsgaWR4OiBudW1iZXI7IHRvdGFsTnVtYmVyT2ZFbnRyeTogbnVtYmVyOyBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlciB9XG4gICAgKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5IHwgbnVsbCB7XG4gICAgICAgIGlmIChpc05hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkTGVhZihlbnRyeSwge1xuICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmOiB0b3RhbE51bWJlck9mRW50cnksXG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeShlbnRyeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ2F0ZWdvcnkoZW50cnksIHtcbiAgICAgICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mQ2F0ZWdvcnk6IHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkR3JvdXAoZW50cnksIHtcbiAgICAgICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mR3JvdXBzOiB0b3RhbE51bWJlck9mRW50cnksXG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRDYXRlZ29yeUNoaWxkcmVuKFxuICAgICAgICBlbnRyeTogTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICAgICAge1xuICAgICAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGNhdGVnb3J5TGV2ZWwsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHtcbiAgICAgICAgICAgIGZvY3VzYWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBjYXRlZ29yeUxldmVsOiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IChJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAgfCBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZilbXSB7XG4gICAgICAgIHJldHVybiBlbnRyeS5jaGlsZHJlblxuICAgICAgICAgICAgLm1hcCgoY2hpbGQsIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc05hdlNlbGVjdG9yRW50cnlBTGVhZihjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRMZWFmKGNoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGNhdGVnb3J5TGV2ZWwgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkxlYWY6IGVudHJ5LmNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRHcm91cChjaGlsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiBjYXRlZ29yeUxldmVsICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHM6IGVudHJ5LmNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkQ2F0ZWdvcnkoXG4gICAgICAgIG5vZGU6IE5hdlNlbGVjdG9yQ2F0ZWdvcnksXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZDYXRlZ29yeSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxldmVsOiBudW1iZXI7XG4gICAgICAgICAgICBpZHg6IG51bWJlcjtcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZDYXRlZ29yeTogbnVtYmVyO1xuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuYnVpbGRDYXRlZ29yeUNoaWxkcmVuKG5vZGUsIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZTogIW5vZGUuZm9sZGVkLFxuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGNhdGVnb3J5TGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBub2RlLnVpZCxcbiAgICAgICAgICAgIGFsaWFzOiBub2RlLmFsaWFzLFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgZm9jdXNhYmxlOiB0cnVlLFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgICBhcmlhTGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgIGFyaWFQb3NpbnNldDogaWR4ICsgMSxcbiAgICAgICAgICAgICAgICBhcmlhU2V0c2l6ZTogdG90YWxOdW1iZXJPZkNhdGVnb3J5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvbGRlZDogbm9kZS5mb2xkZWQsXG4gICAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRHcm91cENoaWxkcmVuKFxuICAgICAgICBlbnRyeTogTmF2U2VsZWN0b3JHcm91cCxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGdyb3VwTGV2ZWwsXG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHsgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjsgZ3JvdXBMZXZlbDogbnVtYmVyOyBmb2N1c2FibGU6IGJvb2xlYW47IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyIH1cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZltdIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmNoaWxkcmVuXG4gICAgICAgICAgICAubWFwKChjaGlsZCwgaWR4KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRMZWFmKGNoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBncm91cExldmVsICsgMSxcbiAgICAgICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZjogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZvY3VzYWJsZSAmJiAhZW50cnkuZm9sZGVkLFxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkR3JvdXAoXG4gICAgICAgIG5vZGU6IE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHMsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHtcbiAgICAgICAgICAgIGZvY3VzYWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBsZXZlbDogbnVtYmVyO1xuICAgICAgICAgICAgaWR4OiBudW1iZXI7XG4gICAgICAgICAgICB0b3RhbE51bWJlck9mR3JvdXBzOiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5idWlsZEdyb3VwQ2hpbGRyZW4obm9kZSwgeyBtdWx0aXBsZU1vZGVFbmFibGVkLCBncm91cExldmVsOiBsZXZlbCwgZm9jdXNhYmxlLCBkZXRhaWxzRGlzcGxheWVkTGltaXQgfSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUb2tlbkludmFsaWQgPSBjaGlsZHJlbi5zb21lKCh7IGRpc3BsYXlUb2tlbkludmFsaWQgfSkgPT4gZGlzcGxheVRva2VuSW52YWxpZCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbkNvdW50ID0gY2hpbGRyZW4uZmlsdGVyKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVpZDogbm9kZS51aWQsXG4gICAgICAgICAgICBhbGlhczogbm9kZS5hbGlhcyxcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgY2hpbGRyZW5QaWN0dXJlVXJsU2FtcGxlOiBjaGlsZHJlblxuICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoY2hpbGQpICYmIGlkeCA8IDQgPyB7IHVybDogY2hpbGQucGljdHVyZVVybCwgaW5pdGlhbDogY2hpbGQuYWxpYXNbMF0gfSA6IG51bGxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCksXG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgICBhcmlhUG9zaW5zZXQ6IGlkeCArIDEsXG4gICAgICAgICAgICAgICAgYXJpYUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICBhcmlhU2V0c2l6ZTogdG90YWxOdW1iZXJPZkdyb3VwcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogbm9kZS5mb2xkZWQgJiYgY2hpbGRyZW4uc29tZShjaGlsZCA9PiBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGNoaWxkKSAmJiBjaGlsZC5jb3VudGVyICE9PSAwKSxcbiAgICAgICAgICAgIGNvdW50ZXI6IGNoaWxkcmVuLnJlZHVjZSgoYWNjLCB7IGNvdW50ZXIgfSkgPT4gYWNjICsgY291bnRlciwgMCksXG4gICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2VsZWN0YWJsZTogbXVsdGlwbGVNb2RlRW5hYmxlZCAmJiBjaGlsZHJlbi5zb21lKCh7IHNlbGVjdGFibGUgfSkgPT4gc2VsZWN0YWJsZSksXG4gICAgICAgICAgICB1bmRldGVybWluZWRTZWxlY3Rpb246IHNlbGVjdGVkQ2hpbGRyZW5Db3VudCAhPT0gY2hpbGRyZW4ubGVuZ3RoICYmIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCA+IDAsXG4gICAgICAgICAgICBmb2xkZWQ6IG5vZGUuZm9sZGVkLFxuICAgICAgICAgICAgdHlwZTogbm9kZS50eXBlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkTGVhZihcbiAgICAgICAgbGVhZjogTmF2U2VsZWN0b3JMZWFmLFxuICAgICAgICB7XG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZixcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxldmVsOiBudW1iZXI7XG4gICAgICAgICAgICBpZHg6IG51bWJlcjtcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmOiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmIHwgbnVsbCB7XG4gICAgICAgIGlmIChsZWFmLm1pc3NpbmdQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRldGFpbHNEaXNwbGF5YWJsZSA9IHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpICYmICEhbGVhZi5kZXRhaWxzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZm9sZGFibGUgPSAhIWxlYWYuZGV0YWlscy5sZW5ndGggJiYgZGV0YWlsc0Rpc3BsYXlhYmxlO1xuICAgICAgICBjb25zdCBmb2xkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjb3VudGVyID0gKGxlYWYuZGV0YWlscy5yZWR1Y2UoKGFjYywgZGV0YWlsKSA9PiBhY2MgKyAoZGV0YWlsLmNvdW50ZXIgPz8gMCksIDApIHx8IGxlYWYuY291bnRlcikgPz8gMDtcbiAgICAgICAgY29uc3QgY291bnRlckRpc3BsYXlhYmxlID0gY291bnRlciAhPT0gMCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKTtcblxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGxlYWYuZGlzYWJsZVJlYXNvbiAhPT0gbnVsbDtcblxuICAgICAgICBjb25zdCB2aWV3TW9yZURpc3BsYXlhYmxlID0gbGVhZi5kZXRhaWxzLmxlbmd0aCA+IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBsZWFmLnVpZCxcbiAgICAgICAgICAgIGFsaWFzOiBsZWFmLmFsaWFzLFxuICAgICAgICAgICAgcGljdHVyZVVybDogbGVhZi5waWN0dXJlVXJsLFxuICAgICAgICAgICAgYWN0aW9uc0Rpc3BsYXlhYmxlOiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKSxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgZGlzYWJsZVJlYXNvbjogbGVhZi5kaXNhYmxlUmVhc29uLFxuICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGZvY3VzYWJsZTpcbiAgICAgICAgICAgICAgICBmb2N1c2FibGUgJiZcbiAgICAgICAgICAgICAgICAoKG11bHRpcGxlTW9kZUVuYWJsZWQgJiYgdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuQ09VTlRFUikpIHx8ICghbXVsdGlwbGVNb2RlRW5hYmxlZCAmJiAhZGlzYWJsZWQpKSxcbiAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgICAgICAgICAgYXJpYVBvc2luc2V0OiBpZHggKyAxLFxuICAgICAgICAgICAgICAgIGFyaWFMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICAgICAgYXJpYVNldHNpemU6IHRvdGFsTnVtYmVyT2ZMZWFmLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvbGRhYmxlLFxuICAgICAgICAgICAgZm9sZGVkLFxuICAgICAgICAgICAgZGlzcGxheUNvdW50ZXI6IGZvbGRlZCAmJiBjb3VudGVyRGlzcGxheWFibGUsXG4gICAgICAgICAgICBjb3VudGVyRGlzcGxheWFibGUsXG4gICAgICAgICAgICBjb3VudGVyLFxuICAgICAgICAgICAgbmV0d29yazogbGVhZi5uZXR3b3JrLFxuICAgICAgICAgICAgZGlzcGxheVRva2VuSW52YWxpZDogbGVhZi50b2tlbkludmFsaWQgJiYgdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuVE9LRU5fSU5WQUxJRCwgTGVhZkxvZ2ljcy5DT1VOVEVSKSxcbiAgICAgICAgICAgIGRpc3BsYXlGZWF0dXJlTG9ja2VkOlxuICAgICAgICAgICAgICAgIGxlYWYuZmVhdHVyZUxvY2tlZCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5GRUFUVVJFX0xPQ0tFRCwgTGVhZkxvZ2ljcy5UT0tFTl9JTlZBTElELCBMZWFmTG9naWNzLkNPVU5URVIpLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2VsZWN0YWJsZTogbXVsdGlwbGVNb2RlRW5hYmxlZFxuICAgICAgICAgICAgICAgID8gdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuQ09VTlRFUilcbiAgICAgICAgICAgICAgICA6IHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkZFQVRVUkVfTE9DS0VELCBMZWFmTG9naWNzLlRPS0VOX0lOVkFMSUQsIExlYWZMb2dpY3MuQ09VTlRFUiksXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWFibGUsXG4gICAgICAgICAgICBkZXRhaWxzOiBsZWFmLmRldGFpbHMubWFwKGRldGFpbCA9PiB0aGlzLmJ1aWxkTGVhZkRldGFpbChkZXRhaWwsIGxldmVsICsgMSwgZm9jdXNhYmxlICYmICFmb2xkZWQpKSxcbiAgICAgICAgICAgIGRldGFpbFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHR5cGU6ICdMRUFGJyxcbiAgICAgICAgICAgIHZpZXdNb3JlRGlzcGxheWFibGUsXG4gICAgICAgICAgICB2aWV3TW9yZURpc3BsYXllZDogdmlld01vcmVEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIHZpZXdNb3JlRGV0YWlsc0Rpc3BsYXllZExpbWl0OiBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRMZWFmRGV0YWlsKGRldGFpbDogTmF2U2VsZWN0b3JMZWFmRGV0YWlscywgbGV2ZWw6IG51bWJlciwgZm9jdXNhYmxlOiBib29sZWFuKTogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVpZDogZGV0YWlsLnVpZCxcbiAgICAgICAgICAgIGNvdW50ZXI6IGRldGFpbC5jb3VudGVyID8/IDAsXG4gICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogZGV0YWlsLmNvdW50ZXIgIT09IG51bGwsXG4gICAgICAgICAgICBhbGlhczogZGV0YWlsLm5hbWUsXG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgICBhcmlhUG9zaW5zZXQ6IDEsXG4gICAgICAgICAgICAgICAgYXJpYUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICBhcmlhU2V0c2l6ZTogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvclJlYXNvbjogZGV0YWlsLmVycm9yUmVhc29uLFxuICAgICAgICAgICAgZGlzcGxheUVycm9yOiBkZXRhaWwuZXJyb3JSZWFzb24gIT09IG51bGwsXG4gICAgICAgICAgICB0eXBlOiAnTEVBRl9ERVRBSUxTJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBpc0xlYWZMb2dpY1ZhbGlkKGxlYWY6IE5hdlNlbGVjdG9yTGVhZiwgLi4uZXhjbHVkZXM6IExlYWZMb2dpY3NbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5MRUFGX0xPR0lDU19QUklPUklUWSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhZXhjbHVkZXMuaW5jbHVkZXMoa2V5IGFzIExlYWZMb2dpY3MpKVxuICAgICAgICAgICAgLmV2ZXJ5KChbLCBsb2dpY10pID0+ICFsb2dpYyhsZWFmKSk7XG4gICAgfVxufVxuIl19
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy91dGlscy9uYXYtc2VsZWN0b3IuYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBTUgsK0JBQStCLEVBQy9CLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsdUJBQXVCLEdBTTFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsTUFBTSxVQUFVLEdBQUc7SUFDZixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLE9BQU8sRUFBRSxTQUFTO0NBQ1osQ0FBQztBQUdYOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsNkNBQTZDO0lBQ3JDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBMEQ7UUFDekYsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUk7UUFDN0UsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYTtRQUMxRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO1FBQ3hFLENBQUMsVUFBVSxDQUFDLE9B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RUFBRSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUk7WUFDdkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2xCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsYUFBYSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ1osWUFBWSxFQUFFLENBQUM7Z0JBQ2YsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFdBQVcsRUFBRSxDQUFDO2FBQ2pCO1lBQ0QsU0FBUztZQUNULFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUk7WUFDekMsSUFBSSxFQUFFLGNBQWM7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBcUIsRUFBRSxHQUFHLFFBQXNCO1FBQzVFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7YUFDM0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQWlCLENBQUMsQ0FBQzthQUN4RCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5LFxuICAgIGlzTmF2U2VsZWN0b3JFbnRyeUFHcm91cCxcbiAgICBpc05hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIE5hdlNlbGVjdG9yRW50cnksXG4gICAgTmF2U2VsZWN0b3JHcm91cCxcbiAgICBOYXZTZWxlY3RvckxlYWYsXG4gICAgTmF2U2VsZWN0b3JMZWFmRGV0YWlscyxcbn0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eSB9IGZyb20gJy4uL3V0aWxzL25hdi1zZWxlY3Rvci5hY2Nlc3NpYmlsaXR5JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yRm9sZGluZyB9IGZyb20gJy4uL3V0aWxzL25hdi1zZWxlY3Rvci5mb2xkaW5nJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yTXVsdGlTZWxlY3QgfSBmcm9tICcuLi91dGlscy9uYXYtc2VsZWN0b3IubXVsdGktc2VsZWN0JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0IH0gZnJvbSAnLi9uYXYtc2VsZWN0b3Iuc2luZ2xlLXNlbGVjdCc7XG5cbmNvbnN0IExlYWZMb2dpY3MgPSB7XG4gICAgRElTQUJMRUQ6ICdESVNBQkxFRCcsXG4gICAgRkVBVFVSRV9MT0NLRUQ6ICdGRUFUVVJFX0xPQ0tFRCcsXG4gICAgVE9LRU5fSU5WQUxJRDogJ1RPS0VOX0lOVkFMSUQnLFxuICAgIENPVU5URVI6ICdDT1VOVEVSJyxcbn0gYXMgY29uc3Q7XG50eXBlIExlYWZMb2dpY3MgPSBrZXlvZiB0eXBlb2YgTGVhZkxvZ2ljcztcblxuLyoqXG4gKiBOYXZTZWxlY3RvckJ1aWxkZXIgaXMgYSB1dGlsaXR5IGNsYXNzIHRoYXQgYnVpbGRzIHRoZSBOYXZTZWxlY3RvciBlbnRyaWVzIGZvciBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBtb2Rlcy5cbiAqIEl0IGFsc28gY2hlY2tzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGVudHJpZXMgdG8gZW5zdXJlIHRoZXkgYXJlIHZhbGlkLlxuICovXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JCdWlsZGVyIHtcbiAgICAvLyAvIVxcLyFcXCBPcmRlciBvZiBsb2dpY3MgaXMgaW1wb3J0YW50IC8hXFwvIVxcXG4gICAgcHJpdmF0ZSBzdGF0aWMgTEVBRl9MT0dJQ1NfUFJJT1JJVFk6IFJlY29yZDxMZWFmTG9naWNzLCAobGVmOiBOYXZTZWxlY3RvckxlYWYpID0+IGJvb2xlYW4+ID0ge1xuICAgICAgICBbTGVhZkxvZ2ljcy5ESVNBQkxFRF06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYuZGlzYWJsZVJlYXNvbiAhPT0gbnVsbCxcbiAgICAgICAgW0xlYWZMb2dpY3MuRkVBVFVSRV9MT0NLRURdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLmZlYXR1cmVMb2NrZWQsXG4gICAgICAgIFtMZWFmTG9naWNzLlRPS0VOX0lOVkFMSURdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLnRva2VuSW52YWxpZCxcbiAgICAgICAgW0xlYWZMb2dpY3MuQ09VTlRFUl06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYuY291bnRlciAhPT0gbnVsbCxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIHRoZSBOYXZTZWxlY3RvciBlbnRyaWVzIGZvciBzaW5nbGUgc2VsZWN0IG1vZGUuXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRFbnRyeVVpZCBzZWxlY3RlZCBlbnRyeSB1aWRcbiAgICAgKiBAcGFyYW0gZGV0YWlsc0Rpc3BsYXllZExpbWl0IG51bWJlciBvZiBkZXRhaWxzIGRpc3BsYXllZCBsaW1pdFxuICAgICAqL1xuICAgIHN0YXRpYyBidWlsZChlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sIHNlbGVjdGVkRW50cnlVaWQ6IHN0cmluZyB8IG51bGwsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICB0aGlzLnN0cnVjdHVyZUNoZWNrZXIoZW50cmllcyk7XG4gICAgICAgIGxldCBidWlsdEVudHJpZXMgPSB0aGlzLmJ1aWxkRW50cmllcyhlbnRyaWVzLCBmYWxzZSwgMSwgZGV0YWlsc0Rpc3BsYXllZExpbWl0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRW50cnlVaWQpIHtcbiAgICAgICAgICAgIGJ1aWx0RW50cmllcyA9IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0LnNlbGVjdChidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQpO1xuICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JGb2xkaW5nLnVuZm9sZFBhcmVudHMoYnVpbHRFbnRyaWVzLCBzZWxlY3RlZEVudHJ5VWlkLCB7IG11bHRpcGxlTW9kZTogZmFsc2UsIG1pbmlmaWVkOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVpbHRFbnRyaWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyB0aGUgTmF2U2VsZWN0b3IgZW50cmllcyBmb3IgbXVsdGlwbGUgc2VsZWN0IG1vZGUuXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRFbnRyeVVpZHMgc2VsZWN0ZWQgZW50cnkgdWlkc1xuICAgICAqIEBwYXJhbSBkZXRhaWxzRGlzcGxheWVkTGltaXQgbnVtYmVyIG9mIGRldGFpbHMgZGlzcGxheWVkIGxpbWl0XG4gICAgICovXG4gICAgc3RhdGljIGJ1aWxkSW5NdWx0aXBsZU1vZGUoXG4gICAgICAgIGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSxcbiAgICAgICAgc2VsZWN0ZWRFbnRyeVVpZHM6IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXJcbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIHRoaXMuc3RydWN0dXJlQ2hlY2tlcihlbnRyaWVzLCB0cnVlKTtcbiAgICAgICAgbGV0IGJ1aWx0RW50cmllcyA9IHRoaXMuYnVpbGRFbnRyaWVzKGVudHJpZXMsIHRydWUsIDEsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEVudHJ5VWlkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVudHJ5VWlkIG9mIHNlbGVjdGVkRW50cnlVaWRzKSB7XG4gICAgICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JNdWx0aVNlbGVjdC5zZWxlY3RJbk11bHRpcGxlTW9kZShidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQpO1xuICAgICAgICAgICAgICAgIGJ1aWx0RW50cmllcyA9IE5hdlNlbGVjdG9yRm9sZGluZy51bmZvbGRQYXJlbnRzKGJ1aWx0RW50cmllcywgc2VsZWN0ZWRFbnRyeVVpZCwgeyBtdWx0aXBsZU1vZGU6IGZhbHNlLCBtaW5pZmllZDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1aWx0RW50cmllcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBzdHJ1Y3R1cmVDaGVja2VyKGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSwgbXVsdGlwbGVNb2RlRW5hYmxlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUdyb3VwKGVudHJ5KSB8fCBpc05hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJ1Y3R1cmVDaGVja2VyKGVudHJ5LmNoaWxkcmVuLCBtdWx0aXBsZU1vZGVFbmFibGVkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LmRldGFpbHMubGVuZ3RoICYmIG11bHRpcGxlTW9kZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgTmF2U2VsZWN0b3JCdWlsZGVyOiBMZWFmICR7ZW50cnkudWlkfSB3aXRoIGRldGFpbHMgaXMgbm90IGFsbG93ZWQgaW4gbXVsdGlwbGUgbW9kZWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRFbnRyaWVzKFxuICAgICAgICBlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sXG4gICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW4sXG4gICAgICAgIGxldmVsID0gMSxcbiAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXJcbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyaWVzXG4gICAgICAgICAgICAubWFwKChlbnRyeSwgaWR4KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRFbnRyeShlbnRyeSwgeyBtdWx0aXBsZU1vZGVFbmFibGVkLCBsZXZlbCwgaWR4LCB0b3RhbE51bWJlck9mRW50cnk6IGVudHJpZXMubGVuZ3RoLCBkZXRhaWxzRGlzcGxheWVkTGltaXQgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IG51bGwpO1xuICAgICAgICByZXR1cm4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LnJlc2V0Rm9jdXMobmV3RW50cmllcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRFbnRyeShcbiAgICAgICAgZW50cnk6IE5hdlNlbGVjdG9yRW50cnksXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfTogeyBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuOyBsZXZlbDogbnVtYmVyOyBpZHg6IG51bWJlcjsgdG90YWxOdW1iZXJPZkVudHJ5OiBudW1iZXI7IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyIH1cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRMZWFmKGVudHJ5LCB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkxlYWY6IHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5KGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDYXRlZ29yeShlbnRyeSwge1xuICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZDYXRlZ29yeTogdG90YWxOdW1iZXJPZkVudHJ5LFxuICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRHcm91cChlbnRyeSwge1xuICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHM6IHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZENhdGVnb3J5Q2hpbGRyZW4oXG4gICAgICAgIGVudHJ5OiBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgICAgICB7XG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgY2F0ZWdvcnlMZXZlbCxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGNhdGVnb3J5TGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogKEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB8IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKVtdIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmNoaWxkcmVuXG4gICAgICAgICAgICAubWFwKChjaGlsZCwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZExlYWYoY2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogY2F0ZWdvcnlMZXZlbCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZjogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZEdyb3VwKGNoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGNhdGVnb3J5TGV2ZWwgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkdyb3VwczogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRDYXRlZ29yeShcbiAgICAgICAgbm9kZTogTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkNhdGVnb3J5LFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9OiB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgbGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGlkeDogbnVtYmVyO1xuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkNhdGVnb3J5OiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5idWlsZENhdGVnb3J5Q2hpbGRyZW4obm9kZSwge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiAhbm9kZS5mb2xkZWQsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgY2F0ZWdvcnlMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1aWQ6IG5vZGUudWlkLFxuICAgICAgICAgICAgYWxpYXM6IG5vZGUuYWxpYXMsXG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICAgICAgYXJpYVBvc2luc2V0OiBpZHggKyAxLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiB0b3RhbE51bWJlck9mQ2F0ZWdvcnksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9sZGVkOiBub2RlLmZvbGRlZCxcbiAgICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZEdyb3VwQ2hpbGRyZW4oXG4gICAgICAgIGVudHJ5OiBOYXZTZWxlY3Rvckdyb3VwLFxuICAgICAgICB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgZ3JvdXBMZXZlbCxcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfTogeyBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuOyBncm91cExldmVsOiBudW1iZXI7IGZvY3VzYWJsZTogYm9vbGVhbjsgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXIgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmW10ge1xuICAgICAgICByZXR1cm4gZW50cnkuY2hpbGRyZW5cbiAgICAgICAgICAgIC5tYXAoKGNoaWxkLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZExlYWYoY2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGdyb3VwTGV2ZWwgKyAxLFxuICAgICAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmOiBlbnRyeS5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogZm9jdXNhYmxlICYmICFlbnRyeS5mb2xkZWQsXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRHcm91cChcbiAgICAgICAgbm9kZTogTmF2U2VsZWN0b3JHcm91cCxcbiAgICAgICAge1xuICAgICAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkdyb3VwcyxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxldmVsOiBudW1iZXI7XG4gICAgICAgICAgICBpZHg6IG51bWJlcjtcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHM6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmJ1aWxkR3JvdXBDaGlsZHJlbihub2RlLCB7IG11bHRpcGxlTW9kZUVuYWJsZWQsIGdyb3VwTGV2ZWw6IGxldmVsLCBmb2N1c2FibGUsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCB9KTtcbiAgICAgICAgY29uc3QgZGlzcGxheVRva2VuSW52YWxpZCA9IGNoaWxkcmVuLnNvbWUoKHsgZGlzcGxheVRva2VuSW52YWxpZCB9KSA9PiBkaXNwbGF5VG9rZW5JbnZhbGlkKTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuQ291bnQgPSBjaGlsZHJlbi5maWx0ZXIoKHsgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQpLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBub2RlLnVpZCxcbiAgICAgICAgICAgIGFsaWFzOiBub2RlLmFsaWFzLFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICBjaGlsZHJlblBpY3R1cmVVcmxTYW1wbGU6IGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgLm1hcCgoY2hpbGQsIGlkeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihjaGlsZCkgJiYgaWR4IDwgNCA/IHsgdXJsOiBjaGlsZC5waWN0dXJlVXJsLCBpbml0aWFsOiBjaGlsZC5hbGlhc1swXSB9IDogbnVsbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ID0+IGl0ICE9PSBudWxsKSxcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFQb3NpbnNldDogaWR4ICsgMSxcbiAgICAgICAgICAgICAgICBhcmlhTGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiB0b3RhbE51bWJlck9mR3JvdXBzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBub2RlLmZvbGRlZCAmJiBjaGlsZHJlbi5zb21lKGNoaWxkID0+IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoY2hpbGQpICYmIGNoaWxkLmNvdW50ZXIgIT09IDApLFxuICAgICAgICAgICAgY291bnRlcjogY2hpbGRyZW4ucmVkdWNlKChhY2MsIHsgY291bnRlciB9KSA9PiBhY2MgKyBjb3VudGVyLCAwKSxcbiAgICAgICAgICAgIGRpc3BsYXlUb2tlbkludmFsaWQsXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBtdWx0aXBsZU1vZGVFbmFibGVkICYmIGNoaWxkcmVuLnNvbWUoKHsgc2VsZWN0YWJsZSB9KSA9PiBzZWxlY3RhYmxlKSxcbiAgICAgICAgICAgIHVuZGV0ZXJtaW5lZFNlbGVjdGlvbjogc2VsZWN0ZWRDaGlsZHJlbkNvdW50ICE9PSBjaGlsZHJlbi5sZW5ndGggJiYgc2VsZWN0ZWRDaGlsZHJlbkNvdW50ID4gMCxcbiAgICAgICAgICAgIGZvbGRlZDogbm9kZS5mb2xkZWQsXG4gICAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRMZWFmKFxuICAgICAgICBsZWFmOiBOYXZTZWxlY3RvckxlYWYsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmLFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9OiB7XG4gICAgICAgICAgICBmb2N1c2FibGU6IGJvb2xlYW47XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgbGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGlkeDogbnVtYmVyO1xuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkxlYWY6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYgfCBudWxsIHtcbiAgICAgICAgaWYgKGxlYWYubWlzc2luZ1Blcm1pc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGV0YWlsc0Rpc3BsYXlhYmxlID0gdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuQ09VTlRFUikgJiYgISFsZWFmLmRldGFpbHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb2xkYWJsZSA9ICEhbGVhZi5kZXRhaWxzLmxlbmd0aCAmJiBkZXRhaWxzRGlzcGxheWFibGU7XG4gICAgICAgIGNvbnN0IGZvbGRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNvdW50ZXIgPSAobGVhZi5kZXRhaWxzLnJlZHVjZSgoYWNjLCBkZXRhaWwpID0+IGFjYyArIChkZXRhaWwuY291bnRlciA/PyAwKSwgMCkgfHwgbGVhZi5jb3VudGVyKSA/PyAwO1xuICAgICAgICBjb25zdCBjb3VudGVyRGlzcGxheWFibGUgPSBjb3VudGVyICE9PSAwICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpO1xuXG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gbGVhZi5kaXNhYmxlUmVhc29uICE9PSBudWxsO1xuXG4gICAgICAgIGNvbnN0IHZpZXdNb3JlRGlzcGxheWFibGUgPSBsZWFmLmRldGFpbHMubGVuZ3RoID4gZGV0YWlsc0Rpc3BsYXllZExpbWl0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1aWQ6IGxlYWYudWlkLFxuICAgICAgICAgICAgYWxpYXM6IGxlYWYuYWxpYXMsXG4gICAgICAgICAgICBwaWN0dXJlVXJsOiBsZWFmLnBpY3R1cmVVcmwsXG4gICAgICAgICAgICBhY3Rpb25zRGlzcGxheWFibGU6IHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBkaXNhYmxlUmVhc29uOiBsZWFmLmRpc2FibGVSZWFzb24sXG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgZm9jdXNhYmxlOlxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZSAmJlxuICAgICAgICAgICAgICAgICgobXVsdGlwbGVNb2RlRW5hYmxlZCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKSkgfHwgKCFtdWx0aXBsZU1vZGVFbmFibGVkICYmICFkaXNhYmxlZCkpLFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgICBhcmlhUG9zaW5zZXQ6IGlkeCArIDEsXG4gICAgICAgICAgICAgICAgYXJpYUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICBhcmlhU2V0c2l6ZTogdG90YWxOdW1iZXJPZkxlYWYsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9sZGFibGUsXG4gICAgICAgICAgICBmb2xkZWQsXG4gICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogZm9sZGVkICYmIGNvdW50ZXJEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIGNvdW50ZXJEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIGNvdW50ZXIsXG4gICAgICAgICAgICBuZXR3b3JrOiBsZWFmLm5ldHdvcmssXG4gICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBsZWFmLnRva2VuSW52YWxpZCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5UT0tFTl9JTlZBTElELCBMZWFmTG9naWNzLkNPVU5URVIpLFxuICAgICAgICAgICAgZGlzcGxheUZlYXR1cmVMb2NrZWQ6XG4gICAgICAgICAgICAgICAgbGVhZi5mZWF0dXJlTG9ja2VkICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkZFQVRVUkVfTE9DS0VELCBMZWFmTG9naWNzLlRPS0VOX0lOVkFMSUQsIExlYWZMb2dpY3MuQ09VTlRFUiksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBtdWx0aXBsZU1vZGVFbmFibGVkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKVxuICAgICAgICAgICAgICAgIDogdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuRkVBVFVSRV9MT0NLRUQsIExlYWZMb2dpY3MuVE9LRU5fSU5WQUxJRCwgTGVhZkxvZ2ljcy5DT1VOVEVSKSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIGRldGFpbHM6IGxlYWYuZGV0YWlscy5tYXAoZGV0YWlsID0+IHRoaXMuYnVpbGRMZWFmRGV0YWlsKGRldGFpbCwgbGV2ZWwgKyAxLCBmb2N1c2FibGUgJiYgIWZvbGRlZCkpLFxuICAgICAgICAgICAgZGV0YWlsU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdHlwZTogJ0xFQUYnLFxuICAgICAgICAgICAgdmlld01vcmVEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIHZpZXdNb3JlRGlzcGxheWVkOiB2aWV3TW9yZURpc3BsYXlhYmxlLFxuICAgICAgICAgICAgdmlld01vcmVEZXRhaWxzRGlzcGxheWVkTGltaXQ6IGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZExlYWZEZXRhaWwoZGV0YWlsOiBOYXZTZWxlY3RvckxlYWZEZXRhaWxzLCBsZXZlbDogbnVtYmVyLCBmb2N1c2FibGU6IGJvb2xlYW4pOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBkZXRhaWwudWlkLFxuICAgICAgICAgICAgY291bnRlcjogZGV0YWlsLmNvdW50ZXIgPz8gMCxcbiAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBkZXRhaWwuY291bnRlciAhPT0gbnVsbCxcbiAgICAgICAgICAgIGFsaWFzOiBkZXRhaWwubmFtZSxcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFQb3NpbnNldDogMSxcbiAgICAgICAgICAgICAgICBhcmlhTGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yUmVhc29uOiBkZXRhaWwuZXJyb3JSZWFzb24sXG4gICAgICAgICAgICBkaXNwbGF5RXJyb3I6IGRldGFpbC5lcnJvclJlYXNvbiAhPT0gbnVsbCxcbiAgICAgICAgICAgIHR5cGU6ICdMRUFGX0RFVEFJTFMnLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzTGVhZkxvZ2ljVmFsaWQobGVhZjogTmF2U2VsZWN0b3JMZWFmLCAuLi5leGNsdWRlczogTGVhZkxvZ2ljc1tdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLkxFQUZfTE9HSUNTX1BSSU9SSVRZKVxuICAgICAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICFleGNsdWRlcy5pbmNsdWRlcyhrZXkgYXMgTGVhZkxvZ2ljcykpXG4gICAgICAgICAgICAuZXZlcnkoKFssIGxvZ2ljXSkgPT4gIWxvZ2ljKGxlYWYpKTtcbiAgICB9XG59XG4iXX0=
@@ -81,6 +81,7 @@ export class NavSelectorFilter {
81
81
  const children = entry.children.map(child => this.recursivelyUnfoldEntry(child, multipleMode));
82
82
  return {
83
83
  ...entry,
84
+ hidden: false,
84
85
  folded: false,
85
86
  focusable: true,
86
87
  children,
@@ -137,4 +138,4 @@ export class NavSelectorFilter {
137
138
  });
138
139
  }
139
140
  }
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3V0aWxzL25hdi1zZWxlY3Rvci5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLCtCQUErQixHQUNsQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRS9FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBbUMsRUFBRSxNQUFjLEVBQUUsWUFBcUI7UUFDcEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FDeEIsT0FBWSxFQUNaLGVBQXVCLEVBQ3ZCLFlBQXFCO1FBRXJCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENB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dCI6WyJpbXBvcnQge1xuICAgIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnksXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlLFxufSBmcm9tICcuLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZkZvY3VzYWJsZSB9IGZyb20gJy4uL3V0aWxzL2xlYWYudXRpbHMnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5IH0gZnJvbSAnLi4vdXRpbHMvbmF2LXNlbGVjdG9yLmFjY2Vzc2liaWxpdHknO1xuXG4vKipcbiAqIE5hdlNlbGVjdG9yRmlsdGVyIGlzIGEgdXRpbGl0eSBjbGFzcyB0aGF0IHByb3ZpZGVzIG1ldGhvZHMgdG8gZmlsdGVyIGVudHJpZXNcbiAqL1xuZXhwb3J0IGNsYXNzIE5hdlNlbGVjdG9yRmlsdGVyIHtcbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIHRoZSBlbnRyaWVzIGJhc2VkIG9uIHRoZSBzZWFyY2ggc3RyaW5nXG4gICAgICpcbiAgICAgKiBUaGUgc2VhcmNoIHN0cmluZyBpcyBub3JtYWxpemVkIGFuZCBsb3dlcmNhc2UgYW5kIHRyaW1tZWQuXG4gICAgICpcbiAgICAgKiBJZiBhIGNhdGVnb3J5IG1hdGNoZXMgdGhlIHNlYXJjaCBzdHJpbmcsIGFsbCBpdHMgY2hpbGRyZW4gYXJlIHVuZm9sZGVkLCBtYXJrZWQgYXMgZm9jdXNhYmxlLCBhbmQgbm90IGhpZGRlbi5cbiAgICAgKlxuICAgICAqIElmIGEgZ3JvdXAgbWF0Y2hlcyB0aGUgc2VhcmNoIHN0cmluZywgdGhlIGdyb3VwIGlzIHVuZm9sZGVkIGFuZCBhbGwgaXRzIGNoaWxkcmVuIGFyZSB1bmZvbGRlZCwgbWFya2VkIGFzIGZvY3VzYWJsZSwgYW5kIG5vdCBoaWRkZW4uXG4gICAgICpcbiAgICAgKiBJZiBhIGxlYWYgbWF0Y2hlcyB0aGUgc2VhcmNoIHN0cmluZywgaXQgaXMgbWFya2VkIGFzIG5vdCBoaWRkZW4gYW5kIGZvY3VzYWJsZS5cbiAgICAgKlxuICAgICAqIEVsc2UgdGhlIGVudHJ5IG1hcmtlZCBhcyBoaWRkZW4gYW5kIG5vdCBmb2N1c2FibGUuXG4gICAgICpcbiAgICAgKiBJdCBhbHNvIGRldGVybWluZXMgd2hlbmV2ZXIgY291bnRlciBhbmQgdG9rZW4gaW52YWxpZCBzaG91bGQgYmUgZGlzcGxheWVkIG9uIGdyb3VwcyBhbmQgbGVhdmVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudHJpZXMgVGhlIGVudHJpZXMgdG8gZmlsdGVyLlxuICAgICAqIEBwYXJhbSBzZWFyY2ggVGhlIHNlYXJjaCBzdHJpbmcuXG4gICAgICogQHBhcmFtIG11bHRpcGxlTW9kZSB0byB1cGRhdGUgdGhlIGZvY3VzYWJsZSBzdGF0ZSBvZiBsZWF2ZXMgY29ycmVjdGx5LlxuICAgICAqIEByZXR1cm5zIFRoZSBmaWx0ZXJlZCBlbnRyaWVzLlxuICAgICAqL1xuICAgIHN0YXRpYyBmaWx0ZXIoZW50cmllczogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10sIHNlYXJjaDogc3RyaW5nLCBtdWx0aXBsZU1vZGU6IGJvb2xlYW4pOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFNlYXJjaCA9IHRoaXMuY2xlYW5WYWx1ZShzZWFyY2gpO1xuICAgICAgICBpZiAoIWZvcm1hdHRlZFNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzZXRTdGF0ZShlbnRyaWVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJFbnRyaWVzKGVudHJpZXMsIGZvcm1hdHRlZFNlYXJjaCwgbXVsdGlwbGVNb2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBmaWx0ZXJFbnRyaWVzPFQgZXh0ZW5kcyBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnk+KFxuICAgICAgICBlbnRyaWVzOiBUW10sXG4gICAgICAgIGZvcm1hdHRlZFNlYXJjaDogc3RyaW5nLFxuICAgICAgICBtdWx0aXBsZU1vZGU6IGJvb2xlYW5cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyaWVzLm1hcChlbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXRjaGVzKGVudHJ5LmFsaWFzLCBmb3JtYXR0ZWRTZWFyY2gpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVjdXJzaXZlbHlVbmZvbGRFbnRyeShlbnRyeSwgbXVsdGlwbGVNb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5maWx0ZXJFbnRyaWVzKGVudHJ5LmNoaWxkcmVuLCBmb3JtYXR0ZWRTZWFyY2gsIG11bHRpcGxlTW9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmV2ZXJ5KCh7IGhpZGRlbiB9KSA9PiBoaWRkZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNvdW50ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZm9sZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsczogZW50cnkuZGV0YWlscy5tYXAoZGV0YWlsID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZXRhaWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LnJlc2V0Rm9jdXMobmV3RW50cmllcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVjdXJzaXZlbHlVbmZvbGRFbnRyeShlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5LCBtdWx0aXBsZU1vZGU6IGJvb2xlYW4pOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkge1xuICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAoZW50cnkpKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGVudHJ5LmNoaWxkcmVuLm1hcChjaGlsZCA9PiB0aGlzLnJlY3Vyc2l2ZWx5VW5mb2xkRW50cnkoY2hpbGQsIG11bHRpcGxlTW9kZSkgYXMgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICBmb2xkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGlzcGxheVRva2VuSW52YWxpZDogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICBjb25zdCBsZWFmRm9jdXNhYmxlID0gaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZkZvY3VzYWJsZShlbnRyeSwgeyBwYXJlbnRGb2xkZWQ6IGZhbHNlLCBtdWx0aXBsZU1vZGUgfSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmVudHJ5LFxuICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlOiBsZWFmRm9jdXNhYmxlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBlbnRyeS5jb3VudGVyRGlzcGxheWFibGUsXG4gICAgICAgICAgICAgICAgZGV0YWlsczogZW50cnkuZGV0YWlscy5tYXAoZGV0YWlsID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmRldGFpbCxcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlOiAhZW50cnkuZm9sZGVkLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkoZW50cnkpKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGVudHJ5LmNoaWxkcmVuLm1hcChcbiAgICAgICAgICAgICAgICBjaGlsZCA9PiB0aGlzLnJlY3Vyc2l2ZWx5VW5mb2xkRW50cnkoY2hpbGQsIG11bHRpcGxlTW9kZSkgYXMgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHwgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmVudHJ5LFxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmb2xkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBtYXRjaGVzKGFsaWFzOiBzdHJpbmcsIGZvcm1hdHRlZFNlYXJjaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFuVmFsdWUoYWxpYXMpLmluY2x1ZGVzKGZvcm1hdHRlZFNlYXJjaCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2xlYW5WYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRyaW0oKS5ub3JtYWxpemUoJ05GS0MnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHJlc2V0U3RhdGU8VCBleHRlbmRzIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeT4oZW50cmllczogVFtdLCBwYXJlbnRGb2xkZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMubWFwKGVudHJ5ID0+IHtcbiAgICAgICAgICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVudHJ5LFxuICAgICAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6ICFwYXJlbnRGb2xkZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLnJlc2V0U3RhdGUoZW50cnkuY2hpbGRyZW4sIGVudHJ5LmZvbGRlZCksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlOiAhcGFyZW50Rm9sZGVkLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3V0aWxzL25hdi1zZWxlY3Rvci5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLCtCQUErQixHQUNsQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRS9FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBbUMsRUFBRSxNQUFjLEVBQUUsWUFBcUI7UUFDcEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FDeEIsT0FBWSxFQUNaLGVBQXVCLEVBQ3ZCLFlBQXFCO1FBRXJCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ25GLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3pDLE9BQU87d0JBQ0gsR0FBRyxLQUFLO3dCQUNSLFFBQVE7d0JBQ1IsU0FBUyxFQUFFLEtBQUs7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNmLENBQUM7Z0JBQ04sQ0FBQztnQkFDRCxPQUFPO29CQUNILEdBQUcsS0FBSztvQkFDUixNQUFNLEVBQUUsS0FBSztvQkFDYixTQUFTLEVBQUUsSUFBSTtvQkFDZixjQUFjLEVBQUUsS0FBSztvQkFDckIsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsUUFBUTtpQkFDWCxDQUFDO1lBQ04sQ0FBQztZQUVELElBQUksK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsT0FBTztvQkFDSCxHQUFHLEtBQUs7b0JBQ1IsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLE1BQU0sRUFBRSxJQUFJO29CQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ2xDLEdBQUcsTUFBTTt3QkFDVCxTQUFTLEVBQUUsS0FBSztxQkFDbkIsQ0FBQyxDQUFDO2lCQUNOLENBQUM7WUFDTixDQUFDO1lBRUQsT0FBTztnQkFDSCxHQUFHLEtBQUs7Z0JBQ1IsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLE1BQU0sRUFBRSxJQUFJO2FBQ2YsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVPLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUErQixFQUFFLFlBQXFCO1FBQ3hGLElBQUksZ0NBQWdDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUE0QixDQUFDLENBQUM7WUFDMUgsT0FBTztnQkFDSCxHQUFHLEtBQUs7Z0JBQ1IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUTtnQkFDUixjQUFjLEVBQUUsS0FBSztnQkFDckIsbUJBQW1CLEVBQUUsS0FBSzthQUM3QixDQUFDO1FBQ04sQ0FBQzthQUFNLElBQUksK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLGFBQWEsR0FBRyx3Q0FBd0MsQ0FBQyxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDN0csT0FBTztnQkFDSCxHQUFHLEtBQUs7Z0JBQ1IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLGNBQWMsRUFBRSxLQUFLLENBQUMsa0JBQWtCO2dCQUN4QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNsQyxHQUFHLE1BQU07b0JBQ1QsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU07aUJBQzNCLENBQUMsQ0FBQzthQUNOLENBQUM7UUFDTixDQUFDO2FBQU0sSUFBSSxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUMvQixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUF1RCxDQUNsSCxDQUFDO1lBQ0YsT0FBTztnQkFDSCxHQUFHLEtBQUs7Z0JBQ1IsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUTthQUNYLENBQUM7UUFDTixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBYSxFQUFFLGVBQXVCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBYTtRQUNuQyxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQXFDLE9BQVksRUFBRSxlQUF3QixLQUFLO1FBQ3JHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE9BQU87b0JBQ0gsR0FBRyxLQUFLO29CQUNSLE1BQU0sRUFBRSxLQUFLO29CQUNiLFNBQVMsRUFBRSxDQUFDLFlBQVk7b0JBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDMUQsQ0FBQztZQUNOLENBQUM7WUFDRCxPQUFPO2dCQUNILEdBQUcsS0FBSztnQkFDUixTQUFTLEVBQUUsQ0FBQyxZQUFZO2dCQUN4QixNQUFNLEVBQUUsS0FBSzthQUNoQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnksXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlLFxufSBmcm9tICcuLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZkZvY3VzYWJsZSB9IGZyb20gJy4uL3V0aWxzL2xlYWYudXRpbHMnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5IH0gZnJvbSAnLi4vdXRpbHMvbmF2LXNlbGVjdG9yLmFjY2Vzc2liaWxpdHknO1xuXG4vKipcbiAqIE5hdlNlbGVjdG9yRmlsdGVyIGlzIGEgdXRpbGl0eSBjbGFzcyB0aGF0IHByb3ZpZGVzIG1ldGhvZHMgdG8gZmlsdGVyIGVudHJpZXNcbiAqL1xuZXhwb3J0IGNsYXNzIE5hdlNlbGVjdG9yRmlsdGVyIHtcbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIHRoZSBlbnRyaWVzIGJhc2VkIG9uIHRoZSBzZWFyY2ggc3RyaW5nXG4gICAgICpcbiAgICAgKiBUaGUgc2VhcmNoIHN0cmluZyBpcyBub3JtYWxpemVkIGFuZCBsb3dlcmNhc2UgYW5kIHRyaW1tZWQuXG4gICAgICpcbiAgICAgKiBJZiBhIGNhdGVnb3J5IG1hdGNoZXMgdGhlIHNlYXJjaCBzdHJpbmcsIGFsbCBpdHMgY2hpbGRyZW4gYXJlIHVuZm9sZGVkLCBtYXJrZWQgYXMgZm9jdXNhYmxlLCBhbmQgbm90IGhpZGRlbi5cbiAgICAgKlxuICAgICAqIElmIGEgZ3JvdXAgbWF0Y2hlcyB0aGUgc2VhcmNoIHN0cmluZywgdGhlIGdyb3VwIGlzIHVuZm9sZGVkIGFuZCBhbGwgaXRzIGNoaWxkcmVuIGFyZSB1bmZvbGRlZCwgbWFya2VkIGFzIGZvY3VzYWJsZSwgYW5kIG5vdCBoaWRkZW4uXG4gICAgICpcbiAgICAgKiBJZiBhIGxlYWYgbWF0Y2hlcyB0aGUgc2VhcmNoIHN0cmluZywgaXQgaXMgbWFya2VkIGFzIG5vdCBoaWRkZW4gYW5kIGZvY3VzYWJsZS5cbiAgICAgKlxuICAgICAqIEVsc2UgdGhlIGVudHJ5IG1hcmtlZCBhcyBoaWRkZW4gYW5kIG5vdCBmb2N1c2FibGUuXG4gICAgICpcbiAgICAgKiBJdCBhbHNvIGRldGVybWluZXMgd2hlbmV2ZXIgY291bnRlciBhbmQgdG9rZW4gaW52YWxpZCBzaG91bGQgYmUgZGlzcGxheWVkIG9uIGdyb3VwcyBhbmQgbGVhdmVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudHJpZXMgVGhlIGVudHJpZXMgdG8gZmlsdGVyLlxuICAgICAqIEBwYXJhbSBzZWFyY2ggVGhlIHNlYXJjaCBzdHJpbmcuXG4gICAgICogQHBhcmFtIG11bHRpcGxlTW9kZSB0byB1cGRhdGUgdGhlIGZvY3VzYWJsZSBzdGF0ZSBvZiBsZWF2ZXMgY29ycmVjdGx5LlxuICAgICAqIEByZXR1cm5zIFRoZSBmaWx0ZXJlZCBlbnRyaWVzLlxuICAgICAqL1xuICAgIHN0YXRpYyBmaWx0ZXIoZW50cmllczogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10sIHNlYXJjaDogc3RyaW5nLCBtdWx0aXBsZU1vZGU6IGJvb2xlYW4pOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFNlYXJjaCA9IHRoaXMuY2xlYW5WYWx1ZShzZWFyY2gpO1xuICAgICAgICBpZiAoIWZvcm1hdHRlZFNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzZXRTdGF0ZShlbnRyaWVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJFbnRyaWVzKGVudHJpZXMsIGZvcm1hdHRlZFNlYXJjaCwgbXVsdGlwbGVNb2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBmaWx0ZXJFbnRyaWVzPFQgZXh0ZW5kcyBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnk+KFxuICAgICAgICBlbnRyaWVzOiBUW10sXG4gICAgICAgIGZvcm1hdHRlZFNlYXJjaDogc3RyaW5nLFxuICAgICAgICBtdWx0aXBsZU1vZGU6IGJvb2xlYW5cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyaWVzLm1hcChlbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXRjaGVzKGVudHJ5LmFsaWFzLCBmb3JtYXR0ZWRTZWFyY2gpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVjdXJzaXZlbHlVbmZvbGRFbnRyeShlbnRyeSwgbXVsdGlwbGVNb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5maWx0ZXJFbnRyaWVzKGVudHJ5LmNoaWxkcmVuLCBmb3JtYXR0ZWRTZWFyY2gsIG11bHRpcGxlTW9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmV2ZXJ5KCh7IGhpZGRlbiB9KSA9PiBoaWRkZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNvdW50ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZm9sZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsczogZW50cnkuZGV0YWlscy5tYXAoZGV0YWlsID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZXRhaWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LnJlc2V0Rm9jdXMobmV3RW50cmllcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVjdXJzaXZlbHlVbmZvbGRFbnRyeShlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5LCBtdWx0aXBsZU1vZGU6IGJvb2xlYW4pOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkge1xuICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAoZW50cnkpKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGVudHJ5LmNoaWxkcmVuLm1hcChjaGlsZCA9PiB0aGlzLnJlY3Vyc2l2ZWx5VW5mb2xkRW50cnkoY2hpbGQsIG11bHRpcGxlTW9kZSkgYXMgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvbGRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlYWZGb2N1c2FibGUgPSBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmRm9jdXNhYmxlKGVudHJ5LCB7IHBhcmVudEZvbGRlZDogZmFsc2UsIG11bHRpcGxlTW9kZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGxlYWZGb2N1c2FibGUsXG4gICAgICAgICAgICAgICAgZGlzcGxheUNvdW50ZXI6IGVudHJ5LmNvdW50ZXJEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiBlbnRyeS5kZXRhaWxzLm1hcChkZXRhaWwgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZGV0YWlsLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6ICFlbnRyeS5mb2xkZWQsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeShlbnRyeSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZW50cnkuY2hpbGRyZW4ubWFwKFxuICAgICAgICAgICAgICAgIGNoaWxkID0+IHRoaXMucmVjdXJzaXZlbHlVbmZvbGRFbnRyeShjaGlsZCwgbXVsdGlwbGVNb2RlKSBhcyBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAgfCBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZvbGRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1hdGNoZXMoYWxpYXM6IHN0cmluZywgZm9ybWF0dGVkU2VhcmNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5WYWx1ZShhbGlhcykuaW5jbHVkZXMoZm9ybWF0dGVkU2VhcmNoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjbGVhblZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpLm5vcm1hbGl6ZSgnTkZLQycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRTdGF0ZTxUIGV4dGVuZHMgSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5PihlbnRyaWVzOiBUW10sIHBhcmVudEZvbGRlZDogYm9vbGVhbiA9IGZhbHNlKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoZW50cnkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogIXBhcmVudEZvbGRlZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHRoaXMucmVzZXRTdGF0ZShlbnRyeS5jaGlsZHJlbiwgZW50cnkuZm9sZGVkKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6ICFwYXJlbnRGb2xkZWQsXG4gICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==