@datorama/core 22.2.5 → 22.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/bundle.scss +22 -0
  2. package/bundles/datorama-core.umd.js +143 -118
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +17 -17
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.metadata.json +1 -1
  7. package/esm2015/lib/accordion/accordion/accordion.component.js +11 -3
  8. package/esm2015/lib/date-picker/date-picker-container/date-picker-container.component.js +5 -5
  9. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  10. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +7 -3
  11. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +1 -1
  12. package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
  13. package/esm2015/lib/grid-v2/grid-store/grid.service.js +1 -1
  14. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -1
  15. package/esm2015/lib/select/select.component.js +12 -7
  16. package/esm2015/lib/sortable/sortable.component.js +7 -2
  17. package/esm2015/lib/version.js +2 -2
  18. package/esm5/lib/accordion/accordion/accordion.component.js +15 -3
  19. package/esm5/lib/date-picker/date-picker-container/date-picker-container.component.js +5 -5
  20. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  21. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +7 -3
  22. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +1 -1
  23. package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
  24. package/esm5/lib/grid-v2/grid-store/grid.service.js +1 -1
  25. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -1
  26. package/esm5/lib/select/select.component.js +13 -7
  27. package/esm5/lib/sortable/sortable.component.js +7 -2
  28. package/esm5/lib/version.js +2 -2
  29. package/fesm2015/datorama-core.js +132 -112
  30. package/fesm2015/datorama-core.js.map +1 -1
  31. package/fesm5/datorama-core.js +143 -118
  32. package/fesm5/datorama-core.js.map +1 -1
  33. package/lib/accordion/accordion/accordion.component.d.ts +4 -1
  34. package/lib/date-picker/date-picker-container/date-picker-container.component.d.ts +1 -1
  35. package/lib/grid-v2/grid/grid-v2.types.d.ts +2 -1
  36. package/lib/select/select.component.d.ts +1 -0
  37. package/lib/sortable/sortable.component.d.ts +3 -1
  38. package/package.json +1 -1
@@ -7,7 +7,7 @@
7
7
  */
8
8
  var DatoAccordionComponent_1;
9
9
  import { __decorate, __metadata, __param } from "tslib";
10
- import { AfterContentInit, ChangeDetectorRef, Component, ContentChildren, Input, OnChanges, OnDestroy, Optional, QueryList, SkipSelf } from '@angular/core';
10
+ import { AfterContentInit, ChangeDetectorRef, Component, ContentChild, ContentChildren, Input, OnChanges, OnDestroy, Optional, QueryList, SkipSelf } from '@angular/core';
11
11
  import { DatoAccordionGroupComponent } from '../accordion-group/accordion-group.component';
12
12
  import { merge } from 'rxjs';
13
13
  import { mapTo } from 'rxjs/operators';
@@ -15,6 +15,7 @@ import { untilDestroyed } from 'ngx-take-until-destroy';
15
15
  import { toBoolean } from '../../utils/coercion';
16
16
  import { isNil } from '../../utils/validators';
17
17
  import { defaultClientSearchStrategy } from '../../select/search.strategy';
18
+ import { DatoSortableComponent } from '../../sortable/sortable.component';
18
19
  let DatoAccordionComponent = DatoAccordionComponent_1 = class DatoAccordionComponent {
19
20
  constructor(parent, parentGroup, cdr) {
20
21
  this.parent = parent;
@@ -48,6 +49,9 @@ let DatoAccordionComponent = DatoAccordionComponent_1 = class DatoAccordionCompo
48
49
  }
49
50
  }
50
51
  }
52
+ get groups() {
53
+ return this.sortable && this.sortable.accordionGroups.length > 0 ? this.sortable.accordionGroups : this.childGroups;
54
+ }
51
55
  ngOnChanges(changes) {
52
56
  if (changes.expandAll && !changes.expandAll.firstChange) {
53
57
  this.setExpandAll();
@@ -219,11 +223,15 @@ DatoAccordionComponent.ctorParameters = () => [
219
223
  __decorate([
220
224
  ContentChildren(DatoAccordionGroupComponent),
221
225
  __metadata("design:type", QueryList)
222
- ], DatoAccordionComponent.prototype, "groups", void 0);
226
+ ], DatoAccordionComponent.prototype, "childGroups", void 0);
223
227
  __decorate([
224
228
  ContentChildren(DatoAccordionComponent_1, { descendants: true }),
225
229
  __metadata("design:type", QueryList)
226
230
  ], DatoAccordionComponent.prototype, "childAccordion", void 0);
231
+ __decorate([
232
+ ContentChild(DatoSortableComponent, { static: true }),
233
+ __metadata("design:type", DatoSortableComponent)
234
+ ], DatoAccordionComponent.prototype, "sortable", void 0);
227
235
  __decorate([
228
236
  Input(),
229
237
  __metadata("design:type", Object)
@@ -272,4 +280,4 @@ DatoAccordionComponent = DatoAccordionComponent_1 = __decorate([
272
280
  ChangeDetectorRef])
273
281
  ], DatoAccordionComponent);
274
282
  export { DatoAccordionComponent };
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjY29yZGlvbi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7OztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBZTNFLElBQWEsc0JBQXNCLDhCQUFuQyxNQUFhLHNCQUFzQjtJQTJDakMsWUFHVSxNQUE4QixFQUU5QixXQUF3QyxFQUN4QyxHQUFzQjtRQUh0QixXQUFNLEdBQU4sTUFBTSxDQUF3QjtRQUU5QixnQkFBVyxHQUFYLFdBQVcsQ0FBNkI7UUFDeEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExQ2hDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFdEIsY0FBUyxHQUF1QixVQUFVLENBQUM7UUFFM0MsY0FB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QUVKLENBQUM7SUE2Q0csV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUNWLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFFVixXQUFBLFFBQVEsRUFBRSxDQUFBO3FDQURLLHNCQUFzQjtRQUVqQiwyQkFBMkI7UUFDbkMsaUJBQWlCO0dBakRyQixzQkFBc0IsQ0E4T2xDO1NBOU9ZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTa2lwU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2FjY29yZGlvbi1ncm91cC9hY2NvcmRpb24tZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcFRvIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IHRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBkZWZhdWx0Q2xpZW50U2VhcmNoU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9zZWxlY3Qvc2VhcmNoLnN0cmF0ZWd5JztcbmltcG9ydCB7IEFjY29yZGlvbkFycm93VHlwZSB9IGZyb20gJy4uL2FjY29yZGlvbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tYWNjb3JkaW9uJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgZXhwb3J0QXM6ICdkYXRvQWNjb3JkaW9uJyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0FjY29yZGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQpXG4gIGdyb3VwczogUXVlcnlMaXN0PERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudD47XG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0b0FjY29yZGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBjaGlsZEFjY29yZGlvbjogUXVlcnlMaXN0PERhdG9BY2NvcmRpb25Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIGNsb3NlT3RoZXJzID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGV4cGFuZEFsbCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBpbmNsdWRlQXJyb3dzID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGFycm93VHlwZTogQWNjb3JkaW9uQXJyb3dUeXBlID0gJ3N0YW5kYXJkJztcbiAgQElucHV0KClcbiAgYWN0aXZlSWRzOiBudW1iZXIgfCBudW1iZXJbXSA9IFtdO1xuICBASW5wdXQoKVxuICBzaG93U2VhcmNoVXBvbk5vUmVzdWx0cyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzZWFyY2hUZXJtKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIHRoaXMuX2hhc1NlYXJjaCA9IHRydWU7XG4gICAgaWYgKHRoaXMuZ3JvdXBzKSB7XG4gICAgICBzZWFyY2hUZXJtID0gc2VhcmNoVGVybSB8fCAnJztcblxuICAgICAgY29uc3QgZ3JvdXBzQXJyID0gdGhpcy5hc0FycmF5O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cHNBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBncm91cHNBcnJbaV07XG4gICAgICAgIGNvbnN0IHsgaGVhZGVyIH0gPSBncm91cDtcbiAgICAgICAgaWYgKCFzZWFyY2hUZXJtKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgdGhpcy5zaG93U2VhcmNoVXBvbk5vUmVzdWx0cyAmJiBncm91cC5leHBhbmRlZCk7XG4gICAgICAgICAgZ3JvdXAuaGlkZShmYWxzZSk7XG4gICAgICAgICAgaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0R3JvdXAgPSBpICsgMSA9PT0gZ3JvdXBzQXJyLmxlbmd0aDtcbiAgICAgICAgICB0aGlzLmNoZWNrR3JvdXBDb250ZW50KGdyb3VwLCBzZWFyY2hUZXJtLCBpc0xhc3RHcm91cCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgX2hhc1NlYXJjaCA9IGZhbHNlO1xuICBwcml2YXRlIGdyb3Vwc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTa2lwU2VsZigpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHBhcmVudDogRGF0b0FjY29yZGlvbkNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgcGFyZW50R3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5leHBhbmRBbGwgJiYgIWNoYW5nZXMuZXhwYW5kQWxsLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldEV4cGFuZEFsbCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmFjdGl2ZUlkcyAmJiAhY2hhbmdlcy5hY3RpdmVJZHMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8qKiBPcGVuIGNsb3NlIGFsbCBncm91cHMgdGhhdCBhcmUgbm90IGluIHRoZSBhY3RpdmUgaWRzLCBhbmQgb25seSBvcGVuIHRoZSBncm91cHMgdGhhdCBhcmUgY2xvc2VkICovXG4gICAgICBjb25zdCBpZHNUb09wZW4gPSB0aGlzLmdyb3Vwcy50b0FycmF5KCkucmVkdWNlKChpZHMsIGdyb3VwLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmFjdGl2ZUlkcy5jdXJyZW50VmFsdWUuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAhZ3JvdXAuZXhwYW5kZWQgJiYgaWRzLnB1c2goaSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpZHM7XG4gICAgICB9LCBbXSk7XG4gICAgICB0aGlzLnNldEV4cGFuZEFsbChpZHNUb09wZW4pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwcy50b0FycmF5KClbaW5kZXhdO1xuICAgIGlmICh0b0Jvb2xlYW4oZ3JvdXApKSB7XG4gICAgICB0aGlzLm9uR3JvdXBDbGljayhncm91cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEdyb3VwICR7aW5kZXh9IGRvZXNuJ3QgZXhpc3RzYCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RXhwYW5kQWxsKGlkcz86IGFueVtdKSB7XG4gICAgbGV0IHRvQXJyYXkgPSBpZHM7XG4gICAgY29uc3QgZ3JvdXBzQXJyYXkgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gICAgaWYgKCF0b0FycmF5KSB7XG4gICAgICB0b0FycmF5ID0gZ3JvdXBzQXJyYXkubWFwKChfLCBpKSA9PiBpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiB0b0FycmF5KSB7XG4gICAgICBjb25zdCBncm91cCA9IGdyb3Vwc0FycmF5W2luZGV4XTtcbiAgICAgIGlmICghdGhpcy5wYXJlbnQgJiYgIWdyb3VwLl9kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLm9uR3JvdXBDbGljayhncm91cCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGFzQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgaWYgKHRoaXMuaW5jbHVkZUFycm93cykge1xuICAgICAgdGhpcy51cGRhdGVJbmNsdWRlQXJyb3dzKCk7XG4gICAgICB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZUluY2x1ZGVBcnJvd3MuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRpYWxPcGVuKHRoaXMuYWN0aXZlSWRzKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbmNsdWRlQXJyb3dzKCkge1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncm91cHMudG9BcnJheSgpKSB7XG4gICAgICBncm91cC5oZWFkZXIuaW5jbHVkZUFycm93ID0gdHJ1ZTtcbiAgICAgIGdyb3VwLmhlYWRlci5hcnJvd1R5cGUgPSB0aGlzLmFycm93VHlwZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyKCkge1xuICAgIGlmICh0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLnRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiBncm91cC5oZWFkZXIuY2xpY2skLnBpcGUobWFwVG8oZ3JvdXApKSkpLnN1YnNjcmliZShcbiAgICAgIChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIHRoaXMub25Hcm91cENsaWNrKGdyb3VwKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkdyb3VwQ2xpY2soZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmIChncm91cC5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbG9zZU90aGVycyAmJiAhZ3JvdXAuY29udGVudC5fZXhwYW5kZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZyBvZiB0aGlzLmdyb3Vwcy50b0FycmF5KCkpIHtcbiAgICAgICAgaWYgKGcgIT09IGdyb3VwKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZUFuZEVtaXQoZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZUdyb3VwKGdyb3VwLCBmb3JjZSA/IHRydWUgOiAhZ3JvdXAuY29udGVudC5fZXhwYW5kZWQpO1xuXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkQWNjb3JkaW9uc0NvbXBvbmVudHMoKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLmdyb3Vwcy5mb3JFYWNoKGcgPT4gdGhpcy5jbG9zZUFuZEVtaXQoZykpKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRUb2dnbGUoZ3JvdXApO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVHcm91cChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBleHBhbmRlZCA9IHRydWUpIHtcbiAgICBncm91cC5jb250ZW50LmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgZ3JvdXAuaGVhZGVyLmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldENoaWxkQWNjb3JkaW9uc0NvbXBvbmVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRBY2NvcmRpb24uZmlsdGVyKGNoaWxkID0+IGNoaWxkICE9PSB0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgY29lcmNlQXJyYXk8VD4odmFsdWUpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbE9wZW4oYWN0aXZlSWRzOiBudW1iZXIgfCBudW1iZXJbXSkge1xuICAgIGNvbnN0IHRvQXJyYXkgPSB0aGlzLmV4cGFuZEFsbCA/IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5tYXAoKF8sIGkpID0+IGkpIDogdGhpcy5jb2VyY2VBcnJheTxudW1iZXI+KGFjdGl2ZUlkcyk7XG4gICAgdGhpcy5zZXRFeHBhbmRBbGwodG9BcnJheSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRUb2dnbGUoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgdmFsdWU/OiBib29sZWFuKSB7XG4gICAgaWYgKGdyb3VwLnRvZ2dsZS5vYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBleHBhbmRlZCA9IHZhbHVlID09IG51bGwgPyBncm91cC5jb250ZW50Ll9leHBhbmRlZCA6IHZhbHVlO1xuICAgICAgZ3JvdXAudG9nZ2xlLm5leHQoeyBleHBhbmRlZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQW5kRW1pdChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KSB7XG4gICAgaWYgKGdyb3VwLmNvbnRlbnQuX2V4cGFuZGVkKSB7XG4gICAgICB0aGlzLmVtaXRUb2dnbGUoZ3JvdXAsIGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0dyb3VwQ29udGVudChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBzZWFyY2hUZXJtOiBzdHJpbmcsIGxhc3RHcm91cDogYm9vbGVhbikge1xuICAgIGxldCBoZWFkZXJNYXRjaDtcbiAgICBpZiAoIWlzTmlsKGdyb3VwLmhlYWRlci5zZWFyY2hhYmxlKSkge1xuICAgICAgLy8gV2hlbiB3ZSBuZWVkIHRvIHN1cHBvcnQgYSBzZWFyY2ggdGVybSBpbiB0aGUgaGVhZGVyLCB3ZSBmaXJzdCB3YW50IHRvIGNoZWNrIGlmIGl0IG1hdGNoZXMuXG4gICAgICBoZWFkZXJNYXRjaCA9IGRlZmF1bHRDbGllbnRTZWFyY2hTdHJhdGVneShncm91cC5oZWFkZXIsIHNlYXJjaFRlcm0sICdzZWFyY2hhYmxlJyk7XG4gICAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgICAgLy8gSWYgdGhhdCdzIHRoZSBjYXNlLCBpdCB3aWxsIHNob3cgYWxsIGdyb3VwcyBhbmQgaWdub3JlIGVhY2ggZ3JvdXAgY29udGVudCByZXN1bHRzLlxuICAgICAgICB0aGlzLnNob3dFbnRpcmVHcm91cChncm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGRlbGVnYXRlIHRvIHNlYXJjaCBpbiBlYWNoIGdyb3VwIGNvbnRlbnRcbiAgICAgICAgdGhpcy5jaGVja0dyb3VwU2VhcmNoYWJsZUNvbnRlbnQoZ3JvdXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoZWNrR3JvdXBTZWFyY2hhYmxlQ29udGVudChncm91cCk7XG4gICAgfVxuICAgIC8vIElmIHRoaXMgaXMgYSBuZXN0ZWQgYWNjb3JkaW9uIHdlIHdhbnQgdG8gdXBkYXRlIGhlIHBhcmVudCdzIGNvdW50XG4gICAgaWYgKHRoaXMucGFyZW50R3JvdXAgJiYgdGhpcy5wYXJlbnQuX2hhc1NlYXJjaCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGFyZW50R3JvdXAuaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aCArPSBncm91cC5oZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoO1xuICAgICAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudEdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSB3YW50IHRvIHRyaWdnZXIgdGhlIHVwZGF0ZSBvbiB0aGUgcGFyZW50IGFmdGVyIHRoZSBsYXN0IGdyb3VwIHdhcyBjaGVja2VkXG4gICAgICAgIGlmIChsYXN0R3JvdXApIHtcbiAgICAgICAgICBjb25zdCBzaG91bGRFeHBhbmQgPSB0aGlzLnBhcmVudEdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPiAwO1xuICAgICAgICAgIHRoaXMuZXhwYW5kR3JvdXAodGhpcy5wYXJlbnRHcm91cCwgc2hvdWxkRXhwYW5kKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0dyb3VwU2VhcmNoYWJsZUNvbnRlbnQoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGdyb3VwLmNvbnRlbnQuc2VhcmNoYWJsZXMuZmlsdGVyKHNlYXJjaGFibGUgPT4gIXNlYXJjaGFibGUuaXNIaWRkZW4pO1xuICAgIGdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuICAgIHRoaXMuZXhwYW5kR3JvdXAoZ3JvdXAsIHJlc3VsdC5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0VudGlyZUdyb3VwKGdyb3VwOiBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQpIHtcbiAgICBncm91cC5jb250ZW50LnNlYXJjaGFibGVzLmZvckVhY2goc2VhcmNoYWJsZSA9PiBzZWFyY2hhYmxlLnNob3coKSk7XG4gICAgZ3JvdXAuaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aCA9IGdyb3VwLmNvbnRlbnQuc2VhcmNoYWJsZXMubGVuZ3RoO1xuICAgIHRoaXMuZXhwYW5kR3JvdXAoZ3JvdXApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmRHcm91cChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBleHBhbmQgPSB0cnVlKSB7XG4gICAgZ3JvdXAuZXhwYW5kKGV4cGFuZCk7XG4gICAgZ3JvdXAuaGlkZSghZXhwYW5kKTtcbiAgfVxufVxuIl19
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjY29yZGlvbi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7OztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxLQUFLLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQWMxRSxJQUFhLHNCQUFzQiw4QkFBbkMsTUFBYSxzQkFBc0I7SUFpRGpDLFlBR1UsTUFBOEIsRUFFOUIsV0FBd0MsRUFDeEMsR0FBc0I7UUFIdEIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFFOUIsZ0JBQVcsR0FBWCxXQUFXLENBQTZCO1FBQ3hDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUNoQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtC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QztBQUdoQztJQURDLEtBQUssRUFBRTs7MkRBQ1k7QUFFcEI7SUFEQyxLQUFLLEVBQUU7O3lEQUNVO0FBRWxCO0lBREMsS0FBSyxFQUFFOzs2REFDYztBQUV0QjtJQURDLEtBQUssRUFBRTs7eURBQ21DO0FBRTNDO0lBREMsS0FBSyxFQUFFOzt5REFDMEI7QUFFbEM7SUFEQyxLQUFLLEVBQUU7O3VFQUN3QjtBQUdoQztJQURDLEtBQUssRUFBRTs7O3dEQW9CUDtBQXpDVSxzQkFBc0I7SUFabEMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixRQUFRLEVBQUUsMkJBQTJCO1FBQ3JDLFFBQVEsRUFBRSxlQUFlO2lCQUV2Qjs7OztLQUlDO0tBRUosQ0FBQztJQW1ERyxXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQ1YsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUVWLFdBQUEsUUFBUSxFQUFFLENBQUE7cUNBREssc0JBQXNCO1FBRWpCLDJCQUEyQjtRQUNuQyxpQkFBaUI7R0F2RHJCLHNCQUFzQixDQW9QbEM7U0FwUFksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBtZXJnZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXBUbyB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy9jb2VyY2lvbic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vc2VsZWN0L3NlYXJjaC5zdHJhdGVneSc7XG5pbXBvcnQgeyBBY2NvcmRpb25BcnJvd1R5cGUgfSBmcm9tICcuLi9hY2NvcmRpb24udHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NvcnRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc29ydGFibGUvc29ydGFibGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1hY2NvcmRpb24nLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBleHBvcnRBczogJ2RhdG9BY2NvcmRpb24nLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvQWNjb3JkaW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudClcbiAgY2hpbGRHcm91cHM6IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKERhdG9BY2NvcmRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgY2hpbGRBY2NvcmRpb246IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uQ29tcG9uZW50PjtcbiAgQENvbnRlbnRDaGlsZChEYXRvU29ydGFibGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNvcnRhYmxlOiBEYXRvU29ydGFibGVDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgY2xvc2VPdGhlcnMgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZXhwYW5kQWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGluY2x1ZGVBcnJvd3MgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgYXJyb3dUeXBlOiBBY2NvcmRpb25BcnJvd1R5cGUgPSAnc3RhbmRhcmQnO1xuICBASW5wdXQoKVxuICBhY3RpdmVJZHM6IG51bWJlciB8IG51bWJlcltdID0gW107XG4gIEBJbnB1dCgpXG4gIHNob3dTZWFyY2hVcG9uTm9SZXN1bHRzID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHNlYXJjaFRlcm0oc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgdGhpcy5faGFzU2VhcmNoID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5ncm91cHMpIHtcbiAgICAgIHNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtIHx8ICcnO1xuXG4gICAgICBjb25zdCBncm91cHNBcnIgPSB0aGlzLmFzQXJyYXk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3Vwc0Fyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBncm91cCA9IGdyb3Vwc0FycltpXTtcbiAgICAgICAgY29uc3QgeyBoZWFkZXIgfSA9IGdyb3VwO1xuICAgICAgICBpZiAoIXNlYXJjaFRlcm0pIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUdyb3VwKGdyb3VwLCB0aGlzLnNob3dTZWFyY2hVcG9uTm9SZXN1bHRzICYmIGdyb3VwLmV4cGFuZGVkKTtcbiAgICAgICAgICBncm91cC5oaWRlKGZhbHNlKTtcbiAgICAgICAgICBoZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpc0xhc3RHcm91cCA9IGkgKyAxID09PSBncm91cHNBcnIubGVuZ3RoO1xuICAgICAgICAgIHRoaXMuY2hlY2tHcm91cENvbnRlbnQoZ3JvdXAsIHNlYXJjaFRlcm0sIGlzTGFzdEdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBfaGFzU2VhcmNoID0gZmFsc2U7XG4gIHByaXZhdGUgZ3JvdXBzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IGdyb3VwcygpOiBRdWVyeUxpc3Q8RGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGFibGUgJiYgdGhpcy5zb3J0YWJsZS5hY2NvcmRpb25Hcm91cHMubGVuZ3RoID4gMCA/IHRoaXMuc29ydGFibGUuYWNjb3JkaW9uR3JvdXBzIDogdGhpcy5jaGlsZEdyb3VwcztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTa2lwU2VsZigpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHBhcmVudDogRGF0b0FjY29yZGlvbkNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgcGFyZW50R3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5leHBhbmRBbGwgJiYgIWNoYW5nZXMuZXhwYW5kQWxsLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldEV4cGFuZEFsbCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmFjdGl2ZUlkcyAmJiAhY2hhbmdlcy5hY3RpdmVJZHMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8qKiBPcGVuIGNsb3NlIGFsbCBncm91cHMgdGhhdCBhcmUgbm90IGluIHRoZSBhY3RpdmUgaWRzLCBhbmQgb25seSBvcGVuIHRoZSBncm91cHMgdGhhdCBhcmUgY2xvc2VkICovXG4gICAgICBjb25zdCBpZHNUb09wZW4gPSB0aGlzLmdyb3Vwcy50b0FycmF5KCkucmVkdWNlKChpZHMsIGdyb3VwLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmFjdGl2ZUlkcy5jdXJyZW50VmFsdWUuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAhZ3JvdXAuZXhwYW5kZWQgJiYgaWRzLnB1c2goaSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpZHM7XG4gICAgICB9LCBbXSk7XG4gICAgICB0aGlzLnNldEV4cGFuZEFsbChpZHNUb09wZW4pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwcy50b0FycmF5KClbaW5kZXhdO1xuICAgIGlmICh0b0Jvb2xlYW4oZ3JvdXApKSB7XG4gICAgICB0aGlzLm9uR3JvdXBDbGljayhncm91cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEdyb3VwICR7aW5kZXh9IGRvZXNuJ3QgZXhpc3RzYCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RXhwYW5kQWxsKGlkcz86IGFueVtdKSB7XG4gICAgbGV0IHRvQXJyYXkgPSBpZHM7XG4gICAgY29uc3QgZ3JvdXBzQXJyYXkgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gICAgaWYgKCF0b0FycmF5KSB7XG4gICAgICB0b0FycmF5ID0gZ3JvdXBzQXJyYXkubWFwKChfLCBpKSA9PiBpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiB0b0FycmF5KSB7XG4gICAgICBjb25zdCBncm91cCA9IGdyb3Vwc0FycmF5W2luZGV4XTtcbiAgICAgIGlmICghdGhpcy5wYXJlbnQgJiYgIWdyb3VwLl9kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLm9uR3JvdXBDbGljayhncm91cCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGFzQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgaWYgKHRoaXMuaW5jbHVkZUFycm93cykge1xuICAgICAgdGhpcy51cGRhdGVJbmNsdWRlQXJyb3dzKCk7XG4gICAgICB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZUluY2x1ZGVBcnJvd3MuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRpYWxPcGVuKHRoaXMuYWN0aXZlSWRzKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbmNsdWRlQXJyb3dzKCkge1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncm91cHMudG9BcnJheSgpKSB7XG4gICAgICBncm91cC5oZWFkZXIuaW5jbHVkZUFycm93ID0gdHJ1ZTtcbiAgICAgIGdyb3VwLmhlYWRlci5hcnJvd1R5cGUgPSB0aGlzLmFycm93VHlwZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyKCkge1xuICAgIGlmICh0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLnRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiBncm91cC5oZWFkZXIuY2xpY2skLnBpcGUobWFwVG8oZ3JvdXApKSkpLnN1YnNjcmliZShcbiAgICAgIChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIHRoaXMub25Hcm91cENsaWNrKGdyb3VwKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkdyb3VwQ2xpY2soZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmIChncm91cC5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbG9zZU90aGVycyAmJiAhZ3JvdXAuY29udGVudC5fZXhwYW5kZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZyBvZiB0aGlzLmdyb3Vwcy50b0FycmF5KCkpIHtcbiAgICAgICAgaWYgKGcgIT09IGdyb3VwKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZUFuZEVtaXQoZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZUdyb3VwKGdyb3VwLCBmb3JjZSA/IHRydWUgOiAhZ3JvdXAuY29udGVudC5fZXhwYW5kZWQpO1xuXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkQWNjb3JkaW9uc0NvbXBvbmVudHMoKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLmdyb3Vwcy5mb3JFYWNoKGcgPT4gdGhpcy5jbG9zZUFuZEVtaXQoZykpKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRUb2dnbGUoZ3JvdXApO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVHcm91cChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBleHBhbmRlZCA9IHRydWUpIHtcbiAgICBncm91cC5jb250ZW50LmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgZ3JvdXAuaGVhZGVyLmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldENoaWxkQWNjb3JkaW9uc0NvbXBvbmVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRBY2NvcmRpb24uZmlsdGVyKGNoaWxkID0+IGNoaWxkICE9PSB0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgY29lcmNlQXJyYXk8VD4odmFsdWUpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbE9wZW4oYWN0aXZlSWRzOiBudW1iZXIgfCBudW1iZXJbXSkge1xuICAgIGNvbnN0IHRvQXJyYXkgPSB0aGlzLmV4cGFuZEFsbCA/IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5tYXAoKF8sIGkpID0+IGkpIDogdGhpcy5jb2VyY2VBcnJheTxudW1iZXI+KGFjdGl2ZUlkcyk7XG4gICAgdGhpcy5zZXRFeHBhbmRBbGwodG9BcnJheSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRUb2dnbGUoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgdmFsdWU/OiBib29sZWFuKSB7XG4gICAgaWYgKGdyb3VwLnRvZ2dsZS5vYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBleHBhbmRlZCA9IHZhbHVlID09IG51bGwgPyBncm91cC5jb250ZW50Ll9leHBhbmRlZCA6IHZhbHVlO1xuICAgICAgZ3JvdXAudG9nZ2xlLm5leHQoeyBleHBhbmRlZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQW5kRW1pdChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KSB7XG4gICAgaWYgKGdyb3VwLmNvbnRlbnQuX2V4cGFuZGVkKSB7XG4gICAgICB0aGlzLmVtaXRUb2dnbGUoZ3JvdXAsIGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0dyb3VwQ29udGVudChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBzZWFyY2hUZXJtOiBzdHJpbmcsIGxhc3RHcm91cDogYm9vbGVhbikge1xuICAgIGxldCBoZWFkZXJNYXRjaDtcbiAgICBpZiAoIWlzTmlsKGdyb3VwLmhlYWRlci5zZWFyY2hhYmxlKSkge1xuICAgICAgLy8gV2hlbiB3ZSBuZWVkIHRvIHN1cHBvcnQgYSBzZWFyY2ggdGVybSBpbiB0aGUgaGVhZGVyLCB3ZSBmaXJzdCB3YW50IHRvIGNoZWNrIGlmIGl0IG1hdGNoZXMuXG4gICAgICBoZWFkZXJNYXRjaCA9IGRlZmF1bHRDbGllbnRTZWFyY2hTdHJhdGVneShncm91cC5oZWFkZXIsIHNlYXJjaFRlcm0sICdzZWFyY2hhYmxlJyk7XG4gICAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgICAgLy8gSWYgdGhhdCdzIHRoZSBjYXNlLCBpdCB3aWxsIHNob3cgYWxsIGdyb3VwcyBhbmQgaWdub3JlIGVhY2ggZ3JvdXAgY29udGVudCByZXN1bHRzLlxuICAgICAgICB0aGlzLnNob3dFbnRpcmVHcm91cChncm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGRlbGVnYXRlIHRvIHNlYXJjaCBpbiBlYWNoIGdyb3VwIGNvbnRlbnRcbiAgICAgICAgdGhpcy5jaGVja0dyb3VwU2VhcmNoYWJsZUNvbnRlbnQoZ3JvdXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoZWNrR3JvdXBTZWFyY2hhYmxlQ29udGVudChncm91cCk7XG4gICAgfVxuICAgIC8vIElmIHRoaXMgaXMgYSBuZXN0ZWQgYWNjb3JkaW9uIHdlIHdhbnQgdG8gdXBkYXRlIGhlIHBhcmVudCdzIGNvdW50XG4gICAgaWYgKHRoaXMucGFyZW50R3JvdXAgJiYgdGhpcy5wYXJlbnQuX2hhc1NlYXJjaCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGFyZW50R3JvdXAuaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aCArPSBncm91cC5oZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoO1xuICAgICAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudEdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSB3YW50IHRvIHRyaWdnZXIgdGhlIHVwZGF0ZSBvbiB0aGUgcGFyZW50IGFmdGVyIHRoZSBsYXN0IGdyb3VwIHdhcyBjaGVja2VkXG4gICAgICAgIGlmIChsYXN0R3JvdXApIHtcbiAgICAgICAgICBjb25zdCBzaG91bGRFeHBhbmQgPSB0aGlzLnBhcmVudEdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPiAwO1xuICAgICAgICAgIHRoaXMuZXhwYW5kR3JvdXAodGhpcy5wYXJlbnRHcm91cCwgc2hvdWxkRXhwYW5kKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0dyb3VwU2VhcmNoYWJsZUNvbnRlbnQoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGdyb3VwLmNvbnRlbnQuc2VhcmNoYWJsZXMuZmlsdGVyKHNlYXJjaGFibGUgPT4gIXNlYXJjaGFibGUuaXNIaWRkZW4pO1xuICAgIGdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuICAgIHRoaXMuZXhwYW5kR3JvdXAoZ3JvdXAsIHJlc3VsdC5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0VudGlyZUdyb3VwKGdyb3VwOiBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQpIHtcbiAgICBncm91cC5jb250ZW50LnNlYXJjaGFibGVzLmZvckVhY2goc2VhcmNoYWJsZSA9PiBzZWFyY2hhYmxlLnNob3coKSk7XG4gICAgZ3JvdXAuaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aCA9IGdyb3VwLmNvbnRlbnQuc2VhcmNoYWJsZXMubGVuZ3RoO1xuICAgIHRoaXMuZXhwYW5kR3JvdXAoZ3JvdXApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmRHcm91cChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBleHBhbmQgPSB0cnVlKSB7XG4gICAgZ3JvdXAuZXhwYW5kKGV4cGFuZCk7XG4gICAgZ3JvdXAuaGlkZSghZXhwYW5kKTtcbiAgfVxufVxuIl19
@@ -71,9 +71,11 @@ let DatoDatePickerContainerComponent = class DatoDatePickerContainerComponent ex
71
71
  .subscribe(event => {
72
72
  this.toggle.emit(event);
73
73
  this.open = false;
74
+ this.cdr.detectChanges();
74
75
  this.input && this.setInputValue();
75
76
  });
76
77
  this.open = true;
78
+ this.cdr.detectChanges();
77
79
  this.input && this.handleEnter();
78
80
  }
79
81
  }
@@ -126,9 +128,7 @@ let DatoDatePickerContainerComponent = class DatoDatePickerContainerComponent ex
126
128
  this.initialInputValue = currentValue;
127
129
  }
128
130
  handleEnter() {
129
- this.input.keydown$
130
- .pipe(filter(isEnter), takeUntil(this.toggle))
131
- .subscribe(() => {
131
+ this.input.keydown$.pipe(filter(isEnter), takeUntil(this.toggle)).subscribe(() => {
132
132
  this.setInputValue();
133
133
  this.popover.closeById(DATE_PICKER_POPOVER_ID);
134
134
  this.input.blur();
@@ -194,7 +194,7 @@ __decorate([
194
194
  DatoDatePickerContainerComponent = __decorate([
195
195
  Component({
196
196
  selector: 'dato-date-picker',
197
- template: "<div class=\"d-flex {{ triggerStyle }} items-center dato-date-picker-trigger\" (click)=\"openDatepicker(origin)\" #origin\n [class.pointer]=\"!viewMode\">\n <ng-template #defaultView>\n <dato-icon datoIcon=\"calendarcore\" width=\"16px\" class=\"primary-400-color\"></dato-icon>\n <div class=\"ellipsis\"\n [datoTooltip]=\"dateLabel + ' ' + dateRange\"\n [datoTooltipPosition]=\"labelTooltipPosition\"\n [datoTooltipOnTextOverflow]=\"true\">\n <span class=\"dato-note date-label\" *ngIf=\"dateLabel\">{{dateLabel | translate}}&nbsp;</span>\n <span class=\"dato-note date-range\">{{dateRange}}</span>\n </div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"triggerTpl ? triggerTpl : defaultView\"\n [ngTemplateOutletContext]=\"{label: dateLabel, range: dateRange, icon: 'calendar'}\"></ng-template>\n </div>\n",
197
+ template: "<div class=\"d-flex {{ triggerStyle }} items-center dato-date-picker-trigger\" [class.open]=\"open\" (click)=\"openDatepicker(origin)\" #origin\n [class.pointer]=\"!viewMode\">\n <ng-template #defaultView>\n <dato-icon datoIcon=\"calendarcore\" width=\"16px\" class=\"primary-400-color\"></dato-icon>\n <div class=\"ellipsis\"\n [datoTooltip]=\"dateLabel + ' ' + dateRange\"\n [datoTooltipPosition]=\"labelTooltipPosition\"\n [datoTooltipOnTextOverflow]=\"true\">\n <span class=\"dato-note date-label\" *ngIf=\"dateLabel\">{{dateLabel | translate}}&nbsp;</span>\n <span class=\"dato-note date-range\">{{dateRange}}</span>\n </div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"triggerTpl ? triggerTpl : defaultView\"\n [ngTemplateOutletContext]=\"{label: dateLabel, range: dateRange, icon: 'calendar'}\"></ng-template>\n </div>\n",
198
198
  changeDetection: ChangeDetectionStrategy.OnPush
199
199
  }),
200
200
  __param(0, Self()), __param(0, Optional()),
@@ -207,4 +207,4 @@ DatoDatePickerContainerComponent = __decorate([
207
207
  DatoTranslateService, String])
208
208
  ], DatoDatePickerContainerComponent);
209
209
  export { DatoDatePickerContainerComponent };
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLWNvbnRhaW5lci9kYXRlLXBpY2tlci1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsZUFBZSxFQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0UsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFRbEUsSUFBYSxnQ0FBZ0MsR0FBN0MsTUFBYSxnQ0FBaUMsU0FBUSxpQkFBaUI7SUF5QnJFLFlBQzhCLFNBQW9CLEVBQ1osTUFBd0IsRUFDcEQsT0FBb0IsRUFDcEIsR0FBc0IsRUFDdEIsU0FBK0IsRUFDYyxRQUF1QjtRQUU1RSxLQUFLLEVBQUUsQ0FBQztRQVBvQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDcEQsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUNjLGFBQVEsR0FBUixRQUFRLENBQWU7UUE3QnJFLGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFDaEMsYUFBUSxHQUErQixjQUFjLENBQUM7UUFDdEQsV0FBTSxHQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGlCQUFZLEdBQXFGLFdBQVcsQ0FBQztRQUM3RyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDcEMseUJBQW9CLEdBQUcsT0FBTyxDQUFDO1FBTzlCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUU1Qyx1QkFBa0IsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBS3JELFNBQUksR0FBRyxLQUFLLENBQUM7UUFZbkIsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsTUFBc0I7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFaEQsSUFBSSxDQUFDLE9BQU87aUJBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLElBQUksTUFBTSxFQUFFO2dCQUMvRCxFQUFFLEVBQUUsc0JBQXNCO2dCQUMxQixTQUFTLEVBQUUsa0JBQWtCO2dCQUM3QixNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVE7b0JBQzdDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO2lCQUN6QjthQUNGLENBQUM7aUJBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQXNCO1FBQ3hDLElBQUksSUFBSSxFQUFFO1lBQ1IsY0FBYztZQUNkLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUNyQixVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQ3BDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztnQkFDRixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQy9GLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDM0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDNUQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN6RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUV0RSxJQUFJLFVBQVUsRUFBRTtvQkFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE1BQU0sR0FBRyxDQUFDO2lCQUNoQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztvQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7aUJBQ3JCO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDN0Q7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDeEIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDOUIsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQXdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRixNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFFbkgsSUFBSSxZQUFZLEtBQUssWUFBWSxFQUFFO1lBQ2pDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTthQUNoQixJQUFJLENBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQ3ZCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YsQ0FBQTs7WUF6SDBDLFNBQVMsdUJBQS9DLElBQUksWUFBSSxRQUFRO1lBQzJCLGdCQUFnQix1QkFBM0QsTUFBTSxTQUFDLGtCQUFrQjtZQUNULFdBQVc7WUFDZixpQkFBaUI7WUFDWCxvQkFBb0I7eUNBQ3RDLFFBQVEsWUFBSSxJQUFJLFlBQUksTUFBTSxTQUFDLGVBQWU7O0FBN0JwQztJQUFSLEtBQUssRUFBRTs7cUVBQWlDO0FBQ2hDO0lBQVIsS0FBSyxFQUFFOztrRUFBdUQ7QUFDdEQ7SUFBUixLQUFLLEVBQUU7O2dFQUFtQztBQUNsQztJQUFSLEtBQUssRUFBRTs7a0VBQWtCO0FBQ2pCO0lBQVIsS0FBSyxFQUFFOztzRUFBOEc7QUFDN0c7SUFBUixLQUFLLEVBQUU7O3VFQUFxQztBQUNwQztJQUFSLEtBQUssRUFBRTs7OEVBQWdDO0FBQy9CO0lBQVIsS0FBSyxFQUFFOzhCQUFzQixjQUFjOzZFQUFDO0FBRUM7SUFBN0MsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4QkFBYSxXQUFXO29FQUFNO0FBQzlCO0lBQTVDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7OEJBQW1CLFdBQVc7MEVBQU07QUFDOUM7SUFBakMsWUFBWSxDQUFDLGtCQUFrQixDQUFDOzhCQUFRLGtCQUFrQjsrREFBQztBQUVsRDtJQUFULE1BQU0sRUFBRTs7Z0VBQTRDO0FBZjFDLGdDQUFnQztJQUw1QyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsa0JBQWtCO1FBQzVCLHE1QkFBcUQ7UUFDckQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07S0FDaEQsQ0FBQztJQTJCRyxXQUFBLElBQUksRUFBRSxDQUFBLEVBQUUsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUNsQixXQUFBLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0lBSTFCLFdBQUEsUUFBUSxFQUFFLENBQUEsRUFBRSxXQUFBLElBQUksRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7cUNBTEwsU0FBUztRQUNKLGdCQUFnQjtRQUMzQyxXQUFXO1FBQ2YsaUJBQWlCO1FBQ1gsb0JBQW9CO0dBOUI5QixnQ0FBZ0MsQ0FtSjVDO1NBbkpZLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZUN1c3RvbUNvbnRyb2wgfSBmcm9tICcuLi8uLi9jdXN0b20tY29udHJvbC9iYXNlLWN1c3RvbS1jb250cm9sJztcbmltcG9ydCB7XG4gIERBVEVfUElDS0VSX1BPUE9WRVJfSUQsXG4gIERhdGVSYW5nZSxcbiAgZ2V0RGF0ZUlTT1N0cmluZyxcbiAgZ2V0TG9jYWxpemVkRm9ybWF0LFxuICBnZXRVVENEYXRlLFxuICBwYXJzZURhdGVTdHJpbmdcbn0gZnJvbSAnLi4vZGF0ZS1waWNrZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1BvcG92ZXIgfSBmcm9tICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBmb3JtYXQsIGlzRGF0ZSwgaXNTYW1lRGF5LCBpc1ZhbGlkLCBwYXJzZUlTTyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IERBVEVfUElDS0VSX0NPTkZJRywgRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJy4uL2RhdGUtcGlja2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBQb3BvdmVyQWN0aW9uLCBQb3BvdmVyVHJpZ2dlciB9IGZyb20gJy4uLy4uL3BvcG92ZXIvcG9wb3Zlci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0VudGVyIH0gZnJvbSAnLi4vLi4vcngvZXZlbnRzJztcbmltcG9ydCB7IFBPUFBFUl9CT1VOREFSWSB9IGZyb20gJy4uLy4uL3BvcG92ZXIvcG9wb3Zlci1wcm92aWRlcnMnO1xuaW1wb3J0IHsgUG9wcGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvcHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0b0RhdGVQaWNrZXJDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3VzdG9tQ29udHJvbFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnY29yZS5zZWxlY3REYXRlJztcbiAgQElucHV0KCkgcG9zaXRpb246IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddID0gJ2JvdHRvbS1zdGFydCc7XG4gIEBJbnB1dCgpIG9mZnNldDogW251bWJlciwgbnVtYmVyXSA9IFswLCA1XTtcbiAgQElucHV0KCkgdmlld01vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgdHJpZ2dlclN0eWxlOiAnaWNvbicgfCAndGV4dCcgfCAnaWNvbi10ZXh0JyB8ICdpY29uLXRleHQtYm9yZGVyJyB8ICdvbmx5LXJhbmdlJyB8ICdvbmx5LWxhYmVsJyA9ICdpY29uLXRleHQnO1xuICBASW5wdXQoKSBpbnB1dEJvdW5kYXJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbGFiZWxUb29sdGlwUG9zaXRpb24gPSAncmlnaHQnO1xuICBASW5wdXQoKSBkZWZhdWx0UG9wcGVyT3JpZ2luOiBIVE1MRGl2RWxlbWVudDtcblxuICBAQ29udGVudENoaWxkKCd0cmlnZ2VyVHBsJywgeyBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlclRwbDogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSkgZGF0ZVBpY2tlclBvcHBlcjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChEYXRvSW5wdXRDb21wb25lbnQpIGlucHV0OiBEYXRvSW5wdXRDb21wb25lbnQ7XG5cbiAgQE91dHB1dCgpIHRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8UG9wb3ZlckFjdGlvbj4oKTtcblxuICByZWFkb25seSBEQVRFX0ZPUk1BVF9MT0NBTEUgPSB7IGxvY2FsZTogdGhpcy5jb25maWcubG9jYWxlIH07XG4gIHJhbmdlOiBEYXRlUmFuZ2U7XG4gIGRhdGVMYWJlbDogc3RyaW5nO1xuICBkYXRlUmFuZ2U6IHN0cmluZztcblxuICBwcml2YXRlIG9wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbml0aWFsSW5wdXRWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBASW5qZWN0KERBVEVfUElDS0VSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IERhdGVQaWNrZXJDb25maWcsXG4gICAgcHJpdmF0ZSBwb3BvdmVyOiBEYXRvUG9wb3ZlcixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChQT1BQRVJfQk9VTkRBUlkpIHByaXZhdGUgYm91bmRhcnk6IHN0cmluZyB8IG51bGxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cblxuICB3cml0ZVZhbHVlKHJhbmdlOiBEYXRlUmFuZ2UpIHtcbiAgICB0aGlzLnJhbmdlID0gcmFuZ2U7XG4gICAgdGhpcy5jcmVhdGVMYWJlbChyYW5nZSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLmlucHV0KSB7XG4gICAgICB0aGlzLnVwZGF0ZUlucHV0KCk7XG4gICAgICB0aGlzLmlucHV0LmRpc2FibGVDbGVhcigpO1xuICAgICAgdGhpcy5pbnB1dC5zZXRQb3BwZXJPcmlnaW4oKTtcbiAgICAgIHRoaXMuaW5wdXQud3JpdGVWYWx1ZSh0aGlzLmRhdGVSYW5nZSk7XG4gICAgICB0aGlzLmluaXRpYWxJbnB1dFZhbHVlID0gdGhpcy5kYXRlUmFuZ2U7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRhdGVwaWNrZXIob3JpZ2luOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGlmICghdGhpcy5vcGVuICYmIHRoaXMudmlld01vZGUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvZ2dsZS5lbWl0KHsgdHlwZTogUG9wb3ZlclRyaWdnZXIuT3BlbiB9KTtcblxuICAgICAgdGhpcy5wb3BvdmVyXG4gICAgICAgIC5vcGVuKHRoaXMuZGF0ZVBpY2tlclBvcHBlciwgdGhpcy5kZWZhdWx0UG9wcGVyT3JpZ2luIHx8IG9yaWdpbiwge1xuICAgICAgICAgIGlkOiBEQVRFX1BJQ0tFUl9QT1BPVkVSX0lELFxuICAgICAgICAgIGNsYXNzTmFtZTogYGRhdG8tZGF0ZS1waWNrZXJgLFxuICAgICAgICAgIHBvcHBlcjoge1xuICAgICAgICAgICAgYm91bmRhcnk6IHRoaXMuaW5wdXRCb3VuZGFyeSB8fCB0aGlzLmJvdW5kYXJ5LFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIHBsYWNlbWVudDogdGhpcy5wb3NpdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGUuZW1pdChldmVudCk7XG4gICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pbnB1dCAmJiB0aGlzLnNldElucHV0VmFsdWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgICB0aGlzLmlucHV0ICYmIHRoaXMuaGFuZGxlRW50ZXIoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbnB1dCgpIHtcbiAgICB0aGlzLmlucHV0LndyaXRlVmFsdWUodGhpcy5kYXRlUmFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMYWJlbChkYXRlOiBEYXRlUmFuZ2UgfCBEYXRlKSB7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIC8vIFNpbmdsZSBtb2RlXG4gICAgICBpZiAoaXNTdHJpbmcoZGF0ZSkgfHwgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgdGhpcy5kYXRlUmFuZ2UgPSBmb3JtYXQoXG4gICAgICAgICAgZ2V0VVRDRGF0ZShkYXRlLCB0aGlzLmNvbmZpZy5sb2NhbGUpLFxuICAgICAgICAgIGdldExvY2FsaXplZEZvcm1hdCh0aGlzLmNvbmZpZy5sb2NhbGUpLFxuICAgICAgICAgIHRoaXMuREFURV9GT1JNQVRfTE9DQUxFXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaW5wdXQgJiYgdGhpcy51cGRhdGVJbnB1dCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGF0ZUZyb20gPSBnZXRVVENEYXRlKGRhdGUuZnJvbSwgdGhpcy5jb25maWcubG9jYWxlKTtcbiAgICAgICAgY29uc3QgZGF0ZVRvID0gZ2V0VVRDRGF0ZShkYXRlLnRvLCB0aGlzLmNvbmZpZy5sb2NhbGUpO1xuICAgICAgICBjb25zdCBmcm9tID0gZm9ybWF0KGRhdGVGcm9tLCBnZXRMb2NhbGl6ZWRGb3JtYXQodGhpcy5jb25maWcubG9jYWxlKSwgdGhpcy5EQVRFX0ZPUk1BVF9MT0NBTEUpO1xuICAgICAgICBjb25zdCB0byA9IGZvcm1hdChkYXRlVG8sIGdldExvY2FsaXplZEZvcm1hdCh0aGlzLmNvbmZpZy5sb2NhbGUpLCB0aGlzLkRBVEVfRk9STUFUX0xPQ0FMRSk7XG4gICAgICAgIGNvbnN0IGlzUmFuZ2VDdXN0b20gPSBkYXRlLmlkID09PSB0aGlzLmNvbmZpZy5jdXN0b21SYW5nZUlEO1xuICAgICAgICBjb25zdCByYW5nZUxhYmVsID0gaXNSYW5nZUN1c3RvbSA/ICcnIDogZGF0ZS5sYWJlbCB8fCAnJztcbiAgICAgICAgY29uc3QgZnJvbVRvID0gaXNTYW1lRGF5KGRhdGVGcm9tLCBkYXRlVG8pID8gZnJvbSA6IGAke2Zyb219IC0gJHt0b31gO1xuXG4gICAgICAgIGlmIChyYW5nZUxhYmVsKSB7XG4gICAgICAgICAgdGhpcy5kYXRlTGFiZWwgPSByYW5nZUxhYmVsO1xuICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlID0gYCgke2Zyb21Ub30pYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGVSYW5nZSA9IGZyb21UbztcbiAgICAgICAgICB0aGlzLmRhdGVMYWJlbCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKHRoaXMucGxhY2Vob2xkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXRWYWx1ZSgpIHtcbiAgICBsZXQgcGFyc2VkSW5wdXRWYWx1ZSA9IGlzRGF0ZSh0aGlzLmluaXRpYWxJbnB1dFZhbHVlKVxuICAgICAgPyB0aGlzLmluaXRpYWxJbnB1dFZhbHVlXG4gICAgICA6IHBhcnNlRGF0ZVN0cmluZyh0aGlzLmluaXRpYWxJbnB1dFZhbHVlLCB0aGlzLmNvbmZpZy5sb2NhbGUpO1xuXG4gICAgaWYgKCFpc1ZhbGlkKHBhcnNlZElucHV0VmFsdWUpKSB7XG4gICAgICBwYXJzZWRJbnB1dFZhbHVlID0gcGFyc2VJU08odGhpcy5pbml0aWFsSW5wdXRWYWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0RGF0ZUlTT1N0cmluZyhwYXJzZWRJbnB1dFZhbHVlIGFzIERhdGUsIHRoaXMuY29uZmlnLmxvY2FsZSk7XG4gICAgY29uc3QgaW5wdXREYXRlVmFsdWUgPSBwYXJzZURhdGVTdHJpbmcodGhpcy5pbnB1dC52YWx1ZSwgdGhpcy5jb25maWcubG9jYWxlKTtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBpc1ZhbGlkKGlucHV0RGF0ZVZhbHVlKSA/IGdldERhdGVJU09TdHJpbmcoaW5wdXREYXRlVmFsdWUsIHRoaXMuY29uZmlnLmxvY2FsZSkgOiBpbml0aWFsVmFsdWU7XG5cbiAgICBpZiAoaW5pdGlhbFZhbHVlID09PSBjdXJyZW50VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnBhdGNoVmFsdWUoY3VycmVudFZhbHVlKTtcbiAgICB0aGlzLmluaXRpYWxJbnB1dFZhbHVlID0gY3VycmVudFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFbnRlcigpIHtcbiAgICB0aGlzLmlucHV0LmtleWRvd24kXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGlzRW50ZXIpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy50b2dnbGUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKCk7XG4gICAgICAgIHRoaXMucG9wb3Zlci5jbG9zZUJ5SWQoREFURV9QSUNLRVJfUE9QT1ZFUl9JRCk7XG4gICAgICAgIHRoaXMuaW5wdXQuYmx1cigpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLWNvbnRhaW5lci9kYXRlLXBpY2tlci1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsZUFBZSxFQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0UsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUs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LE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0lBSTFCLFdBQUEsUUFBUSxFQUFFLENBQUEsRUFBRSxXQUFBLElBQUksRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7cUNBTEwsU0FBUztRQUNKLGdCQUFnQjtRQUMzQyxXQUFXO1FBQ2YsaUJBQWlCO1FBQ1gsb0JBQW9CO0dBOUI5QixnQ0FBZ0MsQ0FnSjVDO1NBaEpZLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZUN1c3RvbUNvbnRyb2wgfSBmcm9tICcuLi8uLi9jdXN0b20tY29udHJvbC9iYXNlLWN1c3RvbS1jb250cm9sJztcbmltcG9ydCB7XG4gIERBVEVfUElDS0VSX1BPUE9WRVJfSUQsXG4gIERhdGVSYW5nZSxcbiAgZ2V0RGF0ZUlTT1N0cmluZyxcbiAgZ2V0TG9jYWxpemVkRm9ybWF0LFxuICBnZXRVVENEYXRlLFxuICBwYXJzZURhdGVTdHJpbmdcbn0gZnJvbSAnLi4vZGF0ZS1waWNrZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1BvcG92ZXIgfSBmcm9tICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBmb3JtYXQsIGlzRGF0ZSwgaXNTYW1lRGF5LCBpc1ZhbGlkLCBwYXJzZUlTTyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IERBVEVfUElDS0VSX0NPTkZJRywgRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJy4uL2RhdGUtcGlja2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBQb3BvdmVyQWN0aW9uLCBQb3BvdmVyVHJpZ2dlciB9IGZyb20gJy4uLy4uL3BvcG92ZXIvcG9wb3Zlci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0VudGVyIH0gZnJvbSAnLi4vLi4vcngvZXZlbnRzJztcbmltcG9ydCB7IFBPUFBFUl9CT1VOREFSWSB9IGZyb20gJy4uLy4uL3BvcG92ZXIvcG9wb3Zlci1wcm92aWRlcnMnO1xuaW1wb3J0IHsgUG9wcGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvcHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0b0RhdGVQaWNrZXJDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3VzdG9tQ29udHJvbFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnY29yZS5zZWxlY3REYXRlJztcbiAgQElucHV0KCkgcG9zaXRpb246IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddID0gJ2JvdHRvbS1zdGFydCc7XG4gIEBJbnB1dCgpIG9mZnNldDogW251bWJlciwgbnVtYmVyXSA9IFswLCA1XTtcbiAgQElucHV0KCkgdmlld01vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgdHJpZ2dlclN0eWxlOiAnaWNvbicgfCAndGV4dCcgfCAnaWNvbi10ZXh0JyB8ICdpY29uLXRleHQtYm9yZGVyJyB8ICdvbmx5LXJhbmdlJyB8ICdvbmx5LWxhYmVsJyA9ICdpY29uLXRleHQnO1xuICBASW5wdXQoKSBpbnB1dEJvdW5kYXJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbGFiZWxUb29sdGlwUG9zaXRpb24gPSAncmlnaHQnO1xuICBASW5wdXQoKSBkZWZhdWx0UG9wcGVyT3JpZ2luOiBIVE1MRGl2RWxlbWVudDtcblxuICBAQ29udGVudENoaWxkKCd0cmlnZ2VyVHBsJywgeyBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlclRwbDogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSkgZGF0ZVBpY2tlclBvcHBlcjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChEYXRvSW5wdXRDb21wb25lbnQpIGlucHV0OiBEYXRvSW5wdXRDb21wb25lbnQ7XG5cbiAgQE91dHB1dCgpIHRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8UG9wb3ZlckFjdGlvbj4oKTtcblxuICByZWFkb25seSBEQVRFX0ZPUk1BVF9MT0NBTEUgPSB7IGxvY2FsZTogdGhpcy5jb25maWcubG9jYWxlIH07XG4gIHJhbmdlOiBEYXRlUmFuZ2U7XG4gIGRhdGVMYWJlbDogc3RyaW5nO1xuICBkYXRlUmFuZ2U6IHN0cmluZztcblxuICBvcGVuID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdGlhbElucHV0VmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQEluamVjdChEQVRFX1BJQ0tFUl9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBEYXRlUGlja2VyQ29uZmlnLFxuICAgIHByaXZhdGUgcG9wb3ZlcjogRGF0b1BvcG92ZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoUE9QUEVSX0JPVU5EQVJZKSBwcml2YXRlIGJvdW5kYXJ5OiBzdHJpbmcgfCBudWxsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShyYW5nZTogRGF0ZVJhbmdlKSB7XG4gICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xuICAgIHRoaXMuY3JlYXRlTGFiZWwocmFuZ2UpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy51cGRhdGVJbnB1dCgpO1xuICAgICAgdGhpcy5pbnB1dC5kaXNhYmxlQ2xlYXIoKTtcbiAgICAgIHRoaXMuaW5wdXQuc2V0UG9wcGVyT3JpZ2luKCk7XG4gICAgICB0aGlzLmlucHV0LndyaXRlVmFsdWUodGhpcy5kYXRlUmFuZ2UpO1xuICAgICAgdGhpcy5pbml0aWFsSW5wdXRWYWx1ZSA9IHRoaXMuZGF0ZVJhbmdlO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5EYXRlcGlja2VyKG9yaWdpbjogSFRNTERpdkVsZW1lbnQpIHtcbiAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLnZpZXdNb2RlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50b2dnbGUuZW1pdCh7IHR5cGU6IFBvcG92ZXJUcmlnZ2VyLk9wZW4gfSk7XG5cbiAgICAgIHRoaXMucG9wb3ZlclxuICAgICAgICAub3Blbih0aGlzLmRhdGVQaWNrZXJQb3BwZXIsIHRoaXMuZGVmYXVsdFBvcHBlck9yaWdpbiB8fCBvcmlnaW4sIHtcbiAgICAgICAgICBpZDogREFURV9QSUNLRVJfUE9QT1ZFUl9JRCxcbiAgICAgICAgICBjbGFzc05hbWU6IGBkYXRvLWRhdGUtcGlja2VyYCxcbiAgICAgICAgICBwb3BwZXI6IHtcbiAgICAgICAgICAgIGJvdW5kYXJ5OiB0aGlzLmlucHV0Qm91bmRhcnkgfHwgdGhpcy5ib3VuZGFyeSxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMucG9zaXRpb25cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgIHRoaXMudG9nZ2xlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLmlucHV0ICYmIHRoaXMuc2V0SW5wdXRWYWx1ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuaW5wdXQgJiYgdGhpcy5oYW5kbGVFbnRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUlucHV0KCkge1xuICAgIHRoaXMuaW5wdXQud3JpdGVWYWx1ZSh0aGlzLmRhdGVSYW5nZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxhYmVsKGRhdGU6IERhdGVSYW5nZSB8IERhdGUpIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgLy8gU2luZ2xlIG1vZGVcbiAgICAgIGlmIChpc1N0cmluZyhkYXRlKSB8fCBkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB0aGlzLmRhdGVSYW5nZSA9IGZvcm1hdChcbiAgICAgICAgICBnZXRVVENEYXRlKGRhdGUsIHRoaXMuY29uZmlnLmxvY2FsZSksXG4gICAgICAgICAgZ2V0TG9jYWxpemVkRm9ybWF0KHRoaXMuY29uZmlnLmxvY2FsZSksXG4gICAgICAgICAgdGhpcy5EQVRFX0ZPUk1BVF9MT0NBTEVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pbnB1dCAmJiB0aGlzLnVwZGF0ZUlucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkYXRlRnJvbSA9IGdldFVUQ0RhdGUoZGF0ZS5mcm9tLCB0aGlzLmNvbmZpZy5sb2NhbGUpO1xuICAgICAgICBjb25zdCBkYXRlVG8gPSBnZXRVVENEYXRlKGRhdGUudG8sIHRoaXMuY29uZmlnLmxvY2FsZSk7XG4gICAgICAgIGNvbnN0IGZyb20gPSBmb3JtYXQoZGF0ZUZyb20sIGdldExvY2FsaXplZEZvcm1hdCh0aGlzLmNvbmZpZy5sb2NhbGUpLCB0aGlzLkRBVEVfRk9STUFUX0xPQ0FMRSk7XG4gICAgICAgIGNvbnN0IHRvID0gZm9ybWF0KGRhdGVUbywgZ2V0TG9jYWxpemVkRm9ybWF0KHRoaXMuY29uZmlnLmxvY2FsZSksIHRoaXMuREFURV9GT1JNQVRfTE9DQUxFKTtcbiAgICAgICAgY29uc3QgaXNSYW5nZUN1c3RvbSA9IGRhdGUuaWQgPT09IHRoaXMuY29uZmlnLmN1c3RvbVJhbmdlSUQ7XG4gICAgICAgIGNvbnN0IHJhbmdlTGFiZWwgPSBpc1JhbmdlQ3VzdG9tID8gJycgOiBkYXRlLmxhYmVsIHx8ICcnO1xuICAgICAgICBjb25zdCBmcm9tVG8gPSBpc1NhbWVEYXkoZGF0ZUZyb20sIGRhdGVUbykgPyBmcm9tIDogYCR7ZnJvbX0gLSAke3RvfWA7XG5cbiAgICAgICAgaWYgKHJhbmdlTGFiZWwpIHtcbiAgICAgICAgICB0aGlzLmRhdGVMYWJlbCA9IHJhbmdlTGFiZWw7XG4gICAgICAgICAgdGhpcy5kYXRlUmFuZ2UgPSBgKCR7ZnJvbVRvfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlID0gZnJvbVRvO1xuICAgICAgICAgIHRoaXMuZGF0ZUxhYmVsID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlUmFuZ2UgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0odGhpcy5wbGFjZWhvbGRlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dFZhbHVlKCkge1xuICAgIGxldCBwYXJzZWRJbnB1dFZhbHVlID0gaXNEYXRlKHRoaXMuaW5pdGlhbElucHV0VmFsdWUpXG4gICAgICA/IHRoaXMuaW5pdGlhbElucHV0VmFsdWVcbiAgICAgIDogcGFyc2VEYXRlU3RyaW5nKHRoaXMuaW5pdGlhbElucHV0VmFsdWUsIHRoaXMuY29uZmlnLmxvY2FsZSk7XG5cbiAgICBpZiAoIWlzVmFsaWQocGFyc2VkSW5wdXRWYWx1ZSkpIHtcbiAgICAgIHBhcnNlZElucHV0VmFsdWUgPSBwYXJzZUlTTyh0aGlzLmluaXRpYWxJbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXREYXRlSVNPU3RyaW5nKHBhcnNlZElucHV0VmFsdWUgYXMgRGF0ZSwgdGhpcy5jb25maWcubG9jYWxlKTtcbiAgICBjb25zdCBpbnB1dERhdGVWYWx1ZSA9IHBhcnNlRGF0ZVN0cmluZyh0aGlzLmlucHV0LnZhbHVlLCB0aGlzLmNvbmZpZy5sb2NhbGUpO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGlzVmFsaWQoaW5wdXREYXRlVmFsdWUpID8gZ2V0RGF0ZUlTT1N0cmluZyhpbnB1dERhdGVWYWx1ZSwgdGhpcy5jb25maWcubG9jYWxlKSA6IGluaXRpYWxWYWx1ZTtcblxuICAgIGlmIChpbml0aWFsVmFsdWUgPT09IGN1cnJlbnRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucGF0Y2hWYWx1ZShjdXJyZW50VmFsdWUpO1xuICAgIHRoaXMuaW5pdGlhbElucHV0VmFsdWUgPSBjdXJyZW50VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVudGVyKCkge1xuICAgIHRoaXMuaW5wdXQua2V5ZG93biQucGlwZShmaWx0ZXIoaXNFbnRlciksIHRha2VVbnRpbCh0aGlzLnRvZ2dsZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUoKTtcbiAgICAgIHRoaXMucG9wb3Zlci5jbG9zZUJ5SWQoREFURV9QSUNLRVJfUE9QT1ZFUl9JRCk7XG4gICAgICB0aGlzLmlucHV0LmJsdXIoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -33,4 +33,4 @@ export var GridRowSelectionType;
33
33
  GridRowSelectionType["SINGLE"] = "single";
34
34
  GridRowSelectionType["MULTIPLE"] = "multiple";
35
35
  })(GridRowSelectionType || (GridRowSelectionType = {}));
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQ3BELE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUN6RyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyx1Q0FBdUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUM3RixVQUFVLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkUsT0FBTyxVQUFVO1FBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxrQ0FBa0MsR0FBRyxTQUFTLENBQUM7UUFDOUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQztBQW1IRixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHlEQUFhLENBQUE7SUFDYiw2REFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0Isd0NBQWlCLENBQUE7SUFDakIsd0NBQWlCLENBQUE7SUFDakIsb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7SUFDZixnREFBeUIsQ0FBQTtJQUN6Qiw0Q0FBcUIsQ0FBQTtJQUNyQix3Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QjtBQWNELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIseUNBQWlCLENBQUE7SUFDakIsNkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xEZWYsIEdyaWRPcHRpb25zLCBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBJR2V0Um93c1BhcmFtcywgTWVudUl0ZW1EZWYsIFJvd05vZGUgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlclNlY3Rpb25zLCBMaXN0SXRlbSB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9TZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBBZ0dyaWRFdmVudCB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5L2Rpc3QvbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLnR5cGVzJztcbmltcG9ydCB7IEljb25SZWdpc3RyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ljb24tcmVnaXN0cnknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRNb3JlTWVudUFjdGlvbnMgfSBmcm9tICcuLi9ncmlkLWNvbHVtbi1oZWFkZXItbW9yZS1tZW51L2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUudHlwZXMnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IENvcmVFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vZXZlbnQtbG9nZ2VyJztcbmltcG9ydCB7IERhdG9HcmlkT3ZlcmxheUlucHV0IH0gZnJvbSAnLi4vZ3JpZC1uby1kYXRhLW92ZXJsYXkvZ3JpZC12Mi1uby1kYXRhLW92ZXJsYXkudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEVkaXRhYmxlQ29sdW1uUmVuZGVyZXIgPSBwYXJhbXMgPT5cbiAgcGFyYW1zICYmIHBhcmFtcy52YWx1ZSA/IGA8ZGl2IGNsYXNzPVwidmFsdWUtd3JhcHBlciBlbGxpcHNpc1wiPiR7cGFyYW1zLnZhbHVlfTwvZGl2PmAgOiBudWxsO1xuXG5leHBvcnQgY29uc3QgZWRpdGFibGVDZWxsUmVuZGVyZXJXaXRoU2VhcmNoSGlnaGxpZ2h0ID0gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcywgc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gIGlmICghcGFyYW1zIHx8ICFwYXJhbXMudmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyIGVsbGlwc2lzXCI+JHtzZWFyY2hIaWdobGlnaHRDZWxsUmVuZGVyZXIocGFyYW1zLCBzZWFyY2hUZXJtKX08L2Rpdj5gO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlYXJjaEhpZ2hsaWdodENlbGxSZW5kZXJlciA9IChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMsIHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICBzZWFyY2hUZXJtID0gKHNlYXJjaFRlcm0gfHwgJycpLnRyaW0oKTtcbiAgY29uc3QgdmFsdWUgPSAocGFyYW1zLnZhbHVlRm9ybWF0dGVkIHx8IHBhcmFtcy52YWx1ZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgcmV0dXJuIHNlYXJjaFRlcm1cbiAgICA/IHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnZ2knKSwgKHN0cjogc3RyaW5nKSA9PiBgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaGlnaGxpZ2h0XCI+JHtzdHJ9PC9zcGFuPmApXG4gICAgOiB2YWx1ZTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkQ29sdW1uRGVmID0ge1xuICBmaWx0ZXJzQ29uZmlnPzogRGF0b0dyaWRGaWx0ZXJDb25maWc7XG4gIG1vcmVNZW51QWN0aW9ucz86IERhdG9HcmlkTW9yZU1lbnVBY3Rpb25zW107XG4gIGluZm8/OiBzdHJpbmc7XG4gIG9yaWdpbmFsV2lkdGg/OiBudW1iZXI7XG4gIGluY2x1ZGVJblNlYXJjaD86IGJvb2xlYW47XG4gIGN1c3RvbUNlbGxDb25maWc/OiBEYXRvR3JpZEN1c3RvbUNlbGxDb25maWc7XG4gIHZhbHVlVG9DdXN0b21DZWxsQ29uZmlnPzogSGFzaE1hcDxEYXRvR3JpZEN1c3RvbUNlbGxDb25maWc+O1xufSAmIENvbERlZjtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRDdXN0b21DZWxsQ29uZmlnID0ge1xuICBjb2xvcj86ICdwcmltYXJ5JyB8ICdncmVlbicgfCAncmVkJyB8ICdhY2NlbnQnIHwgJ3llbGxvdyc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuICBpY29uQ3NzQ2xhc3M/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBzaG93U3Bpbm5lcj86IGJvb2xlYW47XG4gIG1heExhYmVscz86IG51bWJlcjtcbiAgZ2V0QWRkaXRpb25hbFRleHQ/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGdldEltYWdlVXJsPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpbml0aWFsc0NvbmZpZz86IERhdG9HcmlkSW5pdGlhbHNDZWxsQ29uZmlnO1xuICBnZXRJc1Zpc2libGU/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICBnZXRJdGVtcz86IChkYXRhOiBhbnkpID0+IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRJbml0aWFsc0NlbGxDb25maWcgPSB7XG4gIGZpcnN0TmFtZUZpZWxkPzogc3RyaW5nO1xuICBsYXN0TmFtZUZpZWxkPzogc3RyaW5nO1xuICBmdWxsTmFtZUZpZWxkPzogc3RyaW5nO1xuICBnZXRGdWxsTmFtZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgaXNCb2xkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkRmlsdGVyQ29uZmlnID0ge1xuICBzZWN0aW9ucz86IERhdG9HcmlkRmlsdGVyU2VjdGlvbnM7XG4gIHByZWRlZmluZWRMaXN0VmFsdWVzPzogKHN0cmluZyB8IExpc3RJdGVtKVtdO1xuICBrZWVwUHJlZGVmaW5lZExpc3RPcmlnaW5hbE9yZGVyPzogYm9vbGVhbjtcbiAgc2hvd0VtcHR5Q29uZGl0aW9ucz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCBleHRlbmRzIEFnR3JpZEV2ZW50IHtcbiAgdHlwZTogJ1NlcnZlckRhdGFMb2FkZWQnIHwgJ3Jvd0RhdGFDaGFuZ2VkJyB8ICdyb3dEYXRhVXBkYXRlZCc7XG4gIHBhZ2luYXRpb25QYWdlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkR2V0Um93c1BhcmFtcyBleHRlbmRzIElHZXRSb3dzUGFyYW1zIHtcbiAgc2VydmVyQ29uZmlnOiBEYXRvU2VydmVyUGFnaW5hdGlvbkNvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRFeHBvcnRQYXJhbXMgPSBEYXRvR3JpZEFwaSAmIERhdG9HcmlkU2V0dGluZ3M7XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkT25Ib3ZlckNvbmZpZyA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIG1heERpc3BsYXllZEl0ZW1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZE9wdGlvbnMgZXh0ZW5kcyBHcmlkT3B0aW9ucyB7XG4gIGdyaWROYW1lOiBzdHJpbmc7XG4gIGNvbHVtbkRlZnM6IERhdG9HcmlkQ29sdW1uRGVmW107XG4gIHNhdmVTZXR0aW5ncz86IGJvb2xlYW47XG4gIGVuYWJsZVYyXzE/OiBib29sZWFuO1xuICBleHBvcnRHcmlkPyhwYXJhbXM6IERhdG9HcmlkRXhwb3J0UGFyYW1zKTogdm9pZDtcbiAgZGVmYXVsdENvbERlZj86IERhdG9HcmlkQ29sdW1uRGVmO1xuICBkYXRhc291cmNlPzoge1xuICAgIGdldFJvd3MocGFyYW1zOiBEYXRvR3JpZEdldFJvd3NQYXJhbXMpOiB2b2lkO1xuICAgIC8vIG9wdGlvbmFsIGRlc3Ryb3kgbWV0aG9kLCBpZiB5b3VyIGRhdGFzb3VyY2UgaGFzIHN0YXRlIGl0IG5lZWRzIHRvIGNsZWFuIHVwXG4gICAgZGVzdHJveT8oKTogdm9pZDtcbiAgfTtcbiAgY3VzdG9tQ29udGV4dE1lbnU/KHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdKTogUm93QWN0aW9uW107XG4gIGhvdmVyQ29uZmlnPzogRGF0b0dyaWRPbkhvdmVyQ29uZmlnO1xuICBvdmVybGF5c0NvbmZpZz86IERhdG9HcmlkT3ZlcmxheUlucHV0O1xuICBkaXN0aW5jdFJlc3VsdHM/OiBib29sZWFuO1xuICBtYXhEZXB0aD86IG51bWJlcjtcbiAgZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0PzogYm9vbGVhbjtcbiAgY29sdW1uc0luY2x1ZGVkSW5TZWFyY2hCeURlZmF1bHQ/OiBib29sZWFuO1xuICBzZWFyY2hEZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIGluY2x1ZGVIaWRkZW5Db2x1bW5zSW5TZWFyY2g/OiBib29sZWFuO1xuICBzaG93TXVsdGlTZWxlY3Rpb25DaGVja2JveGVzPzogYm9vbGVhbjtcbiAgZW5hYmxlQWxsUGFnZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpZENvbHVtbktleT86IHN0cmluZztcbiAgZW5hYmxlQmFja2dyb3VuZD86IGJvb2xlYW47XG4gIHNob3dCb3R0b21Db250cm9scz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51SXRlbSA9IHN0cmluZyB8IE1lbnVJdGVtRGVmO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnZlcnRlclBhcmFtcyB7XG4gIG5vZGU6IFJvd05vZGU7XG4gIHRvb2xiYXJBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgc2VsZWN0ZWRSb3dzOiBSb3dOb2RlW107XG4gIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5O1xuICBsb2dnZXI/OiB7XG4gICAgbG9nKGV2ZW50VHlwZTogQ29yZUV2ZW50VHlwZXMuR1JJRF9UQUJMRV9BQ1RJT04sIGV2ZW50UHJvcGVydGllcz86IEhhc2hNYXA8YW55Pik6IHZvaWQ7XG4gICAgZXZlbnRPcmlnaW4/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0ID0ge1xuICBjb2xJZDogc3RyaW5nO1xuICBzb3J0OiBEYXRvR3JpZFNvcnREaXJlY3Rpb247XG4gIGZpZWxkPzogc3RyaW5nO1xuICBzb3J0SW5kZXg/OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNlcnZlclNvcnQgPSB7IGNvbHVtbjogc3RyaW5nOyBzb3J0T3JkZXI6IERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiB9O1xuZXhwb3J0IGNvbnN0IGVudW0gRGF0b0dyaWRBbGlnbm1lbnQge1xuICBGSVRfVE9fQ09OVEFJTkVSLFxuICBGSVRfVE9fQ09OVEVOVCxcbiAgQ1VTVE9NXG59XG5cbmV4cG9ydCBlbnVtIEdyaWRNaW5XaWR0aHMge1xuICBEZWZhdWx0ID0gMTA3LFxuICBXaXRoX0luZm8gPSAxMzFcbn1cblxuZXhwb3J0IGVudW0gRGF0b0dyaWRDb2x1bW5UeXBlcyB7XG4gIFN0cmluZyA9ICdTdHJpbmcnLFxuICBOdW1iZXIgPSAnTnVtYmVyJyxcbiAgRGF0ZSA9ICdEYXRlJyxcbiAgU3RhdHVzID0gJ1N0YXR1cycsXG4gIEl0ZW1zID0gJ0l0ZW1zJyxcbiAgSXRlbXNDb3VudCA9ICdJdGVtc0NvdW50JyxcbiAgSW5pdGlhbHMgPSAnSW5pdGlhbHMnLFxuICBBdmF0YXIgPSAnQXZhdGFyJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkVHJlZUNvbmZpZyB7XG4gIGlkS2V5OiBzdHJpbmc7XG4gIHBhcmVudElES2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFnR3JpZFJvd0ljb24gPVxuICB8IHN0cmluZ1xuICB8IHtcbiAgICAgIGV4cGFuZGVkOiBzdHJpbmc7XG4gICAgICBjb2xsYXBzZWQ6IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgZW51bSBHcmlkUm93U2VsZWN0aW9uVHlwZSB7XG4gIFNJTkdMRSA9ICdzaW5nbGUnLFxuICBNVUxUSVBMRSA9ICdtdWx0aXBsZSdcbn1cblxuZXhwb3J0IHR5cGUgR3JpZFJvd3NTZWxlY3Rpb25EYXRhID0ge1xuICB0b3RhbFJvd3NDb3VudDogbnVtYmVyO1xuICBzZWxlY3RlZFJvd3NDb3VudDogbnVtYmVyO1xuICBzZWxlY3RlZFBhZ2VSb3dzQ291bnQ6IG51bWJlcjtcbiAgaXNBbGxQYWdlUm93c1NlbGVjdGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgR3JpZENoYW5nZUV2ZW50ID1cbiAgfCB7XG4gICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICBkYXRhOiBSb3dOb2RlW107XG4gICAgICBmaWx0ZXI6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXTtcbiAgICB9XG4gIHwgUGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPjtcbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQ3BELE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUN6RyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyx1Q0FBdUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUM3RixVQUFVLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkUsT0FBTyxVQUFVO1FBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxrQ0FBa0MsR0FBRyxTQUFTLENBQUM7UUFDOUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQztBQW9IRixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHlEQUFhLENBQUE7SUFDYiw2REFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0Isd0NBQWlCLENBQUE7SUFDakIsd0NBQWlCLENBQUE7SUFDakIsb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7SUFDZixnREFBeUIsQ0FBQTtJQUN6Qiw0Q0FBcUIsQ0FBQTtJQUNyQix3Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QjtBQWNELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIseUNBQWlCLENBQUE7SUFDakIsNkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xEZWYsIEdyaWRPcHRpb25zLCBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBJR2V0Um93c1BhcmFtcywgTWVudUl0ZW1EZWYsIFJvd05vZGUgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlclNlY3Rpb25zLCBMaXN0SXRlbSB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9TZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBBZ0dyaWRFdmVudCB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5L2Rpc3QvbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLnR5cGVzJztcbmltcG9ydCB7IEljb25SZWdpc3RyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ljb24tcmVnaXN0cnknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRNb3JlTWVudUFjdGlvbnMgfSBmcm9tICcuLi9ncmlkLWNvbHVtbi1oZWFkZXItbW9yZS1tZW51L2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUudHlwZXMnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IENvcmVFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vZXZlbnQtbG9nZ2VyJztcbmltcG9ydCB7IERhdG9HcmlkT3ZlcmxheUlucHV0IH0gZnJvbSAnLi4vZ3JpZC1uby1kYXRhLW92ZXJsYXkvZ3JpZC12Mi1uby1kYXRhLW92ZXJsYXkudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEVkaXRhYmxlQ29sdW1uUmVuZGVyZXIgPSBwYXJhbXMgPT5cbiAgcGFyYW1zICYmIHBhcmFtcy52YWx1ZSA/IGA8ZGl2IGNsYXNzPVwidmFsdWUtd3JhcHBlciBlbGxpcHNpc1wiPiR7cGFyYW1zLnZhbHVlfTwvZGl2PmAgOiBudWxsO1xuXG5leHBvcnQgY29uc3QgZWRpdGFibGVDZWxsUmVuZGVyZXJXaXRoU2VhcmNoSGlnaGxpZ2h0ID0gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcywgc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gIGlmICghcGFyYW1zIHx8ICFwYXJhbXMudmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyIGVsbGlwc2lzXCI+JHtzZWFyY2hIaWdobGlnaHRDZWxsUmVuZGVyZXIocGFyYW1zLCBzZWFyY2hUZXJtKX08L2Rpdj5gO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlYXJjaEhpZ2hsaWdodENlbGxSZW5kZXJlciA9IChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMsIHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICBzZWFyY2hUZXJtID0gKHNlYXJjaFRlcm0gfHwgJycpLnRyaW0oKTtcbiAgY29uc3QgdmFsdWUgPSAocGFyYW1zLnZhbHVlRm9ybWF0dGVkIHx8IHBhcmFtcy52YWx1ZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgcmV0dXJuIHNlYXJjaFRlcm1cbiAgICA/IHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnZ2knKSwgKHN0cjogc3RyaW5nKSA9PiBgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaGlnaGxpZ2h0XCI+JHtzdHJ9PC9zcGFuPmApXG4gICAgOiB2YWx1ZTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkQ29sdW1uRGVmID0ge1xuICBmaWx0ZXJzQ29uZmlnPzogRGF0b0dyaWRGaWx0ZXJDb25maWc7XG4gIG1vcmVNZW51QWN0aW9ucz86IERhdG9HcmlkTW9yZU1lbnVBY3Rpb25zW107XG4gIGluZm8/OiBzdHJpbmc7XG4gIG9yaWdpbmFsV2lkdGg/OiBudW1iZXI7XG4gIGluY2x1ZGVJblNlYXJjaD86IGJvb2xlYW47XG4gIGN1c3RvbUNlbGxDb25maWc/OiBEYXRvR3JpZEN1c3RvbUNlbGxDb25maWc7XG4gIHZhbHVlVG9DdXN0b21DZWxsQ29uZmlnPzogSGFzaE1hcDxEYXRvR3JpZEN1c3RvbUNlbGxDb25maWc+O1xufSAmIENvbERlZjtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRDdXN0b21DZWxsQ29uZmlnID0ge1xuICBjb2xvcj86ICdwcmltYXJ5JyB8ICdncmVlbicgfCAncmVkJyB8ICdhY2NlbnQnIHwgJ3llbGxvdyc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuICBpY29uQ3NzQ2xhc3M/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBzaG93U3Bpbm5lcj86IGJvb2xlYW47XG4gIG1heExhYmVscz86IG51bWJlcjtcbiAgZ2V0QWRkaXRpb25hbFRleHQ/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGdldEltYWdlVXJsPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpbml0aWFsc0NvbmZpZz86IERhdG9HcmlkSW5pdGlhbHNDZWxsQ29uZmlnO1xuICBnZXRJc1Zpc2libGU/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICBnZXRJdGVtcz86IChkYXRhOiBhbnkpID0+IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRJbml0aWFsc0NlbGxDb25maWcgPSB7XG4gIGZpcnN0TmFtZUZpZWxkPzogc3RyaW5nO1xuICBsYXN0TmFtZUZpZWxkPzogc3RyaW5nO1xuICBmdWxsTmFtZUZpZWxkPzogc3RyaW5nO1xuICBnZXRGdWxsTmFtZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgaXNCb2xkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkRmlsdGVyQ29uZmlnID0ge1xuICBzZWN0aW9ucz86IERhdG9HcmlkRmlsdGVyU2VjdGlvbnM7XG4gIHByZWRlZmluZWRMaXN0VmFsdWVzPzogKHN0cmluZyB8IExpc3RJdGVtKVtdO1xuICBrZWVwUHJlZGVmaW5lZExpc3RPcmlnaW5hbE9yZGVyPzogYm9vbGVhbjtcbiAgc2hvd0VtcHR5Q29uZGl0aW9ucz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCBleHRlbmRzIEFnR3JpZEV2ZW50IHtcbiAgdHlwZTogJ1NlcnZlckRhdGFMb2FkZWQnIHwgJ3Jvd0RhdGFDaGFuZ2VkJyB8ICdyb3dEYXRhVXBkYXRlZCc7XG4gIHBhZ2luYXRpb25QYWdlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkR2V0Um93c1BhcmFtcyBleHRlbmRzIElHZXRSb3dzUGFyYW1zIHtcbiAgc2VydmVyQ29uZmlnOiBEYXRvU2VydmVyUGFnaW5hdGlvbkNvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRFeHBvcnRQYXJhbXMgPSBEYXRvR3JpZEFwaSAmIERhdG9HcmlkU2V0dGluZ3M7XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkT25Ib3ZlckNvbmZpZyA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIG1heERpc3BsYXllZEl0ZW1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZE9wdGlvbnMgZXh0ZW5kcyBHcmlkT3B0aW9ucyB7XG4gIGdyaWROYW1lOiBzdHJpbmc7XG4gIGNvbHVtbkRlZnM6IERhdG9HcmlkQ29sdW1uRGVmW107XG4gIHNhdmVTZXR0aW5ncz86IGJvb2xlYW47XG4gIGVuYWJsZVYyXzE/OiBib29sZWFuO1xuICBleHBvcnRHcmlkPyhwYXJhbXM6IERhdG9HcmlkRXhwb3J0UGFyYW1zKTogdm9pZDtcbiAgZGVmYXVsdENvbERlZj86IERhdG9HcmlkQ29sdW1uRGVmO1xuICBkYXRhc291cmNlPzoge1xuICAgIGdldFJvd3MocGFyYW1zOiBEYXRvR3JpZEdldFJvd3NQYXJhbXMpOiB2b2lkO1xuICAgIC8vIG9wdGlvbmFsIGRlc3Ryb3kgbWV0aG9kLCBpZiB5b3VyIGRhdGFzb3VyY2UgaGFzIHN0YXRlIGl0IG5lZWRzIHRvIGNsZWFuIHVwXG4gICAgZGVzdHJveT8oKTogdm9pZDtcbiAgfTtcbiAgY3VzdG9tQ29udGV4dE1lbnU/KHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdKTogUm93QWN0aW9uW107XG4gIGhvdmVyQ29uZmlnPzogRGF0b0dyaWRPbkhvdmVyQ29uZmlnO1xuICBvdmVybGF5c0NvbmZpZz86IERhdG9HcmlkT3ZlcmxheUlucHV0O1xuICBkaXN0aW5jdFJlc3VsdHM/OiBib29sZWFuO1xuICBtYXhEZXB0aD86IG51bWJlcjtcbiAgZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0PzogYm9vbGVhbjtcbiAgY29sdW1uc0luY2x1ZGVkSW5TZWFyY2hCeURlZmF1bHQ/OiBib29sZWFuO1xuICBzZWFyY2hEZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIGluY2x1ZGVIaWRkZW5Db2x1bW5zSW5TZWFyY2g/OiBib29sZWFuO1xuICBzaG93TXVsdGlTZWxlY3Rpb25DaGVja2JveGVzPzogYm9vbGVhbjtcbiAgZW5hYmxlQWxsUGFnZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpZENvbHVtbktleT86IHN0cmluZztcbiAgZW5hYmxlQmFja2dyb3VuZD86IGJvb2xlYW47XG4gIHNob3dCb3R0b21Db250cm9scz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51SXRlbSA9IHN0cmluZyB8IE1lbnVJdGVtRGVmO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnZlcnRlclBhcmFtcyB7XG4gIG5vZGU6IFJvd05vZGU7XG4gIHRvb2xiYXJBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgc2VsZWN0ZWRSb3dzOiBSb3dOb2RlW107XG4gIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5O1xuICBsb2dnZXI/OiB7XG4gICAgbG9nKGV2ZW50VHlwZTogQ29yZUV2ZW50VHlwZXMuR1JJRF9UQUJMRV9BQ1RJT04sIGV2ZW50UHJvcGVydGllcz86IEhhc2hNYXA8YW55Pik6IHZvaWQ7XG4gICAgZXZlbnRPcmlnaW4/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0ID0ge1xuICBjb2xJZDogc3RyaW5nO1xuICBzb3J0OiBEYXRvR3JpZFNvcnREaXJlY3Rpb247XG4gIGZpZWxkPzogc3RyaW5nO1xuICBzb3J0SW5kZXg/OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNlcnZlclNvcnQgPSB7IGNvbHVtbjogc3RyaW5nOyBzb3J0T3JkZXI6IERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiB9O1xuXG5leHBvcnQgY29uc3QgZW51bSBEYXRvR3JpZEFsaWdubWVudCB7XG4gIEZJVF9UT19DT05UQUlORVIsXG4gIEZJVF9UT19DT05URU5ULFxuICBDVVNUT01cbn1cblxuZXhwb3J0IGVudW0gR3JpZE1pbldpZHRocyB7XG4gIERlZmF1bHQgPSAxMDcsXG4gIFdpdGhfSW5mbyA9IDEzMVxufVxuXG5leHBvcnQgZW51bSBEYXRvR3JpZENvbHVtblR5cGVzIHtcbiAgU3RyaW5nID0gJ1N0cmluZycsXG4gIE51bWJlciA9ICdOdW1iZXInLFxuICBEYXRlID0gJ0RhdGUnLFxuICBTdGF0dXMgPSAnU3RhdHVzJyxcbiAgSXRlbXMgPSAnSXRlbXMnLFxuICBJdGVtc0NvdW50ID0gJ0l0ZW1zQ291bnQnLFxuICBJbml0aWFscyA9ICdJbml0aWFscycsXG4gIEF2YXRhciA9ICdBdmF0YXInXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWRUcmVlQ29uZmlnIHtcbiAgaWRLZXk6IHN0cmluZztcbiAgcGFyZW50SURLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQWdHcmlkUm93SWNvbiA9XG4gIHwgc3RyaW5nXG4gIHwge1xuICAgICAgZXhwYW5kZWQ6IHN0cmluZztcbiAgICAgIGNvbGxhcHNlZDogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBlbnVtIEdyaWRSb3dTZWxlY3Rpb25UeXBlIHtcbiAgU0lOR0xFID0gJ3NpbmdsZScsXG4gIE1VTFRJUExFID0gJ211bHRpcGxlJ1xufVxuXG5leHBvcnQgdHlwZSBHcmlkUm93c1NlbGVjdGlvbkRhdGEgPSB7XG4gIHRvdGFsUm93c0NvdW50OiBudW1iZXI7XG4gIHNlbGVjdGVkUm93c0NvdW50OiBudW1iZXI7XG4gIHNlbGVjdGVkUGFnZVJvd3NDb3VudDogbnVtYmVyO1xuICBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkQ2hhbmdlRXZlbnQgPSB7XG4gIHR5cGU6IHN0cmluZztcbiAgZGF0YTogUm93Tm9kZVtdO1xuICBmaWx0ZXI6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXTtcbiAgc29ydDogRGF0b0dyaWRTb3J0O1xufTtcbiJdfQ==
@@ -187,8 +187,12 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
187
187
  const settingsDiff = this.gridService.getSettingsDiff();
188
188
  this.gridService.updateSettings(settingsDiff);
189
189
  const data = this.getGridData();
190
- this.onGridChange.emit(Object.assign(Object.assign({}, settingsDiff), { filter: this.gridQuery.getExternalFilter(), type,
191
- data }));
190
+ this.onGridChange.emit({
191
+ filter: this.gridQuery.getExternalFilter(),
192
+ sort: this.gridQuery.getSort(),
193
+ type,
194
+ data
195
+ });
192
196
  });
193
197
  }
194
198
  listenToStoreSettingsChanges() {
@@ -466,4 +470,4 @@ DatoGridControllerComponent = __decorate([
466
470
  DatoHotkeys, Object])
467
471
  ], DatoGridControllerComponent);
468
472
  export { DatoGridControllerComponent };
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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RUFBRTs7OzhEQVlQO0FBcEJVLDJCQUEyQjtJQVR2QyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLFFBQVEsRUFBRTs7R0FFVDtRQUVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDOztLQUMvQyxDQUFDO0lBb0RHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7cUNBVFYsV0FBVztRQUNiLFNBQVM7UUFDZCxpQkFBaUI7UUFDUixZQUFZO1FBQ2Ysb0JBQW9CO1FBQ3pCLFVBQVU7UUFDTixRQUFRO1FBQ1Isd0JBQXdCO1FBQ3pCLFdBQVc7R0FsRG5CLDJCQUEyQixDQStldkM7U0EvZVksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBFTVBUWSwgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtcbiAgQm9keVNjcm9sbEV2ZW50LFxuICBDZWxsQ2xpY2tlZEV2ZW50LFxuICBDZWxsRXZlbnQsXG4gIENlbGxNb3VzZU91dEV2ZW50LFxuICBDb2x1bW5SZXNpemVkRXZlbnQsXG4gIENvbHVtblJvd0dyb3VwQ2hhbmdlZEV2ZW50LFxuICBEZXRhaWxHcmlkSW5mbyxcbiAgR3JpZEFwaSxcbiAgUm93R3JvdXBPcGVuZWRFdmVudFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRDb2x1bW5zU2l6ZXMgfSBmcm9tICcuLi9ncmlkLXN0b3JlL3V0aWwnO1xuaW1wb3J0IHsgR3JpZFN0b3JlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnN0b3JlJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuL2dyaWQtY29udHJvbGxlci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFsaWdubWVudCwgRGF0b0dyaWRPcHRpb25zLCBEYXRvR3JpZFNvcnQsIEdyaWRDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBJY29uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pY29uLXJlZ2lzdHJ5JztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2RlZXAtbWVyZ2UnO1xuaW1wb3J0IHsgRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jdXN0b20taGVhZGVyL2N1c3RvbS1oZWFkZXItdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBHcmlkQWN0aW9uLCBSb3dBY3Rpb24gfSBmcm9tICcuLi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLnR5cGVzJztcbmltcG9ydCB7IERhdG9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgREFUT19HUklEX1NUT1JBR0VfQVBJLCBHcmlkU3RvcmFnZUFQSSB9IGZyb20gJy4uL2dyaWQtc2V0dGluZ3MnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgc2tpcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBhZGRDbGFzcywgYXBwZW5kQ2hpbGQsIHF1ZXJ5IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICd0b29sdGlwLmpzJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBjcmVhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hbmd1bGFyL2R5bmFtaWMtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLW9uLWhvdmVyL2dyaWQtb24taG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGNvbnZlcnRGcm9tVHJlZURhdGEsIGRlZmF1bHRHcmlkT3B0aW9ucywgZGVmYXVsdFRyZWVPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLmNvbmZpZyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcbmltcG9ydCB7IERhdG9Ib3RrZXlzIH0gZnJvbSAnLi4vLi4vaG90a2V5cy9ob3RrZXlzLnNlcnZpY2UnO1xuaW1wb3J0IERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuaW1wb3J0IHsgRGF0b0dyaWRFeHRlcm5hbEZpbHRlciB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLWNvbnRyb2xsZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtHcmlkUXVlcnksIEdyaWRTZXJ2aWNlLCBHcmlkU3RvcmVdXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50KSBjdXN0b21IZWFkZXJzVGVtcGxhdGVzOiBRdWVyeUxpc3Q8XG4gICAgRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50XG4gID47XG5cbiAgQE91dHB1dCgpIG9uR3JpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R3JpZENoYW5nZUV2ZW50PigpO1xuICBASW5wdXQoKSByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBncmlkQWN0aW9uczogR3JpZEFjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIHNldCBncmlkT3B0aW9ucyhncmlkT3B0aW9uczogRGF0b0dyaWRPcHRpb25zKSB7XG4gICAgdGhpcy5fZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnRyZWVEYXRhID0gZ3JpZE9wdGlvbnMudHJlZURhdGE7XG4gICAgdGhpcy5ncmlkU2VydmljZS5pc1Bpdm90TW9kZSA9IGdyaWRPcHRpb25zLnBpdm90TW9kZTtcblxuICAgIGlmICh0aGlzLmFnR3JpZEVsKSB7XG4gICAgICBpZiAoZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgICAgIXRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMudHJlZUdyaWRDbGFzcykgJiYgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9IGVsc2UgaWYgKCFncmlkT3B0aW9ucy5lbmFibGVWMl8xKSB7XG4gICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCh0aGlzLnRyZWVHcmlkQ2xhc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBncmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZE9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNvbnRlbnRJbml0ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSB0b29sdGlwO1xuICBwcml2YXRlIF9ncmlkT3B0aW9uczogRGF0b0dyaWRPcHRpb25zO1xuICBncmlkUmVhZHkkID0gdGhpcy5ncmlkUXVlcnkuZ3JpZFJlYWR5JDtcbiAgYWdHcmlkRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgcm93SG92ZXJDb21wb25lbnQ6IENvbXBvbmVudFJlZjxEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQ+O1xuICBwcml2YXRlIGxhc3RIb3ZlcmVkUm93OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBncmlkRWxlbWVudHMgPSB7XG4gICAgY2VudGVyVmlld3BvcnQ6IG51bGwsXG4gICAgY2VudGVyQ29udGFpbmVyOiBudWxsLFxuICAgIGJvZHlWaWV3cG9ydDogbnVsbFxuICB9O1xuICBwcml2YXRlIHJlYWRvbmx5IHRyZWVHcmlkQ2xhc3MgPSAndHJlZSc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZFF1ZXJ5OiBHcmlkUXVlcnksXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBob3RrZXlzOiBEYXRvSG90a2V5cyxcbiAgICBASW5qZWN0KERBVE9fR1JJRF9TVE9SQUdFX0FQSSkgcHJpdmF0ZSBzdG9yYWdlQVBJOiBHcmlkU3RvcmFnZUFQSVxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jb250ZW50SW5pdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMudG9vbHRpcCAmJiB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgJiYgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5jb250ZW50SW5pdC5uZXh0KCk7XG4gICAgdGhpcy5jb250ZW50SW5pdC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIF9pbml0aWFsaXplR3JpZChhZ0dyaWQ6IEFnR3JpZE5nMiwgYWdHcmlkRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5hZ0dyaWRFbCA9IGFnR3JpZEVsO1xuICAgIHRoaXMuY29udGVudEluaXRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHRoaXMubm9ybWFsaXplT3B0aW9ucygpO1xuICAgICAgICAgIGFnR3JpZC5ncmlkT3B0aW9ucyA9IHRoaXMuZ3JpZE9wdGlvbnM7XG4gICAgICAgICAgY29uc3Qgc2V0dGluZ3NMb2FkZXIgPVxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zYXZlU2V0dGluZ3MgPT09IGZhbHNlID8gb2YobnVsbCkgOiB0aGlzLnN0b3JhZ2VBUEkuZ2V0KHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZE5hbWUpO1xuICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFthZ0dyaWQuZ3JpZFJlYWR5LCBzZXR0aW5nc0xvYWRlcl0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFt7IGFwaSwgY29sdW1uQXBpIH0sIHNhdmVkU2V0dGluZ3MgPSB7fV06IFtEZXRhaWxHcmlkSW5mbywgUGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPl0pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEpIHtcbiAgICAgICAgICBhcGkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnN0YXR1c0Jhcikge1xuICAgICAgICAgIC8qKiBGaXggYWctZ3JpZCBidWcgdGhhdCBkb2Vzbid0IGFkZCBhZy1oaWRkZW4gY2xhc3MgdG8gdGhlIHN0YXR1cyBiYXIsIHdoaWNoIG9ubHkgZ2V0IGZpeGVkIGluIGxhdGVyIHZlcnNpb25zICovXG4gICAgICAgICAgY29uc3QgZWwgPSBhZ0dyaWRFbC5xdWVyeVNlbGVjdG9yKCcuYWctc3RhdHVzLWJhcicpO1xuXG4gICAgICAgICAgYWRkQ2xhc3MoZWwsICdhZy1oaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmlkQXBpOiBEYXRvR3JpZEFwaSA9IHsgZ3JpZDogYXBpLCBjb2x1bW5zOiBjb2x1bW5BcGkgfTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcblxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmluaXRTZXR0aW5ncyhzYXZlZFNldHRpbmdzIHx8IHt9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclNldHRpbmdzTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9ncmlkUmVhZHkubmV4dCh0cnVlKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCgndHJlZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodCkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZChgcm93LWhlaWdodC0ke3RoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0fWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplT3B0aW9ucygpIHtcbiAgICAvKipcbiAgICAgKiBXaGVuIHRyZWVEYXRhIGlzIGVuYWJsZWQsIFBhZ2luYXRpb24gbXVzdCBiZSB0dXJuZWQgb2ZmXG4gICAgICovXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRoaXMuZ3JpZE9wdGlvbnMsXG4gICAgICAgIHBhZ2luYXRpb246IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBncmlkT3B0aW9uczogdGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IHRoaXMuY3VzdG9tSGVhZGVyc1RlbXBsYXRlcyxcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMucm93QWN0aW9uc1xuICAgIH07XG5cbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMuZ3JpZFNlcnZpY2Uubm9ybWFsaXplT3B0aW9ucyhwYXJhbXMpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgLi4uKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEgPyBkZWZhdWx0VHJlZU9wdGlvbnMgOiB7fSksXG4gICAgICBpY29uczogdGhpcy5nZXRHcmlkSWNvbnMoKVxuICAgIH07XG4gICAgcmV0dXJuIGRlZXBtZXJnZShkZWZhdWx0cywgbm9ybWFsaXplZCk7XG4gIH1cblxuICBzZXRHcmlkUm93czxUPihkYXRhOiBUW10pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldFJvd3M8VD4oZGF0YSk7XG4gIH1cblxuICBzZXRHcmlkRmlsdGVycyhmaWx0ZXJzOiBEYXRvR3JpZEV4dGVybmFsRmlsdGVyW10pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgc2V0R3JpZFNvcnQoc29ydDogRGF0b0dyaWRTb3J0KSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRHcmlkU29ydChzb3J0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZEljb25zKCk6IEhhc2hNYXA8c3RyaW5nPiB7XG4gICAgY29uc3QgbW92ZUNvbHVtbkljb24gPSBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggY29sdW1uLW1vdmVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICdtb3ZlLWNvbHVtbidcbiAgICApfTwvc3Bhbj5gO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cEV4cGFuZGVkOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBncm91cC1leHBhbmRlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBncm91cENvbnRyYWN0ZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWNvbnRyYWN0ZWQtaWNvblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnYXJyb3ctcmlnaHQnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZVBpbjogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IHByaW1hcnktMzAwLWZpbGwgY29sdW1uLW1vdmUtcGluXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdwaW4nXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZUhpZGU6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZS1oaWRlXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdleWUtaGlkZSdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlTW92ZTogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlTGVmdDogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlUmlnaHQ6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgcm93RHJhZzogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIGRyYWcgZC1mbGV4XCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoJ2RyYWctMDEnKX08L3NwYW4+YFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyU2V0dGluZ3NMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmxpc3RlblRvQ29sdW1uUmVzaXplKGFwaSwgYWdHcmlkKTtcbiAgICB0aGlzLmxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0NvbHVtblJlc2l6ZShhcGk6IERhdG9HcmlkQXBpLCB7IGNvbHVtblJlc2l6ZWQgfTogQWdHcmlkTmcyKSB7XG4gICAgbGV0IG9ic2VydmFibGUgPSBjb2x1bW5SZXNpemVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlT25Ib3ZlclBvcygpKVxuICAgICAgKTtcbiAgICB9XG4gICAgb2JzZXJ2YWJsZVxuICAgICAgLnBpcGUoXG4gICAgICAgIGF1ZGl0VGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKHsgZmluaXNoZWQsIHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IGZpbmlzaGVkICYmIHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgY29uc3QgW2NvbHVtbl0gPSBlLmNvbHVtbnM7XG4gICAgICAgIGxldCBjb2x1bW5zU2l6ZXMgPSB7IC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldENvbHVtblNpemVzKCkgfTtcbiAgICAgICAgaWYgKGNvbHVtbnNTaXplcykge1xuICAgICAgICAgIGNvbHVtbnNTaXplc1tjb2x1bW4uZ2V0Q29sSWQoKV0gPSBjb2x1bW4uZ2V0QWN0dWFsV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYXBpLmNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyh7IGdyaWRBbGlnbm1lbnQ6IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSwgY29sdW1uc1NpemVzIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IHsgY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCwgZmlsdGVyQ2hhbmdlZCB9ID0gYWdHcmlkO1xuICAgIG1lcmdlKGNvbHVtblZpc2libGUsIHNvcnRDaGFuZ2VkLCBjb2x1bW5Sb3dHcm91cENoYW5nZWQsIGNvbHVtblBpbm5lZCwgZHJhZ1N0b3BwZWQsIGZpbHRlckNoYW5nZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgLyogU2tpcCB0aGUgaW5pdGlhbCBzb3J0aW5nIGV2ZW50IGZpcmVkIGJ5IHRoZSBncmlkIHdoZW4gYWRkaW5nIHJvd3MgKi9cbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgdHlwZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlU2V0dGluZ3Moc2V0dGluZ3NEaWZmKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0R3JpZERhdGEoKTtcbiAgICAgICAgdGhpcy5vbkdyaWRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgLi4uc2V0dGluZ3NEaWZmLFxuICAgICAgICAgIGZpbHRlcjogdGhpcy5ncmlkUXVlcnkuZ2V0RXh0ZXJuYWxGaWx0ZXIoKSxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpIHtcbiAgICB0aGlzLmdyaWRRdWVyeVxuICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncylcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zYXZlU2V0dGluZ3NUb1NlcnZlcihzZXR0aW5nc0RpZmYpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZExpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMuZ3JpZEVsZW1lbnRzID0ge1xuICAgICAgY2VudGVyQ29udGFpbmVyOiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgY2VudGVyVmlld3BvcnQ6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGJvZHlWaWV3cG9ydDogcXVlcnkoJy5hZy1ib2R5LXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbClcbiAgICB9O1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGkuZ3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoYXBpKTtcbiAgICB0aGlzLnJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICAvKiBNYWtlIGdyb3VwIGV4cGFuZC9jb2xsYXBzZSBvbiBhIHNpbmdsZSBjbGljayBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGRvdWJsZSBjbGljayAqL1xuICAgIGFnR3JpZC5jb2x1bW5Sb3dHcm91cENoYW5nZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHsgY29sdW1ucyB9OiBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb2x1bW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBFTVBUWVxuICAgICAgICAgICAgOiBhZ0dyaWQuY2VsbENsaWNrZWQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHsgdmFsdWUsIG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBub2RlLmdyb3VwID09PSB0cnVlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgbm9kZSB9OiBDZWxsQ2xpY2tlZEV2ZW50KSA9PiB7XG4gICAgICAgIG5vZGUuc2V0RXhwYW5kZWQoIW5vZGUuZXhwYW5kZWQpO1xuICAgICAgfSk7XG4gICAgLyogV2hlbiBjbG9zaW5nIGEgZ3JvdXBlZCByb3cgd2Ugd2FudCB0byBoaWRlIHRoZSBvbiBob3ZlciBhY3Rpb25zICovXG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgYWdHcmlkLnJvd0dyb3VwT3BlbmVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoeyBub2RlIH06IFJvd0dyb3VwT3BlbmVkRXZlbnQpID0+IG5vZGUuZXhwYW5kZWQgPT09IGZhbHNlKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgY2xpY2sgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZ3JpZHMgYm9keSBhbmQgbm90IGEgcm93LCBjbGVhciB0aGUgcm93cyBzZWxlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGk6IEdyaWRBcGkpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyVmlld3BvcnQgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQudGFyZ2V0ID09PSBib2R5Vmlld3BvcnQgfHwgZXZlbnQudGFyZ2V0ID09PSBjZW50ZXJWaWV3cG9ydCkgJiYgYXBpLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiBhcGkuZGVzZWxlY3RBbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIG9uSG92ZXJFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLmVuYWJsZWQgJiYgdGhpcy5yb3dBY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgbGV0IGxhc3RIb3ZlcmVkQ2VsbDtcbiAgICBjb25zdCBvbkhvdmVyRW5hYmxlZCA9IHRoaXMub25Ib3ZlckVuYWJsZWQoKTtcbiAgICBpZiAob25Ib3ZlckVuYWJsZWQpIHtcbiAgICAgIGZyb21FdmVudChjZW50ZXJDb250YWluZXIsICdtb3VzZWxlYXZlJylcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyh0aGlzLmxhc3RIb3ZlcmVkUm93KTtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgbGFzdEhvdmVyZWRDZWxsID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICBtZXJnZShcbiAgICAgICAgYWdHcmlkLmJvZHlTY3JvbGwucGlwZShmaWx0ZXIoKHsgZGlyZWN0aW9uIH06IEJvZHlTY3JvbGxFdmVudCkgPT4gZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpKSxcbiAgICAgICAgYWdHcmlkLnJvd0RhdGFDaGFuZ2VkXG4gICAgICApXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmFkZE9uSG92ZXJFbGVtZW50KCk7XG4gICAgfVxuICAgIGFnR3JpZC5jZWxsTW91c2VPdmVyXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IG5vZGUsIGNvbHVtbiB9KSA9PiBsYXN0SG92ZXJlZENlbGwgIT09IGAke25vZGUuaWR9LSR7Y29sdW1uLmdldENvbElkKCl9YCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQ2VsbE1vdXNlT3V0RXZlbnQpID0+IHtcbiAgICAgICAgbGFzdEhvdmVyZWRDZWxsID0gYCR7ZXZlbnQubm9kZS5pZH0tJHtldmVudC5jb2x1bW4uZ2V0Q29sSWQoKX1gO1xuICAgICAgICB0aGlzLnNob3dUb29sdGlwKGV2ZW50KTtcbiAgICAgICAgY29uc3Qgcm93ID0gKGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKG9uSG92ZXJFbmFibGVkICYmIChldmVudC5ub2RlLmdyb3VwID09PSBmYWxzZSB8fCBpc05pbChldmVudC5ub2RlLmdyb3VwKSkgJiYgdGhpcy5sYXN0SG92ZXJlZFJvdyAhPT0gcm93KSB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gdGhpcy5sYXN0SG92ZXJlZFJvdztcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gcm93O1xuICAgICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyhbcHJldmlvdXNOb2RlLCB0aGlzLmxhc3RIb3ZlcmVkUm93XSk7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUodHJ1ZSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBvblRvb2x0aXBPdXQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdzY3JvbGwnKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLmFnR3JpZEVsLCAnbW91c2VsZWF2ZScpLFxuICAgICAgYWdHcmlkLmNlbGxNb3VzZU91dFxuICAgICk7XG4gICAgb25Ub29sdGlwT3V0XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICFpc05pbCh0aGlzLnRvb2x0aXApKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSB0aGUgdG9vbHRpcFxuICAgKi9cbiAgY2xlYXJUb29sdGlwKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbHRpcC5kaXNwb3NlKCk7XG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXAoZXZlbnQ6IENlbGxFdmVudCkge1xuICAgIGNvbnN0IGNlbGw6IEhUTUxFbGVtZW50ID0gZXZlbnQuZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHRleHRPdmVyZmxvdyA9IGNlbGwub2Zmc2V0V2lkdGggPCBjZWxsLnNjcm9sbFdpZHRoO1xuICAgIGlmICh0ZXh0T3ZlcmZsb3cpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY2VsbCwgdmFsdWU6IGNlbGwuaW5uZXJUZXh0IH07XG4gICAgICBpc05pbCh0aGlzLnRvb2x0aXApID8gdGhpcy5jcmVhdGVBbmRTaG93VG9vbHRpcChwYXJhbXMpIDogdGhpcy51cGRhdGVUb29sdGlwKHBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbmRTaG93VG9vbHRpcCh7IGNlbGwsIHZhbHVlIH0pIHtcbiAgICB0aGlzLnRvb2x0aXAgPSBuZXcgVG9vbHRpcChjZWxsLCB7XG4gICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5ib2R5LFxuICAgICAgdHJpZ2dlcjogJ21hbnVhbCcsXG4gICAgICB0aXRsZTogRE9NUHVyaWZ5LnNhbml0aXplKHZhbHVlKSxcbiAgICAgIGh0bWw6IHRydWUsXG4gICAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAgIG1vZGlmaWVyczoge1xuICAgICAgICAgIHByZXZlbnRPdmVyZmxvdzogeyBlbmFibGVkOiBmYWxzZSB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZTpcbiAgICAgICAgJzxkaXYgY2xhc3M9XCJ0b29sdGlwIGRhdG8tdG9vbHRpcCBjb21tb24tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+PGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwidG9vbHRpcC1pbm5lclwiPjwvZGl2PjwvZGl2PidcbiAgICB9KTtcblxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB0b29sdGlwIGVsZW1lbnQgcmVmIGFuZCBjb250ZW50XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXAoeyBjZWxsLCB2YWx1ZSB9KTogdm9pZCB7XG4gICAgaWYgKGNlbGwgIT09IHRoaXMudG9vbHRpcC5yZWZlcmVuY2UpIHtcbiAgICAgIHRoaXMudG9vbHRpcC5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnBvcHBlckluc3RhbmNlLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAudXBkYXRlVGl0bGVDb250ZW50KHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT25Ib3ZlckVsZW1lbnQoKSB7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudDxEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50LFxuICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG4gICAgICByZXNvbHZlcjogdGhpcy5yZXNvbHZlclxuICAgIH0pO1xuICAgIGNvbnN0IHsgaW5zdGFuY2UsIGhvc3RWaWV3IH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGluc3RhbmNlLmNvbmZpZyA9IHsgLi4udGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZywgYWN0aW9uczogdGhpcy5yb3dBY3Rpb25zLnNsaWNlKCkgfTtcbiAgICBob3N0Vmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5ncmlkRWxlbWVudHMuY2VudGVyQ29udGFpbmVyLCB0aGlzLnJvd0hvdmVyRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcm93SG92ZXJFbCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPbkhvdmVyU3RhdGUodmlzaWJsZTogYm9vbGVhbiwgZXZlbnQ/OiBDZWxsTW91c2VPdXRFdmVudCkge1xuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGluc3RhbmNlLnNob3coZXZlbnQpO1xuICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU9uSG92ZXJQb3MoKSB7XG4gICAgY29uc3QgeyBjZW50ZXJWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBjb25zdCB0YXJnZXQgPSBjZW50ZXJDb250YWluZXIuY2xpZW50V2lkdGggPiBjZW50ZXJWaWV3cG9ydC5jbGllbnRXaWR0aCA/IGNlbnRlclZpZXdwb3J0IDogY2VudGVyQ29udGFpbmVyO1xuICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIHNjcm9sbExlZnQgfSA9IHRhcmdldDtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50Lmluc3RhbmNlLnVwZGF0ZVNjcm9sbFBvcyhjbGllbnRXaWR0aCArIHNjcm9sbExlZnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVSb3dIb3ZlckNsYXNzKHJvd3M6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSkge1xuICAgIGNvZXJjZUFycmF5KHJvd3MpLmZvckVhY2gocm93ID0+IHJvdyAmJiByb3cuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aW9ucy1ob3ZlcmVkJykpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRLZXlib2FyZExpc3RlbmVyKHsgZ3JpZCwgY29sdW1ucyB9OiBEYXRvR3JpZEFwaSkge1xuICAgIHRoaXMuaG90a2V5c1xuICAgICAgLmFkZFNob3J0Y3V0KHtcbiAgICAgICAgZWxlbWVudDogdGhpcy5hZ0dyaWRFbCxcbiAgICAgICAga2V5czogJ21ldGEuYScsXG4gICAgICAgIGlnbm9yZUluRWRpdGFibGU6IHRydWVcbiAgICAgIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ICE9PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpdFRvID0gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCA9PT0gRGF0b0dyaWRBbGlnbm1lbnQuRklUX1RPX0NPTlRBSU5FUiA/ICdjb250YWluZXInIDogJ2NvbnRlbnQnO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmZpdEdyaWQoZml0VG8pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEdyaWREYXRhKCkge1xuICAgIGNvbnN0IGdyaWRNb2RlbCA9IHRoaXMuZ3JpZFNlcnZpY2UuYXBpLmdyaWQuZ2V0TW9kZWwoKSBhcyBhbnk7XG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgIGNvbnN0IGdyaWREYXRhID0gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXkubWFwKCh7IGRhdGEgfSkgPT4gZGF0YSk7XG4gICAgICByZXR1cm4gY29udmVydEZyb21UcmVlRGF0YShncmlkRGF0YSwgdGhpcy5ncmlkU2VydmljZS50cmVlQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCBldmVudHMkID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlXG4gICAgICA/IG1lcmdlKGFnR3JpZC5zb3J0Q2hhbmdlZCwgYWdHcmlkLmZpbHRlckNoYW5nZWQpXG4gICAgICA6IGFnR3JpZC5maWx0ZXJDaGFuZ2VkO1xuICAgIChldmVudHMkIGFzIE9ic2VydmFibGU8YW55PikucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZGVzZWxlY3RBbGxSb3dzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBpZiAoIXRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhZ0dyaWQucGFnaW5hdGlvbkNoYW5nZWQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKHRydWUsIHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
473
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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QjtBQUM3QjtJQUFSLEtBQUssRUFBRTs7Z0VBQWdDO0FBQy9CO0lBQVIsS0FBSyxFQUFFOzs7OERBWVA7QUFwQlUsMkJBQTJCO0lBVHZDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxzQkFBc0I7UUFDaEMsUUFBUSxFQUFFOztHQUVUO1FBRUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07UUFDL0MsU0FBUyxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUM7O0tBQy9DLENBQUM7SUFvREcsV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTtxQ0FUVixXQUFXO1FBQ2IsU0FBUztRQUNkLGlCQUFpQjtRQUNSLFlBQVk7UUFDZixvQkFBb0I7UUFDekIsVUFBVTtRQUNOLFFBQVE7UUFDUix3QkFBd0I7UUFDekIsV0FBVztHQWxEbkIsMkJBQTJCLENBMmV2QztTQTNlWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWdHcmlkTmcyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1xuICBCb2R5U2Nyb2xsRXZlbnQsXG4gIENlbGxDbGlja2VkRXZlbnQsXG4gIENlbGxFdmVudCxcbiAgQ2VsbE1vdXNlT3V0RXZlbnQsXG4gIENvbHVtblJlc2l6ZWRFdmVudCxcbiAgQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQsXG4gIERldGFpbEdyaWRJbmZvLFxuICBHcmlkQXBpLFxuICBSb3dHcm91cE9wZW5lZEV2ZW50XG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENvbHVtbnNTaXplcyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvdXRpbCc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4vZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQWxpZ25tZW50LCBEYXRvR3JpZE9wdGlvbnMsIERhdG9HcmlkU29ydCwgR3JpZENoYW5nZUV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IEljb25SZWdpc3RyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ljb24tcmVnaXN0cnknO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvZGVlcC1tZXJnZSc7XG5pbXBvcnQgeyBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWN1c3RvbS1oZWFkZXIvY3VzdG9tLWhlYWRlci10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IEdyaWRBY3Rpb24sIFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBEQVRPX0dSSURfU1RPUkFHRV9BUEksIEdyaWRTdG9yYWdlQVBJIH0gZnJvbSAnLi4vZ3JpZC1zZXR0aW5ncyc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBza2lwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFkZENsYXNzLCBhcHBlbmRDaGlsZCwgcXVlcnkgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ3Rvb2x0aXAuanMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvZHluYW1pYy1jb21wb25lbnRzJztcbmltcG9ydCB7IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udmVydEZyb21UcmVlRGF0YSwgZGVmYXVsdEdyaWRPcHRpb25zLCBkZWZhdWx0VHJlZU9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIuY29uZmlnJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0b0hvdGtleXMgfSBmcm9tICcuLi8uLi9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5pbXBvcnQgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtY29udHJvbGxlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWNvbnRyb2xsZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0dyaWRRdWVyeSwgR3JpZFNlcnZpY2UsIEdyaWRTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQpIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxcbiAgICBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnRcbiAgPjtcblxuICBAT3V0cHV0KCkgb25HcmlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHcmlkQ2hhbmdlRXZlbnQ+KCk7XG4gIEBJbnB1dCgpIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGdyaWRBY3Rpb25zOiBHcmlkQWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgc2V0IGdyaWRPcHRpb25zKGdyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnMpIHtcbiAgICB0aGlzLl9ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudHJlZURhdGEgPSBncmlkT3B0aW9ucy50cmVlRGF0YTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmlzUGl2b3RNb2RlID0gZ3JpZE9wdGlvbnMucGl2b3RNb2RlO1xuXG4gICAgaWYgKHRoaXMuYWdHcmlkRWwpIHtcbiAgICAgIGlmIChncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAhdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy50cmVlR3JpZENsYXNzKSAmJiB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAoIWdyaWRPcHRpb25zLmVuYWJsZVYyXzEpIHtcbiAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyaWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9ncmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY29udGVudEluaXQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHRvb2x0aXA7XG4gIHByaXZhdGUgX2dyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnM7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLmdyaWRRdWVyeS5ncmlkUmVhZHkkO1xuICBhZ0dyaWRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSByb3dIb3ZlckNvbXBvbmVudDogQ29tcG9uZW50UmVmPERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD47XG4gIHByaXZhdGUgbGFzdEhvdmVyZWRSb3c6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGdyaWRFbGVtZW50cyA9IHtcbiAgICBjZW50ZXJWaWV3cG9ydDogbnVsbCxcbiAgICBjZW50ZXJDb250YWluZXI6IG51bGwsXG4gICAgYm9keVZpZXdwb3J0OiBudWxsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJlZUdyaWRDbGFzcyA9ICd0cmVlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IEljb25SZWdpc3RyeSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGhvdGtleXM6IERhdG9Ib3RrZXlzLFxuICAgIEBJbmplY3QoREFUT19HUklEX1NUT1JBR0VfQVBJKSBwcml2YXRlIHN0b3JhZ2VBUEk6IEdyaWRTdG9yYWdlQVBJXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCAmJiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gbnVsbDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0Lm5leHQoKTtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgX2luaXRpYWxpemVHcmlkKGFnR3JpZDogQWdHcmlkTmcyLCBhZ0dyaWRFbDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLmFnR3JpZEVsID0gYWdHcmlkRWw7XG4gICAgdGhpcy5jb250ZW50SW5pdFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zID0gdGhpcy5ub3JtYWxpemVPcHRpb25zKCk7XG4gICAgICAgICAgYWdHcmlkLmdyaWRPcHRpb25zID0gdGhpcy5ncmlkT3B0aW9ucztcbiAgICAgICAgICBjb25zdCBzZXR0aW5nc0xvYWRlciA9XG4gICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNhdmVTZXR0aW5ncyA9PT0gZmFsc2UgPyBvZihudWxsKSA6IHRoaXMuc3RvcmFnZUFQSS5nZXQodGhpcy5ncmlkT3B0aW9ucy5ncmlkTmFtZSk7XG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2FnR3JpZC5ncmlkUmVhZHksIHNldHRpbmdzTG9hZGVyXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3sgYXBpLCBjb2x1bW5BcGkgfSwgc2F2ZWRTZXR0aW5ncyA9IHt9XTogW0RldGFpbEdyaWRJbmZvLCBQYXJ0aWFsPERhdG9HcmlkU2V0dGluZ3M+XSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSkge1xuICAgICAgICAgIGFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMuc3RhdHVzQmFyKSB7XG4gICAgICAgICAgLyoqIEZpeCBhZy1ncmlkIGJ1ZyB0aGF0IGRvZXNuJ3QgYWRkIGFnLWhpZGRlbiBjbGFzcyB0byB0aGUgc3RhdHVzIGJhciwgd2hpY2ggb25seSBnZXQgZml4ZWQgaW4gbGF0ZXIgdmVyc2lvbnMgKi9cbiAgICAgICAgICBjb25zdCBlbCA9IGFnR3JpZEVsLnF1ZXJ5U2VsZWN0b3IoJy5hZy1zdGF0dXMtYmFyJyk7XG5cbiAgICAgICAgICBhZGRDbGFzcyhlbCwgJ2FnLWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyaWRBcGk6IERhdG9HcmlkQXBpID0geyBncmlkOiBhcGksIGNvbHVtbnM6IGNvbHVtbkFwaSB9O1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5ncmlkUXVlcnkuX3NldEFwaShncmlkQXBpLCBhZ0dyaWQpO1xuXG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuaW5pdFNldHRpbmdzKHNhdmVkU2V0dGluZ3MgfHwge30pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU2V0dGluZ3NMaXN0ZW5lcnMoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckdyaWRMaXN0ZW5lcnMoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50c1RyaWdnZXJpbmdDbGVhclNlbGVjdGVkUm93cyhhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5ncmlkUXVlcnkuX2dyaWRSZWFkeS5uZXh0KHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKCd0cmVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKGByb3ctaGVpZ2h0LSR7dGhpcy5ncmlkT3B0aW9ucy5yb3dIZWlnaHR9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVPcHRpb25zKCkge1xuICAgIC8qKlxuICAgICAqIFdoZW4gdHJlZURhdGEgaXMgZW5hYmxlZCwgUGFnaW5hdGlvbiBtdXN0IGJlIHR1cm5lZCBvZmZcbiAgICAgKi9cbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgICAgcGFnaW5hdGlvbjogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGdyaWRPcHRpb25zOiB0aGlzLmdyaWRPcHRpb25zLFxuICAgICAgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogdGhpcy5jdXN0b21IZWFkZXJzVGVtcGxhdGVzLFxuICAgICAgcm93QWN0aW9uczogdGhpcy5yb3dBY3Rpb25zXG4gICAgfTtcblxuICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ncmlkU2VydmljZS5ub3JtYWxpemVPcHRpb25zKHBhcmFtcyk7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMsXG4gICAgICAuLi4odGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSA/IGRlZmF1bHRUcmVlT3B0aW9ucyA6IHt9KSxcbiAgICAgIGljb25zOiB0aGlzLmdldEdyaWRJY29ucygpXG4gICAgfTtcbiAgICByZXR1cm4gZGVlcG1lcmdlKGRlZmF1bHRzLCBub3JtYWxpemVkKTtcbiAgfVxuXG4gIHNldEdyaWRSb3dzPFQ+KGRhdGE6IFRbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0Um93czxUPihkYXRhKTtcbiAgfVxuXG4gIHNldEdyaWRGaWx0ZXJzKGZpbHRlcnM6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0R3JpZEZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRHcmlkU29ydChzb3J0OiBEYXRvR3JpZFNvcnQpIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRTb3J0KHNvcnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkSWNvbnMoKTogSGFzaE1hcDxzdHJpbmc+IHtcbiAgICBjb25zdCBtb3ZlQ29sdW1uSWNvbiA9IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgJ21vdmUtY29sdW1uJ1xuICAgICl9PC9zcGFuPmA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwRXhwYW5kZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWV4cGFuZGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGdyb3VwQ29udHJhY3RlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtY29udHJhY3RlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlUGluOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggcHJpbWFyeS0zMDAtZmlsbCBjb2x1bW4tbW92ZS1waW5cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ3BpbidcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlSGlkZTogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlLWhpZGVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2V5ZS1oaWRlJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVNb3ZlOiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVMZWZ0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVSaWdodDogbW92ZUNvbHVtbkljb24sXG4gICAgICByb3dEcmFnOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gZHJhZyBkLWZsZXhcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZygnZHJhZy0wMScpfTwvc3Bhbj5gXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMubGlzdGVuVG9Db2x1bW5SZXNpemUoYXBpLCBhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZCk7XG4gICAgdGhpcy5saXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvQ29sdW1uUmVzaXplKGFwaTogRGF0b0dyaWRBcGksIHsgY29sdW1uUmVzaXplZCB9OiBBZ0dyaWROZzIpIHtcbiAgICBsZXQgb2JzZXJ2YWJsZSA9IGNvbHVtblJlc2l6ZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVPbkhvdmVyUG9zKCkpXG4gICAgICApO1xuICAgIH1cbiAgICBvYnNlcnZhYmxlXG4gICAgICAucGlwZShcbiAgICAgICAgYXVkaXRUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoeyBmaW5pc2hlZCwgc291cmNlIH06IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gZmluaXNoZWQgJiYgc291cmNlID09PSAndWlDb2x1bW5EcmFnZ2VkJyksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1uXSA9IGUuY29sdW1ucztcbiAgICAgICAgbGV0IGNvbHVtbnNTaXplcyA9IHsgLi4udGhpcy5ncmlkUXVlcnkuZ2V0Q29sdW1uU2l6ZXMoKSB9O1xuICAgICAgICBpZiAoY29sdW1uc1NpemVzKSB7XG4gICAgICAgICAgY29sdW1uc1NpemVzW2NvbHVtbi5nZXRDb2xJZCgpXSA9IGNvbHVtbi5nZXRBY3R1YWxXaWR0aCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhcGkuY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnVwZGF0ZVNldHRpbmdzKHsgZ3JpZEFsaWdubWVudDogRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NLCBjb2x1bW5zU2l6ZXMgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkLCBmaWx0ZXJDaGFuZ2VkIH0gPSBhZ0dyaWQ7XG4gICAgbWVyZ2UoY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCwgZmlsdGVyQ2hhbmdlZClcbiAgICAgIC5waXBlKFxuICAgICAgICAvKiBTa2lwIHRoZSBpbml0aWFsIHNvcnRpbmcgZXZlbnQgZmlyZWQgYnkgdGhlIGdyaWQgd2hlbiBhZGRpbmcgcm93cyAqL1xuICAgICAgICBza2lwKDEpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyB0eXBlIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyhzZXR0aW5nc0RpZmYpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcmlkRGF0YSgpO1xuICAgICAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KHtcbiAgICAgICAgICBmaWx0ZXI6IHRoaXMuZ3JpZFF1ZXJ5LmdldEV4dGVybmFsRmlsdGVyKCksXG4gICAgICAgICAgc29ydDogdGhpcy5ncmlkUXVlcnkuZ2V0U29ydCgpLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzKVxuICAgICAgLnBpcGUoc2tpcCgxKSwgZGVib3VuY2VUaW1lKDEwMDApLCB1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0RpZmYgPSB0aGlzLmdyaWRTZXJ2aWNlLmdldFNldHRpbmdzRGlmZigpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVTZXR0aW5nc1RvU2VydmVyKHNldHRpbmdzRGlmZik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGFwaTogRGF0b0dyaWRBcGksIGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgdGhpcy5ncmlkRWxlbWVudHMgPSB7XG4gICAgICBjZW50ZXJDb250YWluZXI6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtY29udGFpbmVyJywgdGhpcy5hZ0dyaWRFbCksXG4gICAgICBjZW50ZXJWaWV3cG9ydDogcXVlcnkoJy5hZy1jZW50ZXItY29scy12aWV3cG9ydCcsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgYm9keVZpZXdwb3J0OiBxdWVyeSgnLmFnLWJvZHktdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKVxuICAgIH07XG4gICAgdGhpcy5yZWdpc3RlckdyaWRDbGlja0xpc3RlbmVyKGFwaS5ncmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEdyb3VwTGlzdGVuZXJzKGFnR3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkS2V5Ym9hcmRMaXN0ZW5lcihhcGkpO1xuICAgIHRoaXMucmVnaXN0ZXJXaW5kb3dSZXNpemVMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIC8qIE1ha2UgZ3JvdXAgZXhwYW5kL2NvbGxhcHNlIG9uIGEgc2luZ2xlIGNsaWNrIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgZG91YmxlIGNsaWNrICovXG4gICAgYWdHcmlkLmNvbHVtblJvd0dyb3VwQ2hhbmdlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeyBjb2x1bW5zIH06IENvbHVtblJvd0dyb3VwQ2hhbmdlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbHVtbnMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IEVNUFRZXG4gICAgICAgICAgICA6IGFnR3JpZC5jZWxsQ2xpY2tlZC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoeyB2YWx1ZSwgbm9kZSB9OiBDZWxsQ2xpY2tlZEV2ZW50KSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5vZGUuZ3JvdXAgPT09IHRydWUpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBub2RlIH06IENlbGxDbGlja2VkRXZlbnQpID0+IHtcbiAgICAgICAgbm9kZS5zZXRFeHBhbmRlZCghbm9kZS5leHBhbmRlZCk7XG4gICAgICB9KTtcbiAgICAvKiBXaGVuIGNsb3NpbmcgYSBncm91cGVkIHJvdyB3ZSB3YW50IHRvIGhpZGUgdGhlIG9uIGhvdmVyIGFjdGlvbnMgKi9cbiAgICBpZiAodGhpcy5vbkhvdmVyRW5hYmxlZCgpKSB7XG4gICAgICBhZ0dyaWQucm93R3JvdXBPcGVuZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCh7IG5vZGUgfTogUm93R3JvdXBPcGVuZWRFdmVudCkgPT4gbm9kZS5leHBhbmRlZCA9PT0gZmFsc2UpLFxuICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBjbGljayB3YXMgcGVyZm9ybWVkIG9uIHRoZSBncmlkcyBib2R5IGFuZCBub3QgYSByb3csIGNsZWFyIHRoZSByb3dzIHNlbGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRDbGlja0xpc3RlbmVyKGFwaTogR3JpZEFwaSkge1xuICAgIGNvbnN0IHsgYm9keVZpZXdwb3J0LCBjZW50ZXJWaWV3cG9ydCB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgZnJvbUV2ZW50KGJvZHlWaWV3cG9ydCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChldmVudC50YXJnZXQgPT09IGJvZHlWaWV3cG9ydCB8fCBldmVudC50YXJnZXQgPT09IGNlbnRlclZpZXdwb3J0KSAmJiBhcGkuZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoID4gMDtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IGFwaS5kZXNlbGVjdEFsbCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Ib3ZlckVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMuaG92ZXJDb25maWcuZW5hYmxlZCAmJiB0aGlzLnJvd0FjdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBsZXQgbGFzdEhvdmVyZWRDZWxsO1xuICAgIGNvbnN0IG9uSG92ZXJFbmFibGVkID0gdGhpcy5vbkhvdmVyRW5hYmxlZCgpO1xuICAgIGlmIChvbkhvdmVyRW5hYmxlZCkge1xuICAgICAgZnJvbUV2ZW50KGNlbnRlckNvbnRhaW5lciwgJ21vdXNlbGVhdmUnKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKHRoaXMubGFzdEhvdmVyZWRSb3cpO1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgICBsYXN0SG92ZXJlZENlbGwgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgIG1lcmdlKFxuICAgICAgICBhZ0dyaWQuYm9keVNjcm9sbC5waXBlKGZpbHRlcigoeyBkaXJlY3Rpb24gfTogQm9keVNjcm9sbEV2ZW50KSA9PiBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykpLFxuICAgICAgICBhZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIClcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuYWRkT25Ib3ZlckVsZW1lbnQoKTtcbiAgICB9XG4gICAgYWdHcmlkLmNlbGxNb3VzZU92ZXJcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgbm9kZSwgY29sdW1uIH0pID0+IGxhc3RIb3ZlcmVkQ2VsbCAhPT0gYCR7bm9kZS5pZH0tJHtjb2x1bW4uZ2V0Q29sSWQoKX1gKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDZWxsTW91c2VPdXRFdmVudCkgPT4ge1xuICAgICAgICBsYXN0SG92ZXJlZENlbGwgPSBgJHtldmVudC5ub2RlLmlkfS0ke2V2ZW50LmNvbHVtbi5nZXRDb2xJZCgpfWA7XG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZXZlbnQpO1xuICAgICAgICBjb25zdCByb3cgPSAoZXZlbnQuZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAob25Ib3ZlckVuYWJsZWQgJiYgKGV2ZW50Lm5vZGUuZ3JvdXAgPT09IGZhbHNlIHx8IGlzTmlsKGV2ZW50Lm5vZGUuZ3JvdXApKSAmJiB0aGlzLmxhc3RIb3ZlcmVkUm93ICE9PSByb3cpIHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c05vZGUgPSB0aGlzLmxhc3RIb3ZlcmVkUm93O1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSByb3c7XG4gICAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKFtwcmV2aW91c05vZGUsIHRoaXMubGFzdEhvdmVyZWRSb3ddKTtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZSh0cnVlLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGNvbnN0IG9uVG9vbHRpcE91dCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KGJvZHlWaWV3cG9ydCwgJ3Njcm9sbCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuYWdHcmlkRWwsICdtb3VzZWxlYXZlJyksXG4gICAgICBhZ0dyaWQuY2VsbE1vdXNlT3V0XG4gICAgKTtcbiAgICBvblRvb2x0aXBPdXRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gIWlzTmlsKHRoaXMudG9vbHRpcCkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwb3NlIHRoZSB0b29sdGlwXG4gICAqL1xuICBjbGVhclRvb2x0aXAoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwLmRpc3Bvc2UoKTtcbiAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93VG9vbHRpcChldmVudDogQ2VsbEV2ZW50KSB7XG4gICAgY29uc3QgY2VsbDogSFRNTEVsZW1lbnQgPSBldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dE92ZXJmbG93ID0gY2VsbC5vZmZzZXRXaWR0aCA8IGNlbGwuc2Nyb2xsV2lkdGg7XG4gICAgaWYgKHRleHRPdmVyZmxvdykge1xuICAgICAgY29uc3QgcGFyYW1zID0geyBjZWxsLCB2YWx1ZTogY2VsbC5pbm5lclRleHQgfTtcbiAgICAgIGlzTmlsKHRoaXMudG9vbHRpcCkgPyB0aGlzLmNyZWF0ZUFuZFNob3dUb29sdGlwKHBhcmFtcykgOiB0aGlzLnVwZGF0ZVRvb2x0aXAocGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFuZFNob3dUb29sdGlwKHsgY2VsbCwgdmFsdWUgfSkge1xuICAgIHRoaXMudG9vbHRpcCA9IG5ldyBUb29sdGlwKGNlbGwsIHtcbiAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICBjb250YWluZXI6IGRvY3VtZW50LmJvZHksXG4gICAgICB0cmlnZ2VyOiAnbWFudWFsJyxcbiAgICAgIHRpdGxlOiBET01QdXJpZnkuc2FuaXRpemUodmFsdWUpLFxuICAgICAgaHRtbDogdHJ1ZSxcbiAgICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgcHJldmVudE92ZXJmbG93OiB7IGVuYWJsZWQ6IGZhbHNlIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlOlxuICAgICAgICAnPGRpdiBjbGFzcz1cInRvb2x0aXAgZGF0by10b29sdGlwIGNvbW1vbi10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+PC9kaXY+J1xuICAgIH0pO1xuXG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHRvb2x0aXAgZWxlbWVudCByZWYgYW5kIGNvbnRlbnRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcCh7IGNlbGwsIHZhbHVlIH0pOiB2b2lkIHtcbiAgICBpZiAoY2VsbCAhPT0gdGhpcy50b29sdGlwLnJlZmVyZW5jZSkge1xuICAgICAgdGhpcy50b29sdGlwLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAucG9wcGVySW5zdGFuY2UucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC51cGRhdGVUaXRsZUNvbnRlbnQodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRPbkhvdmVyRWxlbWVudCgpIHtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50PERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD4oe1xuICAgICAgY29tcG9uZW50OiBEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQsXG4gICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgIHJlc29sdmVyOiB0aGlzLnJlc29sdmVyXG4gICAgfSk7XG4gICAgY29uc3QgeyBpbnN0YW5jZSwgaG9zdFZpZXcgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaW5zdGFuY2UuY29uZmlnID0geyAuLi50aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLCBhY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnMuc2xpY2UoKSB9O1xuICAgIGhvc3RWaWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmdyaWRFbGVtZW50cy5jZW50ZXJDb250YWluZXIsIHRoaXMucm93SG92ZXJFbCk7XG4gIH1cblxuICBwcml2YXRlIGdldCByb3dIb3ZlckVsKCkge1xuICAgIHJldHVybiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNldE9uSG92ZXJTdGF0ZSh2aXNpYmxlOiBib29sZWFuLCBldmVudD86IENlbGxNb3VzZU91dEV2ZW50KSB7XG4gICAgY29uc3QgeyBpbnN0YW5jZSB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgaW5zdGFuY2Uuc2hvdyhldmVudCk7XG4gICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT25Ib3ZlclBvcygpIHtcbiAgICBjb25zdCB7IGNlbnRlclZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGNvbnN0IHRhcmdldCA9IGNlbnRlckNvbnRhaW5lci5jbGllbnRXaWR0aCA+IGNlbnRlclZpZXdwb3J0LmNsaWVudFdpZHRoID8gY2VudGVyVmlld3BvcnQgOiBjZW50ZXJDb250YWluZXI7XG4gICAgY29uc3QgeyBjbGllbnRXaWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGFyZ2V0O1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQuaW5zdGFuY2UudXBkYXRlU2Nyb2xsUG9zKGNsaWVudFdpZHRoICsgc2Nyb2xsTGVmdCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVJvd0hvdmVyQ2xhc3Mocm93czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKSB7XG4gICAgY29lcmNlQXJyYXkocm93cykuZm9yRWFjaChyb3cgPT4gcm93ICYmIHJvdy5jbGFzc0xpc3QudG9nZ2xlKCdhY3Rpb25zLWhvdmVyZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoeyBncmlkLCBjb2x1bW5zIH06IERhdG9HcmlkQXBpKSB7XG4gICAgdGhpcy5ob3RrZXlzXG4gICAgICAuYWRkU2hvcnRjdXQoe1xuICAgICAgICBlbGVtZW50OiB0aGlzLmFnR3JpZEVsLFxuICAgICAgICBrZXlzOiAnbWV0YS5hJyxcbiAgICAgICAgaWdub3JlSW5FZGl0YWJsZTogdHJ1ZVxuICAgICAgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJXaW5kb3dSZXNpemVMaXN0ZW5lcigpIHtcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgIT09IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZml0VG8gPSB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5GSVRfVE9fQ09OVEFJTkVSID8gJ2NvbnRhaW5lcicgOiAnY29udGVudCc7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZml0R3JpZChmaXRUbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZERhdGEoKSB7XG4gICAgY29uc3QgZ3JpZE1vZGVsID0gdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5nZXRNb2RlbCgpIGFzIGFueTtcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgY29uc3QgZ3JpZERhdGEgPSBncmlkTW9kZWwucm93c1RvRGlzcGxheS5tYXAoKHsgZGF0YSB9KSA9PiBkYXRhKTtcbiAgICAgIHJldHVybiBjb252ZXJ0RnJvbVRyZWVEYXRhKGdyaWREYXRhLCB0aGlzLmdyaWRTZXJ2aWNlLnRyZWVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckV2ZW50c1RyaWdnZXJpbmdDbGVhclNlbGVjdGVkUm93cyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IGV2ZW50cyQgPSB0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGVcbiAgICAgID8gbWVyZ2UoYWdHcmlkLnNvcnRDaGFuZ2VkLCBhZ0dyaWQuZmlsdGVyQ2hhbmdlZClcbiAgICAgIDogYWdHcmlkLmZpbHRlckNoYW5nZWQ7XG4gICAgKGV2ZW50cyQgYXMgT2JzZXJ2YWJsZTxhbnk+KS5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5kZXNlbGVjdEFsbFJvd3MoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJQYWdpbmF0aW9uQ2hhbmdlZChhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGlmICghdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFnR3JpZC5wYWdpbmF0aW9uQ2hhbmdlZC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zZWxlY3RBbGxDdXJyZW50UGFnZVJvd3ModHJ1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==