@datorama/core 22.0.4 → 22.0.6-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/bundle.scss +13 -13
  2. package/bundles/datorama-core.umd.js +234 -159
  3. package/bundles/datorama-core.umd.js.map +1 -1
  4. package/bundles/datorama-core.umd.min.js +24 -24
  5. package/bundles/datorama-core.umd.min.js.map +1 -1
  6. package/datorama-core.d.ts +1 -0
  7. package/datorama-core.metadata.json +1 -1
  8. package/esm2015/datorama-core.js +2 -1
  9. package/esm2015/lib/accordion/accordion/accordion.component.js +11 -3
  10. package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +4 -2
  11. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  12. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +11 -3
  13. package/esm2015/lib/grid-v2/grid-filter/filter-validator.js +3 -1
  14. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
  15. package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
  16. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  17. package/esm2015/lib/grid-v2/grid-store/grid.service.js +10 -2
  18. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +7 -1
  19. package/esm2015/lib/icon/icon.types.js +1 -1
  20. package/esm2015/lib/rich-text/rich-text.directive.js +15 -33
  21. package/esm2015/lib/rich-text/rich-text.service.js +50 -0
  22. package/esm2015/lib/select/select.component.js +16 -16
  23. package/esm2015/lib/sortable/sortable.component.js +7 -2
  24. package/esm2015/lib/version.js +2 -2
  25. package/esm5/datorama-core.js +2 -1
  26. package/esm5/lib/accordion/accordion/accordion.component.js +15 -3
  27. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +4 -2
  28. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  29. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +11 -3
  30. package/esm5/lib/grid-v2/grid-filter/filter-validator.js +3 -1
  31. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
  32. package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
  33. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  34. package/esm5/lib/grid-v2/grid-store/grid.service.js +10 -2
  35. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +13 -1
  36. package/esm5/lib/icon/icon.types.js +1 -1
  37. package/esm5/lib/rich-text/rich-text.directive.js +16 -34
  38. package/esm5/lib/rich-text/rich-text.service.js +51 -0
  39. package/esm5/lib/select/select.component.js +17 -16
  40. package/esm5/lib/sortable/sortable.component.js +7 -2
  41. package/esm5/lib/version.js +2 -2
  42. package/fesm2015/datorama-core.js +215 -153
  43. package/fesm2015/datorama-core.js.map +1 -1
  44. package/fesm5/datorama-core.js +234 -160
  45. package/fesm5/datorama-core.js.map +1 -1
  46. package/i18n/locale-en_US.json +2 -0
  47. package/lib/accordion/accordion/accordion.component.d.ts +4 -1
  48. package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -0
  49. package/lib/grid-v2/grid-filter/grid-filter.types.d.ts +3 -1
  50. package/lib/grid-v2/grid-settings.d.ts +2 -2
  51. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +2 -0
  52. package/lib/icon/icon.types.d.ts +1 -1
  53. package/lib/rich-text/rich-text.directive.d.ts +4 -6
  54. package/lib/rich-text/rich-text.service.d.ts +10 -0
  55. package/lib/select/select.component.d.ts +1 -0
  56. package/lib/sortable/sortable.component.d.ts +3 -1
  57. package/package.json +2 -2
@@ -6,7 +6,7 @@
6
6
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
7
7
  */
8
8
  import { __decorate, __metadata, __param, __read, __spread, __values } from "tslib";
9
- import { AfterContentInit, ChangeDetectorRef, Component, ContentChildren, Input, OnChanges, OnDestroy, Optional, QueryList, SkipSelf } from '@angular/core';
9
+ import { AfterContentInit, ChangeDetectorRef, Component, ContentChild, ContentChildren, Input, OnChanges, OnDestroy, Optional, QueryList, SkipSelf } from '@angular/core';
10
10
  import { DatoAccordionGroupComponent } from '../accordion-group/accordion-group.component';
11
11
  import { merge } from 'rxjs';
12
12
  import { mapTo } from 'rxjs/operators';
@@ -14,6 +14,7 @@ import { untilDestroyed } from 'ngx-take-until-destroy';
14
14
  import { toBoolean } from '../../utils/coercion';
15
15
  import { isNil } from '../../utils/validators';
16
16
  import { defaultClientSearchStrategy } from '../../select/search.strategy';
17
+ import { DatoSortableComponent } from '../../sortable/sortable.component';
17
18
  var DatoAccordionComponent = /** @class */ (function () {
18
19
  function DatoAccordionComponent(parent, parentGroup, cdr) {
19
20
  this.parent = parent;
@@ -52,6 +53,13 @@ var DatoAccordionComponent = /** @class */ (function () {
52
53
  enumerable: true,
53
54
  configurable: true
54
55
  });
56
+ Object.defineProperty(DatoAccordionComponent.prototype, "groups", {
57
+ get: function () {
58
+ return this.sortable && this.sortable.accordionGroups.length > 0 ? this.sortable.accordionGroups : this.childGroups;
59
+ },
60
+ enumerable: true,
61
+ configurable: true
62
+ });
55
63
  DatoAccordionComponent.prototype.ngOnChanges = function (changes) {
56
64
  var _this = this;
57
65
  if (changes.expandAll && !changes.expandAll.firstChange) {
@@ -269,11 +277,15 @@ var DatoAccordionComponent = /** @class */ (function () {
269
277
  __decorate([
270
278
  ContentChildren(DatoAccordionGroupComponent),
271
279
  __metadata("design:type", QueryList)
272
- ], DatoAccordionComponent.prototype, "groups", void 0);
280
+ ], DatoAccordionComponent.prototype, "childGroups", void 0);
273
281
  __decorate([
274
282
  ContentChildren(DatoAccordionComponent_1, { descendants: true }),
275
283
  __metadata("design:type", QueryList)
276
284
  ], DatoAccordionComponent.prototype, "childAccordion", void 0);
285
+ __decorate([
286
+ ContentChild(DatoSortableComponent, { static: true }),
287
+ __metadata("design:type", DatoSortableComponent)
288
+ ], DatoAccordionComponent.prototype, "sortable", void 0);
277
289
  __decorate([
278
290
  Input(),
279
291
  __metadata("design:type", Object)
@@ -320,4 +332,4 @@ var DatoAccordionComponent = /** @class */ (function () {
320
332
  return DatoAccordionComponent;
321
333
  }());
322
334
  export { DatoAccordionComponent };
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjY29yZGlvbi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7O0FBRUgsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFlM0U7SUEyQ0UsZ0NBR1UsTUFBOEIsRUFFOUIsV0FBd0MsRUFDeEMsR0FBc0I7UUFIdEIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFFOUIsZ0JBQVcsR0FBWCxXQUFXLENBQTZCO1FBQ3hDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBMUNoQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCLGNBQVMsR0FBdUIsVUFBVSxDQUFDO1FBRTNDLGNBQVMsR0FBc0IsRUFBRSxDQUFDO1FBRWxDLDRCQUF1QixH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QVM7MERBQThCO0lBRS9DO1FBREMsZUFBZSxDQUFDLHdCQUFzQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO2tDQUMvQyxTQUFTO2tFQUF5QjtJQUdsRDtRQURDLEtBQUssRUFBRTs7K0RBQ1k7SUFFcEI7UUFEQyxLQUFLLEVBQUU7OzZEQUNVO0lBRWxCO1FBREMsS0FBSyxFQUFFOztpRUFDYztJQUV0QjtRQURDLEtBQUssRUFBRTs7NkRBQ21DO0lBRTNDO1FBREMsS0FBSyxFQUFFOzs2REFDMEI7SUFFbEM7UUFEQyxLQUFLLEVBQUU7OzJFQUN3QjtJQUdoQztRQURDLEtBQUssRUFBRTs7OzREQW9CUDtJQXZDVSxzQkFBc0I7UUFabEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixRQUFRLEVBQUUsMkJBQTJCO1lBQ3JDLFFBQVEsRUFBRSxlQUFlO3FCQUV2Qix5REFJQztTQUVKLENBQUM7UUE2Q0csV0FBQSxRQUFRLEVBQUUsQ0FBQTtRQUNWLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFFVixXQUFBLFFBQVEsRUFBRSxDQUFBO3lDQURLLHNCQUFzQjtZQUVqQiwyQkFBMkI7WUFDbkMsaUJBQWlCO09BakRyQixzQkFBc0IsQ0E4T2xDO0lBQUQsNkJBQUM7Q0FBQSxBQTlPRCxJQThPQztTQTlPWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBtZXJnZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXBUbyB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy9jb2VyY2lvbic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vc2VsZWN0L3NlYXJjaC5zdHJhdGVneSc7XG5pbXBvcnQgeyBBY2NvcmRpb25BcnJvd1R5cGUgfSBmcm9tICcuLi9hY2NvcmRpb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWFjY29yZGlvbicsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGV4cG9ydEFzOiAnZGF0b0FjY29yZGlvbicsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdG9BY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KVxuICBncm91cHM6IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKERhdG9BY2NvcmRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgY2hpbGRBY2NvcmRpb246IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uQ29tcG9uZW50PjtcblxuICBASW5wdXQoKVxuICBjbG9zZU90aGVycyA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBleHBhbmRBbGwgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgaW5jbHVkZUFycm93cyA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBhcnJvd1R5cGU6IEFjY29yZGlvbkFycm93VHlwZSA9ICdzdGFuZGFyZCc7XG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUlkczogbnVtYmVyIHwgbnVtYmVyW10gPSBbXTtcbiAgQElucHV0KClcbiAgc2hvd1NlYXJjaFVwb25Ob1Jlc3VsdHMgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgc2VhcmNoVGVybShzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9oYXNTZWFyY2ggPSB0cnVlO1xuICAgIGlmICh0aGlzLmdyb3Vwcykge1xuICAgICAgc2VhcmNoVGVybSA9IHNlYXJjaFRlcm0gfHwgJyc7XG5cbiAgICAgIGNvbnN0IGdyb3Vwc0FyciA9IHRoaXMuYXNBcnJheTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXBzQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzQXJyW2ldO1xuICAgICAgICBjb25zdCB7IGhlYWRlciB9ID0gZ3JvdXA7XG4gICAgICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlR3JvdXAoZ3JvdXAsIHRoaXMuc2hvd1NlYXJjaFVwb25Ob1Jlc3VsdHMgJiYgZ3JvdXAuZXhwYW5kZWQpO1xuICAgICAgICAgIGdyb3VwLmhpZGUoZmFsc2UpO1xuICAgICAgICAgIGhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGlzTGFzdEdyb3VwID0gaSArIDEgPT09IGdyb3Vwc0Fyci5sZW5ndGg7XG4gICAgICAgICAgdGhpcy5jaGVja0dyb3VwQ29udGVudChncm91cCwgc2VhcmNoVGVybSwgaXNMYXN0R3JvdXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9oYXNTZWFyY2ggPSBmYWxzZTtcbiAgcHJpdmF0ZSBncm91cHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2tpcFNlbGYoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSBwYXJlbnQ6IERhdG9BY2NvcmRpb25Db21wb25lbnQsXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHBhcmVudEdyb3VwOiBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZXhwYW5kQWxsICYmICFjaGFuZ2VzLmV4cGFuZEFsbC5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5zZXRFeHBhbmRBbGwoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5hY3RpdmVJZHMgJiYgIWNoYW5nZXMuYWN0aXZlSWRzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAvKiogT3BlbiBjbG9zZSBhbGwgZ3JvdXBzIHRoYXQgYXJlIG5vdCBpbiB0aGUgYWN0aXZlIGlkcywgYW5kIG9ubHkgb3BlbiB0aGUgZ3JvdXBzIHRoYXQgYXJlIGNsb3NlZCAqL1xuICAgICAgY29uc3QgaWRzVG9PcGVuID0gdGhpcy5ncm91cHMudG9BcnJheSgpLnJlZHVjZSgoaWRzLCBncm91cCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hhbmdlcy5hY3RpdmVJZHMuY3VycmVudFZhbHVlLmluY2x1ZGVzKGkpKSB7XG4gICAgICAgICAgIWdyb3VwLmV4cGFuZGVkICYmIGlkcy5wdXNoKGkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9nZ2xlR3JvdXAoZ3JvdXAsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWRzO1xuICAgICAgfSwgW10pO1xuICAgICAgdGhpcy5zZXRFeHBhbmRBbGwoaWRzVG9PcGVuKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGUoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cHMudG9BcnJheSgpW2luZGV4XTtcbiAgICBpZiAodG9Cb29sZWFuKGdyb3VwKSkge1xuICAgICAgdGhpcy5vbkdyb3VwQ2xpY2soZ3JvdXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBHcm91cCAke2luZGV4fSBkb2Vzbid0IGV4aXN0c2ApO1xuICAgIH1cbiAgfVxuXG4gIHNldEV4cGFuZEFsbChpZHM/OiBhbnlbXSkge1xuICAgIGxldCB0b0FycmF5ID0gaWRzO1xuICAgIGNvbnN0IGdyb3Vwc0FycmF5ID0gdGhpcy5ncm91cHMudG9BcnJheSgpO1xuICAgIGlmICghdG9BcnJheSkge1xuICAgICAgdG9BcnJheSA9IGdyb3Vwc0FycmF5Lm1hcCgoXywgaSkgPT4gaSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaW5kZXggb2YgdG9BcnJheSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBncm91cHNBcnJheVtpbmRleF07XG4gICAgICBpZiAoIXRoaXMucGFyZW50ICYmICFncm91cC5fZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5vbkdyb3VwQ2xpY2soZ3JvdXAsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBhc0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5ncm91cHMuY2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlcigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICAgIGlmICh0aGlzLmluY2x1ZGVBcnJvd3MpIHtcbiAgICAgIHRoaXMudXBkYXRlSW5jbHVkZUFycm93cygpO1xuICAgICAgdGhpcy5ncm91cHMuY2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVJbmNsdWRlQXJyb3dzLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbml0aWFsT3Blbih0aGlzLmFjdGl2ZUlkcykpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24gJiYgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5jbHVkZUFycm93cygpIHtcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKSkge1xuICAgICAgZ3JvdXAuaGVhZGVyLmluY2x1ZGVBcnJvdyA9IHRydWU7XG4gICAgICBncm91cC5oZWFkZXIuYXJyb3dUeXBlID0gdGhpcy5hcnJvd1R5cGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlcigpIHtcbiAgICBpZiAodGhpcy5ncm91cHNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZ3JvdXBzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24gPSBtZXJnZSguLi50aGlzLmdyb3Vwcy5tYXAoZ3JvdXAgPT4gZ3JvdXAuaGVhZGVyLmNsaWNrJC5waXBlKG1hcFRvKGdyb3VwKSkpKS5zdWJzY3JpYmUoXG4gICAgICAoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCkgPT4ge1xuICAgICAgICB0aGlzLm9uR3JvdXBDbGljayhncm91cCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Hcm91cENsaWNrKGdyb3VwOiBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQsIGZvcmNlID0gZmFsc2UpIHtcbiAgICBpZiAoZ3JvdXAuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2xvc2VPdGhlcnMgJiYgIWdyb3VwLmNvbnRlbnQuX2V4cGFuZGVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGcgb2YgdGhpcy5ncm91cHMudG9BcnJheSgpKSB7XG4gICAgICAgIGlmIChnICE9PSBncm91cCkge1xuICAgICAgICAgIHRoaXMuY2xvc2VBbmRFbWl0KGcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgZm9yY2UgPyB0cnVlIDogIWdyb3VwLmNvbnRlbnQuX2V4cGFuZGVkKTtcblxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZEFjY29yZGlvbnNDb21wb25lbnRzKCk7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBjaGlsZC5ncm91cHMuZm9yRWFjaChnID0+IHRoaXMuY2xvc2VBbmRFbWl0KGcpKSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0VG9nZ2xlKGdyb3VwKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlR3JvdXAoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgZXhwYW5kZWQgPSB0cnVlKSB7XG4gICAgZ3JvdXAuY29udGVudC5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICAgIGdyb3VwLmhlYWRlci5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZEFjY29yZGlvbnNDb21wb25lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkQWNjb3JkaW9uLmZpbHRlcihjaGlsZCA9PiBjaGlsZCAhPT0gdGhpcyk7XG4gIH1cblxuICBwcml2YXRlIGNvZXJjZUFycmF5PFQ+KHZhbHVlKTogVFtdIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxPcGVuKGFjdGl2ZUlkczogbnVtYmVyIHwgbnVtYmVyW10pIHtcbiAgICBjb25zdCB0b0FycmF5ID0gdGhpcy5leHBhbmRBbGwgPyB0aGlzLmdyb3Vwcy50b0FycmF5KCkubWFwKChfLCBpKSA9PiBpKSA6IHRoaXMuY29lcmNlQXJyYXk8bnVtYmVyPihhY3RpdmVJZHMpO1xuICAgIHRoaXMuc2V0RXhwYW5kQWxsKHRvQXJyYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VG9nZ2xlKGdyb3VwOiBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQsIHZhbHVlPzogYm9vbGVhbikge1xuICAgIGlmIChncm91cC50b2dnbGUub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgY29uc3QgZXhwYW5kZWQgPSB2YWx1ZSA9PSBudWxsID8gZ3JvdXAuY29udGVudC5fZXhwYW5kZWQgOiB2YWx1ZTtcbiAgICAgIGdyb3VwLnRvZ2dsZS5uZXh0KHsgZXhwYW5kZWQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFuZEVtaXQoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCkge1xuICAgIGlmIChncm91cC5jb250ZW50Ll9leHBhbmRlZCkge1xuICAgICAgdGhpcy5lbWl0VG9nZ2xlKGdyb3VwLCBmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlR3JvdXAoZ3JvdXAsIGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tHcm91cENvbnRlbnQoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgc2VhcmNoVGVybTogc3RyaW5nLCBsYXN0R3JvdXA6IGJvb2xlYW4pIHtcbiAgICBsZXQgaGVhZGVyTWF0Y2g7XG4gICAgaWYgKCFpc05pbChncm91cC5oZWFkZXIuc2VhcmNoYWJsZSkpIHtcbiAgICAgIC8vIFdoZW4gd2UgbmVlZCB0byBzdXBwb3J0IGEgc2VhcmNoIHRlcm0gaW4gdGhlIGhlYWRlciwgd2UgZmlyc3Qgd2FudCB0byBjaGVjayBpZiBpdCBtYXRjaGVzLlxuICAgICAgaGVhZGVyTWF0Y2ggPSBkZWZhdWx0Q2xpZW50U2VhcmNoU3RyYXRlZ3koZ3JvdXAuaGVhZGVyLCBzZWFyY2hUZXJtLCAnc2VhcmNoYWJsZScpO1xuICAgICAgaWYgKGhlYWRlck1hdGNoKSB7XG4gICAgICAgIC8vIElmIHRoYXQncyB0aGUgY2FzZSwgaXQgd2lsbCBzaG93IGFsbCBncm91cHMgYW5kIGlnbm9yZSBlYWNoIGdyb3VwIGNvbnRlbnQgcmVzdWx0cy5cbiAgICAgICAgdGhpcy5zaG93RW50aXJlR3JvdXAoZ3JvdXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBkZWxlZ2F0ZSB0byBzZWFyY2ggaW4gZWFjaCBncm91cCBjb250ZW50XG4gICAgICAgIHRoaXMuY2hlY2tHcm91cFNlYXJjaGFibGVDb250ZW50KGdyb3VwKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGVja0dyb3VwU2VhcmNoYWJsZUNvbnRlbnQoZ3JvdXApO1xuICAgIH1cbiAgICAvLyBJZiB0aGlzIGlzIGEgbmVzdGVkIGFjY29yZGlvbiB3ZSB3YW50IHRvIHVwZGF0ZSBoZSBwYXJlbnQncyBjb3VudFxuICAgIGlmICh0aGlzLnBhcmVudEdyb3VwICYmIHRoaXMucGFyZW50Ll9oYXNTZWFyY2gpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnBhcmVudEdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggKz0gZ3JvdXAuaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aDtcbiAgICAgICAgaWYgKGhlYWRlck1hdGNoKSB7XG4gICAgICAgICAgdGhpcy5wYXJlbnRHcm91cC5oZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2Ugd2FudCB0byB0cmlnZ2VyIHRoZSB1cGRhdGUgb24gdGhlIHBhcmVudCBhZnRlciB0aGUgbGFzdCBncm91cCB3YXMgY2hlY2tlZFxuICAgICAgICBpZiAobGFzdEdyb3VwKSB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkRXhwYW5kID0gdGhpcy5wYXJlbnRHcm91cC5oZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoID4gMDtcbiAgICAgICAgICB0aGlzLmV4cGFuZEdyb3VwKHRoaXMucGFyZW50R3JvdXAsIHNob3VsZEV4cGFuZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tHcm91cFNlYXJjaGFibGVDb250ZW50KGdyb3VwOiBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBncm91cC5jb250ZW50LnNlYXJjaGFibGVzLmZpbHRlcihzZWFyY2hhYmxlID0+ICFzZWFyY2hhYmxlLmlzSGlkZGVuKTtcbiAgICBncm91cC5oZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcbiAgICB0aGlzLmV4cGFuZEdyb3VwKGdyb3VwLCByZXN1bHQubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dFbnRpcmVHcm91cChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KSB7XG4gICAgZ3JvdXAuY29udGVudC5zZWFyY2hhYmxlcy5mb3JFYWNoKHNlYXJjaGFibGUgPT4gc2VhcmNoYWJsZS5zaG93KCkpO1xuICAgIGdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPSBncm91cC5jb250ZW50LnNlYXJjaGFibGVzLmxlbmd0aDtcbiAgICB0aGlzLmV4cGFuZEdyb3VwKGdyb3VwKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhwYW5kR3JvdXAoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgZXhwYW5kID0gdHJ1ZSkge1xuICAgIGdyb3VwLmV4cGFuZChleHBhbmQpO1xuICAgIGdyb3VwLmhpZGUoIWV4cGFuZCk7XG4gIH1cbn1cbiJdfQ==
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjY29yZGlvbi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7O0FBRUgsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBYzFFO0lBaURFLGdDQUdVLE1BQThCLEVBRTlCLFdBQXdDLEVBQ3hDLEdBQXNCO1FBSHRCLFdBQU0sR0FBTixNQUFNLENBQXdCO1FBRTlCLGdCQUFXLEdBQVgsV0FBVyxDQUE2QjtRQUN4QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTlDaEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixjQUFTLEdB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UEM7U0FwUFksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBtZXJnZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXBUbyB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy9jb2VyY2lvbic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vc2VsZWN0L3NlYXJjaC5zdHJhdGVneSc7XG5pbXBvcnQgeyBBY2NvcmRpb25BcnJvd1R5cGUgfSBmcm9tICcuLi9hY2NvcmRpb24udHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NvcnRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc29ydGFibGUvc29ydGFibGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1hY2NvcmRpb24nLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBleHBvcnRBczogJ2RhdG9BY2NvcmRpb24nLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvQWNjb3JkaW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudClcbiAgY2hpbGRHcm91cHM6IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKERhdG9BY2NvcmRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgY2hpbGRBY2NvcmRpb246IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uQ29tcG9uZW50PjtcbiAgQENvbnRlbnRDaGlsZChEYXRvU29ydGFibGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNvcnRhYmxlOiBEYXRvU29ydGFibGVDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgY2xvc2VPdGhlcnMgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZXhwYW5kQWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGluY2x1ZGVBcnJvd3MgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgYXJyb3dUeXBlOiBBY2NvcmRpb25BcnJvd1R5cGUgPSAnc3RhbmRhcmQnO1xuICBASW5wdXQoKVxuICBhY3RpdmVJZHM6IG51bWJlciB8IG51bWJlcltdID0gW107XG4gIEBJbnB1dCgpXG4gIHNob3dTZWFyY2hVcG9uTm9SZXN1bHRzID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHNlYXJjaFRlcm0oc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgdGhpcy5faGFzU2VhcmNoID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5ncm91cHMpIHtcbiAgICAgIHNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtIHx8ICcnO1xuXG4gICAgICBjb25zdCBncm91cHNBcnIgPSB0aGlzLmFzQXJyYXk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3Vwc0Fyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBncm91cCA9IGdyb3Vwc0FycltpXTtcbiAgICAgICAgY29uc3QgeyBoZWFkZXIgfSA9IGdyb3VwO1xuICAgICAgICBpZiAoIXNlYXJjaFRlcm0pIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUdyb3VwKGdyb3VwLCB0aGlzLnNob3dTZWFyY2hVcG9uTm9SZXN1bHRzICYmIGdyb3VwLmV4cGFuZGVkKTtcbiAgICAgICAgICBncm91cC5oaWRlKGZhbHNlKTtcbiAgICAgICAgICBoZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpc0xhc3RHcm91cCA9IGkgKyAxID09PSBncm91cHNBcnIubGVuZ3RoO1xuICAgICAgICAgIHRoaXMuY2hlY2tHcm91cENvbnRlbnQoZ3JvdXAsIHNlYXJjaFRlcm0sIGlzTGFzdEdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBfaGFzU2VhcmNoID0gZmFsc2U7XG4gIHByaXZhdGUgZ3JvdXBzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IGdyb3VwcygpOiBRdWVyeUxpc3Q8RGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGFibGUgJiYgdGhpcy5zb3J0YWJsZS5hY2NvcmRpb25Hcm91cHMubGVuZ3RoID4gMCA/IHRoaXMuc29ydGFibGUuYWNjb3JkaW9uR3JvdXBzIDogdGhpcy5jaGlsZEdyb3VwcztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTa2lwU2VsZigpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHBhcmVudDogRGF0b0FjY29yZGlvbkNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgcGFyZW50R3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5leHBhbmRBbGwgJiYgIWNoYW5nZXMuZXhwYW5kQWxsLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldEV4cGFuZEFsbCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmFjdGl2ZUlkcyAmJiAhY2hhbmdlcy5hY3RpdmVJZHMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8qKiBPcGVuIGNsb3NlIGFsbCBncm91cHMgdGhhdCBhcmUgbm90IGluIHRoZSBhY3RpdmUgaWRzLCBhbmQgb25seSBvcGVuIHRoZSBncm91cHMgdGhhdCBhcmUgY2xvc2VkICovXG4gICAgICBjb25zdCBpZHNUb09wZW4gPSB0aGlzLmdyb3Vwcy50b0FycmF5KCkucmVkdWNlKChpZHMsIGdyb3VwLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmFjdGl2ZUlkcy5jdXJyZW50VmFsdWUuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAhZ3JvdXAuZXhwYW5kZWQgJiYgaWRzLnB1c2goaSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpZHM7XG4gICAgICB9LCBbXSk7XG4gICAgICB0aGlzLnNldEV4cGFuZEFsbChpZHNUb09wZW4pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwcy50b0FycmF5KClbaW5kZXhdO1xuICAgIGlmICh0b0Jvb2xlYW4oZ3JvdXApKSB7XG4gICAgICB0aGlzLm9uR3JvdXBDbGljayhncm91cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEdyb3VwICR7aW5kZXh9IGRvZXNuJ3QgZXhpc3RzYCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RXhwYW5kQWxsKGlkcz86IGFueVtdKSB7XG4gICAgbGV0IHRvQXJyYXkgPSBpZHM7XG4gICAgY29uc3QgZ3JvdXBzQXJyYXkgPSB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gICAgaWYgKCF0b0FycmF5KSB7XG4gICAgICB0b0FycmF5ID0gZ3JvdXBzQXJyYXkubWFwKChfLCBpKSA9PiBpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiB0b0FycmF5KSB7XG4gICAgICBjb25zdCBncm91cCA9IGdyb3Vwc0FycmF5W2luZGV4XTtcbiAgICAgIGlmICghdGhpcy5wYXJlbnQgJiYgIWdyb3VwLl9kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLm9uR3JvdXBDbGljayhncm91cCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGFzQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgaWYgKHRoaXMuaW5jbHVkZUFycm93cykge1xuICAgICAgdGhpcy51cGRhdGVJbmNsdWRlQXJyb3dzKCk7XG4gICAgICB0aGlzLmdyb3Vwcy5jaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZUluY2x1ZGVBcnJvd3MuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRpYWxPcGVuKHRoaXMuYWN0aXZlSWRzKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbmNsdWRlQXJyb3dzKCkge1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncm91cHMudG9BcnJheSgpKSB7XG4gICAgICBncm91cC5oZWFkZXIuaW5jbHVkZUFycm93ID0gdHJ1ZTtcbiAgICAgIGdyb3VwLmhlYWRlci5hcnJvd1R5cGUgPSB0aGlzLmFycm93VHlwZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyKCkge1xuICAgIGlmICh0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5ncm91cHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3Vwc1N1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLnRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiBncm91cC5oZWFkZXIuY2xpY2skLnBpcGUobWFwVG8oZ3JvdXApKSkpLnN1YnNjcmliZShcbiAgICAgIChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIHRoaXMub25Hcm91cENsaWNrKGdyb3VwKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkdyb3VwQ2xpY2soZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmIChncm91cC5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbG9zZU90aGVycyAmJiAhZ3JvdXAuY29udGVudC5fZXhwYW5kZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZyBvZiB0aGlzLmdyb3Vwcy50b0FycmF5KCkpIHtcbiAgICAgICAgaWYgKGcgIT09IGdyb3VwKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZUFuZEVtaXQoZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZUdyb3VwKGdyb3VwLCBmb3JjZSA/IHRydWUgOiAhZ3JvdXAuY29udGVudC5fZXhwYW5kZWQpO1xuXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkQWNjb3JkaW9uc0NvbXBvbmVudHMoKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLmdyb3Vwcy5mb3JFYWNoKGcgPT4gdGhpcy5jbG9zZUFuZEVtaXQoZykpKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRUb2dnbGUoZ3JvdXApO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVHcm91cChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBleHBhbmRlZCA9IHRydWUpIHtcbiAgICBncm91cC5jb250ZW50LmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgZ3JvdXAuaGVhZGVyLmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldENoaWxkQWNjb3JkaW9uc0NvbXBvbmVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRBY2NvcmRpb24uZmlsdGVyKGNoaWxkID0+IGNoaWxkICE9PSB0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgY29lcmNlQXJyYXk8VD4odmFsdWUpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbE9wZW4oYWN0aXZlSWRzOiBudW1iZXIgfCBudW1iZXJbXSkge1xuICAgIGNvbnN0IHRvQXJyYXkgPSB0aGlzLmV4cGFuZEFsbCA/IHRoaXMuZ3JvdXBzLnRvQXJyYXkoKS5tYXAoKF8sIGkpID0+IGkpIDogdGhpcy5jb2VyY2VBcnJheTxudW1iZXI+KGFjdGl2ZUlkcyk7XG4gICAgdGhpcy5zZXRFeHBhbmRBbGwodG9BcnJheSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRUb2dnbGUoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCwgdmFsdWU/OiBib29sZWFuKSB7XG4gICAgaWYgKGdyb3VwLnRvZ2dsZS5vYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBleHBhbmRlZCA9IHZhbHVlID09IG51bGwgPyBncm91cC5jb250ZW50Ll9leHBhbmRlZCA6IHZhbHVlO1xuICAgICAgZ3JvdXAudG9nZ2xlLm5leHQoeyBleHBhbmRlZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQW5kRW1pdChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50KSB7XG4gICAgaWYgKGdyb3VwLmNvbnRlbnQuX2V4cGFuZGVkKSB7XG4gICAgICB0aGlzLmVtaXRUb2dnbGUoZ3JvdXAsIGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVHcm91cChncm91cCwgZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0dyb3VwQ29udGVudChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBzZWFyY2hUZXJtOiBzdHJpbmcsIGxhc3RHcm91cDogYm9vbGVhbikge1xuICAgIGxldCBoZWFkZXJNYXRjaDtcbiAgICBpZiAoIWlzTmlsKGdyb3VwLmhlYWRlci5zZWFyY2hhYmxlKSkge1xuICAgICAgLy8gV2hlbiB3ZSBuZWVkIHRvIHN1cHBvcnQgYSBzZWFyY2ggdGVybSBpbiB0aGUgaGVhZGVyLCB3ZSBmaXJzdCB3YW50IHRvIGNoZWNrIGlmIGl0IG1hdGNoZXMuXG4gICAgICBoZWFkZXJNYXRjaCA9IGRlZmF1bHRDbGllbnRTZWFyY2hTdHJhdGVneShncm91cC5oZWFkZXIsIHNlYXJjaFRlcm0sICdzZWFyY2hhYmxlJyk7XG4gICAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgICAgLy8gSWYgdGhhdCdzIHRoZSBjYXNlLCBpdCB3aWxsIHNob3cgYWxsIGdyb3VwcyBhbmQgaWdub3JlIGVhY2ggZ3JvdXAgY29udGVudCByZXN1bHRzLlxuICAgICAgICB0aGlzLnNob3dFbnRpcmVHcm91cChncm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGRlbGVnYXRlIHRvIHNlYXJjaCBpbiBlYWNoIGdyb3VwIGNvbnRlbnRcbiAgICAgICAgdGhpcy5jaGVja0dyb3VwU2VhcmNoYWJsZUNvbnRlbnQoZ3JvdXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoZWNrR3JvdXBTZWFyY2hhYmxlQ29udGVudChncm91cCk7XG4gICAgfVxuICAgIC8vIElmIHRoaXMgaXMgYSBuZXN0ZWQgYWNjb3JkaW9uIHdlIHdhbnQgdG8gdXBkYXRlIGhlIHBhcmVudCdzIGNvdW50XG4gICAgaWYgKHRoaXMucGFyZW50R3JvdXAgJiYgdGhpcy5wYXJlbnQuX2hhc1NlYXJjaCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGFyZW50R3JvdXAuaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aCArPSBncm91cC5oZWFkZXIuc2VhcmNoUmVzdWx0TGVuZ3RoO1xuICAgICAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudEdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSB3YW50IHRvIHRyaWdnZXIgdGhlIHVwZGF0ZSBvbiB0aGUgcGFyZW50IGFmdGVyIHRoZSBsYXN0IGdyb3VwIHdhcyBjaGVja2VkXG4gICAgICAgIGlmIChsYXN0R3JvdXApIHtcbiAgICAgICAgICBjb25zdCBzaG91bGRFeHBhbmQgPSB0aGlzLnBhcmVudEdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPiAwO1xuICAgICAgICAgIHRoaXMuZXhwYW5kR3JvdXAodGhpcy5wYXJlbnRHcm91cCwgc2hvdWxkRXhwYW5kKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0dyb3VwU2VhcmNoYWJsZUNvbnRlbnQoZ3JvdXA6IERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGdyb3VwLmNvbnRlbnQuc2VhcmNoYWJsZXMuZmlsdGVyKHNlYXJjaGFibGUgPT4gIXNlYXJjaGFibGUuaXNIaWRkZW4pO1xuICAgIGdyb3VwLmhlYWRlci5zZWFyY2hSZXN1bHRMZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuICAgIHRoaXMuZXhwYW5kR3JvdXAoZ3JvdXAsIHJlc3VsdC5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0VudGlyZUdyb3VwKGdyb3VwOiBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQpIHtcbiAgICBncm91cC5jb250ZW50LnNlYXJjaGFibGVzLmZvckVhY2goc2VhcmNoYWJsZSA9PiBzZWFyY2hhYmxlLnNob3coKSk7XG4gICAgZ3JvdXAuaGVhZGVyLnNlYXJjaFJlc3VsdExlbmd0aCA9IGdyb3VwLmNvbnRlbnQuc2VhcmNoYWJsZXMubGVuZ3RoO1xuICAgIHRoaXMuZXhwYW5kR3JvdXAoZ3JvdXApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmRHcm91cChncm91cDogRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50LCBleHBhbmQgPSB0cnVlKSB7XG4gICAgZ3JvdXAuZXhwYW5kKGV4cGFuZCk7XG4gICAgZ3JvdXAuaGlkZSghZXhwYW5kKTtcbiAgfVxufVxuIl19
@@ -81,7 +81,9 @@ var DatoBreadcrumbsComponent = /** @class */ (function () {
81
81
  };
82
82
  DatoBreadcrumbsComponent.prototype.initEditableHeader = function () {
83
83
  var _this = this;
84
- this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe(function (res) {
84
+ this.headerControl.valueChanges
85
+ .pipe(debounceTime(300), untilDestroyed(this))
86
+ .subscribe(function (res) {
85
87
  _this.updateEditableText.emit(res);
86
88
  _this.cdr.detectChanges();
87
89
  });
@@ -157,4 +159,4 @@ var DatoBreadcrumbsComponent = /** @class */ (function () {
157
159
  return DatoBreadcrumbsComponent;
158
160
  }());
159
161
  export { DatoBreadcrumbsComponent };
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVN4RDtJQXFDRSxrQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyw4QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDM0MsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO0lBRXpCLENBQUM7SUFu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LDZCQUE2QixDQUFDO1lBQ25FLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQWlDLElBQUksQ0FBQyw2QkFBK0IsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7Z0JBbkR3QixpQkFBaUI7O0lBbkMxQztRQURDLEtBQUssRUFBRTs7OzJFQU1QO0lBR0Q7UUFEQyxLQUFLLEVBQUU7OzsrREFPUDtJQUtRO1FBQVIsS0FBSyxFQUFFO2tDQUFnQixXQUFXO21FQUFDO0lBQzNCO1FBQVIsS0FBSyxFQUFFOztxRUFBeUI7SUFDeEI7UUFBUixLQUFLLEVBQUU7O29FQUFxQjtJQUNwQjtRQUFSLEtBQUssRUFBRTs7c0VBQXlCO0lBQ3hCO1FBQVIsS0FBSyxFQUFFOztzRUFBd0M7SUFDdkM7UUFBUixLQUFLLEVBQUU7OzZFQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTs7K0VBQThDO0lBRTVDO1FBQVQsTUFBTSxFQUFFOztxRUFBc0M7SUFDckM7UUFBVCxNQUFNLEVBQUU7O3dFQUF5QztJQTlCdkMsd0JBQXdCO1FBUHBDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsdzFDQUEyQztZQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQzt5Q0FzQ3lCLGlCQUFpQjtPQXJDL0Isd0JBQXdCLENBeUZwQztJQUFELCtCQUFDO0NBQUEsQUF6RkQsSUF5RkM7U0F6Rlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYnMudHlwZXMnO1xuaW1wb3J0IHsgc2l6ZSB9IGZyb20gJy4uL3V0aWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1icmVhZGNydW1icycsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1icy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9CcmVhZGNydW1ic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgc2V0IG1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heDogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05pbCh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpKSB7XG4gICAgICB0aGlzLnNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heCk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBicmVhZGNydW1icyhicmVhZGNydW1iczogQnJlYWRjcnVtYltdKSB7XG4gICAgdGhpcy5vcmlnaW5hbEJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnM7XG4gICAgaWYgKHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID4gMCkge1xuICAgICAgdGhpcy5zZXRNYXhEaXNwbGF5ZWRCcmVhZGNydW1icyh0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyhicmVhZGNydW1icyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGJyZWFkY3J1bWJzKCk6IEJyZWFkY3J1bWJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzO1xuICB9XG4gIEBJbnB1dCgpIGhlYWRlckNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBzaG93QXJyb3dJbkxhc3QgPSBmYWxzZTtcbiAgQElucHV0KCkgbGFzdEFycm93Q2xhc3MgPSAnJztcbiAgQElucHV0KCkgbWFya0xhc3RBc0FjdGl2ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGRhdGFBdXRvSWRQcmVmaXggPSAnZGF0by1icmVhZGNydW1icy0nO1xuICBASW5wdXQoKSBpc0hlYWRlckNvbnRyb2xEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBoZWFkZXJDb250cm9sQXV0b0lkU3VmZml4ID0gJ2hlYWRlci1jb250cm9sJztcblxuICBAT3V0cHV0KCkgYnJlYWRjcnVtYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdXBkYXRlRWRpdGFibGVUZXh0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgb3JpZ2luYWxCcmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIF9icmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIHJlYWRvbmx5IElOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTID0gMztcbiAgcHJpdmF0ZSBfbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWFkZXJDb250cm9sKSB7XG4gICAgICB0aGlzLmluaXRFZGl0YWJsZUhlYWRlcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8qKiBJbXBsZW1lbnRlZCBkdWUgdG8gdW50aWxEZXN0cm95ZWQgKi9cbiAgfVxuXG4gIG9uQ2xpY2soeyBkYXRhLCBvbkNsaWNrIH06IEJyZWFkY3J1bWIpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iQ2xpY2suZW1pdChkYXRhKTtcbiAgICB9XG5cbiAgICBpZiAob25DbGljaykge1xuICAgICAgb25DbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZEhhdmVBcnJvdyhsYXN0OiBib29sZWFuKSB7XG4gICAgcmV0dXJuICFsYXN0IHx8IChsYXN0ICYmIHRoaXMuc2hvd0Fycm93SW5MYXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcbiAgICBjb25zdCBzaG91bGREaXNwbGF5QWxsQnJlYWRjcnVtYnMgPSBzaXplKGJyZWFkY3J1bWJzKSA8PSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icztcbiAgICBjb25zdCBkb3RzID0gc2hvdWxkRGlzcGxheUFsbEJyZWFkY3J1bWJzID8gW10gOiBbeyB0ZXh0OiAnLi4uJyB9XTtcbiAgICBjb25zdCBzdGFydCA9IGJyZWFkY3J1bWJzLnNsaWNlKDAsIDEpO1xuICAgIGNvbnN0IGVuZCA9IHNob3VsZERpc3BsYXlBbGxCcmVhZGNydW1ic1xuICAgICAgPyBicmVhZGNydW1icy5zbGljZSgxKVxuICAgICAgOiBicmVhZGNydW1icy5zbGljZShicmVhZGNydW1icy5sZW5ndGggLSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyArIDEpO1xuXG4gICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbLi4uc3RhcnQsIC4uLmRvdHMsIC4uLmVuZF07XG4gIH1cblxuICBwcml2YXRlIGluaXRFZGl0YWJsZUhlYWRlcigpIHtcbiAgICB0aGlzLmhlYWRlckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHJlczogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUVkaXRhYmxlVGV4dC5lbWl0KHJlcyk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heDogbnVtYmVyKSB7XG4gICAgaWYgKG1heCA8IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlMpIHtcbiAgICAgIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID0gdGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CUztcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1pbmltdW0gYnJlYWRjcnVtYnMgbnVtYmVyIGlzICR7dGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CU31gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSBtYXg7XG4gICAgfVxuICB9XG59XG4iXX0=
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVN4RDtJQXFDRSxrQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyw4QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDM0MsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO0lBRXpCLENBQUM7SUFuQzlDLHNCQUFJLDZEQUF1QjthQUEzQixVQUE0QixHQUFXO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUNoRDtRQUNILENBQUM7OztPQUFBO0lBR0Qsc0JBQUksaURBQVc7YUFRZjtZQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDO2FBVkQsVUFBZ0IsV0FBeUI7WUFDdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNuQztRQUNILENBQUM7OztPQUFBO0lBdUJELDJDQUFRLEdBQVI7UUFDRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsOENBQVcsR0FBWDtRQUNFLHdDQUF3QztJQUMxQyxDQUFDO0lBRUQsMENBQU8sR0FBUCxVQUFRLEVBQTZCO1lBQTNCLGNBQUksRUFBRSxvQkFBTztRQUNyQixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVELGtEQUFlLEdBQWYsVUFBZ0IsSUFBYTtRQUMzQixPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sa0RBQWUsR0FBdkIsVUFBd0IsV0FBeUI7UUFDL0MsSUFBTSwyQkFBMkIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ3ZGLElBQU0sSUFBSSxHQUFHLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRSxJQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFNLEdBQUcsR0FBRywyQkFBMkI7WUFDckMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxZQUFZLFlBQU8sS0FBSyxFQUFLLElBQUksRUFBSyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8scURBQWtCLEdBQTFCO1FBQUEsaUJBVUM7UUFUQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVk7YUFDNUIsSUFBSSxDQUNILFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUNyQjthQUNBLFNBQVMsQ0FBQyxVQUFDLEdBQVc7WUFDckIsS0FBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxLQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDZEQUEwQixHQUFsQyxVQUFtQyxHQUFXO1FBQzVDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUM1QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO1lBQ25FLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQWlDLElBQUksQ0FBQyw2QkFBK0IsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7Z0JBeER3QixpQkFBaUI7O0lBbkMxQztRQURDLEtBQUssRUFBRTs7OzJFQU1QO0lBR0Q7UUFEQyxLQUFLLEVBQUU7OzsrREFPUDtJQUtRO1FBQVIsS0FBSyxFQUFFO2tDQUFnQixXQUFXO21FQUFDO0lBQzNCO1FBQVIsS0FBSyxFQUFFOztxRUFBeUI7SUFDeEI7UUFBUixLQUFLLEVBQUU7O29FQUFxQjtJQUNwQjtRQUFSLEtBQUssRUFBRTs7c0VBQXlCO0lBQ3hCO1FBQVIsS0FBSyxFQUFFOztzRUFBd0M7SUFDdkM7UUFBUixLQUFLLEVBQUU7OzZFQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTs7K0VBQThDO0lBRTVDO1FBQVQsTUFBTSxFQUFFOztxRUFBc0M7SUFDckM7UUFBVCxNQUFNLEVBQUU7O3dFQUF5QztJQTlCdkMsd0JBQXdCO1FBUHBDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsdzFDQUEyQztZQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQzt5Q0FzQ3lCLGlCQUFpQjtPQXJDL0Isd0JBQXdCLENBOEZwQztJQUFELCtCQUFDO0NBQUEsQUE5RkQsSUE4RkM7U0E5Rlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYnMudHlwZXMnO1xuaW1wb3J0IHsgc2l6ZSB9IGZyb20gJy4uL3V0aWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1icmVhZGNydW1icycsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1icy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9CcmVhZGNydW1ic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgc2V0IG1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heDogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05pbCh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpKSB7XG4gICAgICB0aGlzLnNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heCk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBicmVhZGNydW1icyhicmVhZGNydW1iczogQnJlYWRjcnVtYltdKSB7XG4gICAgdGhpcy5vcmlnaW5hbEJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnM7XG4gICAgaWYgKHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID4gMCkge1xuICAgICAgdGhpcy5zZXRNYXhEaXNwbGF5ZWRCcmVhZGNydW1icyh0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyhicmVhZGNydW1icyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGJyZWFkY3J1bWJzKCk6IEJyZWFkY3J1bWJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzO1xuICB9XG4gIEBJbnB1dCgpIGhlYWRlckNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBzaG93QXJyb3dJbkxhc3QgPSBmYWxzZTtcbiAgQElucHV0KCkgbGFzdEFycm93Q2xhc3MgPSAnJztcbiAgQElucHV0KCkgbWFya0xhc3RBc0FjdGl2ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGRhdGFBdXRvSWRQcmVmaXggPSAnZGF0by1icmVhZGNydW1icy0nO1xuICBASW5wdXQoKSBpc0hlYWRlckNvbnRyb2xEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBoZWFkZXJDb250cm9sQXV0b0lkU3VmZml4ID0gJ2hlYWRlci1jb250cm9sJztcblxuICBAT3V0cHV0KCkgYnJlYWRjcnVtYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdXBkYXRlRWRpdGFibGVUZXh0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgb3JpZ2luYWxCcmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIF9icmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIHJlYWRvbmx5IElOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTID0gMztcbiAgcHJpdmF0ZSBfbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWFkZXJDb250cm9sKSB7XG4gICAgICB0aGlzLmluaXRFZGl0YWJsZUhlYWRlcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8qKiBJbXBsZW1lbnRlZCBkdWUgdG8gdW50aWxEZXN0cm95ZWQgKi9cbiAgfVxuXG4gIG9uQ2xpY2soeyBkYXRhLCBvbkNsaWNrIH06IEJyZWFkY3J1bWIpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iQ2xpY2suZW1pdChkYXRhKTtcbiAgICB9XG5cbiAgICBpZiAob25DbGljaykge1xuICAgICAgb25DbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZEhhdmVBcnJvdyhsYXN0OiBib29sZWFuKSB7XG4gICAgcmV0dXJuICFsYXN0IHx8IChsYXN0ICYmIHRoaXMuc2hvd0Fycm93SW5MYXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcbiAgICBjb25zdCBzaG91bGREaXNwbGF5QWxsQnJlYWRjcnVtYnMgPSBzaXplKGJyZWFkY3J1bWJzKSA8PSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icztcbiAgICBjb25zdCBkb3RzID0gc2hvdWxkRGlzcGxheUFsbEJyZWFkY3J1bWJzID8gW10gOiBbeyB0ZXh0OiAnLi4uJyB9XTtcbiAgICBjb25zdCBzdGFydCA9IGJyZWFkY3J1bWJzLnNsaWNlKDAsIDEpO1xuICAgIGNvbnN0IGVuZCA9IHNob3VsZERpc3BsYXlBbGxCcmVhZGNydW1ic1xuICAgICAgPyBicmVhZGNydW1icy5zbGljZSgxKVxuICAgICAgOiBicmVhZGNydW1icy5zbGljZShicmVhZGNydW1icy5sZW5ndGggLSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyArIDEpO1xuXG4gICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbLi4uc3RhcnQsIC4uLmRvdHMsIC4uLmVuZF07XG4gIH1cblxuICBwcml2YXRlIGluaXRFZGl0YWJsZUhlYWRlcigpIHtcbiAgICB0aGlzLmhlYWRlckNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRhYmxlVGV4dC5lbWl0KHJlcyk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRNYXhEaXNwbGF5ZWRCcmVhZGNydW1icyhtYXg6IG51bWJlcikge1xuICAgIGlmIChtYXggPCB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTKSB7XG4gICAgICB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyA9IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlM7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaW5pbXVtIGJyZWFkY3J1bWJzIG51bWJlciBpcyAke3RoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlN9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID0gbWF4O1xuICAgIH1cbiAgfVxufVxuIl19
@@ -35,4 +35,4 @@ export var GridRowSelectionType;
35
35
  GridRowSelectionType["SINGLE"] = "single";
36
36
  GridRowSelectionType["MULTIPLE"] = "multiple";
37
37
  })(GridRowSelectionType || (GridRowSelectionType = {}));
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxJQUFNLDZCQUE2QixHQUFHLFVBQUEsTUFBTTtJQUNqRCxPQUFBLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBdUMsTUFBTSxDQUFDLEtBQUssV0FBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQTNGLENBQTJGLENBQUM7QUFFOUYsTUFBTSxDQUFDLElBQU0sdUNBQXVDLEdBQUcsVUFBQyxNQUEyQixFQUFFLFVBQWtCO0lBQ3JHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLDJDQUF1QywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVEsQ0FBQztBQUN4RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsSUFBTSwyQkFBMkIsR0FBRyxVQUFDLE1BQTJCLEVBQUUsVUFBa0I7SUFDekYsVUFBVSxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZDLElBQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZFLE9BQU8sVUFBVTtRQUNmLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxVQUFDLEdBQVcsSUFBSyxPQUFBLHNDQUFrQyxHQUFHLFlBQVMsRUFBOUMsQ0FBOEMsQ0FBQztRQUM5RyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBOEdGLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIseURBQWEsQ0FBQTtJQUNiLDZEQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBU1g7QUFURCxXQUFZLG1CQUFtQjtJQUM3Qix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLGdEQUF5QixDQUFBO0lBQ3pCLDRDQUFxQixDQUFBO0lBQ3JCLHdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFUVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBUzlCO0FBY0QsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM5Qix5Q0FBaUIsQ0FBQTtJQUNqQiw2Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUcvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbERlZiwgR3JpZE9wdGlvbnMsIElDZWxsUmVuZGVyZXJQYXJhbXMsIElHZXRSb3dzUGFyYW1zLCBNZW51SXRlbURlZiwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9HcmlkRmlsdGVyU2VjdGlvbnMsIExpc3RJdGVtIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NlcnZlclBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuLi9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9saWIvZXZlbnRzJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE1vcmVNZW51QWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUvZ3JpZC1jb2x1bW4taGVhZGVyLW1vcmUtbWVudS50eXBlcyc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b0dyaWRPdmVybGF5SW5wdXQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RWRpdGFibGVDb2x1bW5SZW5kZXJlciA9IHBhcmFtcyA9PlxuICBwYXJhbXMgJiYgcGFyYW1zLnZhbHVlID8gYDxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyIGVsbGlwc2lzXCI+JHtwYXJhbXMudmFsdWV9PC9kaXY+YCA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBlZGl0YWJsZUNlbGxSZW5kZXJlcldpdGhTZWFyY2hIaWdobGlnaHQgPSAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy52YWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInZhbHVlLXdyYXBwZXIgZWxsaXBzaXNcIj4ke3NlYXJjaEhpZ2hsaWdodENlbGxSZW5kZXJlcihwYXJhbXMsIHNlYXJjaFRlcm0pfTwvZGl2PmA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoSGlnaGxpZ2h0Q2VsbFJlbmRlcmVyID0gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcywgc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gIHNlYXJjaFRlcm0gPSAoc2VhcmNoVGVybSB8fCAnJykudHJpbSgpO1xuICBjb25zdCB2YWx1ZSA9IChwYXJhbXMudmFsdWVGb3JtYXR0ZWQgfHwgcGFyYW1zLnZhbHVlIHx8ICcnKS50b1N0cmluZygpO1xuICByZXR1cm4gc2VhcmNoVGVybVxuICAgID8gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdnaScpLCAoc3RyOiBzdHJpbmcpID0+IGA8c3BhbiBjbGFzcz1cInNlYXJjaC1oaWdobGlnaHRcIj4ke3N0cn08L3NwYW4+YClcbiAgICA6IHZhbHVlO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRDb2x1bW5EZWYgPSB7XG4gIGZpbHRlcnNDb25maWc/OiBEYXRvR3JpZEZpbHRlckNvbmZpZztcbiAgbW9yZU1lbnVBY3Rpb25zPzogRGF0b0dyaWRNb3JlTWVudUFjdGlvbnNbXTtcbiAgaW5mbz86IHN0cmluZztcbiAgb3JpZ2luYWxXaWR0aD86IG51bWJlcjtcbiAgaW5jbHVkZUluU2VhcmNoPzogYm9vbGVhbjtcbiAgY3VzdG9tQ2VsbENvbmZpZz86IERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZztcbiAgdmFsdWVUb0N1c3RvbUNlbGxDb25maWc/OiBIYXNoTWFwPERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZz47XG59ICYgQ29sRGVmO1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEN1c3RvbUNlbGxDb25maWcgPSB7XG4gIGNvbG9yPzogJ3ByaW1hcnknIHwgJ2dyZWVuJyB8ICdyZWQnIHwgJ2FjY2VudCcgfCAneWVsbG93JztcbiAgaWNvbj86IHN0cmluZztcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGljb25Dc3NDbGFzcz86IHN0cmluZztcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIHNob3dTcGlubmVyPzogYm9vbGVhbjtcbiAgbWF4TGFiZWxzPzogbnVtYmVyO1xuICBnZXRBZGRpdGlvbmFsVGV4dD86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0SW1hZ2VVcmw/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGluaXRpYWxzQ29uZmlnPzogRGF0b0dyaWRJbml0aWFsc0NlbGxDb25maWc7XG4gIGdldElzVmlzaWJsZT86IChkYXRhOiBhbnkpID0+IGJvb2xlYW47XG4gIGdldEl0ZW1zPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEluaXRpYWxzQ2VsbENvbmZpZyA9IHtcbiAgZmlyc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGxhc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGZ1bGxOYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGdldEZ1bGxOYW1lPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpc0JvbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRGaWx0ZXJDb25maWcgPSB7XG4gIHNlY3Rpb25zPzogRGF0b0dyaWRGaWx0ZXJTZWN0aW9ucztcbiAgcHJlZGVmaW5lZExpc3RWYWx1ZXM/OiAoc3RyaW5nIHwgTGlzdEl0ZW0pW107XG4gIGtlZXBQcmVkZWZpbmVkTGlzdE9yaWdpbmFsT3JkZXI/OiBib29sZWFuO1xuICBzaG93RW1wdHlDb25kaXRpb25zPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQWdHcmlkRXZlbnQge1xuICB0eXBlOiAnU2VydmVyRGF0YUxvYWRlZCcgfCAncm93RGF0YUNoYW5nZWQnIHwgJ3Jvd0RhdGFVcGRhdGVkJztcbiAgcGFnaW5hdGlvblBhZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWRHZXRSb3dzUGFyYW1zIGV4dGVuZHMgSUdldFJvd3NQYXJhbXMge1xuICBzZXJ2ZXJDb25maWc6IERhdG9TZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEV4cG9ydFBhcmFtcyA9IERhdG9HcmlkQXBpICYgRGF0b0dyaWRTZXR0aW5ncztcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRPbkhvdmVyQ29uZmlnID0ge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgbWF4RGlzcGxheWVkSXRlbXM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkT3B0aW9ucyBleHRlbmRzIEdyaWRPcHRpb25zIHtcbiAgZ3JpZE5hbWU6IHN0cmluZztcbiAgY29sdW1uRGVmczogRGF0b0dyaWRDb2x1bW5EZWZbXTtcbiAgc2F2ZVNldHRpbmdzPzogYm9vbGVhbjtcbiAgZW5hYmxlVjJfMT86IGJvb2xlYW47XG4gIGV4cG9ydEdyaWQ/KHBhcmFtczogRGF0b0dyaWRFeHBvcnRQYXJhbXMpOiB2b2lkO1xuICBkZWZhdWx0Q29sRGVmPzogRGF0b0dyaWRDb2x1bW5EZWY7XG4gIGRhdGFzb3VyY2U/OiB7XG4gICAgZ2V0Um93cyhwYXJhbXM6IERhdG9HcmlkR2V0Um93c1BhcmFtcyk6IHZvaWQ7XG4gICAgLy8gb3B0aW9uYWwgZGVzdHJveSBtZXRob2QsIGlmIHlvdXIgZGF0YXNvdXJjZSBoYXMgc3RhdGUgaXQgbmVlZHMgdG8gY2xlYW4gdXBcbiAgICBkZXN0cm95PygpOiB2b2lkO1xuICB9O1xuICBjdXN0b21Db250ZXh0TWVudT8ocm93QWN0aW9uczogUm93QWN0aW9uW10pOiBSb3dBY3Rpb25bXTtcbiAgaG92ZXJDb25maWc/OiBEYXRvR3JpZE9uSG92ZXJDb25maWc7XG4gIG92ZXJsYXlzQ29uZmlnPzogRGF0b0dyaWRPdmVybGF5SW5wdXQ7XG4gIGRpc3RpbmN0UmVzdWx0cz86IGJvb2xlYW47XG4gIG1heERlcHRoPzogbnVtYmVyO1xuICBlbmFibGVTZWFyY2g/OiBib29sZWFuO1xuICBlbmFibGVTZWFyY2hIaWdobGlnaHQ/OiBib29sZWFuO1xuICBjb2x1bW5zSW5jbHVkZWRJblNlYXJjaEJ5RGVmYXVsdD86IGJvb2xlYW47XG4gIHNlYXJjaERlYm91bmNlVGltZT86IG51bWJlcjtcbiAgaW5jbHVkZUhpZGRlbkNvbHVtbnNJblNlYXJjaD86IGJvb2xlYW47XG4gIHNob3dNdWx0aVNlbGVjdGlvbkNoZWNrYm94ZXM/OiBib29sZWFuO1xuICBlbmFibGVBbGxQYWdlc1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIGlkQ29sdW1uS2V5Pzogc3RyaW5nO1xuICBlbmFibGVCYWNrZ3JvdW5kPzogYm9vbGVhbjtcbiAgc2hvd0JvdHRvbUNvbnRyb2xzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnVJdGVtID0gc3RyaW5nIHwgTWVudUl0ZW1EZWY7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udmVydGVyUGFyYW1zIHtcbiAgbm9kZTogUm93Tm9kZTtcbiAgdG9vbGJhckFjdGlvbnM6IFJvd0FjdGlvbltdO1xuICBzZWxlY3RlZFJvd3M6IFJvd05vZGVbXTtcbiAgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnk7XG4gIGxvZ2dlcj86IHtcbiAgICBsb2coZXZlbnRUeXBlOiBDb3JlRXZlbnRUeXBlcy5HUklEX1RBQkxFX0FDVElPTiwgZXZlbnRQcm9wZXJ0aWVzPzogSGFzaE1hcDxhbnk+KTogdm9pZDtcbiAgICBldmVudE9yaWdpbj86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0RGlyZWN0aW9uID0gJ2FzYycgfCAnZGVzYyc7XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNvcnQgPSB7IGNvbElkOiBzdHJpbmc7IHNvcnQ6IERhdG9HcmlkU29ydERpcmVjdGlvbjsgcGl2b3RDb2xJbmRleD86IG51bWJlciB9O1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNlcnZlclNvcnQgPSB7IGNvbHVtbjogc3RyaW5nOyBzb3J0T3JkZXI6IERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiB9O1xuZXhwb3J0IGNvbnN0IGVudW0gRGF0b0dyaWRBbGlnbm1lbnQge1xuICBGSVRfVE9fQ09OVEFJTkVSLFxuICBGSVRfVE9fQ09OVEVOVCxcbiAgQ1VTVE9NXG59XG5cbmV4cG9ydCBlbnVtIEdyaWRNaW5XaWR0aHMge1xuICBEZWZhdWx0ID0gMTA3LFxuICBXaXRoX0luZm8gPSAxMzFcbn1cblxuZXhwb3J0IGVudW0gRGF0b0dyaWRDb2x1bW5UeXBlcyB7XG4gIFN0cmluZyA9ICdTdHJpbmcnLFxuICBOdW1iZXIgPSAnTnVtYmVyJyxcbiAgRGF0ZSA9ICdEYXRlJyxcbiAgU3RhdHVzID0gJ1N0YXR1cycsXG4gIEl0ZW1zID0gJ0l0ZW1zJyxcbiAgSXRlbXNDb3VudCA9ICdJdGVtc0NvdW50JyxcbiAgSW5pdGlhbHMgPSAnSW5pdGlhbHMnLFxuICBBdmF0YXIgPSAnQXZhdGFyJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkVHJlZUNvbmZpZyB7XG4gIGlkS2V5OiBzdHJpbmc7XG4gIHBhcmVudElES2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFnR3JpZFJvd0ljb24gPVxuICB8IHN0cmluZ1xuICB8IHtcbiAgICAgIGV4cGFuZGVkOiBzdHJpbmc7XG4gICAgICBjb2xsYXBzZWQ6IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgZW51bSBHcmlkUm93U2VsZWN0aW9uVHlwZSB7XG4gIFNJTkdMRSA9ICdzaW5nbGUnLFxuICBNVUxUSVBMRSA9ICdtdWx0aXBsZSdcbn1cblxuZXhwb3J0IHR5cGUgR3JpZFJvd3NTZWxlY3Rpb25EYXRhID0ge1xuICB0b3RhbFJvd3NDb3VudDogbnVtYmVyO1xuICBzZWxlY3RlZFJvd3NDb3VudDogbnVtYmVyO1xuICBzZWxlY3RlZFBhZ2VSb3dzQ291bnQ6IG51bWJlcjtcbiAgaXNBbGxQYWdlUm93c1NlbGVjdGVkOiBib29sZWFuO1xufTtcbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxJQUFNLDZCQUE2QixHQUFHLFVBQUEsTUFBTTtJQUNqRCxPQUFBLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBdUMsTUFBTSxDQUFDLEtBQUssV0FBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQTNGLENBQTJGLENBQUM7QUFFOUYsTUFBTSxDQUFDLElBQU0sdUNBQXVDLEdBQUcsVUFBQyxNQUEyQixFQUFFLFVBQWtCO0lBQ3JHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLDJDQUF1QywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVEsQ0FBQztBQUN4RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsSUFBTSwyQkFBMkIsR0FBRyxVQUFDLE1BQTJCLEVBQUUsVUFBa0I7SUFDekYsVUFBVSxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZDLElBQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZFLE9BQU8sVUFBVTtRQUNmLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxVQUFDLEdBQVcsSUFBSyxPQUFBLHNDQUFrQyxHQUFHLFlBQVMsRUFBOUMsQ0FBOEMsQ0FBQztRQUM5RyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBK0dGLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIseURBQWEsQ0FBQTtJQUNiLDZEQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBU1g7QUFURCxXQUFZLG1CQUFtQjtJQUM3Qix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLGdEQUF5QixDQUFBO0lBQ3pCLDRDQUFxQixDQUFBO0lBQ3JCLHdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFUVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBUzlCO0FBY0QsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM5Qix5Q0FBaUIsQ0FBQTtJQUNqQiw2Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUcvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbERlZiwgR3JpZE9wdGlvbnMsIElDZWxsUmVuZGVyZXJQYXJhbXMsIElHZXRSb3dzUGFyYW1zLCBNZW51SXRlbURlZiwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9HcmlkRmlsdGVyU2VjdGlvbnMsIExpc3RJdGVtIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NlcnZlclBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuLi9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9saWIvZXZlbnRzJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE1vcmVNZW51QWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUvZ3JpZC1jb2x1bW4taGVhZGVyLW1vcmUtbWVudS50eXBlcyc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b0dyaWRPdmVybGF5SW5wdXQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RWRpdGFibGVDb2x1bW5SZW5kZXJlciA9IHBhcmFtcyA9PlxuICBwYXJhbXMgJiYgcGFyYW1zLnZhbHVlID8gYDxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyIGVsbGlwc2lzXCI+JHtwYXJhbXMudmFsdWV9PC9kaXY+YCA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBlZGl0YWJsZUNlbGxSZW5kZXJlcldpdGhTZWFyY2hIaWdobGlnaHQgPSAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy52YWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInZhbHVlLXdyYXBwZXIgZWxsaXBzaXNcIj4ke3NlYXJjaEhpZ2hsaWdodENlbGxSZW5kZXJlcihwYXJhbXMsIHNlYXJjaFRlcm0pfTwvZGl2PmA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoSGlnaGxpZ2h0Q2VsbFJlbmRlcmVyID0gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcywgc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gIHNlYXJjaFRlcm0gPSAoc2VhcmNoVGVybSB8fCAnJykudHJpbSgpO1xuICBjb25zdCB2YWx1ZSA9IChwYXJhbXMudmFsdWVGb3JtYXR0ZWQgfHwgcGFyYW1zLnZhbHVlIHx8ICcnKS50b1N0cmluZygpO1xuICByZXR1cm4gc2VhcmNoVGVybVxuICAgID8gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdnaScpLCAoc3RyOiBzdHJpbmcpID0+IGA8c3BhbiBjbGFzcz1cInNlYXJjaC1oaWdobGlnaHRcIj4ke3N0cn08L3NwYW4+YClcbiAgICA6IHZhbHVlO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRDb2x1bW5EZWYgPSB7XG4gIGZpbHRlcnNDb25maWc/OiBEYXRvR3JpZEZpbHRlckNvbmZpZztcbiAgbW9yZU1lbnVBY3Rpb25zPzogRGF0b0dyaWRNb3JlTWVudUFjdGlvbnNbXTtcbiAgaW5mbz86IHN0cmluZztcbiAgb3JpZ2luYWxXaWR0aD86IG51bWJlcjtcbiAgaW5jbHVkZUluU2VhcmNoPzogYm9vbGVhbjtcbiAgY3VzdG9tQ2VsbENvbmZpZz86IERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZztcbiAgdmFsdWVUb0N1c3RvbUNlbGxDb25maWc/OiBIYXNoTWFwPERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZz47XG59ICYgQ29sRGVmO1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEN1c3RvbUNlbGxDb25maWcgPSB7XG4gIGNvbG9yPzogJ3ByaW1hcnknIHwgJ2dyZWVuJyB8ICdyZWQnIHwgJ2FjY2VudCcgfCAneWVsbG93JztcbiAgaWNvbj86IHN0cmluZztcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGljb25Dc3NDbGFzcz86IHN0cmluZztcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIHNob3dTcGlubmVyPzogYm9vbGVhbjtcbiAgbWF4TGFiZWxzPzogbnVtYmVyO1xuICBnZXRBZGRpdGlvbmFsVGV4dD86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0SW1hZ2VVcmw/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGluaXRpYWxzQ29uZmlnPzogRGF0b0dyaWRJbml0aWFsc0NlbGxDb25maWc7XG4gIGdldElzVmlzaWJsZT86IChkYXRhOiBhbnkpID0+IGJvb2xlYW47XG4gIGdldEl0ZW1zPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEluaXRpYWxzQ2VsbENvbmZpZyA9IHtcbiAgZmlyc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGxhc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGZ1bGxOYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGdldEZ1bGxOYW1lPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpc0JvbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRGaWx0ZXJDb25maWcgPSB7XG4gIHNlY3Rpb25zPzogRGF0b0dyaWRGaWx0ZXJTZWN0aW9ucztcbiAgcHJlZGVmaW5lZExpc3RWYWx1ZXM/OiAoc3RyaW5nIHwgTGlzdEl0ZW0pW107XG4gIGtlZXBQcmVkZWZpbmVkTGlzdE9yaWdpbmFsT3JkZXI/OiBib29sZWFuO1xuICBzaG93RW1wdHlDb25kaXRpb25zPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQWdHcmlkRXZlbnQge1xuICB0eXBlOiAnU2VydmVyRGF0YUxvYWRlZCcgfCAncm93RGF0YUNoYW5nZWQnIHwgJ3Jvd0RhdGFVcGRhdGVkJztcbiAgcGFnaW5hdGlvblBhZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0b0dyaWRHZXRSb3dzUGFyYW1zIGV4dGVuZHMgSUdldFJvd3NQYXJhbXMge1xuICBzZXJ2ZXJDb25maWc6IERhdG9TZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEV4cG9ydFBhcmFtcyA9IERhdG9HcmlkQXBpICYgRGF0b0dyaWRTZXR0aW5ncztcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRPbkhvdmVyQ29uZmlnID0ge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgbWF4RGlzcGxheWVkSXRlbXM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkT3B0aW9ucyBleHRlbmRzIEdyaWRPcHRpb25zIHtcbiAgZ3JpZE5hbWU6IHN0cmluZztcbiAgY29sdW1uRGVmczogRGF0b0dyaWRDb2x1bW5EZWZbXTtcbiAgc2F2ZVNldHRpbmdzPzogYm9vbGVhbjtcbiAgZW5hYmxlVjJfMT86IGJvb2xlYW47XG4gIGlzR2xvYmFsU2V0dGluZ3M/OiBib29sZWFuO1xuICBleHBvcnRHcmlkPyhwYXJhbXM6IERhdG9HcmlkRXhwb3J0UGFyYW1zKTogdm9pZDtcbiAgZGVmYXVsdENvbERlZj86IERhdG9HcmlkQ29sdW1uRGVmO1xuICBkYXRhc291cmNlPzoge1xuICAgIGdldFJvd3MocGFyYW1zOiBEYXRvR3JpZEdldFJvd3NQYXJhbXMpOiB2b2lkO1xuICAgIC8vIG9wdGlvbmFsIGRlc3Ryb3kgbWV0aG9kLCBpZiB5b3VyIGRhdGFzb3VyY2UgaGFzIHN0YXRlIGl0IG5lZWRzIHRvIGNsZWFuIHVwXG4gICAgZGVzdHJveT8oKTogdm9pZDtcbiAgfTtcbiAgY3VzdG9tQ29udGV4dE1lbnU/KHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdKTogUm93QWN0aW9uW107XG4gIGhvdmVyQ29uZmlnPzogRGF0b0dyaWRPbkhvdmVyQ29uZmlnO1xuICBvdmVybGF5c0NvbmZpZz86IERhdG9HcmlkT3ZlcmxheUlucHV0O1xuICBkaXN0aW5jdFJlc3VsdHM/OiBib29sZWFuO1xuICBtYXhEZXB0aD86IG51bWJlcjtcbiAgZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0PzogYm9vbGVhbjtcbiAgY29sdW1uc0luY2x1ZGVkSW5TZWFyY2hCeURlZmF1bHQ/OiBib29sZWFuO1xuICBzZWFyY2hEZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIGluY2x1ZGVIaWRkZW5Db2x1bW5zSW5TZWFyY2g/OiBib29sZWFuO1xuICBzaG93TXVsdGlTZWxlY3Rpb25DaGVja2JveGVzPzogYm9vbGVhbjtcbiAgZW5hYmxlQWxsUGFnZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpZENvbHVtbktleT86IHN0cmluZztcbiAgZW5hYmxlQmFja2dyb3VuZD86IGJvb2xlYW47XG4gIHNob3dCb3R0b21Db250cm9scz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51SXRlbSA9IHN0cmluZyB8IE1lbnVJdGVtRGVmO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnZlcnRlclBhcmFtcyB7XG4gIG5vZGU6IFJvd05vZGU7XG4gIHRvb2xiYXJBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgc2VsZWN0ZWRSb3dzOiBSb3dOb2RlW107XG4gIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5O1xuICBsb2dnZXI/OiB7XG4gICAgbG9nKGV2ZW50VHlwZTogQ29yZUV2ZW50VHlwZXMuR1JJRF9UQUJMRV9BQ1RJT04sIGV2ZW50UHJvcGVydGllcz86IEhhc2hNYXA8YW55Pik6IHZvaWQ7XG4gICAgZXZlbnRPcmlnaW4/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0ID0geyBjb2xJZDogc3RyaW5nOyBzb3J0OiBEYXRvR3JpZFNvcnREaXJlY3Rpb247IHBpdm90Q29sSW5kZXg/OiBudW1iZXIgfTtcbmV4cG9ydCB0eXBlIERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiA9ICdBU0MnIHwgJ0RFU0MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0ID0geyBjb2x1bW46IHN0cmluZzsgc29ydE9yZGVyOiBEYXRvR3JpZFNlcnZlclNvcnREaXJlY3Rpb24gfTtcbmV4cG9ydCBjb25zdCBlbnVtIERhdG9HcmlkQWxpZ25tZW50IHtcbiAgRklUX1RPX0NPTlRBSU5FUixcbiAgRklUX1RPX0NPTlRFTlQsXG4gIENVU1RPTVxufVxuXG5leHBvcnQgZW51bSBHcmlkTWluV2lkdGhzIHtcbiAgRGVmYXVsdCA9IDEwNyxcbiAgV2l0aF9JbmZvID0gMTMxXG59XG5cbmV4cG9ydCBlbnVtIERhdG9HcmlkQ29sdW1uVHlwZXMge1xuICBTdHJpbmcgPSAnU3RyaW5nJyxcbiAgTnVtYmVyID0gJ051bWJlcicsXG4gIERhdGUgPSAnRGF0ZScsXG4gIFN0YXR1cyA9ICdTdGF0dXMnLFxuICBJdGVtcyA9ICdJdGVtcycsXG4gIEl0ZW1zQ291bnQgPSAnSXRlbXNDb3VudCcsXG4gIEluaXRpYWxzID0gJ0luaXRpYWxzJyxcbiAgQXZhdGFyID0gJ0F2YXRhcidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZFRyZWVDb25maWcge1xuICBpZEtleTogc3RyaW5nO1xuICBwYXJlbnRJREtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBZ0dyaWRSb3dJY29uID1cbiAgfCBzdHJpbmdcbiAgfCB7XG4gICAgICBleHBhbmRlZDogc3RyaW5nO1xuICAgICAgY29sbGFwc2VkOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGVudW0gR3JpZFJvd1NlbGVjdGlvblR5cGUge1xuICBTSU5HTEUgPSAnc2luZ2xlJyxcbiAgTVVMVElQTEUgPSAnbXVsdGlwbGUnXG59XG5cbmV4cG9ydCB0eXBlIEdyaWRSb3dzU2VsZWN0aW9uRGF0YSA9IHtcbiAgdG90YWxSb3dzQ291bnQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRSb3dzQ291bnQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlUm93c0NvdW50OiBudW1iZXI7XG4gIGlzQWxsUGFnZVJvd3NTZWxlY3RlZDogYm9vbGVhbjtcbn07XG4iXX0=
@@ -19,7 +19,7 @@ import { DatoCustomHeaderTemplateComponent } from '../grid-custom-header/custom-
19
19
  import { DatoTranslateService } from '../../services/translate.service';
20
20
  import { DATO_GRID_STORAGE_API } from '../grid-settings';
21
21
  import { auditTime, debounceTime, filter, skip, switchMap, tap } from 'rxjs/operators';
22
- import { appendChild, query } from '../../internal/helpers';
22
+ import { addClass, appendChild, query } from '../../internal/helpers';
23
23
  import Tooltip from 'tooltip.js';
24
24
  import { isNil } from '../../utils/validators';
25
25
  import { createComponent } from '../../angular/dynamic-components';
@@ -91,7 +91,10 @@ var DatoGridControllerComponent = /** @class */ (function () {
91
91
  .pipe(switchMap(function () {
92
92
  _this.gridOptions = _this.normalizeOptions();
93
93
  agGrid.gridOptions = _this.gridOptions;
94
- var settingsLoader = _this.gridOptions.saveSettings === false ? of(null) : _this.storageAPI.get(_this.gridOptions.gridName);
94
+ var isGlobal = _this.gridOptions.isGlobalSettings;
95
+ var settingsLoader = _this.gridOptions.saveSettings === false
96
+ ? of(null)
97
+ : _this.storageAPI.get(_this.gridOptions.gridName, isGlobal);
95
98
  return combineLatest([agGrid.gridReady, settingsLoader]);
96
99
  }), untilDestroyed(this))
97
100
  .subscribe(function (_a) {
@@ -99,6 +102,11 @@ var DatoGridControllerComponent = /** @class */ (function () {
99
102
  if (!_this.gridOptions.rowData) {
100
103
  api.showLoadingOverlay();
101
104
  }
105
+ if (!_this.gridOptions.statusBar) {
106
+ /** Fix ag-grid bug that doesn't add ag-hidden class to the status bar, which only get fixed in later versions */
107
+ var el = agGridEl.querySelector('.ag-status-bar');
108
+ addClass(el, 'ag-hidden');
109
+ }
102
110
  var gridApi = { grid: api, columns: columnApi };
103
111
  _this.gridService._setApi(gridApi, agGrid);
104
112
  _this.gridQuery._setApi(gridApi, agGrid);
@@ -512,4 +520,4 @@ var DatoGridControllerComponent = /** @class */ (function () {
512
520
  return DatoGridControllerComponent;
513
521
  }());
514
522
  export { DatoGridControllerComponent };
515
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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UUFUdkMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxRQUFRLEVBQUUscUNBRVQ7WUFFRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtZQUMvQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQzs7U0FDL0MsQ0FBQztRQW9ERyxXQUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO3lDQVRWLFdBQVc7WUFDYixTQUFTO1lBQ2QsaUJBQWlCO1lBQ1IsWUFBWTtZQUNmLG9CQUFvQjtZQUN6QixVQUFVO1lBQ04sUUFBUTtZQUNSLHdCQUF3QjtZQUN6QixXQUFXO09BbERuQiwyQkFBMkIsQ0EyZXZDO0lBQUQsa0NBQUM7Q0FBQSxBQTNlRCxJQTJlQztTQTNlWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWdHcmlkTmcyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1xuICBCb2R5U2Nyb2xsRXZlbnQsXG4gIENlbGxDbGlja2VkRXZlbnQsXG4gIENlbGxFdmVudCxcbiAgQ2VsbE1vdXNlT3V0RXZlbnQsXG4gIENvbHVtblJlc2l6ZWRFdmVudCxcbiAgQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQsXG4gIERldGFpbEdyaWRJbmZvLFxuICBHcmlkQXBpLFxuICBSb3dHcm91cE9wZW5lZEV2ZW50XG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENvbHVtbnNTaXplcyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvdXRpbCc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4vZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQWxpZ25tZW50LCBEYXRvR3JpZE9wdGlvbnMsIERhdG9HcmlkU29ydCB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBJY29uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pY29uLXJlZ2lzdHJ5JztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2RlZXAtbWVyZ2UnO1xuaW1wb3J0IHsgRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jdXN0b20taGVhZGVyL2N1c3RvbS1oZWFkZXItdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBHcmlkQWN0aW9uLCBSb3dBY3Rpb24gfSBmcm9tICcuLi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLnR5cGVzJztcbmltcG9ydCB7IERhdG9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgREFUT19HUklEX1NUT1JBR0VfQVBJLCBHcmlkU3RvcmFnZUFQSSB9IGZyb20gJy4uL2dyaWQtc2V0dGluZ3MnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgc2tpcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgcXVlcnkgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ3Rvb2x0aXAuanMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvZHluYW1pYy1jb21wb25lbnRzJztcbmltcG9ydCB7IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udmVydEZyb21UcmVlRGF0YSwgZGVmYXVsdEdyaWRPcHRpb25zLCBkZWZhdWx0VHJlZU9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIuY29uZmlnJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0b0hvdGtleXMgfSBmcm9tICcuLi8uLi9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5pbXBvcnQgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbR3JpZFF1ZXJ5LCBHcmlkU2VydmljZSwgR3JpZFN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCkgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogUXVlcnlMaXN0PFxuICAgIERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudFxuICA+O1xuXG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGdyaWRBY3Rpb25zOiBHcmlkQWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgc2V0IGdyaWRPcHRpb25zKGdyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnMpIHtcbiAgICB0aGlzLl9ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudHJlZURhdGEgPSBncmlkT3B0aW9ucy50cmVlRGF0YTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmlzUGl2b3RNb2RlID0gZ3JpZE9wdGlvbnMucGl2b3RNb2RlO1xuXG4gICAgaWYgKHRoaXMuYWdHcmlkRWwpIHtcbiAgICAgIGlmIChncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAhdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy50cmVlR3JpZENsYXNzKSAmJiB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAoIWdyaWRPcHRpb25zLmVuYWJsZVYyXzEpIHtcbiAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyaWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9ncmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY29udGVudEluaXQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHRvb2x0aXA7XG4gIHByaXZhdGUgX2dyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnM7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLmdyaWRRdWVyeS5ncmlkUmVhZHkkO1xuICBhZ0dyaWRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSByb3dIb3ZlckNvbXBvbmVudDogQ29tcG9uZW50UmVmPERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD47XG4gIHByaXZhdGUgbGFzdEhvdmVyZWRSb3c6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGdyaWRFbGVtZW50cyA9IHtcbiAgICBjZW50ZXJWaWV3cG9ydDogbnVsbCxcbiAgICBjZW50ZXJDb250YWluZXI6IG51bGwsXG4gICAgYm9keVZpZXdwb3J0OiBudWxsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJlZUdyaWRDbGFzcyA9ICd0cmVlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IEljb25SZWdpc3RyeSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGhvdGtleXM6IERhdG9Ib3RrZXlzLFxuICAgIEBJbmplY3QoREFUT19HUklEX1NUT1JBR0VfQVBJKSBwcml2YXRlIHN0b3JhZ2VBUEk6IEdyaWRTdG9yYWdlQVBJXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCAmJiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gbnVsbDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0Lm5leHQoKTtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgX2luaXRpYWxpemVHcmlkKGFnR3JpZDogQWdHcmlkTmcyLCBhZ0dyaWRFbDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLmFnR3JpZEVsID0gYWdHcmlkRWw7XG4gICAgdGhpcy5jb250ZW50SW5pdFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zID0gdGhpcy5ub3JtYWxpemVPcHRpb25zKCk7XG4gICAgICAgICAgYWdHcmlkLmdyaWRPcHRpb25zID0gdGhpcy5ncmlkT3B0aW9ucztcbiAgICAgICAgICBjb25zdCBzZXR0aW5nc0xvYWRlciA9XG4gICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNhdmVTZXR0aW5ncyA9PT0gZmFsc2UgPyBvZihudWxsKSA6IHRoaXMuc3RvcmFnZUFQSS5nZXQodGhpcy5ncmlkT3B0aW9ucy5ncmlkTmFtZSk7XG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2FnR3JpZC5ncmlkUmVhZHksIHNldHRpbmdzTG9hZGVyXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3sgYXBpLCBjb2x1bW5BcGkgfSwgc2F2ZWRTZXR0aW5ncyA9IHt9XTogW0RldGFpbEdyaWRJbmZvLCBQYXJ0aWFsPERhdG9HcmlkU2V0dGluZ3M+XSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSkge1xuICAgICAgICAgIGFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmlkQXBpOiBEYXRvR3JpZEFwaSA9IHsgZ3JpZDogYXBpLCBjb2x1bW5zOiBjb2x1bW5BcGkgfTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcblxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmluaXRTZXR0aW5ncyhzYXZlZFNldHRpbmdzIHx8IHt9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclNldHRpbmdzTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9ncmlkUmVhZHkubmV4dCh0cnVlKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCgndHJlZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodCkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZChgcm93LWhlaWdodC0ke3RoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0fWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplT3B0aW9ucygpIHtcbiAgICAvKipcbiAgICAgKiBXaGVuIHRyZWVEYXRhIGlzIGVuYWJsZWQsIFBhZ2luYXRpb24gbXVzdCBiZSB0dXJuZWQgb2ZmXG4gICAgICovXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRoaXMuZ3JpZE9wdGlvbnMsXG4gICAgICAgIHBhZ2luYXRpb246IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBncmlkT3B0aW9uczogdGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IHRoaXMuY3VzdG9tSGVhZGVyc1RlbXBsYXRlcyxcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMucm93QWN0aW9uc1xuICAgIH07XG5cbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMuZ3JpZFNlcnZpY2Uubm9ybWFsaXplT3B0aW9ucyhwYXJhbXMpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgLi4uKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEgPyBkZWZhdWx0VHJlZU9wdGlvbnMgOiB7fSksXG4gICAgICBpY29uczogdGhpcy5nZXRHcmlkSWNvbnMoKVxuICAgIH07XG4gICAgcmV0dXJuIGRlZXBtZXJnZShkZWZhdWx0cywgbm9ybWFsaXplZCk7XG4gIH1cblxuICBzZXRHcmlkUm93czxUPihkYXRhOiBUW10pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldFJvd3M8VD4oZGF0YSk7XG4gIH1cblxuICBzZXRHcmlkRmlsdGVycyhmaWx0ZXJzOiBEYXRvR3JpZEV4dGVybmFsRmlsdGVyW10pIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgb25GaWx0ZXJDaGFuZ2VkKCk6IE9ic2VydmFibGU8RGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFF1ZXJ5LmZpbHRlckNoYW5nZWQoKTtcbiAgfVxuXG4gIG9uU29ydENoYW5nZWQoKTogT2JzZXJ2YWJsZTxEYXRvR3JpZFNvcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5ncmlkUXVlcnkuc2VsZWN0U29ydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkSWNvbnMoKTogSGFzaE1hcDxzdHJpbmc+IHtcbiAgICBjb25zdCBtb3ZlQ29sdW1uSWNvbiA9IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgJ21vdmUtY29sdW1uJ1xuICAgICl9PC9zcGFuPmA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwRXhwYW5kZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWV4cGFuZGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGdyb3VwQ29udHJhY3RlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtY29udHJhY3RlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlUGluOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggcHJpbWFyeS0zMDAtZmlsbCBjb2x1bW4tbW92ZS1waW5cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ3BpbidcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlSGlkZTogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlLWhpZGVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2V5ZS1oaWRlJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVNb3ZlOiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVMZWZ0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVSaWdodDogbW92ZUNvbHVtbkljb24sXG4gICAgICByb3dEcmFnOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gZHJhZyBkLWZsZXhcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZygnZHJhZy0wMScpfTwvc3Bhbj5gXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMubGlzdGVuVG9Db2x1bW5SZXNpemUoYXBpLCBhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZCk7XG4gICAgdGhpcy5saXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvQ29sdW1uUmVzaXplKGFwaTogRGF0b0dyaWRBcGksIHsgY29sdW1uUmVzaXplZCB9OiBBZ0dyaWROZzIpIHtcbiAgICBsZXQgb2JzZXJ2YWJsZSA9IGNvbHVtblJlc2l6ZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVPbkhvdmVyUG9zKCkpXG4gICAgICApO1xuICAgIH1cbiAgICBvYnNlcnZhYmxlXG4gICAgICAucGlwZShcbiAgICAgICAgYXVkaXRUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoeyBmaW5pc2hlZCwgc291cmNlIH06IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gZmluaXNoZWQgJiYgc291cmNlID09PSAndWlDb2x1bW5EcmFnZ2VkJyksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1uXSA9IGUuY29sdW1ucztcbiAgICAgICAgbGV0IGNvbHVtbnNTaXplcyA9IHsgLi4udGhpcy5ncmlkUXVlcnkuZ2V0Q29sdW1uU2l6ZXMoKSB9O1xuICAgICAgICBpZiAoY29sdW1uc1NpemVzKSB7XG4gICAgICAgICAgY29sdW1uc1NpemVzW2NvbHVtbi5nZXRDb2xJZCgpXSA9IGNvbHVtbi5nZXRBY3R1YWxXaWR0aCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhcGkuY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnVwZGF0ZVNldHRpbmdzKHsgZ3JpZEFsaWdubWVudDogRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NLCBjb2x1bW5zU2l6ZXMgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkIH0gPSBhZ0dyaWQ7XG4gICAgbWVyZ2UoY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZClcbiAgICAgIC5waXBlKFxuICAgICAgICAvKiBTa2lwIHRoZSBpbml0aWFsIHNvcnRpbmcgZXZlbnQgZmlyZWQgYnkgdGhlIGdyaWQgd2hlbiBhZGRpbmcgcm93cyAqL1xuICAgICAgICBza2lwKDEpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyB0eXBlIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyhzZXR0aW5nc0RpZmYpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcmlkRGF0YSgpO1xuICAgICAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpIHtcbiAgICB0aGlzLmdyaWRRdWVyeVxuICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncylcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zYXZlU2V0dGluZ3NUb1NlcnZlcihzZXR0aW5nc0RpZmYpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZExpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMuZ3JpZEVsZW1lbnRzID0ge1xuICAgICAgY2VudGVyQ29udGFpbmVyOiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgY2VudGVyVmlld3BvcnQ6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGJvZHlWaWV3cG9ydDogcXVlcnkoJy5hZy1ib2R5LXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbClcbiAgICB9O1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGkuZ3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoYXBpKTtcbiAgICB0aGlzLnJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICAvKiBNYWtlIGdyb3VwIGV4cGFuZC9jb2xsYXBzZSBvbiBhIHNpbmdsZSBjbGljayBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGRvdWJsZSBjbGljayAqL1xuICAgIGFnR3JpZC5jb2x1bW5Sb3dHcm91cENoYW5nZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHsgY29sdW1ucyB9OiBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb2x1bW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBFTVBUWVxuICAgICAgICAgICAgOiBhZ0dyaWQuY2VsbENsaWNrZWQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHsgdmFsdWUsIG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBub2RlLmdyb3VwID09PSB0cnVlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgbm9kZSB9OiBDZWxsQ2xpY2tlZEV2ZW50KSA9PiB7XG4gICAgICAgIG5vZGUuc2V0RXhwYW5kZWQoIW5vZGUuZXhwYW5kZWQpO1xuICAgICAgfSk7XG4gICAgLyogV2hlbiBjbG9zaW5nIGEgZ3JvdXBlZCByb3cgd2Ugd2FudCB0byBoaWRlIHRoZSBvbiBob3ZlciBhY3Rpb25zICovXG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgYWdHcmlkLnJvd0dyb3VwT3BlbmVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoeyBub2RlIH06IFJvd0dyb3VwT3BlbmVkRXZlbnQpID0+IG5vZGUuZXhwYW5kZWQgPT09IGZhbHNlKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgY2xpY2sgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZ3JpZHMgYm9keSBhbmQgbm90IGEgcm93LCBjbGVhciB0aGUgcm93cyBzZWxlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGk6IEdyaWRBcGkpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyVmlld3BvcnQgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQudGFyZ2V0ID09PSBib2R5Vmlld3BvcnQgfHwgZXZlbnQudGFyZ2V0ID09PSBjZW50ZXJWaWV3cG9ydCkgJiYgYXBpLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiBhcGkuZGVzZWxlY3RBbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIG9uSG92ZXJFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLmVuYWJsZWQgJiYgdGhpcy5yb3dBY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgbGV0IGxhc3RIb3ZlcmVkQ2VsbDtcbiAgICBjb25zdCBvbkhvdmVyRW5hYmxlZCA9IHRoaXMub25Ib3ZlckVuYWJsZWQoKTtcbiAgICBpZiAob25Ib3ZlckVuYWJsZWQpIHtcbiAgICAgIGZyb21FdmVudChjZW50ZXJDb250YWluZXIsICdtb3VzZWxlYXZlJylcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyh0aGlzLmxhc3RIb3ZlcmVkUm93KTtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgbGFzdEhvdmVyZWRDZWxsID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICBtZXJnZShcbiAgICAgICAgYWdHcmlkLmJvZHlTY3JvbGwucGlwZShmaWx0ZXIoKHsgZGlyZWN0aW9uIH06IEJvZHlTY3JvbGxFdmVudCkgPT4gZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpKSxcbiAgICAgICAgYWdHcmlkLnJvd0RhdGFDaGFuZ2VkXG4gICAgICApXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmFkZE9uSG92ZXJFbGVtZW50KCk7XG4gICAgfVxuICAgIGFnR3JpZC5jZWxsTW91c2VPdmVyXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IG5vZGUsIGNvbHVtbiB9KSA9PiBsYXN0SG92ZXJlZENlbGwgIT09IGAke25vZGUuaWR9LSR7Y29sdW1uLmdldENvbElkKCl9YCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQ2VsbE1vdXNlT3V0RXZlbnQpID0+IHtcbiAgICAgICAgbGFzdEhvdmVyZWRDZWxsID0gYCR7ZXZlbnQubm9kZS5pZH0tJHtldmVudC5jb2x1bW4uZ2V0Q29sSWQoKX1gO1xuICAgICAgICB0aGlzLnNob3dUb29sdGlwKGV2ZW50KTtcbiAgICAgICAgY29uc3Qgcm93ID0gKGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKG9uSG92ZXJFbmFibGVkICYmIChldmVudC5ub2RlLmdyb3VwID09PSBmYWxzZSB8fCBpc05pbChldmVudC5ub2RlLmdyb3VwKSkgJiYgdGhpcy5sYXN0SG92ZXJlZFJvdyAhPT0gcm93KSB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gdGhpcy5sYXN0SG92ZXJlZFJvdztcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gcm93O1xuICAgICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyhbcHJldmlvdXNOb2RlLCB0aGlzLmxhc3RIb3ZlcmVkUm93XSk7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUodHJ1ZSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBvblRvb2x0aXBPdXQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdzY3JvbGwnKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLmFnR3JpZEVsLCAnbW91c2VsZWF2ZScpLFxuICAgICAgYWdHcmlkLmNlbGxNb3VzZU91dFxuICAgICk7XG4gICAgb25Ub29sdGlwT3V0XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICFpc05pbCh0aGlzLnRvb2x0aXApKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSB0aGUgdG9vbHRpcFxuICAgKi9cbiAgY2xlYXJUb29sdGlwKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbHRpcC5kaXNwb3NlKCk7XG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXAoZXZlbnQ6IENlbGxFdmVudCkge1xuICAgIGNvbnN0IGNlbGw6IEhUTUxFbGVtZW50ID0gZXZlbnQuZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHRleHRPdmVyZmxvdyA9IGNlbGwub2Zmc2V0V2lkdGggPCBjZWxsLnNjcm9sbFdpZHRoO1xuICAgIGlmICh0ZXh0T3ZlcmZsb3cpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY2VsbCwgdmFsdWU6IGNlbGwuaW5uZXJUZXh0IH07XG4gICAgICBpc05pbCh0aGlzLnRvb2x0aXApID8gdGhpcy5jcmVhdGVBbmRTaG93VG9vbHRpcChwYXJhbXMpIDogdGhpcy51cGRhdGVUb29sdGlwKHBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbmRTaG93VG9vbHRpcCh7IGNlbGwsIHZhbHVlIH0pIHtcbiAgICB0aGlzLnRvb2x0aXAgPSBuZXcgVG9vbHRpcChjZWxsLCB7XG4gICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5ib2R5LFxuICAgICAgdHJpZ2dlcjogJ21hbnVhbCcsXG4gICAgICB0aXRsZTogRE9NUHVyaWZ5LnNhbml0aXplKHZhbHVlKSxcbiAgICAgIGh0bWw6IHRydWUsXG4gICAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAgIG1vZGlmaWVyczoge1xuICAgICAgICAgIHByZXZlbnRPdmVyZmxvdzogeyBlbmFibGVkOiBmYWxzZSB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZTpcbiAgICAgICAgJzxkaXYgY2xhc3M9XCJ0b29sdGlwIGRhdG8tdG9vbHRpcCBjb21tb24tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+PGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwidG9vbHRpcC1pbm5lclwiPjwvZGl2PjwvZGl2PidcbiAgICB9KTtcblxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB0b29sdGlwIGVsZW1lbnQgcmVmIGFuZCBjb250ZW50XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXAoeyBjZWxsLCB2YWx1ZSB9KTogdm9pZCB7XG4gICAgaWYgKGNlbGwgIT09IHRoaXMudG9vbHRpcC5yZWZlcmVuY2UpIHtcbiAgICAgIHRoaXMudG9vbHRpcC5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnBvcHBlckluc3RhbmNlLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAudXBkYXRlVGl0bGVDb250ZW50KHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT25Ib3ZlckVsZW1lbnQoKSB7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudDxEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50LFxuICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG4gICAgICByZXNvbHZlcjogdGhpcy5yZXNvbHZlclxuICAgIH0pO1xuICAgIGNvbnN0IHsgaW5zdGFuY2UsIGhvc3RWaWV3IH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGluc3RhbmNlLmNvbmZpZyA9IHsgLi4udGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZywgYWN0aW9uczogdGhpcy5yb3dBY3Rpb25zLnNsaWNlKCkgfTtcbiAgICBob3N0Vmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5ncmlkRWxlbWVudHMuY2VudGVyQ29udGFpbmVyLCB0aGlzLnJvd0hvdmVyRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcm93SG92ZXJFbCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPbkhvdmVyU3RhdGUodmlzaWJsZTogYm9vbGVhbiwgZXZlbnQ/OiBDZWxsTW91c2VPdXRFdmVudCkge1xuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGluc3RhbmNlLnNob3coZXZlbnQpO1xuICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU9uSG92ZXJQb3MoKSB7XG4gICAgY29uc3QgeyBjZW50ZXJWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBjb25zdCB0YXJnZXQgPSBjZW50ZXJDb250YWluZXIuY2xpZW50V2lkdGggPiBjZW50ZXJWaWV3cG9ydC5jbGllbnRXaWR0aCA/IGNlbnRlclZpZXdwb3J0IDogY2VudGVyQ29udGFpbmVyO1xuICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIHNjcm9sbExlZnQgfSA9IHRhcmdldDtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50Lmluc3RhbmNlLnVwZGF0ZVNjcm9sbFBvcyhjbGllbnRXaWR0aCArIHNjcm9sbExlZnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVSb3dIb3ZlckNsYXNzKHJvd3M6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSkge1xuICAgIGNvZXJjZUFycmF5KHJvd3MpLmZvckVhY2gocm93ID0+IHJvdyAmJiByb3cuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aW9ucy1ob3ZlcmVkJykpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRLZXlib2FyZExpc3RlbmVyKHsgZ3JpZCwgY29sdW1ucyB9OiBEYXRvR3JpZEFwaSkge1xuICAgIHRoaXMuaG90a2V5c1xuICAgICAgLmFkZFNob3J0Y3V0KHtcbiAgICAgICAgZWxlbWVudDogdGhpcy5hZ0dyaWRFbCxcbiAgICAgICAga2V5czogJ21ldGEuYScsXG4gICAgICAgIGlnbm9yZUluRWRpdGFibGU6IHRydWVcbiAgICAgIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ICE9PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpdFRvID0gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCA9PT0gRGF0b0dyaWRBbGlnbm1lbnQuRklUX1RPX0NPTlRBSU5FUiA/ICdjb250YWluZXInIDogJ2NvbnRlbnQnO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmZpdEdyaWQoZml0VG8pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEdyaWREYXRhKCkge1xuICAgIGNvbnN0IGdyaWRNb2RlbCA9IHRoaXMuZ3JpZFNlcnZpY2UuYXBpLmdyaWQuZ2V0TW9kZWwoKSBhcyBhbnk7XG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgIGNvbnN0IGdyaWREYXRhID0gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXkubWFwKCh7IGRhdGEgfSkgPT4gZGF0YSk7XG4gICAgICByZXR1cm4gY29udmVydEZyb21UcmVlRGF0YShncmlkRGF0YSwgdGhpcy5ncmlkU2VydmljZS50cmVlQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCBldmVudHMkID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlXG4gICAgICA/IG1lcmdlKGFnR3JpZC5zb3J0Q2hhbmdlZCwgYWdHcmlkLmZpbHRlckNoYW5nZWQpXG4gICAgICA6IGFnR3JpZC5maWx0ZXJDaGFuZ2VkO1xuICAgIChldmVudHMkIGFzIE9ic2VydmFibGU8YW55PikucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZGVzZWxlY3RBbGxSb3dzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBpZiAoIXRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhZ0dyaWQucGFnaW5hdGlvbkNoYW5nZWQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKHRydWUsIHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
523
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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QkFDTixRQUFRO2dCQUNSLHdCQUF3QjtnQkFDekIsV0FBVztnREFDM0IsTUFBTSxTQUFDLHFCQUFxQjs7SUFsRHFCO1FBQW5ELGVBQWUsQ0FBQyxpQ0FBaUMsQ0FBQztrQ0FBeUIsU0FBUzsrRUFFbkY7SUFFUTtRQUFULE1BQU0sRUFBRTs7cUVBQW1DO0lBQ25DO1FBQVIsS0FBSyxFQUFFOzttRUFBOEI7SUFDN0I7UUFBUixLQUFLLEVBQUU7O29FQUFnQztJQUMvQjtRQUFSLEtBQUssRUFBRTs7O2tFQVlQO0lBcEJVLDJCQUEyQjtRQVR2QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFFBQVEsRUFBRSxxQ0FFVDtZQUVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDOztTQUMvQyxDQUFDO1FBb0RHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7eUNBVFYsV0FBVztZQUNiLFNBQVM7WUFDZCxpQkFBaUI7WUFDUixZQUFZO1lBQ2Ysb0JBQW9CO1lBQ3pCLFVBQVU7WUFDTixRQUFRO1lBQ1Isd0JBQXdCO1lBQ3pCLFdBQVc7T0FsRG5CLDJCQUEyQixDQW9mdkM7SUFBRCxrQ0FBQztDQUFBLEFBcGZELElBb2ZDO1NBcGZZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZ0dyaWROZzIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7XG4gIEJvZHlTY3JvbGxFdmVudCxcbiAgQ2VsbENsaWNrZWRFdmVudCxcbiAgQ2VsbEV2ZW50LFxuICBDZWxsTW91c2VPdXRFdmVudCxcbiAgQ29sdW1uUmVzaXplZEV2ZW50LFxuICBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCxcbiAgRGV0YWlsR3JpZEluZm8sXG4gIEdyaWRBcGksXG4gIFJvd0dyb3VwT3BlbmVkRXZlbnRcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgR3JpZFF1ZXJ5IH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5JztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS91dGlsJztcbmltcG9ydCB7IEdyaWRTdG9yZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZSc7XG5pbXBvcnQgeyBEYXRvR3JpZFNldHRpbmdzIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQXBpIH0gZnJvbSAnLi9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRBbGlnbm1lbnQsIERhdG9HcmlkT3B0aW9ucywgRGF0b0dyaWRTb3J0IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IEljb25SZWdpc3RyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ljb24tcmVnaXN0cnknO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvZGVlcC1tZXJnZSc7XG5pbXBvcnQgeyBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWN1c3RvbS1oZWFkZXIvY3VzdG9tLWhlYWRlci10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IEdyaWRBY3Rpb24sIFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBEQVRPX0dSSURfU1RPUkFHRV9BUEksIEdyaWRTdG9yYWdlQVBJIH0gZnJvbSAnLi4vZ3JpZC1zZXR0aW5ncyc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBza2lwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFkZENsYXNzLCBhcHBlbmRDaGlsZCwgcXVlcnkgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ3Rvb2x0aXAuanMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvZHluYW1pYy1jb21wb25lbnRzJztcbmltcG9ydCB7IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udmVydEZyb21UcmVlRGF0YSwgZGVmYXVsdEdyaWRPcHRpb25zLCBkZWZhdWx0VHJlZU9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIuY29uZmlnJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0b0hvdGtleXMgfSBmcm9tICcuLi8uLi9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5pbXBvcnQgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtY29udHJvbGxlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWNvbnRyb2xsZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0dyaWRRdWVyeSwgR3JpZFNlcnZpY2UsIEdyaWRTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQpIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxcbiAgICBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnRcbiAgPjtcblxuICBAT3V0cHV0KCkgb25HcmlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBncmlkQWN0aW9uczogR3JpZEFjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIHNldCBncmlkT3B0aW9ucyhncmlkT3B0aW9uczogRGF0b0dyaWRPcHRpb25zKSB7XG4gICAgdGhpcy5fZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnRyZWVEYXRhID0gZ3JpZE9wdGlvbnMudHJlZURhdGE7XG4gICAgdGhpcy5ncmlkU2VydmljZS5pc1Bpdm90TW9kZSA9IGdyaWRPcHRpb25zLnBpdm90TW9kZTtcblxuICAgIGlmICh0aGlzLmFnR3JpZEVsKSB7XG4gICAgICBpZiAoZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgICAgIXRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMudHJlZUdyaWRDbGFzcykgJiYgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9IGVsc2UgaWYgKCFncmlkT3B0aW9ucy5lbmFibGVWMl8xKSB7XG4gICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCh0aGlzLnRyZWVHcmlkQ2xhc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBncmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZE9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNvbnRlbnRJbml0ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSB0b29sdGlwO1xuICBwcml2YXRlIF9ncmlkT3B0aW9uczogRGF0b0dyaWRPcHRpb25zO1xuICBncmlkUmVhZHkkID0gdGhpcy5ncmlkUXVlcnkuZ3JpZFJlYWR5JDtcbiAgYWdHcmlkRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgcm93SG92ZXJDb21wb25lbnQ6IENvbXBvbmVudFJlZjxEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQ+O1xuICBwcml2YXRlIGxhc3RIb3ZlcmVkUm93OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBncmlkRWxlbWVudHMgPSB7XG4gICAgY2VudGVyVmlld3BvcnQ6IG51bGwsXG4gICAgY2VudGVyQ29udGFpbmVyOiBudWxsLFxuICAgIGJvZHlWaWV3cG9ydDogbnVsbFxuICB9O1xuICBwcml2YXRlIHJlYWRvbmx5IHRyZWVHcmlkQ2xhc3MgPSAndHJlZSc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwdWJsaWMgZ3JpZFF1ZXJ5OiBHcmlkUXVlcnksXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBob3RrZXlzOiBEYXRvSG90a2V5cyxcbiAgICBASW5qZWN0KERBVE9fR1JJRF9TVE9SQUdFX0FQSSkgcHJpdmF0ZSBzdG9yYWdlQVBJOiBHcmlkU3RvcmFnZUFQSVxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jb250ZW50SW5pdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMudG9vbHRpcCAmJiB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgJiYgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5jb250ZW50SW5pdC5uZXh0KCk7XG4gICAgdGhpcy5jb250ZW50SW5pdC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIF9pbml0aWFsaXplR3JpZChhZ0dyaWQ6IEFnR3JpZE5nMiwgYWdHcmlkRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5hZ0dyaWRFbCA9IGFnR3JpZEVsO1xuICAgIHRoaXMuY29udGVudEluaXRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHRoaXMubm9ybWFsaXplT3B0aW9ucygpO1xuICAgICAgICAgIGFnR3JpZC5ncmlkT3B0aW9ucyA9IHRoaXMuZ3JpZE9wdGlvbnM7XG4gICAgICAgICAgY29uc3QgaXNHbG9iYWwgPSB0aGlzLmdyaWRPcHRpb25zLmlzR2xvYmFsU2V0dGluZ3M7XG4gICAgICAgICAgY29uc3Qgc2V0dGluZ3NMb2FkZXIgPVxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zYXZlU2V0dGluZ3MgPT09IGZhbHNlXG4gICAgICAgICAgICAgID8gb2YobnVsbClcbiAgICAgICAgICAgICAgOiB0aGlzLnN0b3JhZ2VBUEkuZ2V0KHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZE5hbWUsIGlzR2xvYmFsKTtcbiAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbYWdHcmlkLmdyaWRSZWFkeSwgc2V0dGluZ3NMb2FkZXJdKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbeyBhcGksIGNvbHVtbkFwaSB9LCBzYXZlZFNldHRpbmdzID0ge31dOiBbRGV0YWlsR3JpZEluZm8sIFBhcnRpYWw8RGF0b0dyaWRTZXR0aW5ncz5dKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5yb3dEYXRhKSB7XG4gICAgICAgICAgYXBpLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5zdGF0dXNCYXIpIHtcbiAgICAgICAgICAvKiogRml4IGFnLWdyaWQgYnVnIHRoYXQgZG9lc24ndCBhZGQgYWctaGlkZGVuIGNsYXNzIHRvIHRoZSBzdGF0dXMgYmFyLCB3aGljaCBvbmx5IGdldCBmaXhlZCBpbiBsYXRlciB2ZXJzaW9ucyAqL1xuICAgICAgICAgIGNvbnN0IGVsID0gYWdHcmlkRWwucXVlcnlTZWxlY3RvcignLmFnLXN0YXR1cy1iYXInKTtcblxuICAgICAgICAgIGFkZENsYXNzKGVsLCAnYWctaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ3JpZEFwaTogRGF0b0dyaWRBcGkgPSB7IGdyaWQ6IGFwaSwgY29sdW1uczogY29sdW1uQXBpIH07XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuX3NldEFwaShncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG5cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5pbml0U2V0dGluZ3Moc2F2ZWRTZXR0aW5ncyB8fCB7fSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyR3JpZExpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdpbmF0aW9uQ2hhbmdlZChhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fZ3JpZFJlYWR5Lm5leHQodHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoJ3RyZWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5yb3dIZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoYHJvdy1oZWlnaHQtJHt0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodH1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU9wdGlvbnMoKSB7XG4gICAgLyoqXG4gICAgICogV2hlbiB0cmVlRGF0YSBpcyBlbmFibGVkLCBQYWdpbmF0aW9uIG11c3QgYmUgdHVybmVkIG9mZlxuICAgICAqL1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAuLi50aGlzLmdyaWRPcHRpb25zLFxuICAgICAgICBwYWdpbmF0aW9uOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZ3JpZE9wdGlvbnM6IHRoaXMuZ3JpZE9wdGlvbnMsXG4gICAgICBjdXN0b21IZWFkZXJzVGVtcGxhdGVzOiB0aGlzLmN1c3RvbUhlYWRlcnNUZW1wbGF0ZXMsXG4gICAgICByb3dBY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnNcbiAgICB9O1xuXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLmdyaWRTZXJ2aWNlLm5vcm1hbGl6ZU9wdGlvbnMocGFyYW1zKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLih0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhID8gZGVmYXVsdFRyZWVPcHRpb25zIDoge30pLFxuICAgICAgaWNvbnM6IHRoaXMuZ2V0R3JpZEljb25zKClcbiAgICB9O1xuICAgIHJldHVybiBkZWVwbWVyZ2UoZGVmYXVsdHMsIG5vcm1hbGl6ZWQpO1xuICB9XG5cbiAgc2V0R3JpZFJvd3M8VD4oZGF0YTogVFtdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRSb3dzPFQ+KGRhdGEpO1xuICB9XG5cbiAgc2V0R3JpZEZpbHRlcnMoZmlsdGVyczogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRHcmlkRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRRdWVyeS5maWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBvblNvcnRDaGFuZ2VkKCk6IE9ic2VydmFibGU8RGF0b0dyaWRTb3J0PiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFF1ZXJ5LnNlbGVjdFNvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZEljb25zKCk6IEhhc2hNYXA8c3RyaW5nPiB7XG4gICAgY29uc3QgbW92ZUNvbHVtbkljb24gPSBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggY29sdW1uLW1vdmVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICdtb3ZlLWNvbHVtbidcbiAgICApfTwvc3Bhbj5gO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cEV4cGFuZGVkOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBncm91cC1leHBhbmRlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBncm91cENvbnRyYWN0ZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWNvbnRyYWN0ZWQtaWNvblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnYXJyb3ctcmlnaHQnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZVBpbjogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IHByaW1hcnktMzAwLWZpbGwgY29sdW1uLW1vdmUtcGluXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdwaW4nXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZUhpZGU6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZS1oaWRlXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdleWUtaGlkZSdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlTW92ZTogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlTGVmdDogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlUmlnaHQ6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgcm93RHJhZzogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIGRyYWcgZC1mbGV4XCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoJ2RyYWctMDEnKX08L3NwYW4+YFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyU2V0dGluZ3NMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmxpc3RlblRvQ29sdW1uUmVzaXplKGFwaSwgYWdHcmlkKTtcbiAgICB0aGlzLmxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0NvbHVtblJlc2l6ZShhcGk6IERhdG9HcmlkQXBpLCB7IGNvbHVtblJlc2l6ZWQgfTogQWdHcmlkTmcyKSB7XG4gICAgbGV0IG9ic2VydmFibGUgPSBjb2x1bW5SZXNpemVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlT25Ib3ZlclBvcygpKVxuICAgICAgKTtcbiAgICB9XG4gICAgb2JzZXJ2YWJsZVxuICAgICAgLnBpcGUoXG4gICAgICAgIGF1ZGl0VGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKHsgZmluaXNoZWQsIHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IGZpbmlzaGVkICYmIHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgY29uc3QgW2NvbHVtbl0gPSBlLmNvbHVtbnM7XG4gICAgICAgIGxldCBjb2x1bW5zU2l6ZXMgPSB7IC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldENvbHVtblNpemVzKCkgfTtcbiAgICAgICAgaWYgKGNvbHVtbnNTaXplcykge1xuICAgICAgICAgIGNvbHVtbnNTaXplc1tjb2x1bW4uZ2V0Q29sSWQoKV0gPSBjb2x1bW4uZ2V0QWN0dWFsV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYXBpLmNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyh7IGdyaWRBbGlnbm1lbnQ6IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSwgY29sdW1uc1NpemVzIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IHsgY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCB9ID0gYWdHcmlkO1xuICAgIG1lcmdlKGNvbHVtblZpc2libGUsIHNvcnRDaGFuZ2VkLCBjb2x1bW5Sb3dHcm91cENoYW5nZWQsIGNvbHVtblBpbm5lZCwgZHJhZ1N0b3BwZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgLyogU2tpcCB0aGUgaW5pdGlhbCBzb3J0aW5nIGV2ZW50IGZpcmVkIGJ5IHRoZSBncmlkIHdoZW4gYWRkaW5nIHJvd3MgKi9cbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgdHlwZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlU2V0dGluZ3Moc2V0dGluZ3NEaWZmKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0R3JpZERhdGEoKTtcbiAgICAgICAgdGhpcy5vbkdyaWRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvU3RvcmVTZXR0aW5nc0NoYW5nZXMoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MpXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2F2ZVNldHRpbmdzVG9TZXJ2ZXIoc2V0dGluZ3NEaWZmKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmdyaWRFbGVtZW50cyA9IHtcbiAgICAgIGNlbnRlckNvbnRhaW5lcjogcXVlcnkoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGNlbnRlclZpZXdwb3J0OiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbCksXG4gICAgICBib2R5Vmlld3BvcnQ6IHF1ZXJ5KCcuYWctYm9keS12aWV3cG9ydCcsIHRoaXMuYWdHcmlkRWwpXG4gICAgfTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpLmdyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRLZXlib2FyZExpc3RlbmVyKGFwaSk7XG4gICAgdGhpcy5yZWdpc3RlcldpbmRvd1Jlc2l6ZUxpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZEdyb3VwTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgLyogTWFrZSBncm91cCBleHBhbmQvY29sbGFwc2Ugb24gYSBzaW5nbGUgY2xpY2sgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBkb3VibGUgY2xpY2sgKi9cbiAgICBhZ0dyaWQuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh7IGNvbHVtbnMgfTogQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gRU1QVFlcbiAgICAgICAgICAgIDogYWdHcmlkLmNlbGxDbGlja2VkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh7IHZhbHVlLCBub2RlIH06IENlbGxDbGlja2VkRXZlbnQpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgbm9kZS5ncm91cCA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4ge1xuICAgICAgICBub2RlLnNldEV4cGFuZGVkKCFub2RlLmV4cGFuZGVkKTtcbiAgICAgIH0pO1xuICAgIC8qIFdoZW4gY2xvc2luZyBhIGdyb3VwZWQgcm93IHdlIHdhbnQgdG8gaGlkZSB0aGUgb24gaG92ZXIgYWN0aW9ucyAqL1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIGFnR3JpZC5yb3dHcm91cE9wZW5lZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHsgbm9kZSB9OiBSb3dHcm91cE9wZW5lZEV2ZW50KSA9PiBub2RlLmV4cGFuZGVkID09PSBmYWxzZSksXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNsaWNrIHdhcyBwZXJmb3JtZWQgb24gdGhlIGdyaWRzIGJvZHkgYW5kIG5vdCBhIHJvdywgY2xlYXIgdGhlIHJvd3Mgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpOiBHcmlkQXBpKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlclZpZXdwb3J0IH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnY2xpY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGV2ZW50LnRhcmdldCA9PT0gYm9keVZpZXdwb3J0IHx8IGV2ZW50LnRhcmdldCA9PT0gY2VudGVyVmlld3BvcnQpICYmIGFwaS5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gYXBpLmRlc2VsZWN0QWxsKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhvdmVyRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZy5lbmFibGVkICYmIHRoaXMucm93QWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IHsgYm9keVZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGxldCBsYXN0SG92ZXJlZENlbGw7XG4gICAgY29uc3Qgb25Ib3ZlckVuYWJsZWQgPSB0aGlzLm9uSG92ZXJFbmFibGVkKCk7XG4gICAgaWYgKG9uSG92ZXJFbmFibGVkKSB7XG4gICAgICBmcm9tRXZlbnQoY2VudGVyQ29udGFpbmVyLCAnbW91c2VsZWF2ZScpXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3ModGhpcy5sYXN0SG92ZXJlZFJvdyk7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUoZmFsc2UpO1xuICAgICAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIGFnR3JpZC5ib2R5U2Nyb2xsLnBpcGUoZmlsdGVyKCh7IGRpcmVjdGlvbiB9OiBCb2R5U2Nyb2xsRXZlbnQpID0+IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSksXG4gICAgICAgIGFnR3JpZC5yb3dEYXRhQ2hhbmdlZFxuICAgICAgKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRPbkhvdmVyRWxlbWVudCgpO1xuICAgIH1cbiAgICBhZ0dyaWQuY2VsbE1vdXNlT3ZlclxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBub2RlLCBjb2x1bW4gfSkgPT4gbGFzdEhvdmVyZWRDZWxsICE9PSBgJHtub2RlLmlkfS0ke2NvbHVtbi5nZXRDb2xJZCgpfWApLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENlbGxNb3VzZU91dEV2ZW50KSA9PiB7XG4gICAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IGAke2V2ZW50Lm5vZGUuaWR9LSR7ZXZlbnQuY29sdW1uLmdldENvbElkKCl9YDtcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcChldmVudCk7XG4gICAgICAgIGNvbnN0IHJvdyA9IChldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGlmIChvbkhvdmVyRW5hYmxlZCAmJiAoZXZlbnQubm9kZS5ncm91cCA9PT0gZmFsc2UgfHwgaXNOaWwoZXZlbnQubm9kZS5ncm91cCkpICYmIHRoaXMubGFzdEhvdmVyZWRSb3cgIT09IHJvdykge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzTm9kZSA9IHRoaXMubGFzdEhvdmVyZWRSb3c7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IHJvdztcbiAgICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3MoW3ByZXZpb3VzTm9kZSwgdGhpcy5sYXN0SG92ZXJlZFJvd10pO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKHRydWUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgY29uc3Qgb25Ub29sdGlwT3V0ID0gbWVyZ2UoXG4gICAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnc2Nyb2xsJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5hZ0dyaWRFbCwgJ21vdXNlbGVhdmUnKSxcbiAgICAgIGFnR3JpZC5jZWxsTW91c2VPdXRcbiAgICApO1xuICAgIG9uVG9vbHRpcE91dFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhaXNOaWwodGhpcy50b29sdGlwKSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXAoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2UgdGhlIHRvb2x0aXBcbiAgICovXG4gIGNsZWFyVG9vbHRpcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXAuZGlzcG9zZSgpO1xuICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKGV2ZW50OiBDZWxsRXZlbnQpIHtcbiAgICBjb25zdCBjZWxsOiBIVE1MRWxlbWVudCA9IGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB0ZXh0T3ZlcmZsb3cgPSBjZWxsLm9mZnNldFdpZHRoIDwgY2VsbC5zY3JvbGxXaWR0aDtcbiAgICBpZiAodGV4dE92ZXJmbG93KSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNlbGwsIHZhbHVlOiBjZWxsLmlubmVyVGV4dCB9O1xuICAgICAgaXNOaWwodGhpcy50b29sdGlwKSA/IHRoaXMuY3JlYXRlQW5kU2hvd1Rvb2x0aXAocGFyYW1zKSA6IHRoaXMudXBkYXRlVG9vbHRpcChwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5kU2hvd1Rvb2x0aXAoeyBjZWxsLCB2YWx1ZSB9KSB7XG4gICAgdGhpcy50b29sdGlwID0gbmV3IFRvb2x0aXAoY2VsbCwge1xuICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keSxcbiAgICAgIHRyaWdnZXI6ICdtYW51YWwnLFxuICAgICAgdGl0bGU6IERPTVB1cmlmeS5zYW5pdGl6ZSh2YWx1ZSksXG4gICAgICBodG1sOiB0cnVlLFxuICAgICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICBwcmV2ZW50T3ZlcmZsb3c6IHsgZW5hYmxlZDogZmFsc2UgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGU6XG4gICAgICAgICc8ZGl2IGNsYXNzPVwidG9vbHRpcCBkYXRvLXRvb2x0aXAgY29tbW9uLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPjxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+PGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj48L2Rpdj4nXG4gICAgfSk7XG5cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdG9vbHRpcCBlbGVtZW50IHJlZiBhbmQgY29udGVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwKHsgY2VsbCwgdmFsdWUgfSk6IHZvaWQge1xuICAgIGlmIChjZWxsICE9PSB0aGlzLnRvb2x0aXAucmVmZXJlbmNlKSB7XG4gICAgICB0aGlzLnRvb2x0aXAucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC5wb3BwZXJJbnN0YW5jZS5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnVwZGF0ZVRpdGxlQ29udGVudCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZE9uSG92ZXJFbGVtZW50KCkge1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgPSBjcmVhdGVDb21wb25lbnQ8RGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50Pih7XG4gICAgICBjb21wb25lbnQ6IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCxcbiAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgcmVzb2x2ZXI6IHRoaXMucmVzb2x2ZXJcbiAgICB9KTtcbiAgICBjb25zdCB7IGluc3RhbmNlLCBob3N0VmlldyB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpbnN0YW5jZS5jb25maWcgPSB7IC4uLnRoaXMuZ3JpZE9wdGlvbnMuaG92ZXJDb25maWcsIGFjdGlvbnM6IHRoaXMucm93QWN0aW9ucy5zbGljZSgpIH07XG4gICAgaG9zdFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGFwcGVuZENoaWxkKHRoaXMuZ3JpZEVsZW1lbnRzLmNlbnRlckNvbnRhaW5lciwgdGhpcy5yb3dIb3ZlckVsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJvd0hvdmVyRWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93SG92ZXJDb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T25Ib3ZlclN0YXRlKHZpc2libGU6IGJvb2xlYW4sIGV2ZW50PzogQ2VsbE1vdXNlT3V0RXZlbnQpIHtcbiAgICBjb25zdCB7IGluc3RhbmNlIH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICBpbnN0YW5jZS5zaG93KGV2ZW50KTtcbiAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVPbkhvdmVyUG9zKCkge1xuICAgIGNvbnN0IHsgY2VudGVyVmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgY29uc3QgdGFyZ2V0ID0gY2VudGVyQ29udGFpbmVyLmNsaWVudFdpZHRoID4gY2VudGVyVmlld3BvcnQuY2xpZW50V2lkdGggPyBjZW50ZXJWaWV3cG9ydCA6IGNlbnRlckNvbnRhaW5lcjtcbiAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBzY3JvbGxMZWZ0IH0gPSB0YXJnZXQ7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5pbnN0YW5jZS51cGRhdGVTY3JvbGxQb3MoY2xpZW50V2lkdGggKyBzY3JvbGxMZWZ0KTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUm93SG92ZXJDbGFzcyhyb3dzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pIHtcbiAgICBjb2VyY2VBcnJheShyb3dzKS5mb3JFYWNoKHJvdyA9PiByb3cgJiYgcm93LmNsYXNzTGlzdC50b2dnbGUoJ2FjdGlvbnMtaG92ZXJlZCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkS2V5Ym9hcmRMaXN0ZW5lcih7IGdyaWQsIGNvbHVtbnMgfTogRGF0b0dyaWRBcGkpIHtcbiAgICB0aGlzLmhvdGtleXNcbiAgICAgIC5hZGRTaG9ydGN1dCh7XG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuYWdHcmlkRWwsXG4gICAgICAgIGtleXM6ICdtZXRhLmEnLFxuICAgICAgICBpZ25vcmVJbkVkaXRhYmxlOiB0cnVlXG4gICAgICB9KVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zZWxlY3RBbGxDdXJyZW50UGFnZVJvd3MoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlcldpbmRvd1Jlc2l6ZUxpc3RlbmVyKCkge1xuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCAhPT0gRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaXRUbyA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgPT09IERhdG9HcmlkQWxpZ25tZW50LkZJVF9UT19DT05UQUlORVIgPyAnY29udGFpbmVyJyA6ICdjb250ZW50JztcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKGZpdFRvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkRGF0YSgpIHtcbiAgICBjb25zdCBncmlkTW9kZWwgPSB0aGlzLmdyaWRTZXJ2aWNlLmFwaS5ncmlkLmdldE1vZGVsKCkgYXMgYW55O1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICBjb25zdCBncmlkRGF0YSA9IGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5Lm1hcCgoeyBkYXRhIH0pID0+IGRhdGEpO1xuICAgICAgcmV0dXJuIGNvbnZlcnRGcm9tVHJlZURhdGEoZ3JpZERhdGEsIHRoaXMuZ3JpZFNlcnZpY2UudHJlZUNvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBncmlkTW9kZWwucm93c1RvRGlzcGxheTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgZXZlbnRzJCA9IHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZVxuICAgICAgPyBtZXJnZShhZ0dyaWQuc29ydENoYW5nZWQsIGFnR3JpZC5maWx0ZXJDaGFuZ2VkKVxuICAgICAgOiBhZ0dyaWQuZmlsdGVyQ2hhbmdlZDtcbiAgICAoZXZlbnRzJCBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmRlc2VsZWN0QWxsUm93cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgaWYgKCF0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWdHcmlkLnBhZ2luYXRpb25DaGFuZ2VkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cyh0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19