@datorama/core 22.8.1-rc.3 → 22.8.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 (44) hide show
  1. package/bundles/datorama-core.umd.js +96 -118
  2. package/bundles/datorama-core.umd.js.map +1 -1
  3. package/bundles/datorama-core.umd.min.js +15 -15
  4. package/bundles/datorama-core.umd.min.js.map +1 -1
  5. package/datorama-core.d.ts +0 -1
  6. package/datorama-core.metadata.json +1 -1
  7. package/esm2015/datorama-core.js +1 -2
  8. package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  9. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  10. package/esm2015/lib/grid-v2/grid-column-header/grid-column-header.component.js +9 -3
  11. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +3 -6
  12. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  13. package/esm2015/lib/grid-v2/grid-store/grid.query.js +23 -22
  14. package/esm2015/lib/grid-v2/grid-store/grid.service.js +21 -22
  15. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
  16. package/esm2015/lib/rich-text/rich-text.directive.js +33 -15
  17. package/esm2015/lib/select/select.component.js +10 -5
  18. package/esm2015/lib/version.js +2 -2
  19. package/esm5/datorama-core.js +1 -2
  20. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  21. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  22. package/esm5/lib/grid-v2/grid-column-header/grid-column-header.component.js +9 -3
  23. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +3 -6
  24. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  25. package/esm5/lib/grid-v2/grid-store/grid.query.js +24 -22
  26. package/esm5/lib/grid-v2/grid-store/grid.service.js +21 -22
  27. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
  28. package/esm5/lib/rich-text/rich-text.directive.js +34 -16
  29. package/esm5/lib/select/select.component.js +10 -5
  30. package/esm5/lib/version.js +2 -2
  31. package/fesm2015/datorama-core.js +95 -110
  32. package/fesm2015/datorama-core.js.map +1 -1
  33. package/fesm5/datorama-core.js +97 -118
  34. package/fesm5/datorama-core.js.map +1 -1
  35. package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -1
  36. package/lib/grid-v2/grid-settings.d.ts +2 -2
  37. package/lib/grid-v2/grid-store/grid.query.d.ts +3 -3
  38. package/lib/grid-v2/grid-store/grid.service.d.ts +1 -0
  39. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
  40. package/lib/rich-text/rich-text.directive.d.ts +6 -4
  41. package/package.json +1 -1
  42. package/esm2015/lib/rich-text/rich-text.service.js +0 -50
  43. package/esm5/lib/rich-text/rich-text.service.js +0 -51
  44. package/lib/rich-text/rich-text.service.d.ts +0 -10
@@ -266,8 +266,9 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
266
266
  writeValue(activeOptions) {
267
267
  this._model = activeOptions ? coerceArray(activeOptions) : [];
268
268
  if (this.options) {
269
+ const overTheLimit = this.limitSelectedTo && this.isMulti && this._model.length >= this.limitSelectedTo;
269
270
  this.markAsActive(this._model, { deselectAll: true });
270
- this.limitSelectedTo && this.updateDisabledState();
271
+ overTheLimit && this.updateDisabledState();
271
272
  }
272
273
  /** For later updates */
273
274
  this.cdr.markForCheck();
@@ -303,7 +304,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
303
304
  */
304
305
  if (this.hasValue && this._initialOpen) {
305
306
  this.markAsActive(this._model);
306
- if (this.limitSelectedTo) {
307
+ if (this.limitSelectedTo && this._model.length === this.limitSelectedTo) {
307
308
  this.updateDisabledState();
308
309
  }
309
310
  this._initialOpen = false;
@@ -370,6 +371,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
370
371
  this.onChange(this._model);
371
372
  }
372
373
  removeOption(option) {
374
+ const updateDisabled = this.limitSelectedTo && this._model.length === this.limitSelectedTo;
373
375
  this._model = this._model.filter(current => current[this.idKey] !== option[this.idKey]);
374
376
  const optionToRemove = this.options.find(datoOption => datoOption.option && datoOption.option[this.idKey] === option[this.idKey]);
375
377
  /**
@@ -379,7 +381,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
379
381
  if (optionToRemove) {
380
382
  optionToRemove.active = false;
381
383
  }
382
- this.limitSelectedTo && this.updateDisabledState();
384
+ updateDisabled && this.updateDisabledState();
383
385
  this.onChange(this._model);
384
386
  this.cdr.markForCheck();
385
387
  this.asyncUpdateDropdownPosition();
@@ -653,6 +655,9 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
653
655
  if (!datoOption) {
654
656
  return;
655
657
  }
658
+ const modelLength = this._model.length;
659
+ const updateDisabled = this.limitSelectedTo &&
660
+ (modelLength === this.limitSelectedTo || (modelLength === this.limitSelectedTo - 1 && !datoOption.active));
656
661
  datoOption.active = !datoOption.active;
657
662
  const rawOption = datoOption.option;
658
663
  if (datoOption.active) {
@@ -661,7 +666,7 @@ let DatoSelectComponent = class DatoSelectComponent extends BaseCustomControl {
661
666
  else {
662
667
  this._model = this._model.filter(current => current[this.idKey] !== rawOption[this.idKey]);
663
668
  }
664
- this.limitSelectedTo && this.updateDisabledState();
669
+ updateDisabled && this.updateDisabledState();
665
670
  this.onChange(this._model);
666
671
  this.cdr.markForCheck();
667
672
  this.asyncUpdateDropdownPosition();
@@ -904,4 +909,4 @@ DatoSelectComponent = __decorate([
904
909
  DatoOverlay, Object, Object, String])
905
910
  ], DatoSelectComponent);
906
911
  export { DatoSelectComponent };
907
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBNEIsMkJBQTJCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxP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QSszQi9CO1NBLzNCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VDdXN0b21Db250cm9sIH0gZnJvbSAnLi4vY3VzdG9tLWNvbnRyb2wvYmFzZS1jdXN0b20tY29udHJvbCc7XG5pbXBvcnQgeyBkZWZhdWx0T3B0aW9uc0Rpc3BsYXlMaW1pdCwgU2VsZWN0VHlwZSB9IGZyb20gJy4vc2VsZWN0LnR5cGVzJztcbmltcG9ydCB7IERhdG9PcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb25zL29wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi9zZWxlY3QtYWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRvU2VsZWN0U2VhcmNoU3RyYXRlZ3ksIGRlZmF1bHRDbGllbnRTZWFyY2hTdHJhdGVneSB9IGZyb20gJy4vc2VhcmNoLnN0cmF0ZWd5JztcbmltcG9ydCB7IGNsb3Nlc3QsIHF1ZXJ5LCBzZXRTdHlsZSB9IGZyb20gJy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IHsgRGF0b092ZXJsYXksIERhdG9UZW1wbGF0ZVBvcnRhbCB9IGZyb20gJy4uL2FuZ3VsYXIvb3ZlcmxheSc7XG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IF9zY3JvbGxUb09wdGlvbiB9IGZyb20gJy4uL29wdGlvbnMvb3B0aW9ucy11dGlscyc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IG5vcm1hbGl6ZURhdGEgfSBmcm9tICcuLi9pbnRlcm5hbC9kYXRhLW5vcm1hbGl6YXRpb24nO1xuaW1wb3J0IHsgRGF0b0FjY29yZGlvbkNvbXBvbmVudCwgRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjb3JkaW9uL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgRGF0b0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vb3B0aW9ucy9ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vbGlzdC9saXN0LnR5cGVzJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBpc0Fycm93VXBEb3duLCBpc0VudGVyLCBpc0VzY2FwZSB9IGZyb20gJy4uL3J4L2V2ZW50cyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBpc1N0cmluZywgc2l6ZSB9IGZyb20gJy4uL3V0aWxzL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgekluZGV4UGxlYXNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvei1pbmRleCc7XG5pbXBvcnQgeyBpc1Rlc3RFbnYgfSBmcm9tICcuLi9pc3Rlc3QtZW52JztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vdXRpbHMvdXNlci1hZ2VudCc7XG5pbXBvcnQgeyBQb3BwZXJPcHRpb25zIH0gZnJvbSAnLi4vc2VydmljZXMvcG9wcGVyJztcbmltcG9ydCB7IHNldERpbWVuc2lvbnMgfSBmcm9tICcuLi9pbnRlcm5hbC9jdXN0b20tZGltZW5zaW9ucyc7XG5cbmNvbnN0IHZhbHVlQWNjZXNzb3IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRvU2VsZWN0Q29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBwcm92aWRlcnM6IFt2YWx1ZUFjY2Vzc29yLCBEYXRvT3ZlcmxheV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBleHBvcnRBczogJ2RhdG9TZWxlY3QnXG59KVxuZXhwb3J0IGNsYXNzIERhdG9TZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3VzdG9tQ29udHJvbFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIC8qKiBUaGUgZHJvcGRvd24gY29udGFpbmVyIGVsZW1lbnQgd2hpY2ggaXMgdGhlIHBvcnRhbCAgKiovXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJylcbiAgZHJvcGRvd246IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIFRoZSBvdmVybGF5IG9yaWdpbiB3aGljaCBpcyBvbmUgb2YgZGF0by10cmlnZ2VycyAqKi9cbiAgQFZpZXdDaGlsZCgnb3ZlcmxheU9yaWdpbicpXG4gIG9yaWdpbjogRWxlbWVudFJlZjtcblxuICAvKiogUXVlcnlMaXN0IG9mIGRhdG9PcHRpb25zIGNoaWxkcmVuICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0b09wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBvcHRpb25zOiBRdWVyeUxpc3Q8RGF0b09wdGlvbkNvbXBvbmVudD47XG5cbiAgLyoqIFF1ZXJ5TGlzdCBvZiBkYXRvQWNjb3JkaW9uR3JvdXBzIGNoaWxkcmVuICovXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEYXRvQWNjb3JkaW9uQ29tcG9uZW50KSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBhY2NvcmRpb246IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uQ29tcG9uZW50PjtcblxuICAvKiogUXVlcnlMaXN0IG9mIGRhdG9Hcm91cHMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvR3JvdXBDb21wb25lbnQpXG4gIGdyb3VwczogUXVlcnlMaXN0PERhdG9Hcm91cENvbXBvbmVudD47XG5cbiAgLyoqIEFsbG93aW5nIGN1c3RvbSB0ZW1wbGF0ZSBieSBwYXNzaW5nICpkYXRvQWN0aXZlIGRpcmVjdGl2ZSB3aGljaCBnZXRzIHRoZSBhY3RpdmUgYXMgY29udGV4dCAqL1xuICBAQ29udGVudENoaWxkKERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmUpXG4gIGFjdGl2ZTogRGF0b1NlbGVjdEFjdGl2ZURpcmVjdGl2ZTtcblxuICAvKiogVGhlIGtleSB0aGF0IHN0b3JlcyB0aGUgb3B0aW9uIGlkICovXG4gIEBJbnB1dCgpXG4gIGlkS2V5ID0gJ2lkJztcblxuICAvKiogVGhlIGxvb2t1cCBrZXkgZm9yIHRoZSBsYWJlbCAqL1xuICBASW5wdXQoKVxuICBsYWJlbEtleSA9ICdsYWJlbCc7XG5cbiAgLyoqIEEgcGxhY2Vob2xkZXIgZm9yIHRoZSB0cmlnZ2VyICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ2NvcmUuc2VsZWN0JztcblxuICAvKiogQSBwbGFjZWhvbGRlciBmb3IgdGhlIHNlYXJjaCAqL1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlciA9ICdjb3JlLnNlYXJjaCc7XG5cbiAgLyoqIEN1c3RvbSB0ZXh0IHdoZW4gd2UgZG9uJ3QgaGF2ZSByZXN1bHRzICovXG4gIEBJbnB1dCgpXG4gIHNldCBub0l0ZW1zTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX25vSXRlbXNMYWJlbCA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSh2YWx1ZSk7XG4gIH1cblxuICAvKiogSWYgZGVmaW5lZCwgaW5kaWNhdGVzIGJ5IHdoaWNoIGtleSB0aGUgZGF0YSBzaG91bGQgYmUgbm9ybWFsaXplZCAqL1xuICBASW5wdXQoKVxuICBncm91cEJ5OiBzdHJpbmc7XG5cbiAgLyoqIEFkZC9yZW1vdmVzIHNlYXJjaCBpbnB1dCAqL1xuICBASW5wdXQoKVxuICBpc0NvbWJvID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciBpdCdzIGEgZ3JvdXAgKi9cbiAgQElucHV0KClcbiAgaXNHcm91cCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZWNpZGUgd2hldGhlciB0byBmaWx0ZXIgdGhlIHJlc3VsdHMgaW50ZXJuYWxseSBiYXNlZCBvbiBzZWFyY2ggcXVlcnkuXG4gICAqIFVzZWZ1bCBmb3IgYXN5bmMgZmlsdGVyaW5nLCB3aGVyZSB3ZSBzZWFyY2ggdGhyb3VnaCBtb3JlIGNvbXBsZXggZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGludGVybmFsU2VhcmNoID0gdHJ1ZTtcblxuICAvKiogRGVib3VuY2UgdGltZSB0byBlbWl0IHNlYXJjaCBxdWVyaWVzICovXG4gIEBJbnB1dCgpXG4gIGRlYm91bmNlVGltZSA9IDMwMDtcblxuICAvKiogV2hldGhlciB0byBzaG93IGxvYWRpbmcgaW5kaWNhdG9yICovXG4gIEBJbnB1dCgpXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHNlbGVjdCBhbGwgY2hlY2tib3ggKi9cbiAgQElucHV0KClcbiAgYWxsb3dTZWxlY3RBbGwgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBhbGxvdyBzZWxlY3QgYWxsIGNoaXAuIGVtcHR5IG1lYW5zIGl0J3MgZGlzYWJsZWQgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0QWxsQ2hpcFR4dCA9ICcnO1xuXG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgc2VsZWN0ICovXG4gIEBJbnB1dCgpXG4gIHR5cGU6IFNlbGVjdFR5cGUgPSBTZWxlY3RUeXBlLlNJTkdMRTtcblxuICAvKiogQ2xpZW50IHNlYXJjaCBzdHJhdGVneSAqL1xuICBASW5wdXQoKVxuICBzZWFyY2hTdHJhdGVneTogRGF0b1NlbGVjdFNlYXJjaFN0cmF0ZWd5ID0gZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5O1xuXG4gIC8qKiBUaGUgZGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgZHJvcGRvd24gKi9cbiAgQElucHV0KClcbiAgcGxhY2VtZW50OiBQb3BwZXJPcHRpb25zWydwbGFjZW1lbnQnXSA9ICdib3R0b20tc3RhcnQnO1xuXG4gIEBJbnB1dCgpXG4gIGluZmluaXRlU2Nyb2xsTG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgc2hvd24gKi9cbiAgQElucHV0KClcbiAgbGltaXRUbyA9IGRlZmF1bHRPcHRpb25zRGlzcGxheUxpbWl0O1xuXG4gIEBJbnB1dCgnbGltaXRTZWxlY3RlZFRvJylcbiAgc2V0IGxpbWl0U2VsZWN0ZWQobGltaXRTZWxlY3RlZFRvOiBudW1iZXIpIHtcbiAgICB0aGlzLmxpbWl0U2VsZWN0ZWRUbyA9IGxpbWl0U2VsZWN0ZWRUbztcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQWxsb3cgc29ydGluZyBvZiBzZWxlY3RlZCBvcHRpb25zIGluIG11bHRpIG1vZGUgKi9cbiAgQElucHV0KClcbiAgaXNTb3J0YWJsZSA9IGZhbHNlO1xuXG4gIC8qKiBFbGVtZW50IHRvIGFwcGVuZCB0aGUgb3B0aW9ucyBvdmVybGF5IHRvICovXG4gIEBJbnB1dCgpXG4gIGFwcGVuZFRvOiBIVE1MRWxlbWVudCB8IHN0cmluZztcblxuICAvKiogVGhlIG9wdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gKi9cbiAgQElucHV0KClcbiAgc2V0IGRhdGFTZXQoZGF0YTogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFJ1bikge1xuICAgICAgdGhpcy5fZGF0YSA9IG5vcm1hbGl6ZURhdGEoZGF0YSwgdGhpcy5sYWJlbEtleSwgdGhpcy5ncm91cEJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqIGRhdGEgbm9ybWFsaXphdGlvbiwgaWYgcmVxdWlyZWQsIHdpbGwgYmUgaGFuZGxlZCBieSBuZ09uSW5pdCBpbiB0aGUgaW5pdGlhbCBydW4gKi9cbiAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgIH1cblxuICAgIC8qKiBJZiBpdCdzIGFzeW5jIHVwZGF0ZXMsIGNyZWF0ZSBtaWNybyB0YXNrIGluIG9yZGVyIHRvIHJlLXN1YnNjcmliZSB0byBjbGlja3MgKi9cbiAgICBpZiAodGhpcy5fZGF0YUlzRGlydHkpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvT3B0aW9uQ2xpY2sodGhpcy5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5tYXJrQXNBY3RpdmUodGhpcy5fbW9kZWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0YUlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgLyoqIFNlYXJjaCBncm91cHMgYXMgd2VsbCBhcyBvcHRpb25zICovXG4gIEBJbnB1dCgpXG4gIHNlYXJjaEdyb3VwTGFiZWxzID0gdHJ1ZTtcblxuICAvKiogQWRkIGN1c3RvbSBjbGFzcyB0byB0aGUgc2VsZWN0IGRyb3BEb3duICovXG4gIEBJbnB1dCgpXG4gIGRhdG9TZWxlY3RDbGFzczogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogc2hvdyBlbXB0eSByZXN1bHQgdGV4dCAqL1xuICBASW5wdXQoKVxuICBzaG93RW1wdHlSZXN1bHRzVGV4dCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIGtlZXAgZm9jdXMgaW4gaW5wdXQgYWZ0ZXIgc2VsZWN0aW5nIG9wdGlvblxuICAgKi9cbiAgQElucHV0KClcbiAga2VlcEZvY3VzID0gZmFsc2U7XG5cbiAgLyoqIEVtaXQgc2VhcmNoIHZhbHVlIHdoZW4gaW50ZXJuYWwgc2VhcmNoIGlzIGZhbHNlICovXG4gIEBPdXRwdXQoKVxuICBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogRW1pdCB3aGVuIFt3aXRoQWN0aW9uc10gaXMgdHJ1ZSBhbmQgdGhlIHVzZXIgY2xpY2tzIHNhdmUgKi9cbiAgQE91dHB1dCgpXG4gIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGZldGNoID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGxpbWl0U2VsZWN0ZWRUbzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXR0ZXJzIGFuZCBTZXR0ZXJzXG4gICAqL1xuXG4gIGdldCBjb250YWluc0dyb3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cHMgJiYgdGhpcy5ncm91cHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgZ2V0IG9wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW47XG4gIH1cblxuICBzZXQgb3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX29wZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNSZXN1bHRzKCkge1xuICAgIHJldHVybiB0aGlzLl9oYXNSZXN1bHRzO1xuICB9XG5cbiAgc2V0IGhhc1Jlc3VsdHModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oYXNSZXN1bHRzID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaGFzVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTZWxlY3RUeXBlLlNJTkdMRTtcbiAgfVxuXG4gIGdldCBpc011bHRpKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNlbGVjdFR5cGUuTVVMVEk7XG4gIH1cblxuICBnZXQgX3Nob3dFbXB0eVJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0VtcHR5UmVzdWx0c1RleHQgJiYgdGhpcy5fZGF0YSAmJiAoIXRoaXMuaGFzUmVzdWx0cyB8fCAhdGhpcy5fZGF0YS5sZW5ndGgpICYmICF0aGlzLmlzR3JvdXA7XG4gIH1cblxuICBnZXQgX2NvdW50KCkge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5nZXRWaXNpYmxlT3B0aW9ucyhmYWxzZSkubGVuZ3RoO1xuICAgIGNvbnN0IGFjdGl2ZXMgPSB0aGlzLl9tb2RlbC5sZW5ndGg7XG4gICAgcmV0dXJuIGAoJHthY3RpdmVzfS8ke3RvdGFsfSlgO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgYWxsIHRoZSBvcHRpb25zIGFyZSBjaGVja2VkICovXG4gIGdldCBfaXNBbGxDaGVja2VkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFZpc2libGVPcHRpb25zKCkuZXZlcnkob3B0aW9uID0+IHRoaXMuX21vZGVsLmluZGV4T2Yob3B0aW9uKSA+IC0xKTtcbiAgfVxuXG4gIGdldCBzaG93U2VsZWN0QWxsQ2hpcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxlbmd0aCAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICAvKiogV2hldGhlciBzb21lIHRoZSBvcHRpb25zIGFyZSBjaGVja2VkICovXG4gIGdldCBfaXNJbmRldGVybWluYXRlbHlDaGVja2VkKCkge1xuICAgIGxldCBzb21lQ2hlY2tlZCxcbiAgICAgIHNvbWVOb3RDaGVja2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2aXNpYmxlT3B0aW9uIG9mIHRoaXMuZ2V0VmlzaWJsZU9wdGlvbnMoKSkge1xuICAgICAgaWYgKHRoaXMuX21vZGVsLmluZGV4T2YodmlzaWJsZU9wdGlvbikgPiAtMSkge1xuICAgICAgICBzb21lQ2hlY2tlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzb21lTm90Q2hlY2tlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoc29tZUNoZWNrZWQgJiYgc29tZU5vdENoZWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBGb3JtQ29udHJvbCB3aGljaCBsaXN0ZW5zIGZvciBzZWFyY2ggdmFsdWUgY2hhbmdlcyAqL1xuICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgLyoqIEV4cG9zZSB0aGUgc2VhcmNoIHRlcm0gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgaGlnaGxpZ2h0IGRpcmVjdGl2ZSAqL1xuICBzZWFyY2hUZXJtID0gJyc7XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgUHJvcGVydGllc1xuICAgKi9cbiAgX25vSXRlbXNMYWJlbCA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5uby1pdGVtcycpO1xuXG4gIC8qKiBTdG9yZSB0aGUgaW5pdGlhbCBkYXRhICovXG4gIF9kYXRhID0gW107XG5cbiAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHdlIGFscmVhZHkgaW5pdGlhbGl6ZWQgdGhlIGRhdGEsXG4gICAqICBUaGlzIGlzIG9wdGltaXphdGlvbiBmb3Igbm9uIGFzeW5jIGNhbGxzLlxuICAgKiAqL1xuICBfZGF0YUlzRGlydHkgPSBmYWxzZTtcblxuICAvKiogVHJpZ2dlcnMgdGhlIGZvY3VzIG9uIHRoZSBpbnB1dCAqL1xuICBfZm9jdXMgPSBmYWxzZTtcblxuICAvKiogU3RvcmUgdGhlIGFjdGl2ZSBvcHRpb25zICovXG4gIF9tb2RlbCA9IFtdO1xuXG4gIC8qKiBFbmFibGUvZGlzYWJsZSB0aGUgc2VsZWN0LXRyaWdnZXIgKi9cbiAgX2Rpc2FibGVkO1xuXG4gIC8qKiBXaGV0ZXIgdGhlIGRyb3Bkb3duIGlzIG9wZW4gKi9cbiAgX29wZW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB3ZSBoYXZlIHNlYXJjaCByZXN1bHRzICovXG4gIF9oYXNSZXN1bHRzID0gdHJ1ZTtcblxuICAvKiogSW5kaWNhdGlvbiBpZiB3ZSBuZWVkIHRvIHNldCB0aGUgaW5pdGlhbCBjb250cm9sIHZhbHVlIGFzIGFjdGl2ZXMgKi9cbiAgX2luaXRpYWxPcGVuID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciBnZW5lcmF0ZSBjYW5jZWwvc2F2ZSBmb290ZXIgKi9cbiAgX3dpdGhBY3Rpb25zID0gZmFsc2U7XG5cbiAgX3dpdGhJbmZpbml0ZVNjcm9sbCA9IGZhbHNlO1xuXG4gIC8qKiBOb3RpZnkgdGhlIG11bHRpIHRyaWdnZXIgd2hlbiBjbGljayBvdXRzaWRlIHRvIHJlbW92ZSB0aGUgZm9jdXMgICovXG4gIF9jbGlja091dHNpZGUgPSBmYWxzZTtcblxuICAvKiogRHJvcGRvd24gc2l6ZSBjbGFzcyAqL1xuICBfZHJvcGRvd25DbGFzczogc3RyaW5nW107XG5cbiAgLyoqIHRydWUgdW50aWwgbmdPbkluaXQgKi9cbiAgcHJpdmF0ZSBpbml0aWFsUnVuID0gdHJ1ZTtcblxuICAvKiogU2VhcmNoIGNvbnRyb2wgc3Vic2NyaXB0aW9uICovXG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uO1xuXG4gIC8qKiBDbGlja3Mgb3B0aW9ucyBzdWJzY3JpcHRpb24gKi9cbiAgcHJpdmF0ZSBjbGlja3NTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBrZXlNYW5hZ2VyOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxEYXRvT3B0aW9uQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGluZmluaXRlU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBkYXRvT3ZlcmxheTogRGF0b092ZXJsYXksXG4gICAgQEF0dHJpYnV0ZSgnbmFrZWQnKSBwdWJsaWMgX25ha2VkLFxuICAgIEBBdHRyaWJ1dGUoJ2RhdG9TaXplJykgcHVibGljIHNpemUsXG4gICAgQEF0dHJpYnV0ZSgnd2lkdGgnKSBwdWJsaWMgd2lkdGg6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2l6ZSA9IHNpemUgfHwgJ21kJztcbiAgICB0aGlzLl9kcm9wZG93bkNsYXNzID0gW2BkYXRvLXNlbGVjdC0ke3RoaXMuc2l6ZX1gXTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhdG9TZWxlY3RDbGFzcykge1xuICAgICAgdGhpcy5fZHJvcGRvd25DbGFzcy5wdXNoKHRoaXMuZGF0b1NlbGVjdENsYXNzKTtcbiAgICB9XG5cbiAgICB0aGlzLl93aXRoQWN0aW9ucyA9IHRoaXMuc2F2ZS5vYnNlcnZlcnMubGVuZ3RoID09PSAxO1xuICAgIHRoaXMuX3dpdGhJbmZpbml0ZVNjcm9sbCA9IHRoaXMuZmV0Y2gub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMTtcbiAgICB0aGlzLmxpc3RlblRvU2VhcmNoKCk7XG4gICAgdGhpcy5fZGF0YSA9IG5vcm1hbGl6ZURhdGEodGhpcy5fZGF0YSwgdGhpcy5sYWJlbEtleSwgdGhpcy5ncm91cEJ5KTtcbiAgICB0aGlzLmluaXRpYWxSdW4gPSBmYWxzZTtcbiAgICAvLyBoZWlnaHQgaXMgYmVpbmcgY29udHJvbGxlZCBieSBzaXplIHByb3BlcnR5XG4gICAgc2V0RGltZW5zaW9ucyh0aGlzLndpZHRoLCBudWxsLCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpXG4gIG1hcmtUb3VjaGVkKCkge1xuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5vblRvdWNoZWQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGRyb3Bkb3duXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUoJycpO1xuICAgIHRoaXMuZGF0b092ZXJsYXkuZGV0YWNoKCk7XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgICB0aGlzLl9mb2N1cyA9IGZhbHNlO1xuICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IHRydWU7XG4gICAgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbiAmJiB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiAmJiB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5ibHVyLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGRyb3Bkb3duIHZpc2liaWxpdHlcbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIGlmICh0aGlzLm9wZW4gJiYgKHRoaXMuaXNNdWx0aSB8fCB0aGlzLmlzQ29tYm8pKSB7XG4gICAgICB0aGlzLl9mb2N1cyA9IHRydWU7XG4gICAgICB0aGlzLl9jbGlja091dHNpZGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoYWN0aXZlT3B0aW9uczogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RlbCA9IGFjdGl2ZU9wdGlvbnMgPyBjb2VyY2VBcnJheShhY3RpdmVPcHRpb25zKSA6IFtdO1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMubWFya0FzQWN0aXZlKHRoaXMuX21vZGVsLCB7IGRlc2VsZWN0QWxsOiB0cnVlIH0pO1xuICAgICAgdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgfVxuICAgIC8qKiBGb3IgbGF0ZXIgdXBkYXRlcyAqL1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIG92ZXJsYXlcbiAgICovXG4gIG9wZW5Ecm9wZG93bihldmVudD8pIHtcbiAgICAvKiogQ2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gd2UgY2xpY2sgb24gdGhlIHRyaWdnZXIgYW5kIHdlIGRvbid0IGhhdmUgc2VhcmNoIG9yIG11bHRpcGxlICovXG4gICAgaWYgKHRoaXMub3BlbiAmJiAhdGhpcy5pc0NvbWJvICYmIHRoaXMuaXNTaW5nbGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKiogRG9uJ3QgY2xvc2UgdGhlIGRyb3Bkb3duIGlmIHdlIGNsaWNrIG9uIHRoZSBpbnB1dCBhbmQgaXQncyBvcGVuICovXG4gICAgaWYgKHRoaXMub3BlbiAmJiAodGhpcy5pc011bHRpIHx8IHRoaXMuaXNDb21ibykpIHtcbiAgICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQubm9kZU5hbWUgIT09ICdJTlBVVCcpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdG9PdmVybGF5LmNyZWF0ZWQpIHtcbiAgICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIHRoaXMuZGF0b092ZXJsYXkuYmFja0Ryb3BDbGljayQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gdHJ1ZTtcbiAgICAgIHRoaXMub3BlbiAmJiB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdG9PdmVybGF5LmF0dGFjaCh7IHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQgfSwgdGhpcy5fZHJvcGRvd25DbGFzcyk7XG5cbiAgICB0aGlzLnRvZ2dsZSgpO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiB3ZSBmaXJzdCBvcGVuIHRoZSBkcm9wZG93biB3ZSBuZWVkIHRvIG1hcmsgdGhlXG4gICAgICogRm9ybUNvbnRyb2wgdmFsdWVzIGFzIGFjdGl2ZXNcbiAgICAgKi9cbiAgICBpZiAodGhpcy5oYXNWYWx1ZSAmJiB0aGlzLl9pbml0aWFsT3Blbikge1xuICAgICAgdGhpcy5tYXJrQXNBY3RpdmUodGhpcy5fbW9kZWwpO1xuICAgICAgaWYgKHRoaXMubGltaXRTZWxlY3RlZFRvKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5faW5pdGlhbE9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fd2l0aEluZmluaXRlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICB9XG5cbiAgICBzZXRTdHlsZShxdWVyeSgnLmRhdG8tb3ZlcmxheScpLCAnekluZGV4JywgekluZGV4UGxlYXNlKCkpO1xuICAgIGNvbnN0IGRyb3Bkb3duQ29udGFpbmVyID0gcXVlcnkoJy5kYXRvLXNlbGVjdF9fZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgc2V0U3R5bGUoZHJvcGRvd25Db250YWluZXIsICd3aWR0aCcsIGAke3RoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG5cbiAgICAvKiogUHJldmVudCBzY3JvbGwgd2hpbGUgdGhlIGRyb3Bkb3duIGlzIG9wZW4gKi9cbiAgICBpZiAoaXNUZXN0RW52KCkpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGlzTW9iaWxlKCkgPyAndG91Y2htb3ZlJyA6ICdzY3JvbGwnO1xuICAgICAgbGV0IHNjcm9sbEV2ZW50ID0gZnJvbUV2ZW50KHdpbmRvdywgZXZlbnROYW1lKTtcbiAgICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICAgIHNjcm9sbEV2ZW50ID0gc2Nyb2xsRXZlbnQucGlwZShmaWx0ZXIoZXZlbnQgPT4gIWRyb3Bkb3duQ29udGFpbmVyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IHNjcm9sbEV2ZW50LnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZShlID0+IHRoaXMuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVQZXJmZWN0U2Nyb2xsQmFyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVUb09wdGlvbkNsaWNrKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyKHRoaXMub3B0aW9ucykud2l0aFdyYXAoKTtcbiAgfVxuXG4gIGNoZWNrQWxsKGNoZWNrOiBib29sZWFuKSB7XG4gICAgbGV0IGNoZWNrZWQgPSBjaGVjaztcbiAgICBpZiAodGhpcy5faXNJbmRldGVybWluYXRlbHlDaGVja2VkKSB7XG4gICAgICBjaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgZGF0b09wdGlvbi5hY3RpdmUgPSBjaGVja2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZpc2libGVPcHRpb25zID0gdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpO1xuICAgIGNvbnN0IGlzQWxsVmlzaWJsZSA9IHZpc2libGVPcHRpb25zLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcblxuICAgIGlmIChpc0FsbFZpc2libGUpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gY2hlY2tlZCA/IHZpc2libGVPcHRpb25zIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5fbW9kZWwuaW5kZXhPZihvcHRpb24pID09PSAtMSkge1xuICAgICAgICAgICAgdGVtcC5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vZGVsID0gWy4uLnRoaXMuX21vZGVsLCAuLi50ZW1wXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuZmlsdGVyKG9wdGlvbiA9PiB2aXNpYmxlT3B0aW9ucy5pbmRleE9mKG9wdGlvbikgPT09IC0xKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICB9XG5cbiAgcmVvcmRlck9wdGlvbnMobmV3T3JkZXI6IGFueVtdKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBuZXdPcmRlcjtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgfVxuXG4gIHJlbW92ZU9wdGlvbihvcHRpb24pIHtcbiAgICB0aGlzLl9tb2RlbCA9IHRoaXMuX21vZGVsLmZpbHRlcihjdXJyZW50ID0+IGN1cnJlbnRbdGhpcy5pZEtleV0gIT09IG9wdGlvblt0aGlzLmlkS2V5XSk7XG4gICAgY29uc3Qgb3B0aW9uVG9SZW1vdmUgPSB0aGlzLm9wdGlvbnMuZmluZChcbiAgICAgIGRhdG9PcHRpb24gPT4gZGF0b09wdGlvbi5vcHRpb24gJiYgZGF0b09wdGlvbi5vcHRpb25bdGhpcy5pZEtleV0gPT09IG9wdGlvblt0aGlzLmlkS2V5XVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBUbyBwcmV2ZW50IGNhc2VzIHdoZW4gdGhlIG9wdGlvbnMgYXJlIGxpbWl0ZWQgYW5kIGRvZXNudCBpbmNsdWRlIHRoZSBhY3RpdmUgb3B0aW9uLFxuICAgICAqIHRoYXQgY2FuIGJlIHJlYWNoZWQgb25seSBieSBzZXJ2ZXIgc2VhcmNoLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25Ub1JlbW92ZSkge1xuICAgICAgb3B0aW9uVG9SZW1vdmUuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICB9XG5cbiAgcHJldmVudEJvZHlTY3JvbGwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoaXNBcnJvd1VwRG93bihldmVudCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBvdmVybGF5IHRvIGRpc3BsYXkgdGhlIHNlbGVjdCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKSB7XG4gICAgY29uc3QgdGVtcGxhdGVQb3J0YWwgPSBuZXcgRGF0b1RlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd24pO1xuICAgIGxldCBhcHBlbmRUb0VsZW1lbnQ7XG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuYXBwZW5kVG8pKSB7XG4gICAgICBhcHBlbmRUb0VsZW1lbnQgPSBjbG9zZXN0KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB0aGlzLmFwcGVuZFRvIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwcGVuZFRvRWxlbWVudCA9IHRoaXMuYXBwZW5kVG87XG4gICAgfVxuXG4gICAgdGhpcy5kYXRvT3ZlcmxheS5jcmVhdGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHRlbXBsYXRlUG9ydGFsLCBhcHBlbmRUb0VsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvcHBlciBkb2Vzbid0IHN1cHBvcnQgcGVyZmVjdC1zY3JvbGwtYmFyLCBzbyB3ZSBuZWVkIHRvIGRvIGl0IG1hbnVhbGx5XG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVBlcmZlY3RTY3JvbGxCYXIoKSB7XG4gICAgY29uc3QgcGVyZmVjdFNjcm9sbEJhclBhcmVudCA9IGNsb3Nlc3QodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsICcucHMnKTtcbiAgICBpZiAocGVyZmVjdFNjcm9sbEJhclBhcmVudCkge1xuICAgICAgZnJvbUV2ZW50KHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQsICdzY3JvbGwnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0aHJvdHRsZVRpbWUoMTApLFxuICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRvT3ZlcmxheS5zY2hlZHVsZVVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFZpc2libGVPcHRpb25zKGdldFJhd09wdGlvbnMgPSB0cnVlKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoZGF0b09wdGlvbiA9PiAhZGF0b09wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKGdldFJhd09wdGlvbnMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm1hcChkYXRvT3B0aW9uID0+IGRhdG9PcHRpb24ub3B0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB0aGUgaW5pdGlhbCBjb250cm9sIHZhbHVlIGFzIGFjdGl2ZVxuICAgKi9cbiAgcHJpdmF0ZSBtYXJrQXNBY3RpdmUobW9kZWw6IGFueVtdLCBvcHRpb25zOiB7IGRlc2VsZWN0QWxsOiBib29sZWFuIH0gPSB7IGRlc2VsZWN0QWxsOiBmYWxzZSB9KSB7XG4gICAgY29uc3QgYXNBcnJheSA9IHRoaXMub3B0aW9ucy50b0FycmF5KCk7XG4gICAgaWYgKG9wdGlvbnMuZGVzZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgbW9kZWwpIHtcbiAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF0Y2ggPSBhc0FycmF5LmZpbmQoY3VycmVudCA9PiBjdXJyZW50Lm9wdGlvbiAmJiBjdXJyZW50Lm9wdGlvblt0aGlzLmlkS2V5XSA9PT0gb3B0aW9uW3RoaXMuaWRLZXldKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5hY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGFsbCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHNob3dBbGwoKSB7XG4gICAgY29uc3QgaXNBY2NvcmRpb24gPSB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKTtcbiAgICBjb25zdCBncm91cENvbXBvbmVudHM6IExpc3RHcm91cENvbXBvbmVudFtdID0gdGhpcy5nZXRHcm91cENvbXBvbmVudHNBcnJheSgpO1xuXG4gICAgZm9yIChjb25zdCBncm91cENvbXBvbmVudCBvZiBncm91cENvbXBvbmVudHMpIHtcbiAgICAgIGdyb3VwQ29tcG9uZW50Ll9oaWRkZW4gPSBmYWxzZTtcblxuICAgICAgLyogSWYgdGhpcyBhY2NvcmRpb24gZ3JvdXAgaGFzIGJlZW4gZXhwZW5kZWQgYnkgdGhlIHNlYXJjaCBmdW5jdGlvbixcbiAgICAgICAgIHRoZW4gY29sbGFwc2UgaXQgdG8gdGhlIG9yaWdpbmFsIHN0YXRlXG4gICAgICAqL1xuICAgICAgaWYgKGlzQWNjb3JkaW9uKSB7XG4gICAgICAgIGNvbnN0IGFueUdyb3VwID0gZ3JvdXBDb21wb25lbnQgYXMgYW55O1xuXG4gICAgICAgIGlmIChhbnlHcm91cC5fX2V4cGVuZGVkKSB7XG4gICAgICAgICAgYW55R3JvdXAuX19leHBlbmRlZCA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGFjY29yZGlvbkdyb3VwID0gYW55R3JvdXAgYXMgRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50O1xuICAgICAgICAgIGFjY29yZGlvbkdyb3VwLmNvbnRlbnQuZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlO1xuICAgICAgICAgIGFjY29yZGlvbkdyb3VwLmV4cGFuZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRhdG9PcHRpb24gb2YgdGhpcy5vcHRpb25zLnRvQXJyYXkoKSkge1xuICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIG9wdGlvbnMgYW5kIHJldHVybnMgaWYgd2UgaGF2ZSByZXN1bHRcbiAgICovXG4gIHByaXZhdGUgc2VhcmNoT3B0aW9ucyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IGhhc1Jlc3VsdCA9IGZhbHNlO1xuICAgIGNvbnN0IGdyb3VwQ29tcG9uZW50c0FycmF5OiBMaXN0R3JvdXBDb21wb25lbnRbXSA9IHRoaXMuZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTtcbiAgICBjb25zdCBoYXNHcm91cHMgPSBncm91cENvbXBvbmVudHNBcnJheS5sZW5ndGg7XG5cbiAgICBpZiAoaGFzR3JvdXBzKSB7XG4gICAgICBoYXNSZXN1bHQgPSB0aGlzLnNlYXJjaEluR3JvdXBzKGdyb3VwQ29tcG9uZW50c0FycmF5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc1Jlc3VsdCA9IHRoaXMuc2VhcmNoSW5PcHRpb25zKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzUmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBmb3IgbWF0Y2hpbmcgZ3JvdXBzIGFuZCBjaGlsZHJlbi5cbiAgICovXG4gIHByaXZhdGUgc2VhcmNoSW5Hcm91cHMoZ3JvdXBDb21wb25lbnRzQXJyYXk6IExpc3RHcm91cENvbXBvbmVudFtdLCB2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNBY2NvcmRpb24gPSB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gdGhpcy5fZGF0YS5sZW5ndGg7XG4gICAgbGV0IGhhc1Jlc3VsdHMgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuX2RhdGFbaV07XG4gICAgICBjb25zdCBncm91cEtleSA9IHRoaXMuZ2V0R3JvdXBLZXkoZ3JvdXApO1xuICAgICAgY29uc3QgZ3JvdXBNYXRjaCA9IHRoaXMuc2VhcmNoR3JvdXBMYWJlbHMgJiYgdGhpcy5zZWFyY2hTdHJhdGVneShncm91cCwgdmFsdWUsIHRoaXMubGFiZWxLZXkpO1xuICAgICAgY29uc3QgZ3JvdXBPcHRpb25zID0gZ3JvdXAuY2hpbGRyZW4ubWFwKGNoaWxkID0+IGNoaWxkW3RoaXMuaWRLZXldKTtcbiAgICAgIC8qIHNob3cvaGlkZSB0aGUgb3B0aW9ucyAqL1xuICAgICAgY29uc3Qgc2hvd0dyb3VwID0gdGhpcy5zZWFyY2hJbk9wdGlvbnModmFsdWUsIGdyb3VwT3B0aW9ucywgZ3JvdXBNYXRjaCk7XG5cbiAgICAgIGlmIChzaG93R3JvdXAgJiYgIWhhc1Jlc3VsdHMpIHtcbiAgICAgICAgaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8qIEZpbmQgdGhlIHJpZ2h0IGNvbXBvbmVudCwgYWNjb3JkaW5nIHRvIHRoZSBpbnRlcm5hbCBrZXkgYXNzaWduZWQgaW4gdGhlIHByZXZpb3VzIHNlYXJjaC5cbiAgICAgICAgIFdoZW4gbm8gbWF0Y2ggaXMgZm91bmQsIGZhbGxpbmcgYmFjayB0byB0aGUgc2FtZSBpbmRleCBhcyB0aGUgZ3JvdXAgb3B0aW9uLlxuICAgICAgKiAgVGhlIGluZGV4IGlzIGNvbnNpZGVyZWQgbGVzcyBzYWZlLCBiZWNhdXNlIGl0IGNhbiBjaGFuZ2UgYWZ0ZXIgc29ydGluZy4gKi9cbiAgICAgIGNvbnN0IGdyb3VwQ29tcG9uZW50ID0gZ3JvdXBDb21wb25lbnRzQXJyYXkuZmluZCgoZzogYW55KSA9PiBnLl9fa2V5ID09PSBncm91cEtleSkgfHwgZ3JvdXBDb21wb25lbnRzQXJyYXlbaV07XG4gICAgICAvKiBTaG93L2hpZGUgdGhlIGdyb3VwICovXG4gICAgICBpZiAoZ3JvdXBDb21wb25lbnQpIHtcbiAgICAgICAgZ3JvdXBDb21wb25lbnQuX2hpZGRlbiA9ICFzaG93R3JvdXA7XG4gICAgICAgIC8qIGFzc2lnbiBhbiBpbnRlcm5hbCBrZXkgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZSwgc28gd2UgY2FuIGZpbmQgaXQgbGF0ZXIgKGFib3ZlKS4gKi9cbiAgICAgICAgKGdyb3VwQ29tcG9uZW50IGFzIGFueSkuX19rZXkgPSBncm91cEtleTtcbiAgICAgICAgLyogRXhwYW5kIHRoZSBhY2NvcmRpb24gb24gbWF0Y2hpbmcgcmVzdWx0cyAqL1xuICAgICAgICBpZiAoaXNBY2NvcmRpb24gJiYgc2hvd0dyb3VwKSB7XG4gICAgICAgICAgY29uc3QgYWNjb3JkaW9uR3JvdXAgPSBncm91cENvbXBvbmVudCBhcyBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQ7XG5cbiAgICAgICAgICBpZiAoIWFjY29yZGlvbkdyb3VwLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICBhY2NvcmRpb25Hcm91cC5jb250ZW50LmRpc2FibGVBbmltYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgLyogRXhwYW5kIHRoZSBhY2NvcmRpb24gKi9cbiAgICAgICAgICAgIGFjY29yZGlvbkdyb3VwLmV4cGFuZCh0cnVlKTtcbiAgICAgICAgICAgIC8qIE1hcmsgdGhlIGFjY29yZGlvbiBhcyBleHBhbmRlZCwgc28gd2UgY2FuIHJldHVybiB0byB0aGUgZGVmYXVsdCBzdGF0ZSBsYXRlciAqL1xuICAgICAgICAgICAgKGdyb3VwQ29tcG9uZW50IGFzIGFueSkuX19leHBlbmRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIHRoZSBvcHRpb25zIHRvIHNob3cgb3IgaGlkZSBlYWNoIGFuZCByZXR1cm4gaWYgcmVzdWx0IGhhcyBiZWVuIGZvdW5kLlxuICAgKiBDb25zaWRlciB3ZSBoYXZlIGEgZ3JvdXAgdGhhdCBtYXRjaCB3ZSBzaG93IGFsbCBvZiBpdHMgb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc2VhcmNoSW5PcHRpb25zKHZhbHVlOiBzdHJpbmcsIGdyb3VwT3B0aW9ucyA9IFtdLCBncm91cE1hdGNoID0gZmFsc2UpIHtcbiAgICBsZXQgaGFzUmVzdWx0cyA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbkluR3JvdXAgPSBncm91cE9wdGlvbnMuaW5kZXhPZihkYXRvT3B0aW9uLm9wdGlvbiAmJiBkYXRvT3B0aW9uLm9wdGlvblt0aGlzLmlkS2V5XSkgIT09IC0xO1xuXG4gICAgICBpZiAoZ3JvdXBNYXRjaCAmJiBvcHRpb25Jbkdyb3VwKSB7XG4gICAgICAgIGRhdG9PcHRpb24uaGlkZUFuZERpc2FibGVkKGZhbHNlKTtcbiAgICAgICAgaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKCFzaXplKGdyb3VwT3B0aW9ucykgfHwgb3B0aW9uSW5Hcm91cCkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuc2VhcmNoU3RyYXRlZ3koZGF0b09wdGlvbiwgdmFsdWUsIHRoaXMubGFiZWxLZXkpO1xuXG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZChmYWxzZSk7XG4gICAgICAgICAgaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFzUmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGtleSBvZiB0aGUgb3B0aW9uIGdyb3VwLiBJdCBjYW4gYmUgdGhlIGdyb3VwIElkIGlmIGV4aXN0cywgb3IgdGhlIGxhYmVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRHcm91cEtleShvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uICYmIChvcHRpb25bdGhpcy5pZEtleV0gfHwgb3B0aW9uW3RoaXMubGFiZWxLZXldKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbXB0eSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc2VhcmNoIGNoYW5nZXMgYW5kIGZpbHRlciB0aGUgbGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1NlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLmlzQ29tYm8gJiZcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBpZiAodGhpcy5pbnRlcm5hbFNlYXJjaCkge1xuICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFzUmVzdWx0cyA9IHRoaXMuc2VhcmNoT3B0aW9ucyh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VhcmNoLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gdmFsdWU7XG4gICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuYXN5bmNVcGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gb3B0aW9uIGNsaWNrIGFuZCBjaGFuZ2UgdGhlIHN0YXRlIGFjY29yZGluZ2x5XG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZVRvT3B0aW9uQ2xpY2sob3B0aW9uczogUXVlcnlMaXN0PERhdG9PcHRpb25Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24gJiYgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIC8qKiBHYXRoZXIgYWxsIHRoZSBjbGlja3MgKi9cbiAgICBjb25zdCBjbGlja3MkID0gb3B0aW9ucy5tYXAob3B0aW9uID0+XG4gICAgICBvcHRpb24uY2xpY2skLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQ6IEV2ZW50KSA9PiAoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIG9wdGlvblxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgLyoqIENvbnNpZGVyIGNoYW5nZSBpdCB0byB1c2UgZXZlbnQgZGVsZWdhdGlvbiAqL1xuICAgIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uID0gbWVyZ2UoLi4uY2xpY2tzJCkuc3Vic2NyaWJlKCh7IG9wdGlvbiwgZXZlbnQgfSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuaXNTaW5nbGUgPyB0aGlzLmhhbmRsZVNpbmdsZUNsaWNrKG9wdGlvbikgOiB0aGlzLmhhbmRsZU11bHRpQ2xpY2sob3B0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChpc0VzY2FwZShldmVudCkgJiYgdGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLl9jbGlja091dHNpZGUgPSB0cnVlO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzRW50ZXIoZXZlbnQpKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXg7XG4gICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLm9wdGlvbnMudG9BcnJheSgpW2luZGV4XTtcbiAgICAgIHRoaXMuaXNTaW5nbGUgPyB0aGlzLmhhbmRsZVNpbmdsZUNsaWNrKGFjdGl2ZSkgOiB0aGlzLmhhbmRsZU11bHRpQ2xpY2soYWN0aXZlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd1VwRG93bihldmVudCkpIHtcbiAgICAgIHRoaXMua2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJyk7XG4gICAgICBfc2Nyb2xsVG9PcHRpb24oe1xuICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgIHBhbmVsLFxuICAgICAgICBhY3RpdmVJdGVtSW5kZXg6IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXgsXG4gICAgICAgIGdyb3VwczogdGhpcy5ncm91cHMsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9uc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRXNjYXBlKGV2ZW50KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRBbGwoKSB7XG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGRhdG9PcHRpb24uYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTaW5nbGVDbGljayhkYXRvT3B0aW9uOiBEYXRvT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgaWYgKCFkYXRvT3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXRvT3B0aW9uLmFjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmF3T3B0aW9uID0gZGF0b09wdGlvbi5vcHRpb247XG4gICAgdGhpcy5fbW9kZWwgPSBbcmF3T3B0aW9uXTtcbiAgICB0aGlzLm9uQ2hhbmdlKHJhd09wdGlvbik7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aUNsaWNrKGRhdG9PcHRpb246IERhdG9PcHRpb25Db21wb25lbnQpIHtcbiAgICBpZiAoIWRhdG9PcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9ICFkYXRvT3B0aW9uLmFjdGl2ZTtcbiAgICBjb25zdCByYXdPcHRpb24gPSBkYXRvT3B0aW9uLm9wdGlvbjtcbiAgICBpZiAoZGF0b09wdGlvbi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuY29uY2F0KHJhd09wdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuZmlsdGVyKGN1cnJlbnQgPT4gY3VycmVudFt0aGlzLmlkS2V5XSAhPT0gcmF3T3B0aW9uW3RoaXMuaWRLZXldKTtcbiAgICB9XG4gICAgdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5hc3luY1VwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVJbmZpbml0ZVNjcm9sbCgpIHtcbiAgICB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kYXRvLXNlbGVjdF9fZHJvcGRvd24nKSwgJ3Njcm9sbCcpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTApKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdG8tc2VsZWN0X19kcm9wZG93bicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxZID0gY29udGFpbmVyLnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGhlaWdodCAtIHNjcm9sbFk7XG4gICAgICAgIGlmIChvZmZzZXQgPT09IDAgfHwgb2Zmc2V0ID09PSAxKSB7XG4gICAgICAgICAgdGhpcy5mZXRjaC5lbWl0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uICYmIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24gJiYgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uICYmIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRhdG9PdmVybGF5LmF0dGFjaGVkICYmIHRoaXMuZGF0b092ZXJsYXkuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGdyb3VwIGNvbXBvbmVudCBpcyBBY2NvcmRpb25cbiAgICovXG4gIHByaXZhdGUgaXNBY2NvcmRpb25Hcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5hY2NvcmRpb24gJiYgdGhpcy5hY2NvcmRpb24ubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFuIGFycmF5IG9mIHRoZSBncm91cCBjb21wb25lbnRzXG4gICAqL1xuICBwcml2YXRlIGdldEdyb3VwQ29tcG9uZW50c0FycmF5KCk6IExpc3RHcm91cENvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5pc0FjY29yZGlvbkdyb3VwKCkgPyB0aGlzLmFjY29yZGlvbi5maXJzdC5ncm91cHMudG9BcnJheSgpIDogdGhpcy5ncm91cHMgJiYgdGhpcy5ncm91cHMudG9BcnJheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNhYmxlZFN0YXRlKCkge1xuICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5fbW9kZWwubGVuZ3RoID09PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbztcbiAgICBmb3IgKGNvbnN0IGRhdG9PcHRpb24gb2YgdGhpcy5vcHRpb25zLnRvQXJyYXkoKSkge1xuICAgICAgaWYgKCFkYXRvT3B0aW9uLmFjdGl2ZSkge1xuICAgICAgICBkYXRvT3B0aW9uLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHRoZSBvdmVybGF5IHdpbGwgYmUgdXBkYXRlIEFGVEVSIENoYW5nZSBEZXRlY3Rpb24gd2FzIGRvbmVcbiAgLy8gU28gdGhlIGl0ZW1zIGluIHRoZSBpbnB1dCAoYW5kIGl0cyBoZWlnaHQpIGlzIHVwZGF0ZVxuICBwcml2YXRlIGFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy5kYXRvT3ZlcmxheSAmJiB0aGlzLmRhdG9PdmVybGF5LmF0dGFjaGVkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZGF0b092ZXJsYXkuc2NoZWR1bGVVcGRhdGUoKSwgMCk7XG4gICAgfVxuICB9XG59XG4iXX0=
912
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBNEIsMkJBQTJCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxP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UUFBUSxDQUFDLENBQUM7O3FDQUNwQixhQUFhOzs0REFLckM7QUExd0JVLG1CQUFtQjtJQVQvQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsYUFBYTtRQUN2QiwyeEdBQXNDO1FBQ3RDLG1CQUFtQixFQUFFLEtBQUs7UUFDMUIsU0FBUyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQztRQUN2QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtRQUMvQyxRQUFRLEVBQUUsWUFBWTtLQUN2QixDQUFDO0lBK1RHLFdBQUEsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2xCLFdBQUEsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3JCLFdBQUEsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO3FDQU5OLGlCQUFpQjtRQUNYLG9CQUFvQjtRQUN6QixVQUFVO1FBQ0gsV0FBVztHQTdUdkIsbUJBQW1CLENBbzRCL0I7U0FwNEJZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZUN1c3RvbUNvbnRyb2wgfSBmcm9tICcuLi9jdXN0b20tY29udHJvbC9iYXNlLWN1c3RvbS1jb250cm9sJztcbmltcG9ydCB7IGRlZmF1bHRPcHRpb25zRGlzcGxheUxpbWl0LCBTZWxlY3RUeXBlIH0gZnJvbSAnLi9zZWxlY3QudHlwZXMnO1xuaW1wb3J0IHsgRGF0b09wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbnMvb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRha2UsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC1hY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdG9TZWxlY3RTZWFyY2hTdHJhdGVneSwgZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5IH0gZnJvbSAnLi9zZWFyY2guc3RyYXRlZ3knO1xuaW1wb3J0IHsgY2xvc2VzdCwgcXVlcnksIHNldFN0eWxlIH0gZnJvbSAnLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgeyBEYXRvT3ZlcmxheSwgRGF0b1RlbXBsYXRlUG9ydGFsIH0gZnJvbSAnLi4vYW5ndWxhci9vdmVybGF5JztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgX3Njcm9sbFRvT3B0aW9uIH0gZnJvbSAnLi4vb3B0aW9ucy9vcHRpb25zLXV0aWxzJztcbmltcG9ydCB7IERhdG9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgbm9ybWFsaXplRGF0YSB9IGZyb20gJy4uL2ludGVybmFsL2RhdGEtbm9ybWFsaXphdGlvbic7XG5pbXBvcnQgeyBEYXRvQWNjb3JkaW9uQ29tcG9uZW50LCBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBEYXRvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb25zL2dyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9saXN0L2xpc3QudHlwZXMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IGlzQXJyb3dVcERvd24sIGlzRW50ZXIsIGlzRXNjYXBlIH0gZnJvbSAnLi4vcngvZXZlbnRzJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IGlzU3RyaW5nLCBzaXplIH0gZnJvbSAnLi4vdXRpbHMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyB6SW5kZXhQbGVhc2UgfSBmcm9tICcuLi9pbnRlcm5hbC96LWluZGV4JztcbmltcG9ydCB7IGlzVGVzdEVudiB9IGZyb20gJy4uL2lzdGVzdC1lbnYnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi91dGlscy91c2VyLWFnZW50JztcbmltcG9ydCB7IFBvcHBlck9wdGlvbnMgfSBmcm9tICcuLi9zZXJ2aWNlcy9wb3BwZXInO1xuaW1wb3J0IHsgc2V0RGltZW5zaW9ucyB9IGZyb20gJy4uL2ludGVybmFsL2N1c3RvbS1kaW1lbnNpb25zJztcblxuY29uc3QgdmFsdWVBY2Nlc3NvciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdG9TZWxlY3RDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIHByb3ZpZGVyczogW3ZhbHVlQWNjZXNzb3IsIERhdG9PdmVybGF5XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnZGF0b1NlbGVjdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0b1NlbGVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VDdXN0b21Db250cm9sXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgLyoqIFRoZSBkcm9wZG93biBjb250YWluZXIgZWxlbWVudCB3aGljaCBpcyB0aGUgcG9ydGFsICAqKi9cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKVxuICBkcm9wZG93bjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogVGhlIG92ZXJsYXkgb3JpZ2luIHdoaWNoIGlzIG9uZSBvZiBkYXRvLXRyaWdnZXJzICoqL1xuICBAVmlld0NoaWxkKCdvdmVybGF5T3JpZ2luJylcbiAgb3JpZ2luOiBFbGVtZW50UmVmO1xuXG4gIC8qKiBRdWVyeUxpc3Qgb2YgZGF0b09wdGlvbnMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvT3B0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIG9wdGlvbnM6IFF1ZXJ5TGlzdDxEYXRvT3B0aW9uQ29tcG9uZW50PjtcblxuICAvKiogUXVlcnlMaXN0IG9mIGRhdG9BY2NvcmRpb25Hcm91cHMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERhdG9BY2NvcmRpb25Db21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGFjY29yZGlvbjogUXVlcnlMaXN0PERhdG9BY2NvcmRpb25Db21wb25lbnQ+O1xuXG4gIC8qKiBRdWVyeUxpc3Qgb2YgZGF0b0dyb3VwcyBjaGlsZHJlbiAqL1xuICBAQ29udGVudENoaWxkcmVuKERhdG9Hcm91cENvbXBvbmVudClcbiAgZ3JvdXBzOiBRdWVyeUxpc3Q8RGF0b0dyb3VwQ29tcG9uZW50PjtcblxuICAvKiogQWxsb3dpbmcgY3VzdG9tIHRlbXBsYXRlIGJ5IHBhc3NpbmcgKmRhdG9BY3RpdmUgZGlyZWN0aXZlIHdoaWNoIGdldHMgdGhlIGFjdGl2ZSBhcyBjb250ZXh0ICovXG4gIEBDb250ZW50Q2hpbGQoRGF0b1NlbGVjdEFjdGl2ZURpcmVjdGl2ZSlcbiAgYWN0aXZlOiBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlO1xuXG4gIC8qKiBUaGUga2V5IHRoYXQgc3RvcmVzIHRoZSBvcHRpb24gaWQgKi9cbiAgQElucHV0KClcbiAgaWRLZXkgPSAnaWQnO1xuXG4gIC8qKiBUaGUgbG9va3VwIGtleSBmb3IgdGhlIGxhYmVsICovXG4gIEBJbnB1dCgpXG4gIGxhYmVsS2V5ID0gJ2xhYmVsJztcblxuICAvKiogQSBwbGFjZWhvbGRlciBmb3IgdGhlIHRyaWdnZXIgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnY29yZS5zZWxlY3QnO1xuXG4gIC8qKiBBIHBsYWNlaG9sZGVyIGZvciB0aGUgc2VhcmNoICovXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ2NvcmUuc2VhcmNoJztcblxuICAvKiogQ3VzdG9tIHRleHQgd2hlbiB3ZSBkb24ndCBoYXZlIHJlc3VsdHMgKi9cbiAgQElucHV0KClcbiAgc2V0IG5vSXRlbXNMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbm9JdGVtc0xhYmVsID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBJZiBkZWZpbmVkLCBpbmRpY2F0ZXMgYnkgd2hpY2gga2V5IHRoZSBkYXRhIHNob3VsZCBiZSBub3JtYWxpemVkICovXG4gIEBJbnB1dCgpXG4gIGdyb3VwQnk6IHN0cmluZztcblxuICAvKiogQWRkL3JlbW92ZXMgc2VhcmNoIGlucHV0ICovXG4gIEBJbnB1dCgpXG4gIGlzQ29tYm8gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIGl0J3MgYSBncm91cCAqL1xuICBASW5wdXQoKVxuICBpc0dyb3VwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlY2lkZSB3aGV0aGVyIHRvIGZpbHRlciB0aGUgcmVzdWx0cyBpbnRlcm5hbGx5IGJhc2VkIG9uIHNlYXJjaCBxdWVyeS5cbiAgICogVXNlZnVsIGZvciBhc3luYyBmaWx0ZXJpbmcsIHdoZXJlIHdlIHNlYXJjaCB0aHJvdWdoIG1vcmUgY29tcGxleCBkYXRhLlxuICAgKi9cbiAgQElucHV0KClcbiAgaW50ZXJuYWxTZWFyY2ggPSB0cnVlO1xuXG4gIC8qKiBEZWJvdW5jZSB0aW1lIHRvIGVtaXQgc2VhcmNoIHF1ZXJpZXMgKi9cbiAgQElucHV0KClcbiAgZGVib3VuY2VUaW1lID0gMzAwO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgbG9hZGluZyBpbmRpY2F0b3IgKi9cbiAgQElucHV0KClcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgc2VsZWN0IGFsbCBjaGVja2JveCAqL1xuICBASW5wdXQoKVxuICBhbGxvd1NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHNlbGVjdCBhbGwgY2hpcC4gZW1wdHkgbWVhbnMgaXQncyBkaXNhYmxlZCAqL1xuICBASW5wdXQoKVxuICBzZWxlY3RBbGxDaGlwVHh0ID0gJyc7XG5cbiAgLyoqIFRoZSB0eXBlIG9mIHRoZSBzZWxlY3QgKi9cbiAgQElucHV0KClcbiAgdHlwZTogU2VsZWN0VHlwZSA9IFNlbGVjdFR5cGUuU0lOR0xFO1xuXG4gIC8qKiBDbGllbnQgc2VhcmNoIHN0cmF0ZWd5ICovXG4gIEBJbnB1dCgpXG4gIHNlYXJjaFN0cmF0ZWd5OiBEYXRvU2VsZWN0U2VhcmNoU3RyYXRlZ3kgPSBkZWZhdWx0Q2xpZW50U2VhcmNoU3RyYXRlZ3k7XG5cbiAgLyoqIFRoZSBkZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biAqL1xuICBASW5wdXQoKVxuICBwbGFjZW1lbnQ6IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgQElucHV0KClcbiAgaW5maW5pdGVTY3JvbGxMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqIExpbWl0IHRoZSBudW1iZXIgb2YgcmVzdWx0cyBzaG93biAqL1xuICBASW5wdXQoKVxuICBsaW1pdFRvID0gZGVmYXVsdE9wdGlvbnNEaXNwbGF5TGltaXQ7XG5cbiAgQElucHV0KCdsaW1pdFNlbGVjdGVkVG8nKVxuICBzZXQgbGltaXRTZWxlY3RlZChsaW1pdFNlbGVjdGVkVG86IG51bWJlcikge1xuICAgIHRoaXMubGltaXRTZWxlY3RlZFRvID0gbGltaXRTZWxlY3RlZFRvO1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBbGxvdyBzb3J0aW5nIG9mIHNlbGVjdGVkIG9wdGlvbnMgaW4gbXVsdGkgbW9kZSAqL1xuICBASW5wdXQoKVxuICBpc1NvcnRhYmxlID0gZmFsc2U7XG5cbiAgLyoqIEVsZW1lbnQgdG8gYXBwZW5kIHRoZSBvcHRpb25zIG92ZXJsYXkgdG8gKi9cbiAgQElucHV0KClcbiAgYXBwZW5kVG86IEhUTUxFbGVtZW50IHwgc3RyaW5nO1xuXG4gIC8qKiBUaGUgb3B0aW9ucyB0byBkaXNwbGF5IGluIHRoZSBkcm9wZG93biAqL1xuICBASW5wdXQoKVxuICBzZXQgZGF0YVNldChkYXRhOiBhbnlbXSkge1xuICAgIGlmICghdGhpcy5pbml0aWFsUnVuKSB7XG4gICAgICB0aGlzLl9kYXRhID0gbm9ybWFsaXplRGF0YShkYXRhLCB0aGlzLmxhYmVsS2V5LCB0aGlzLmdyb3VwQnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiogZGF0YSBub3JtYWxpemF0aW9uLCBpZiByZXF1aXJlZCwgd2lsbCBiZSBoYW5kbGVkIGJ5IG5nT25Jbml0IGluIHRoZSBpbml0aWFsIHJ1biAqL1xuICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgLyoqIElmIGl0J3MgYXN5bmMgdXBkYXRlcywgY3JlYXRlIG1pY3JvIHRhc2sgaW4gb3JkZXIgdG8gcmUtc3Vic2NyaWJlIHRvIGNsaWNrcyAqL1xuICAgIGlmICh0aGlzLl9kYXRhSXNEaXJ0eSkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9PcHRpb25DbGljayh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLm1hcmtBc0FjdGl2ZSh0aGlzLl9tb2RlbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRhSXNEaXJ0eSA9IHRydWU7XG4gIH1cblxuICAvKiogU2VhcmNoIGdyb3VwcyBhcyB3ZWxsIGFzIG9wdGlvbnMgKi9cbiAgQElucHV0KClcbiAgc2VhcmNoR3JvdXBMYWJlbHMgPSB0cnVlO1xuXG4gIC8qKiBBZGQgY3VzdG9tIGNsYXNzIHRvIHRoZSBzZWxlY3QgZHJvcERvd24gKi9cbiAgQElucHV0KClcbiAgZGF0b1NlbGVjdENsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbG9hZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBzaG93IGVtcHR5IHJlc3VsdCB0ZXh0ICovXG4gIEBJbnB1dCgpXG4gIHNob3dFbXB0eVJlc3VsdHNUZXh0ID0gdHJ1ZTtcblxuICAvKipcbiAgICoga2VlcCBmb2N1cyBpbiBpbnB1dCBhZnRlciBzZWxlY3Rpbmcgb3B0aW9uXG4gICAqL1xuICBASW5wdXQoKVxuICBrZWVwRm9jdXMgPSBmYWxzZTtcblxuICAvKiogRW1pdCBzZWFyY2ggdmFsdWUgd2hlbiBpbnRlcm5hbCBzZWFyY2ggaXMgZmFsc2UgKi9cbiAgQE91dHB1dCgpXG4gIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0IHdoZW4gW3dpdGhBY3Rpb25zXSBpcyB0cnVlIGFuZCB0aGUgdXNlciBjbGlja3Mgc2F2ZSAqL1xuICBAT3V0cHV0KClcbiAgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgZmV0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbGltaXRTZWxlY3RlZFRvOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgICovXG5cbiAgZ2V0IGNvbnRhaW5zR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBnZXQgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgfVxuXG4gIHNldCBvcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3BlbiA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGhhc1Jlc3VsdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1Jlc3VsdHM7XG4gIH1cblxuICBzZXQgaGFzUmVzdWx0cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc1Jlc3VsdHMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGlzU2luZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNlbGVjdFR5cGUuU0lOR0xFO1xuICB9XG5cbiAgZ2V0IGlzTXVsdGkoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2VsZWN0VHlwZS5NVUxUSTtcbiAgfVxuXG4gIGdldCBfc2hvd0VtcHR5UmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93RW1wdHlSZXN1bHRzVGV4dCAmJiB0aGlzLl9kYXRhICYmICghdGhpcy5oYXNSZXN1bHRzIHx8ICF0aGlzLl9kYXRhLmxlbmd0aCkgJiYgIXRoaXMuaXNHcm91cDtcbiAgfVxuXG4gIGdldCBfY291bnQoKSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmdldFZpc2libGVPcHRpb25zKGZhbHNlKS5sZW5ndGg7XG4gICAgY29uc3QgYWN0aXZlcyA9IHRoaXMuX21vZGVsLmxlbmd0aDtcbiAgICByZXR1cm4gYCgke2FjdGl2ZXN9LyR7dG90YWx9KWA7XG4gIH1cblxuICAvKiogV2hldGhlciBhbGwgdGhlIG9wdGlvbnMgYXJlIGNoZWNrZWQgKi9cbiAgZ2V0IF9pc0FsbENoZWNrZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmlzaWJsZU9wdGlvbnMoKS5ldmVyeShvcHRpb24gPT4gdGhpcy5fbW9kZWwuaW5kZXhPZihvcHRpb24pID4gLTEpO1xuICB9XG5cbiAgZ2V0IHNob3dTZWxlY3RBbGxDaGlwKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoICYmIHRoaXMuX21vZGVsLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHNvbWUgdGhlIG9wdGlvbnMgYXJlIGNoZWNrZWQgKi9cbiAgZ2V0IF9pc0luZGV0ZXJtaW5hdGVseUNoZWNrZWQoKSB7XG4gICAgbGV0IHNvbWVDaGVja2VkLFxuICAgICAgc29tZU5vdENoZWNrZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHZpc2libGVPcHRpb24gb2YgdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpKSB7XG4gICAgICBpZiAodGhpcy5fbW9kZWwuaW5kZXhPZih2aXNpYmxlT3B0aW9uKSA+IC0xKSB7XG4gICAgICAgIHNvbWVDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWVOb3RDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzb21lQ2hlY2tlZCAmJiBzb21lTm90Q2hlY2tlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEZvcm1Db250cm9sIHdoaWNoIGxpc3RlbnMgZm9yIHNlYXJjaCB2YWx1ZSBjaGFuZ2VzICovXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAvKiogRXhwb3NlIHRoZSBzZWFyY2ggdGVybSBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBoaWdobGlnaHQgZGlyZWN0aXZlICovXG4gIHNlYXJjaFRlcm0gPSAnJztcblxuICAvKipcbiAgICogUHJpdmF0ZSBQcm9wZXJ0aWVzXG4gICAqL1xuICBfbm9JdGVtc0xhYmVsID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKCdjb3JlLm5vLWl0ZW1zJyk7XG5cbiAgLyoqIFN0b3JlIHRoZSBpbml0aWFsIGRhdGEgKi9cbiAgX2RhdGEgPSBbXTtcblxuICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgd2UgYWxyZWFkeSBpbml0aWFsaXplZCB0aGUgZGF0YSxcbiAgICogIFRoaXMgaXMgb3B0aW1pemF0aW9uIGZvciBub24gYXN5bmMgY2FsbHMuXG4gICAqICovXG4gIF9kYXRhSXNEaXJ0eSA9IGZhbHNlO1xuXG4gIC8qKiBUcmlnZ2VycyB0aGUgZm9jdXMgb24gdGhlIGlucHV0ICovXG4gIF9mb2N1cyA9IGZhbHNlO1xuXG4gIC8qKiBTdG9yZSB0aGUgYWN0aXZlIG9wdGlvbnMgKi9cbiAgX21vZGVsID0gW107XG5cbiAgLyoqIEVuYWJsZS9kaXNhYmxlIHRoZSBzZWxlY3QtdHJpZ2dlciAqL1xuICBfZGlzYWJsZWQ7XG5cbiAgLyoqIFdoZXRlciB0aGUgZHJvcGRvd24gaXMgb3BlbiAqL1xuICBfb3BlbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHdlIGhhdmUgc2VhcmNoIHJlc3VsdHMgKi9cbiAgX2hhc1Jlc3VsdHMgPSB0cnVlO1xuXG4gIC8qKiBJbmRpY2F0aW9uIGlmIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIGNvbnRyb2wgdmFsdWUgYXMgYWN0aXZlcyAqL1xuICBfaW5pdGlhbE9wZW4gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIGdlbmVyYXRlIGNhbmNlbC9zYXZlIGZvb3RlciAqL1xuICBfd2l0aEFjdGlvbnMgPSBmYWxzZTtcblxuICBfd2l0aEluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG5cbiAgLyoqIE5vdGlmeSB0aGUgbXVsdGkgdHJpZ2dlciB3aGVuIGNsaWNrIG91dHNpZGUgdG8gcmVtb3ZlIHRoZSBmb2N1cyAgKi9cbiAgX2NsaWNrT3V0c2lkZSA9IGZhbHNlO1xuXG4gIC8qKiBEcm9wZG93biBzaXplIGNsYXNzICovXG4gIF9kcm9wZG93bkNsYXNzOiBzdHJpbmdbXTtcblxuICAvKiogdHJ1ZSB1bnRpbCBuZ09uSW5pdCAqL1xuICBwcml2YXRlIGluaXRpYWxSdW4gPSB0cnVlO1xuXG4gIC8qKiBTZWFyY2ggY29udHJvbCBzdWJzY3JpcHRpb24gKi9cbiAgcHJpdmF0ZSBzZWFyY2hTdWJzY3JpcHRpb247XG5cbiAgLyoqIENsaWNrcyBvcHRpb25zIHN1YnNjcmlwdGlvbiAqL1xuICBwcml2YXRlIGNsaWNrc1N1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPERhdG9PcHRpb25Db21wb25lbnQ+O1xuXG4gIHByaXZhdGUgaW5maW5pdGVTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGRhdG9PdmVybGF5OiBEYXRvT3ZlcmxheSxcbiAgICBAQXR0cmlidXRlKCduYWtlZCcpIHB1YmxpYyBfbmFrZWQsXG4gICAgQEF0dHJpYnV0ZSgnZGF0b1NpemUnKSBwdWJsaWMgc2l6ZSxcbiAgICBAQXR0cmlidXRlKCd3aWR0aCcpIHB1YmxpYyB3aWR0aDogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zaXplID0gc2l6ZSB8fCAnbWQnO1xuICAgIHRoaXMuX2Ryb3Bkb3duQ2xhc3MgPSBbYGRhdG8tc2VsZWN0LSR7dGhpcy5zaXplfWBdO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGF0b1NlbGVjdENsYXNzKSB7XG4gICAgICB0aGlzLl9kcm9wZG93bkNsYXNzLnB1c2godGhpcy5kYXRvU2VsZWN0Q2xhc3MpO1xuICAgIH1cblxuICAgIHRoaXMuX3dpdGhBY3Rpb25zID0gdGhpcy5zYXZlLm9ic2VydmVycy5sZW5ndGggPT09IDE7XG4gICAgdGhpcy5fd2l0aEluZmluaXRlU2Nyb2xsID0gdGhpcy5mZXRjaC5vYnNlcnZlcnMubGVuZ3RoID09PSAxO1xuICAgIHRoaXMubGlzdGVuVG9TZWFyY2goKTtcbiAgICB0aGlzLl9kYXRhID0gbm9ybWFsaXplRGF0YSh0aGlzLl9kYXRhLCB0aGlzLmxhYmVsS2V5LCB0aGlzLmdyb3VwQnkpO1xuICAgIHRoaXMuaW5pdGlhbFJ1biA9IGZhbHNlO1xuICAgIC8vIGhlaWdodCBpcyBiZWluZyBjb250cm9sbGVkIGJ5IHNpemUgcHJvcGVydHlcbiAgICBzZXREaW1lbnNpb25zKHRoaXMud2lkdGgsIG51bGwsIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgbWFya1RvdWNoZWQoKSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLm9uVG91Y2hlZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgZHJvcGRvd25cbiAgICovXG4gIGNsb3NlKCkge1xuICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZSgnJyk7XG4gICAgdGhpcy5kYXRvT3ZlcmxheS5kZXRhY2goKTtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIHRoaXMuX2ZvY3VzID0gZmFsc2U7XG4gICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gdHJ1ZTtcbiAgICB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uICYmIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uICYmIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmJsdXIuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgZHJvcGRvd24gdmlzaWJpbGl0eVxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgaWYgKHRoaXMub3BlbiAmJiAodGhpcy5pc011bHRpIHx8IHRoaXMuaXNDb21ibykpIHtcbiAgICAgIHRoaXMuX2ZvY3VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShhY3RpdmVPcHRpb25zOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuX21vZGVsID0gYWN0aXZlT3B0aW9ucyA/IGNvZXJjZUFycmF5KGFjdGl2ZU9wdGlvbnMpIDogW107XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgY29uc3Qgb3ZlclRoZUxpbWl0ID0gdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy5pc011bHRpICYmIHRoaXMuX21vZGVsLmxlbmd0aCA+PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbztcbiAgICAgIHRoaXMubWFya0FzQWN0aXZlKHRoaXMuX21vZGVsLCB7IGRlc2VsZWN0QWxsOiB0cnVlIH0pO1xuICAgICAgb3ZlclRoZUxpbWl0ICYmIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH1cbiAgICAvKiogRm9yIGxhdGVyIHVwZGF0ZXMgKi9cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBvdmVybGF5XG4gICAqL1xuICBvcGVuRHJvcGRvd24oZXZlbnQ/KSB7XG4gICAgLyoqIENsb3NlIHRoZSBkcm9wZG93biB3aGVuIHdlIGNsaWNrIG9uIHRoZSB0cmlnZ2VyIGFuZCB3ZSBkb24ndCBoYXZlIHNlYXJjaCBvciBtdWx0aXBsZSAqL1xuICAgIGlmICh0aGlzLm9wZW4gJiYgIXRoaXMuaXNDb21ibyAmJiB0aGlzLmlzU2luZ2xlKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqIERvbid0IGNsb3NlIHRoZSBkcm9wZG93biBpZiB3ZSBjbGljayBvbiB0aGUgaW5wdXQgYW5kIGl0J3Mgb3BlbiAqL1xuICAgIGlmICh0aGlzLm9wZW4gJiYgKHRoaXMuaXNNdWx0aSB8fCB0aGlzLmlzQ29tYm8pKSB7XG4gICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0Lm5vZGVOYW1lICE9PSAnSU5QVVQnKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kYXRvT3ZlcmxheS5jcmVhdGVkKSB7XG4gICAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdG9PdmVybGF5LmJhY2tEcm9wQ2xpY2skLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IHRydWU7XG4gICAgICB0aGlzLm9wZW4gJiYgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRvT3ZlcmxheS5hdHRhY2goeyBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50IH0sIHRoaXMuX2Ryb3Bkb3duQ2xhc3MpO1xuXG4gICAgdGhpcy50b2dnbGUoKTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gd2UgZmlyc3Qgb3BlbiB0aGUgZHJvcGRvd24gd2UgbmVlZCB0byBtYXJrIHRoZVxuICAgICAqIEZvcm1Db250cm9sIHZhbHVlcyBhcyBhY3RpdmVzXG4gICAgICovXG4gICAgaWYgKHRoaXMuaGFzVmFsdWUgJiYgdGhpcy5faW5pdGlhbE9wZW4pIHtcbiAgICAgIHRoaXMubWFya0FzQWN0aXZlKHRoaXMuX21vZGVsKTtcbiAgICAgIGlmICh0aGlzLmxpbWl0U2VsZWN0ZWRUbyAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5faW5pdGlhbE9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fd2l0aEluZmluaXRlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICB9XG5cbiAgICBzZXRTdHlsZShxdWVyeSgnLmRhdG8tb3ZlcmxheScpLCAnekluZGV4JywgekluZGV4UGxlYXNlKCkpO1xuICAgIGNvbnN0IGRyb3Bkb3duQ29udGFpbmVyID0gcXVlcnkoJy5kYXRvLXNlbGVjdF9fZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgc2V0U3R5bGUoZHJvcGRvd25Db250YWluZXIsICd3aWR0aCcsIGAke3RoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG5cbiAgICAvKiogUHJldmVudCBzY3JvbGwgd2hpbGUgdGhlIGRyb3Bkb3duIGlzIG9wZW4gKi9cbiAgICBpZiAoaXNUZXN0RW52KCkpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGlzTW9iaWxlKCkgPyAndG91Y2htb3ZlJyA6ICdzY3JvbGwnO1xuICAgICAgbGV0IHNjcm9sbEV2ZW50ID0gZnJvbUV2ZW50KHdpbmRvdywgZXZlbnROYW1lKTtcbiAgICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICAgIHNjcm9sbEV2ZW50ID0gc2Nyb2xsRXZlbnQucGlwZShmaWx0ZXIoZXZlbnQgPT4gIWRyb3Bkb3duQ29udGFpbmVyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IHNjcm9sbEV2ZW50LnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZShlID0+IHRoaXMuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVQZXJmZWN0U2Nyb2xsQmFyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVUb09wdGlvbkNsaWNrKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyKHRoaXMub3B0aW9ucykud2l0aFdyYXAoKTtcbiAgfVxuXG4gIGNoZWNrQWxsKGNoZWNrOiBib29sZWFuKSB7XG4gICAgbGV0IGNoZWNrZWQgPSBjaGVjaztcbiAgICBpZiAodGhpcy5faXNJbmRldGVybWluYXRlbHlDaGVja2VkKSB7XG4gICAgICBjaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgZGF0b09wdGlvbi5hY3RpdmUgPSBjaGVja2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZpc2libGVPcHRpb25zID0gdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpO1xuICAgIGNvbnN0IGlzQWxsVmlzaWJsZSA9IHZpc2libGVPcHRpb25zLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcblxuICAgIGlmIChpc0FsbFZpc2libGUpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gY2hlY2tlZCA/IHZpc2libGVPcHRpb25zIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5fbW9kZWwuaW5kZXhPZihvcHRpb24pID09PSAtMSkge1xuICAgICAgICAgICAgdGVtcC5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vZGVsID0gWy4uLnRoaXMuX21vZGVsLCAuLi50ZW1wXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuZmlsdGVyKG9wdGlvbiA9PiB2aXNpYmxlT3B0aW9ucy5pbmRleE9mKG9wdGlvbikgPT09IC0xKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICB9XG5cbiAgcmVvcmRlck9wdGlvbnMobmV3T3JkZXI6IGFueVtdKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBuZXdPcmRlcjtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgfVxuXG4gIHJlbW92ZU9wdGlvbihvcHRpb24pIHtcbiAgICBjb25zdCB1cGRhdGVEaXNhYmxlZCA9IHRoaXMubGltaXRTZWxlY3RlZFRvICYmIHRoaXMuX21vZGVsLmxlbmd0aCA9PT0gdGhpcy5saW1pdFNlbGVjdGVkVG87XG4gICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50W3RoaXMuaWRLZXldICE9PSBvcHRpb25bdGhpcy5pZEtleV0pO1xuICAgIGNvbnN0IG9wdGlvblRvUmVtb3ZlID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICBkYXRvT3B0aW9uID0+IGRhdG9PcHRpb24ub3B0aW9uICYmIGRhdG9PcHRpb24ub3B0aW9uW3RoaXMuaWRLZXldID09PSBvcHRpb25bdGhpcy5pZEtleV1cbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogVG8gcHJldmVudCBjYXNlcyB3aGVuIHRoZSBvcHRpb25zIGFyZSBsaW1pdGVkIGFuZCBkb2VzbnQgaW5jbHVkZSB0aGUgYWN0aXZlIG9wdGlvbixcbiAgICAgKiB0aGF0IGNhbiBiZSByZWFjaGVkIG9ubHkgYnkgc2VydmVyIHNlYXJjaC5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9uVG9SZW1vdmUpIHtcbiAgICAgIG9wdGlvblRvUmVtb3ZlLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHVwZGF0ZURpc2FibGVkICYmIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5hc3luY1VwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByZXZlbnRCb2R5U2Nyb2xsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzQXJyb3dVcERvd24oZXZlbnQpKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgb3ZlcmxheSB0byBkaXNwbGF5IHRoZSBzZWxlY3Qgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCkge1xuICAgIGNvbnN0IHRlbXBsYXRlUG9ydGFsID0gbmV3IERhdG9UZW1wbGF0ZVBvcnRhbCh0aGlzLmRyb3Bkb3duKTtcbiAgICBsZXQgYXBwZW5kVG9FbGVtZW50O1xuICAgIGlmIChpc1N0cmluZyh0aGlzLmFwcGVuZFRvKSkge1xuICAgICAgYXBwZW5kVG9FbGVtZW50ID0gY2xvc2VzdCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgdGhpcy5hcHBlbmRUbyBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBlbmRUb0VsZW1lbnQgPSB0aGlzLmFwcGVuZFRvO1xuICAgIH1cblxuICAgIHRoaXMuZGF0b092ZXJsYXkuY3JlYXRlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB0ZW1wbGF0ZVBvcnRhbCwgYXBwZW5kVG9FbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3BwZXIgZG9lc24ndCBzdXBwb3J0IHBlcmZlY3Qtc2Nyb2xsLWJhciwgc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVQZXJmZWN0U2Nyb2xsQmFyKCkge1xuICAgIGNvbnN0IHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQgPSBjbG9zZXN0KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCAnLnBzJyk7XG4gICAgaWYgKHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQpIHtcbiAgICAgIGZyb21FdmVudChwZXJmZWN0U2Nyb2xsQmFyUGFyZW50LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGhyb3R0bGVUaW1lKDEwKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0b092ZXJsYXkuc2NoZWR1bGVVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaXNpYmxlT3B0aW9ucyhnZXRSYXdPcHRpb25zID0gdHJ1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKGRhdG9PcHRpb24gPT4gIWRhdG9PcHRpb24uZGlzYWJsZWQpO1xuICAgIGlmIChnZXRSYXdPcHRpb25zKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5tYXAoZGF0b09wdGlvbiA9PiBkYXRvT3B0aW9uLm9wdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIGluaXRpYWwgY29udHJvbCB2YWx1ZSBhcyBhY3RpdmVcbiAgICovXG4gIHByaXZhdGUgbWFya0FzQWN0aXZlKG1vZGVsOiBhbnlbXSwgb3B0aW9uczogeyBkZXNlbGVjdEFsbDogYm9vbGVhbiB9ID0geyBkZXNlbGVjdEFsbDogZmFsc2UgfSkge1xuICAgIGNvbnN0IGFzQXJyYXkgPSB0aGlzLm9wdGlvbnMudG9BcnJheSgpO1xuICAgIGlmIChvcHRpb25zLmRlc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG1vZGVsKSB7XG4gICAgICBpZiAoIW9wdGlvbikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hdGNoID0gYXNBcnJheS5maW5kKGN1cnJlbnQgPT4gY3VycmVudC5vcHRpb24gJiYgY3VycmVudC5vcHRpb25bdGhpcy5pZEtleV0gPT09IG9wdGlvblt0aGlzLmlkS2V5XSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgbWF0Y2guYWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBhbGwgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG93QWxsKCkge1xuICAgIGNvbnN0IGlzQWNjb3JkaW9uID0gdGhpcy5pc0FjY29yZGlvbkdyb3VwKCk7XG4gICAgY29uc3QgZ3JvdXBDb21wb25lbnRzOiBMaXN0R3JvdXBDb21wb25lbnRbXSA9IHRoaXMuZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTtcblxuICAgIGZvciAoY29uc3QgZ3JvdXBDb21wb25lbnQgb2YgZ3JvdXBDb21wb25lbnRzKSB7XG4gICAgICBncm91cENvbXBvbmVudC5faGlkZGVuID0gZmFsc2U7XG5cbiAgICAgIC8qIElmIHRoaXMgYWNjb3JkaW9uIGdyb3VwIGhhcyBiZWVuIGV4cGVuZGVkIGJ5IHRoZSBzZWFyY2ggZnVuY3Rpb24sXG4gICAgICAgICB0aGVuIGNvbGxhcHNlIGl0IHRvIHRoZSBvcmlnaW5hbCBzdGF0ZVxuICAgICAgKi9cbiAgICAgIGlmIChpc0FjY29yZGlvbikge1xuICAgICAgICBjb25zdCBhbnlHcm91cCA9IGdyb3VwQ29tcG9uZW50IGFzIGFueTtcblxuICAgICAgICBpZiAoYW55R3JvdXAuX19leHBlbmRlZCkge1xuICAgICAgICAgIGFueUdyb3VwLl9fZXhwZW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBhY2NvcmRpb25Hcm91cCA9IGFueUdyb3VwIGFzIERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudDtcbiAgICAgICAgICBhY2NvcmRpb25Hcm91cC5jb250ZW50LmRpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICBhY2NvcmRpb25Hcm91cC5leHBhbmQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGRhdG9PcHRpb24uaGlkZUFuZERpc2FibGVkKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZvciBvcHRpb25zIGFuZCByZXR1cm5zIGlmIHdlIGhhdmUgcmVzdWx0XG4gICAqL1xuICBwcml2YXRlIHNlYXJjaE9wdGlvbnModmFsdWU6IHN0cmluZykge1xuICAgIGxldCBoYXNSZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBncm91cENvbXBvbmVudHNBcnJheTogTGlzdEdyb3VwQ29tcG9uZW50W10gPSB0aGlzLmdldEdyb3VwQ29tcG9uZW50c0FycmF5KCk7XG4gICAgY29uc3QgaGFzR3JvdXBzID0gZ3JvdXBDb21wb25lbnRzQXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGhhc0dyb3Vwcykge1xuICAgICAgaGFzUmVzdWx0ID0gdGhpcy5zZWFyY2hJbkdyb3Vwcyhncm91cENvbXBvbmVudHNBcnJheSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYXNSZXN1bHQgPSB0aGlzLnNlYXJjaEluT3B0aW9ucyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIG1hdGNoaW5nIGdyb3VwcyBhbmQgY2hpbGRyZW4uXG4gICAqL1xuICBwcml2YXRlIHNlYXJjaEluR3JvdXBzKGdyb3VwQ29tcG9uZW50c0FycmF5OiBMaXN0R3JvdXBDb21wb25lbnRbXSwgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQWNjb3JkaW9uID0gdGhpcy5pc0FjY29yZGlvbkdyb3VwKCk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IHRoaXMuX2RhdGEubGVuZ3RoO1xuICAgIGxldCBoYXNSZXN1bHRzID0gZmFsc2U7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLl9kYXRhW2ldO1xuICAgICAgY29uc3QgZ3JvdXBLZXkgPSB0aGlzLmdldEdyb3VwS2V5KGdyb3VwKTtcbiAgICAgIGNvbnN0IGdyb3VwTWF0Y2ggPSB0aGlzLnNlYXJjaEdyb3VwTGFiZWxzICYmIHRoaXMuc2VhcmNoU3RyYXRlZ3koZ3JvdXAsIHZhbHVlLCB0aGlzLmxhYmVsS2V5KTtcbiAgICAgIGNvbnN0IGdyb3VwT3B0aW9ucyA9IGdyb3VwLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZFt0aGlzLmlkS2V5XSk7XG4gICAgICAvKiBzaG93L2hpZGUgdGhlIG9wdGlvbnMgKi9cbiAgICAgIGNvbnN0IHNob3dHcm91cCA9IHRoaXMuc2VhcmNoSW5PcHRpb25zKHZhbHVlLCBncm91cE9wdGlvbnMsIGdyb3VwTWF0Y2gpO1xuXG4gICAgICBpZiAoc2hvd0dyb3VwICYmICFoYXNSZXN1bHRzKSB7XG4gICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvKiBGaW5kIHRoZSByaWdodCBjb21wb25lbnQsIGFjY29yZGluZyB0byB0aGUgaW50ZXJuYWwga2V5IGFzc2lnbmVkIGluIHRoZSBwcmV2aW91cyBzZWFyY2guXG4gICAgICAgICBXaGVuIG5vIG1hdGNoIGlzIGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gdGhlIHNhbWUgaW5kZXggYXMgdGhlIGdyb3VwIG9wdGlvbi5cbiAgICAgICogIFRoZSBpbmRleCBpcyBjb25zaWRlcmVkIGxlc3Mgc2FmZSwgYmVjYXVzZSBpdCBjYW4gY2hhbmdlIGFmdGVyIHNvcnRpbmcuICovXG4gICAgICBjb25zdCBncm91cENvbXBvbmVudCA9IGdyb3VwQ29tcG9uZW50c0FycmF5LmZpbmQoKGc6IGFueSkgPT4gZy5fX2tleSA9PT0gZ3JvdXBLZXkpIHx8IGdyb3VwQ29tcG9uZW50c0FycmF5W2ldO1xuICAgICAgLyogU2hvdy9oaWRlIHRoZSBncm91cCAqL1xuICAgICAgaWYgKGdyb3VwQ29tcG9uZW50KSB7XG4gICAgICAgIGdyb3VwQ29tcG9uZW50Ll9oaWRkZW4gPSAhc2hvd0dyb3VwO1xuICAgICAgICAvKiBhc3NpZ24gYW4gaW50ZXJuYWwga2V5IHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UsIHNvIHdlIGNhbiBmaW5kIGl0IGxhdGVyIChhYm92ZSkuICovXG4gICAgICAgIChncm91cENvbXBvbmVudCBhcyBhbnkpLl9fa2V5ID0gZ3JvdXBLZXk7XG4gICAgICAgIC8qIEV4cGFuZCB0aGUgYWNjb3JkaW9uIG9uIG1hdGNoaW5nIHJlc3VsdHMgKi9cbiAgICAgICAgaWYgKGlzQWNjb3JkaW9uICYmIHNob3dHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGFjY29yZGlvbkdyb3VwID0gZ3JvdXBDb21wb25lbnQgYXMgRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50O1xuXG4gICAgICAgICAgaWYgKCFhY2NvcmRpb25Hcm91cC5leHBhbmRlZCkge1xuICAgICAgICAgICAgYWNjb3JkaW9uR3JvdXAuY29udGVudC5kaXNhYmxlQW5pbWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIC8qIEV4cGFuZCB0aGUgYWNjb3JkaW9uICovXG4gICAgICAgICAgICBhY2NvcmRpb25Hcm91cC5leHBhbmQodHJ1ZSk7XG4gICAgICAgICAgICAvKiBNYXJrIHRoZSBhY2NvcmRpb24gYXMgZXhwYW5kZWQsIHNvIHdlIGNhbiByZXR1cm4gdG8gdGhlIGRlZmF1bHQgc3RhdGUgbGF0ZXIgKi9cbiAgICAgICAgICAgIChncm91cENvbXBvbmVudCBhcyBhbnkpLl9fZXhwZW5kZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXNSZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCB0aGUgb3B0aW9ucyB0byBzaG93IG9yIGhpZGUgZWFjaCBhbmQgcmV0dXJuIGlmIHJlc3VsdCBoYXMgYmVlbiBmb3VuZC5cbiAgICogQ29uc2lkZXIgd2UgaGF2ZSBhIGdyb3VwIHRoYXQgbWF0Y2ggd2Ugc2hvdyBhbGwgb2YgaXRzIG9wdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHNlYXJjaEluT3B0aW9ucyh2YWx1ZTogc3RyaW5nLCBncm91cE9wdGlvbnMgPSBbXSwgZ3JvdXBNYXRjaCA9IGZhbHNlKSB7XG4gICAgbGV0IGhhc1Jlc3VsdHMgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBjb25zdCBvcHRpb25Jbkdyb3VwID0gZ3JvdXBPcHRpb25zLmluZGV4T2YoZGF0b09wdGlvbi5vcHRpb24gJiYgZGF0b09wdGlvbi5vcHRpb25bdGhpcy5pZEtleV0pICE9PSAtMTtcblxuICAgICAgaWYgKGdyb3VwTWF0Y2ggJiYgb3B0aW9uSW5Hcm91cCkge1xuICAgICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZChmYWxzZSk7XG4gICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghc2l6ZShncm91cE9wdGlvbnMpIHx8IG9wdGlvbkluR3JvdXApIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLnNlYXJjaFN0cmF0ZWd5KGRhdG9PcHRpb24sIHZhbHVlLCB0aGlzLmxhYmVsS2V5KTtcblxuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQoZmFsc2UpO1xuICAgICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBrZXkgb2YgdGhlIG9wdGlvbiBncm91cC4gSXQgY2FuIGJlIHRoZSBncm91cCBJZCBpZiBleGlzdHMsIG9yIHRoZSBsYWJlbC5cbiAgICovXG4gIHByaXZhdGUgZ2V0R3JvdXBLZXkob3B0aW9uKSB7XG4gICAgcmV0dXJuIG9wdGlvbiAmJiAob3B0aW9uW3RoaXMuaWRLZXldIHx8IG9wdGlvblt0aGlzLmxhYmVsS2V5XSk7XG4gIH1cblxuICBwcml2YXRlIGlzRW1wdHkodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJyc7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlYXJjaCBjaGFuZ2VzIGFuZCBmaWx0ZXIgdGhlIGxpc3RcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9TZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5pc0NvbWJvICYmXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxTZWFyY2gpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93QWxsKCk7XG4gICAgICAgICAgICB0aGlzLmhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc1Jlc3VsdHMgPSB0aGlzLnNlYXJjaE9wdGlvbnModmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIG9wdGlvbiBjbGljayBhbmQgY2hhbmdlIHRoZSBzdGF0ZSBhY2NvcmRpbmdseVxuICAgKi9cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb09wdGlvbkNsaWNrKG9wdGlvbnM6IFF1ZXJ5TGlzdDxEYXRvT3B0aW9uQ29tcG9uZW50Pikge1xuICAgIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uICYmIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAvKiogR2F0aGVyIGFsbCB0aGUgY2xpY2tzICovXG4gICAgY29uc3QgY2xpY2tzJCA9IG9wdGlvbnMubWFwKG9wdGlvbiA9PlxuICAgICAgb3B0aW9uLmNsaWNrJC5waXBlKFxuICAgICAgICBtYXAoKGV2ZW50OiBFdmVudCkgPT4gKHtcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICBvcHRpb25cbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIC8qKiBDb25zaWRlciBjaGFuZ2UgaXQgdG8gdXNlIGV2ZW50IGRlbGVnYXRpb24gKi9cbiAgICB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLmNsaWNrcyQpLnN1YnNjcmliZSgoeyBvcHRpb24sIGV2ZW50IH0pID0+IHtcbiAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmlzU2luZ2xlID8gdGhpcy5oYW5kbGVTaW5nbGVDbGljayhvcHRpb24pIDogdGhpcy5oYW5kbGVNdWx0aUNsaWNrKG9wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoaXNFc2NhcGUoZXZlbnQpICYmIHRoaXMub3Blbikge1xuICAgICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBrZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChpc0VudGVyKGV2ZW50KSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4O1xuICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5vcHRpb25zLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICB0aGlzLmlzU2luZ2xlID8gdGhpcy5oYW5kbGVTaW5nbGVDbGljayhhY3RpdmUpIDogdGhpcy5oYW5kbGVNdWx0aUNsaWNrKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dVcERvd24oZXZlbnQpKSB7XG4gICAgICB0aGlzLmtleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdG8tc2VsZWN0X19kcm9wZG93bicpO1xuICAgICAgX3Njcm9sbFRvT3B0aW9uKHtcbiAgICAgICAgc2l6ZTogdGhpcy5zaXplLFxuICAgICAgICBwYW5lbCxcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4OiB0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4LFxuICAgICAgICBncm91cHM6IHRoaXMuZ3JvdXBzLFxuICAgICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0VzY2FwZShldmVudCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0QWxsKCkge1xuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2luZ2xlQ2xpY2soZGF0b09wdGlvbjogRGF0b09wdGlvbkNvbXBvbmVudCkge1xuICAgIGlmICghZGF0b09wdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZGF0b09wdGlvbi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgZGF0b09wdGlvbi5hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJhd09wdGlvbiA9IGRhdG9PcHRpb24ub3B0aW9uO1xuICAgIHRoaXMuX21vZGVsID0gW3Jhd09wdGlvbl07XG4gICAgdGhpcy5vbkNoYW5nZShyYXdPcHRpb24pO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTXVsdGlDbGljayhkYXRvT3B0aW9uOiBEYXRvT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgaWYgKCFkYXRvT3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1vZGVsTGVuZ3RoID0gdGhpcy5fbW9kZWwubGVuZ3RoO1xuICAgIGNvbnN0IHVwZGF0ZURpc2FibGVkID1cbiAgICAgIHRoaXMubGltaXRTZWxlY3RlZFRvICYmXG4gICAgICAobW9kZWxMZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvIHx8IChtb2RlbExlbmd0aCA9PT0gdGhpcy5saW1pdFNlbGVjdGVkVG8gLSAxICYmICFkYXRvT3B0aW9uLmFjdGl2ZSkpO1xuICAgIGRhdG9PcHRpb24uYWN0aXZlID0gIWRhdG9PcHRpb24uYWN0aXZlO1xuICAgIGNvbnN0IHJhd09wdGlvbiA9IGRhdG9PcHRpb24ub3B0aW9uO1xuICAgIGlmIChkYXRvT3B0aW9uLmFjdGl2ZSkge1xuICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5jb25jYXQocmF3T3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50W3RoaXMuaWRLZXldICE9PSByYXdPcHRpb25bdGhpcy5pZEtleV0pO1xuICAgIH1cbiAgICB1cGRhdGVEaXNhYmxlZCAmJiB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZUluZmluaXRlU2Nyb2xsKCkge1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdG8tc2VsZWN0X19kcm9wZG93bicpLCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFkgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaGVpZ2h0IC0gc2Nyb2xsWTtcbiAgICAgICAgaWYgKG9mZnNldCA9PT0gMCB8fCBvZmZzZXQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmZldGNoLmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gJiYgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gJiYgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoZWQgJiYgdGhpcy5kYXRvT3ZlcmxheS5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ3JvdXAgY29tcG9uZW50IGlzIEFjY29yZGlvblxuICAgKi9cbiAgcHJpdmF0ZSBpc0FjY29yZGlvbkdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmFjY29yZGlvbiAmJiB0aGlzLmFjY29yZGlvbi5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYW4gYXJyYXkgb2YgdGhlIGdyb3VwIGNvbXBvbmVudHNcbiAgICovXG4gIHByaXZhdGUgZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTogTGlzdEdyb3VwQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKSA/IHRoaXMuYWNjb3JkaW9uLmZpcnN0Lmdyb3Vwcy50b0FycmF5KCkgOiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURpc2FibGVkU3RhdGUoKSB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvO1xuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uYWN0aXZlKSB7XG4gICAgICAgIGRhdG9PcHRpb24uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGhlIG92ZXJsYXkgd2lsbCBiZSB1cGRhdGUgQUZURVIgQ2hhbmdlIERldGVjdGlvbiB3YXMgZG9uZVxuICAvLyBTbyB0aGUgaXRlbXMgaW4gdGhlIGlucHV0IChhbmQgaXRzIGhlaWdodCkgaXMgdXBkYXRlXG4gIHByaXZhdGUgYXN5bmNVcGRhdGVEcm9wZG93blBvc2l0aW9uKCkge1xuICAgIGlmICh0aGlzLmRhdG9PdmVybGF5ICYmIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kYXRvT3ZlcmxheS5zY2hlZHVsZVVwZGF0ZSgpLCAwKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- window.coreVersion = '22.8.1-rc.';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuOC4xLXJjLic7Il19
1
+ window.coreVersion = '22.8.1';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuOC4xJztcbiJdfQ==
@@ -14,6 +14,5 @@ export { DatoGridV2ToolbarMoreMenuComponent as ɵm } from './lib/grid-v2/grid-to
14
14
  export { DatoGridHelper as ɵc } from './lib/grid/grid-helper';
15
15
  export { DatoListSelectAllComponent as ɵj } from './lib/list-v2/list-select-all.component';
16
16
  export { ListStore as ɵi } from './lib/list-v2/list-v2-state';
17
- export { RichTextService as ɵo } from './lib/rich-text/rich-text.service';
18
17
  export { Popper as ɵd } from './lib/services/popper';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0b3JhbWEtY29yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsiZGF0b3JhbWEtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBa0IsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRixPQUFPLEVBQUMsK0JBQStCLElBQUksRUFBRSxFQUFDLE1BQU0saUdBQWlHLENBQUM7QUFDdEosT0FBTyxFQUFDLHdDQUF3QyxJQUFJLEVBQUUsRUFBQyxNQUFNLDhGQUE4RixDQUFDO0FBQzVKLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsU0FBUyxJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0NBQWtDLElBQUksRUFBRSxFQUFDLE1BQU0sMEVBQTBFLENBQUM7QUFDbEksT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZUFBZSxJQUFJLEVBQUUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxNQUFNLElBQUksRUFBRSxFQUFDLE1BQU0sdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7Q29yZUNvbmZpZyBhcyDJtWEsREFUT19DT1JFX0NPTkZJRyBhcyDJtWJ9IGZyb20gJy4vbGliL2NvbmZpZyc7XG5leHBvcnQge0RhdG9EYXRlUmFuZ2VzRmlsdGVyUGlwZSBhcyDJtWh9IGZyb20gJy4vbGliL2RhdGUtcGlja2VyL3Jhbmdlcy1maWx0ZXIucGlwZSc7XG5leHBvcnQge0RhdG9HcmlkSXRlbXNDb3VudENlbGxDb21wb25lbnQgYXMgybVsfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtY29sdW1uLWNlbGwtY29tcG9uZW50cy9ncmlkLWl0ZW1zLWNvdW50LWNlbGwvZ3JpZC1pdGVtcy1jb3VudC1jZWxsLmNvbXBvbmVudCc7XG5leHBvcnQge0RhdG9HcmlkTXVsdGlTZWxlY3RDb2x1bW5IZWFkZXJDb21wb25lbnQgYXMgybVrfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtY29sdW1uLWhlYWRlci9ncmlkLW11bHRpLXNlbGVjdC1oZWFkZXIvZ3JpZC1tdWx0aS1zZWxlY3QtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQge0RhdG9HcmlkU2VhcmNoQmFyQ29tcG9uZW50IGFzIMm1bn0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXNlYXJjaC1iYXIvZ3JpZC1zZWFyY2gtYmFyLmNvbXBvbmVudCc7XG5leHBvcnQge0dyaWRRdWVyeSBhcyDJtWV9IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5JztcbmV4cG9ydCB7R3JpZFNlcnZpY2UgYXMgybVnfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmV4cG9ydCB7R3JpZFN0b3JlIGFzIMm1Zn0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUnO1xuZXhwb3J0IHtEYXRvR3JpZFYyVG9vbGJhck1vcmVNZW51Q29tcG9uZW50IGFzIMm1bX0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLW1vcmUtbWVudS9ncmlkLXRvb2xiYXItbW9yZS1tZW51JztcbmV4cG9ydCB7RGF0b0dyaWRIZWxwZXIgYXMgybVjfSBmcm9tICcuL2xpYi9ncmlkL2dyaWQtaGVscGVyJztcbmV4cG9ydCB7RGF0b0xpc3RTZWxlY3RBbGxDb21wb25lbnQgYXMgybVqfSBmcm9tICcuL2xpYi9saXN0LXYyL2xpc3Qtc2VsZWN0LWFsbC5jb21wb25lbnQnO1xuZXhwb3J0IHtMaXN0U3RvcmUgYXMgybVpfSBmcm9tICcuL2xpYi9saXN0LXYyL2xpc3QtdjItc3RhdGUnO1xuZXhwb3J0IHtSaWNoVGV4dFNlcnZpY2UgYXMgybVvfSBmcm9tICcuL2xpYi9yaWNoLXRleHQvcmljaC10ZXh0LnNlcnZpY2UnO1xuZXhwb3J0IHtQb3BwZXIgYXMgybVkfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9wb3BwZXInOyJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0b3JhbWEtY29yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsiZGF0b3JhbWEtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBa0IsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRixPQUFPLEVBQUMsK0JBQStCLElBQUksRUFBRSxFQUFDLE1BQU0saUdBQWlHLENBQUM7QUFDdEosT0FBTyxFQUFDLHdDQUF3QyxJQUFJLEVBQUUsRUFBQyxNQUFNLDhGQUE4RixDQUFDO0FBQzVKLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsU0FBUyxJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0NBQWtDLElBQUksRUFBRSxFQUFDLE1BQU0sMEVBQTBFLENBQUM7QUFDbEksT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxJQUFJLEVBQUUsRUFBQyxNQUFNLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0NvcmVDb25maWcgYXMgybVhLERBVE9fQ09SRV9DT05GSUcgYXMgybVifSBmcm9tICcuL2xpYi9jb25maWcnO1xuZXhwb3J0IHtEYXRvRGF0ZVJhbmdlc0ZpbHRlclBpcGUgYXMgybVofSBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci9yYW5nZXMtZmlsdGVyLnBpcGUnO1xuZXhwb3J0IHtEYXRvR3JpZEl0ZW1zQ291bnRDZWxsQ29tcG9uZW50IGFzIMm1bH0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLWNvbHVtbi1jZWxsLWNvbXBvbmVudHMvZ3JpZC1pdGVtcy1jb3VudC1jZWxsL2dyaWQtaXRlbXMtY291bnQtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0IHtEYXRvR3JpZE11bHRpU2VsZWN0Q29sdW1uSGVhZGVyQ29tcG9uZW50IGFzIMm1a30gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLWNvbHVtbi1oZWFkZXIvZ3JpZC1tdWx0aS1zZWxlY3QtaGVhZGVyL2dyaWQtbXVsdGktc2VsZWN0LWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0IHtEYXRvR3JpZFNlYXJjaEJhckNvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zZWFyY2gtYmFyL2dyaWQtc2VhcmNoLWJhci5jb21wb25lbnQnO1xuZXhwb3J0IHtHcmlkUXVlcnkgYXMgybVlfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5leHBvcnQge0dyaWRTZXJ2aWNlIGFzIMm1Z30gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5leHBvcnQge0dyaWRTdG9yZSBhcyDJtWZ9IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnN0b3JlJztcbmV4cG9ydCB7RGF0b0dyaWRWMlRvb2xiYXJNb3JlTWVudUNvbXBvbmVudCBhcyDJtW19IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci1tb3JlLW1lbnUvZ3JpZC10b29sYmFyLW1vcmUtbWVudSc7XG5leHBvcnQge0RhdG9HcmlkSGVscGVyIGFzIMm1Y30gZnJvbSAnLi9saWIvZ3JpZC9ncmlkLWhlbHBlcic7XG5leHBvcnQge0RhdG9MaXN0U2VsZWN0QWxsQ29tcG9uZW50IGFzIMm1an0gZnJvbSAnLi9saWIvbGlzdC12Mi9saXN0LXNlbGVjdC1hbGwuY29tcG9uZW50JztcbmV4cG9ydCB7TGlzdFN0b3JlIGFzIMm1aX0gZnJvbSAnLi9saWIvbGlzdC12Mi9saXN0LXYyLXN0YXRlJztcbmV4cG9ydCB7UG9wcGVyIGFzIMm1ZH0gZnJvbSAnLi9saWIvc2VydmljZXMvcG9wcGVyJzsiXX0=
@@ -81,9 +81,7 @@ var DatoBreadcrumbsComponent = /** @class */ (function () {
81
81
  };
82
82
  DatoBreadcrumbsComponent.prototype.initEditableHeader = function () {
83
83
  var _this = this;
84
- this.headerControl.valueChanges
85
- .pipe(debounceTime(300), untilDestroyed(this))
86
- .subscribe(function (res) {
84
+ this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe(function (res) {
87
85
  _this.updateEditableText.emit(res);
88
86
  _this.cdr.detectChanges();
89
87
  });
@@ -159,4 +157,4 @@ var DatoBreadcrumbsComponent = /** @class */ (function () {
159
157
  return DatoBreadcrumbsComponent;
160
158
  }());
161
159
  export { DatoBreadcrumbsComponent };
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVN4RDtJQXFDRSxrQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyw4QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDM0MsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO0lBRXpCLENBQUM7SUFu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QUFDLDZCQUE2QixDQUFDO1lBQ25FLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQWlDLElBQUksQ0FBQyw2QkFBK0IsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7Z0JBeER3QixpQkFBaUI7O0lBbkMxQztRQURDLEtBQUssRUFBRTs7OzJFQU1QO0lBR0Q7UUFEQyxLQUFLLEVBQUU7OzsrREFPUDtJQUtRO1FBQVIsS0FBSyxFQUFFO2tDQUFnQixXQUFXO21FQUFDO0lBQzNCO1FBQVIsS0FBSyxFQUFFOztxRUFBeUI7SUFDeEI7UUFBUixLQUFLLEVBQUU7O29FQUFxQjtJQUNwQjtRQUFSLEtBQUssRUFBRTs7c0VBQXlCO0lBQ3hCO1FBQVIsS0FBSyxFQUFFOztzRUFBd0M7SUFDdkM7UUFBUixLQUFLLEVBQUU7OzZFQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTs7K0VBQThDO0lBRTVDO1FBQVQsTUFBTSxFQUFFOztxRUFBc0M7SUFDckM7UUFBVCxNQUFNLEVBQUU7O3dFQUF5QztJQTlCdkMsd0JBQXdCO1FBUHBDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsdzFDQUEyQztZQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQzt5Q0FzQ3lCLGlCQUFpQjtPQXJDL0Isd0JBQXdCLENBOEZwQztJQUFELCtCQUFDO0NBQUEsQUE5RkQsSUE4RkM7U0E5Rlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYnMudHlwZXMnO1xuaW1wb3J0IHsgc2l6ZSB9IGZyb20gJy4uL3V0aWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1icmVhZGNydW1icycsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1icy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9CcmVhZGNydW1ic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgc2V0IG1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heDogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05pbCh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpKSB7XG4gICAgICB0aGlzLnNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heCk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBicmVhZGNydW1icyhicmVhZGNydW1iczogQnJlYWRjcnVtYltdKSB7XG4gICAgdGhpcy5vcmlnaW5hbEJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnM7XG4gICAgaWYgKHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID4gMCkge1xuICAgICAgdGhpcy5zZXRNYXhEaXNwbGF5ZWRCcmVhZGNydW1icyh0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyhicmVhZGNydW1icyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGJyZWFkY3J1bWJzKCk6IEJyZWFkY3J1bWJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzO1xuICB9XG4gIEBJbnB1dCgpIGhlYWRlckNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBzaG93QXJyb3dJbkxhc3QgPSBmYWxzZTtcbiAgQElucHV0KCkgbGFzdEFycm93Q2xhc3MgPSAnJztcbiAgQElucHV0KCkgbWFya0xhc3RBc0FjdGl2ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGRhdGFBdXRvSWRQcmVmaXggPSAnZGF0by1icmVhZGNydW1icy0nO1xuICBASW5wdXQoKSBpc0hlYWRlckNvbnRyb2xEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBoZWFkZXJDb250cm9sQXV0b0lkU3VmZml4ID0gJ2hlYWRlci1jb250cm9sJztcblxuICBAT3V0cHV0KCkgYnJlYWRjcnVtYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdXBkYXRlRWRpdGFibGVUZXh0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgb3JpZ2luYWxCcmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIF9icmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIHJlYWRvbmx5IElOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTID0gMztcbiAgcHJpdmF0ZSBfbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWFkZXJDb250cm9sKSB7XG4gICAgICB0aGlzLmluaXRFZGl0YWJsZUhlYWRlcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8qKiBJbXBsZW1lbnRlZCBkdWUgdG8gdW50aWxEZXN0cm95ZWQgKi9cbiAgfVxuXG4gIG9uQ2xpY2soeyBkYXRhLCBvbkNsaWNrIH06IEJyZWFkY3J1bWIpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iQ2xpY2suZW1pdChkYXRhKTtcbiAgICB9XG5cbiAgICBpZiAob25DbGljaykge1xuICAgICAgb25DbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZEhhdmVBcnJvdyhsYXN0OiBib29sZWFuKSB7XG4gICAgcmV0dXJuICFsYXN0IHx8IChsYXN0ICYmIHRoaXMuc2hvd0Fycm93SW5MYXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcbiAgICBjb25zdCBzaG91bGREaXNwbGF5QWxsQnJlYWRjcnVtYnMgPSBzaXplKGJyZWFkY3J1bWJzKSA8PSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icztcbiAgICBjb25zdCBkb3RzID0gc2hvdWxkRGlzcGxheUFsbEJyZWFkY3J1bWJzID8gW10gOiBbeyB0ZXh0OiAnLi4uJyB9XTtcbiAgICBjb25zdCBzdGFydCA9IGJyZWFkY3J1bWJzLnNsaWNlKDAsIDEpO1xuICAgIGNvbnN0IGVuZCA9IHNob3VsZERpc3BsYXlBbGxCcmVhZGNydW1ic1xuICAgICAgPyBicmVhZGNydW1icy5zbGljZSgxKVxuICAgICAgOiBicmVhZGNydW1icy5zbGljZShicmVhZGNydW1icy5sZW5ndGggLSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyArIDEpO1xuXG4gICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbLi4uc3RhcnQsIC4uLmRvdHMsIC4uLmVuZF07XG4gIH1cblxuICBwcml2YXRlIGluaXRFZGl0YWJsZUhlYWRlcigpIHtcbiAgICB0aGlzLmhlYWRlckNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRhYmxlVGV4dC5lbWl0KHJlcyk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRNYXhEaXNwbGF5ZWRCcmVhZGNydW1icyhtYXg6IG51bWJlcikge1xuICAgIGlmIChtYXggPCB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTKSB7XG4gICAgICB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyA9IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlM7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaW5pbXVtIGJyZWFkY3J1bWJzIG51bWJlciBpcyAke3RoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlN9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID0gbWF4O1xuICAgIH1cbiAgfVxufVxuIl19
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVN4RDtJQXFDRSxrQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyw4QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDM0MsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO0lBRXpCLENBQUM7SUFu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LDZCQUE2QixDQUFDO1lBQ25FLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQWlDLElBQUksQ0FBQyw2QkFBK0IsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7Z0JBbkR3QixpQkFBaUI7O0lBbkMxQztRQURDLEtBQUssRUFBRTs7OzJFQU1QO0lBR0Q7UUFEQyxLQUFLLEVBQUU7OzsrREFPUDtJQUtRO1FBQVIsS0FBSyxFQUFFO2tDQUFnQixXQUFXO21FQUFDO0lBQzNCO1FBQVIsS0FBSyxFQUFFOztxRUFBeUI7SUFDeEI7UUFBUixLQUFLLEVBQUU7O29FQUFxQjtJQUNwQjtRQUFSLEtBQUssRUFBRTs7c0VBQXlCO0lBQ3hCO1FBQVIsS0FBSyxFQUFFOztzRUFBd0M7SUFDdkM7UUFBUixLQUFLLEVBQUU7OzZFQUFpQztJQUNoQztRQUFSLEtBQUssRUFBRTs7K0VBQThDO0lBRTVDO1FBQVQsTUFBTSxFQUFFOztxRUFBc0M7SUFDckM7UUFBVCxNQUFNLEVBQUU7O3dFQUF5QztJQTlCdkMsd0JBQXdCO1FBUHBDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsdzFDQUEyQztZQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQzt5Q0FzQ3lCLGlCQUFpQjtPQXJDL0Isd0JBQXdCLENBeUZwQztJQUFELCtCQUFDO0NBQUEsQUF6RkQsSUF5RkM7U0F6Rlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYnMudHlwZXMnO1xuaW1wb3J0IHsgc2l6ZSB9IGZyb20gJy4uL3V0aWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1icmVhZGNydW1icycsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1icy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdG9CcmVhZGNydW1ic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgc2V0IG1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heDogbnVtYmVyKSB7XG4gICAgaWYgKCFpc05pbCh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpKSB7XG4gICAgICB0aGlzLnNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heCk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyh0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBicmVhZGNydW1icyhicmVhZGNydW1iczogQnJlYWRjcnVtYltdKSB7XG4gICAgdGhpcy5vcmlnaW5hbEJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnM7XG4gICAgaWYgKHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID4gMCkge1xuICAgICAgdGhpcy5zZXRNYXhEaXNwbGF5ZWRCcmVhZGNydW1icyh0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyk7XG4gICAgICB0aGlzLmluaXRCcmVhZGNydW1icyhicmVhZGNydW1icyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGJyZWFkY3J1bWJzKCk6IEJyZWFkY3J1bWJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzO1xuICB9XG4gIEBJbnB1dCgpIGhlYWRlckNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBzaG93QXJyb3dJbkxhc3QgPSBmYWxzZTtcbiAgQElucHV0KCkgbGFzdEFycm93Q2xhc3MgPSAnJztcbiAgQElucHV0KCkgbWFya0xhc3RBc0FjdGl2ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGRhdGFBdXRvSWRQcmVmaXggPSAnZGF0by1icmVhZGNydW1icy0nO1xuICBASW5wdXQoKSBpc0hlYWRlckNvbnRyb2xEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBoZWFkZXJDb250cm9sQXV0b0lkU3VmZml4ID0gJ2hlYWRlci1jb250cm9sJztcblxuICBAT3V0cHV0KCkgYnJlYWRjcnVtYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdXBkYXRlRWRpdGFibGVUZXh0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgb3JpZ2luYWxCcmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIF9icmVhZGNydW1iczogQnJlYWRjcnVtYltdO1xuICBwcml2YXRlIHJlYWRvbmx5IElOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTID0gMztcbiAgcHJpdmF0ZSBfbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWFkZXJDb250cm9sKSB7XG4gICAgICB0aGlzLmluaXRFZGl0YWJsZUhlYWRlcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8qKiBJbXBsZW1lbnRlZCBkdWUgdG8gdW50aWxEZXN0cm95ZWQgKi9cbiAgfVxuXG4gIG9uQ2xpY2soeyBkYXRhLCBvbkNsaWNrIH06IEJyZWFkY3J1bWIpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5icmVhZGNydW1iQ2xpY2suZW1pdChkYXRhKTtcbiAgICB9XG5cbiAgICBpZiAob25DbGljaykge1xuICAgICAgb25DbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZEhhdmVBcnJvdyhsYXN0OiBib29sZWFuKSB7XG4gICAgcmV0dXJuICFsYXN0IHx8IChsYXN0ICYmIHRoaXMuc2hvd0Fycm93SW5MYXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcbiAgICBjb25zdCBzaG91bGREaXNwbGF5QWxsQnJlYWRjcnVtYnMgPSBzaXplKGJyZWFkY3J1bWJzKSA8PSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icztcbiAgICBjb25zdCBkb3RzID0gc2hvdWxkRGlzcGxheUFsbEJyZWFkY3J1bWJzID8gW10gOiBbeyB0ZXh0OiAnLi4uJyB9XTtcbiAgICBjb25zdCBzdGFydCA9IGJyZWFkY3J1bWJzLnNsaWNlKDAsIDEpO1xuICAgIGNvbnN0IGVuZCA9IHNob3VsZERpc3BsYXlBbGxCcmVhZGNydW1ic1xuICAgICAgPyBicmVhZGNydW1icy5zbGljZSgxKVxuICAgICAgOiBicmVhZGNydW1icy5zbGljZShicmVhZGNydW1icy5sZW5ndGggLSB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyArIDEpO1xuXG4gICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbLi4uc3RhcnQsIC4uLmRvdHMsIC4uLmVuZF07XG4gIH1cblxuICBwcml2YXRlIGluaXRFZGl0YWJsZUhlYWRlcigpIHtcbiAgICB0aGlzLmhlYWRlckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHJlczogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUVkaXRhYmxlVGV4dC5lbWl0KHJlcyk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKG1heDogbnVtYmVyKSB7XG4gICAgaWYgKG1heCA8IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlMpIHtcbiAgICAgIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzID0gdGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CUztcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1pbmltdW0gYnJlYWRjcnVtYnMgbnVtYmVyIGlzICR7dGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CU31gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSBtYXg7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxJQUFNLDZCQUE2QixHQUFHLFVBQUEsTUFBTTtJQUNqRCxPQUFBLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBdUMsTUFBTSxDQUFDLEtBQUssV0FBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQTNGLENBQTJGLENBQUM7QUFFOUYsTUFBTSxDQUFDLElBQU0sdUNBQXVDLEdBQUcsVUFBQyxNQUEyQixFQUFFLFVBQWtCO0lBQ3JHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLDJDQUF1QywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVEsQ0FBQztBQUN4RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsSUFBTSwyQkFBMkIsR0FBRyxVQUFDLE1BQTJCLEVBQUUsVUFBa0I7SUFDekYsVUFBVSxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZDLElBQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZFLE9BQU8sVUFBVTtRQUNmLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxVQUFDLEdBQVcsSUFBSyxPQUFBLHNDQUFrQyxHQUFHLFlBQVMsRUFBOUMsQ0FBOEMsQ0FBQztRQUM5RyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBc0hGLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIseURBQWEsQ0FBQTtJQUNiLDZEQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBU1g7QUFURCxXQUFZLG1CQUFtQjtJQUM3Qix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLGdEQUF5QixDQUFBO0lBQ3pCLDRDQUFxQixDQUFBO0lBQ3JCLHdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFUVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBUzlCO0FBY0QsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM5Qix5Q0FBaUIsQ0FBQTtJQUNqQiw2Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUcvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbERlZiwgR3JpZE9wdGlvbnMsIElDZWxsUmVuZGVyZXJQYXJhbXMsIElHZXRSb3dzUGFyYW1zLCBNZW51SXRlbURlZiwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIsIERhdG9HcmlkRmlsdGVyU2VjdGlvbnMsIExpc3RJdGVtIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NlcnZlclBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuLi9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9saWIvZXZlbnRzJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE1vcmVNZW51QWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUvZ3JpZC1jb2x1bW4taGVhZGVyLW1vcmUtbWVudS50eXBlcyc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b0dyaWRPdmVybGF5SW5wdXQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RWRpdGFibGVDb2x1bW5SZW5kZXJlciA9IHBhcmFtcyA9PlxuICBwYXJhbXMgJiYgcGFyYW1zLnZhbHVlID8gYDxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyIGVsbGlwc2lzXCI+JHtwYXJhbXMudmFsdWV9PC9kaXY+YCA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBlZGl0YWJsZUNlbGxSZW5kZXJlcldpdGhTZWFyY2hIaWdobGlnaHQgPSAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy52YWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInZhbHVlLXdyYXBwZXIgZWxsaXBzaXNcIj4ke3NlYXJjaEhpZ2hsaWdodENlbGxSZW5kZXJlcihwYXJhbXMsIHNlYXJjaFRlcm0pfTwvZGl2PmA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoSGlnaGxpZ2h0Q2VsbFJlbmRlcmVyID0gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcywgc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gIHNlYXJjaFRlcm0gPSAoc2VhcmNoVGVybSB8fCAnJykudHJpbSgpO1xuICBjb25zdCB2YWx1ZSA9IChwYXJhbXMudmFsdWVGb3JtYXR0ZWQgfHwgcGFyYW1zLnZhbHVlIHx8ICcnKS50b1N0cmluZygpO1xuICByZXR1cm4gc2VhcmNoVGVybVxuICAgID8gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdnaScpLCAoc3RyOiBzdHJpbmcpID0+IGA8c3BhbiBjbGFzcz1cInNlYXJjaC1oaWdobGlnaHRcIj4ke3N0cn08L3NwYW4+YClcbiAgICA6IHZhbHVlO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRDb2x1bW5EZWYgPSB7XG4gIGZpbHRlcnNDb25maWc/OiBEYXRvR3JpZEZpbHRlckNvbmZpZztcbiAgbW9yZU1lbnVBY3Rpb25zPzogRGF0b0dyaWRNb3JlTWVudUFjdGlvbnNbXTtcbiAgaW5mbz86IHN0cmluZztcbiAgb3JpZ2luYWxXaWR0aD86IG51bWJlcjtcbiAgaW5jbHVkZUluU2VhcmNoPzogYm9vbGVhbjtcbiAgY3VzdG9tQ2VsbENvbmZpZz86IERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZztcbiAgdmFsdWVUb0N1c3RvbUNlbGxDb25maWc/OiBIYXNoTWFwPERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZz47XG59ICYgQ29sRGVmO1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEN1c3RvbUNlbGxDb25maWcgPSB7XG4gIGNvbG9yPzogJ3ByaW1hcnknIHwgJ2dyZWVuJyB8ICdyZWQnIHwgJ2FjY2VudCcgfCAneWVsbG93JztcbiAgaWNvbj86IHN0cmluZztcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGljb25Dc3NDbGFzcz86IHN0cmluZztcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIHNob3dTcGlubmVyPzogYm9vbGVhbjtcbiAgbWF4TGFiZWxzPzogbnVtYmVyO1xuICBnZXRBZGRpdGlvbmFsVGV4dD86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0SW1hZ2VVcmw/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGluaXRpYWxzQ29uZmlnPzogRGF0b0dyaWRJbml0aWFsc0NlbGxDb25maWc7XG4gIGdldElzVmlzaWJsZT86IChkYXRhOiBhbnkpID0+IGJvb2xlYW47XG4gIGdldEl0ZW1zPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEluaXRpYWxzQ2VsbENvbmZpZyA9IHtcbiAgZmlyc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGxhc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGZ1bGxOYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGdldEZ1bGxOYW1lPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpc0JvbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRGaWx0ZXJDb25maWcgPSB7XG4gIHNlY3Rpb25zPzogRGF0b0dyaWRGaWx0ZXJTZWN0aW9ucztcbiAgcHJlZGVmaW5lZExpc3RWYWx1ZXM/OiAoc3RyaW5nIHwgTGlzdEl0ZW0pW107XG4gIGtlZXBQcmVkZWZpbmVkTGlzdE9yaWdpbmFsT3JkZXI/OiBib29sZWFuO1xuICBzaG93RW1wdHlDb25kaXRpb25zPzogYm9vbGVhbjtcbiAgc2hvd0NsZWFyRmlsdGVyc0J1dHRvbj86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCBleHRlbmRzIEFnR3JpZEV2ZW50IHtcbiAgdHlwZTogJ1NlcnZlckRhdGFMb2FkZWQnIHwgJ3Jvd0RhdGFDaGFuZ2VkJyB8ICdyb3dEYXRhVXBkYXRlZCc7XG4gIHBhZ2luYXRpb25QYWdlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkR2V0Um93c1BhcmFtcyBleHRlbmRzIElHZXRSb3dzUGFyYW1zIHtcbiAgc2VydmVyQ29uZmlnOiBEYXRvU2VydmVyUGFnaW5hdGlvbkNvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRFeHBvcnRQYXJhbXMgPSBEYXRvR3JpZEFwaSAmIERhdG9HcmlkU2V0dGluZ3M7XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkT25Ib3ZlckNvbmZpZyA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIG1heERpc3BsYXllZEl0ZW1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZE9wdGlvbnMgZXh0ZW5kcyBHcmlkT3B0aW9ucyB7XG4gIGdyaWROYW1lOiBzdHJpbmc7XG4gIGNvbHVtbkRlZnM6IERhdG9HcmlkQ29sdW1uRGVmW107XG4gIHNhdmVTZXR0aW5ncz86IGJvb2xlYW47XG4gIGVuYWJsZVYyXzE/OiBib29sZWFuO1xuICBpc0dsb2JhbFNldHRpbmdzPzogYm9vbGVhbjtcbiAgZXhwb3J0R3JpZD8ocGFyYW1zOiBEYXRvR3JpZEV4cG9ydFBhcmFtcyk6IHZvaWQ7XG4gIGRlZmF1bHRDb2xEZWY/OiBEYXRvR3JpZENvbHVtbkRlZjtcbiAgZGF0YXNvdXJjZT86IHtcbiAgICBnZXRSb3dzKHBhcmFtczogRGF0b0dyaWRHZXRSb3dzUGFyYW1zKTogdm9pZDtcbiAgICAvLyBvcHRpb25hbCBkZXN0cm95IG1ldGhvZCwgaWYgeW91ciBkYXRhc291cmNlIGhhcyBzdGF0ZSBpdCBuZWVkcyB0byBjbGVhbiB1cFxuICAgIGRlc3Ryb3k/KCk6IHZvaWQ7XG4gIH07XG4gIGN1c3RvbUNvbnRleHRNZW51Pyhyb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSk6IFJvd0FjdGlvbltdO1xuICBob3ZlckNvbmZpZz86IERhdG9HcmlkT25Ib3ZlckNvbmZpZztcbiAgb3ZlcmxheXNDb25maWc/OiBEYXRvR3JpZE92ZXJsYXlJbnB1dDtcbiAgZGlzdGluY3RSZXN1bHRzPzogYm9vbGVhbjtcbiAgbWF4RGVwdGg/OiBudW1iZXI7XG4gIGVuYWJsZVNlYXJjaD86IGJvb2xlYW47XG4gIGVuYWJsZVNlYXJjaEhpZ2hsaWdodD86IGJvb2xlYW47XG4gIGNvbHVtbnNJbmNsdWRlZEluU2VhcmNoQnlEZWZhdWx0PzogYm9vbGVhbjtcbiAgc2VhcmNoRGVib3VuY2VUaW1lPzogbnVtYmVyO1xuICBpbmNsdWRlSGlkZGVuQ29sdW1uc0luU2VhcmNoPzogYm9vbGVhbjtcbiAgc2hvd011bHRpU2VsZWN0aW9uQ2hlY2tib3hlcz86IGJvb2xlYW47XG4gIGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uPzogYm9vbGVhbjtcbiAgaWRDb2x1bW5LZXk/OiBzdHJpbmc7XG4gIGVuYWJsZUJhY2tncm91bmQ/OiBib29sZWFuO1xuICBzaG93Qm90dG9tQ29udHJvbHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0TWVudUl0ZW0gPSBzdHJpbmcgfCBNZW51SXRlbURlZjtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Db252ZXJ0ZXJQYXJhbXMge1xuICBub2RlOiBSb3dOb2RlO1xuICB0b29sYmFyQWN0aW9uczogUm93QWN0aW9uW107XG4gIHNlbGVjdGVkUm93czogUm93Tm9kZVtdO1xuICBpY29uUmVnaXN0cnk6IEljb25SZWdpc3RyeTtcbiAgbG9nZ2VyPzoge1xuICAgIGxvZyhldmVudFR5cGU6IENvcmVFdmVudFR5cGVzLkdSSURfVEFCTEVfQUNUSU9OLCBldmVudFByb3BlcnRpZXM/OiBIYXNoTWFwPGFueT4pOiB2b2lkO1xuICAgIGV2ZW50T3JpZ2luPzogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEYXRvR3JpZFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcbmV4cG9ydCB0eXBlIERhdG9HcmlkU29ydCA9IHtcbiAgY29sSWQ6IHN0cmluZztcbiAgc29ydDogRGF0b0dyaWRTb3J0RGlyZWN0aW9uO1xuICBmaWVsZD86IHN0cmluZztcbiAgc29ydEluZGV4PzogbnVtYmVyO1xufTtcbmV4cG9ydCB0eXBlIERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiA9ICdBU0MnIHwgJ0RFU0MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0ID0geyBjb2x1bW46IHN0cmluZzsgc29ydE9yZGVyOiBEYXRvR3JpZFNlcnZlclNvcnREaXJlY3Rpb24gfTtcblxuZXhwb3J0IGNvbnN0IGVudW0gRGF0b0dyaWRBbGlnbm1lbnQge1xuICBGSVRfVE9fQ09OVEFJTkVSLFxuICBGSVRfVE9fQ09OVEVOVCxcbiAgQ1VTVE9NXG59XG5cbmV4cG9ydCBlbnVtIEdyaWRNaW5XaWR0aHMge1xuICBEZWZhdWx0ID0gMTA3LFxuICBXaXRoX0luZm8gPSAxMzFcbn1cblxuZXhwb3J0IGVudW0gRGF0b0dyaWRDb2x1bW5UeXBlcyB7XG4gIFN0cmluZyA9ICdTdHJpbmcnLFxuICBOdW1iZXIgPSAnTnVtYmVyJyxcbiAgRGF0ZSA9ICdEYXRlJyxcbiAgU3RhdHVzID0gJ1N0YXR1cycsXG4gIEl0ZW1zID0gJ0l0ZW1zJyxcbiAgSXRlbXNDb3VudCA9ICdJdGVtc0NvdW50JyxcbiAgSW5pdGlhbHMgPSAnSW5pdGlhbHMnLFxuICBBdmF0YXIgPSAnQXZhdGFyJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkVHJlZUNvbmZpZyB7XG4gIGlkS2V5OiBzdHJpbmc7XG4gIHBhcmVudElES2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFnR3JpZFJvd0ljb24gPVxuICB8IHN0cmluZ1xuICB8IHtcbiAgICAgIGV4cGFuZGVkOiBzdHJpbmc7XG4gICAgICBjb2xsYXBzZWQ6IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgZW51bSBHcmlkUm93U2VsZWN0aW9uVHlwZSB7XG4gIFNJTkdMRSA9ICdzaW5nbGUnLFxuICBNVUxUSVBMRSA9ICdtdWx0aXBsZSdcbn1cblxuZXhwb3J0IHR5cGUgR3JpZFJvd3NTZWxlY3Rpb25EYXRhID0ge1xuICB0b3RhbFJvd3NDb3VudDogbnVtYmVyO1xuICBzZWxlY3RlZFJvd3NDb3VudDogbnVtYmVyO1xuICBzZWxlY3RlZFBhZ2VSb3dzQ291bnQ6IG51bWJlcjtcbiAgaXNBbGxQYWdlUm93c1NlbGVjdGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgR3JpZENoYW5nZUV2ZW50ID0ge1xuICB0eXBlOiBzdHJpbmc7XG4gIGRhdGE6IFJvd05vZGVbXTtcbiAgZmlsdGVyOiBEYXRvR3JpZEV4dGVybmFsRmlsdGVyW107XG4gIHNvcnQ6IERhdG9HcmlkU29ydDtcbn07XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxJQUFNLDZCQUE2QixHQUFHLFVBQUEsTUFBTTtJQUNqRCxPQUFBLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBdUMsTUFBTSxDQUFDLEtBQUssV0FBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQTNGLENBQTJGLENBQUM7QUFFOUYsTUFBTSxDQUFDLElBQU0sdUNBQXVDLEdBQUcsVUFBQyxNQUEyQixFQUFFLFVBQWtCO0lBQ3JHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLDJDQUF1QywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVEsQ0FBQztBQUN4RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsSUFBTSwyQkFBMkIsR0FBRyxVQUFDLE1BQTJCLEVBQUUsVUFBa0I7SUFDekYsVUFBVSxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZDLElBQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZFLE9BQU8sVUFBVTtRQUNmLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxVQUFDLEdBQVcsSUFBSyxPQUFBLHNDQUFrQyxHQUFHLFlBQVMsRUFBOUMsQ0FBOEMsQ0FBQztRQUM5RyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBc0hGLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIseURBQWEsQ0FBQTtJQUNiLDZEQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBU1g7QUFURCxXQUFZLG1CQUFtQjtJQUM3Qix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsc0NBQWUsQ0FBQTtJQUNmLGdEQUF5QixDQUFBO0lBQ3pCLDRDQUFxQixDQUFBO0lBQ3JCLHdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFUVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBUzlCO0FBY0QsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM5Qix5Q0FBaUIsQ0FBQTtJQUNqQiw2Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUcvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbERlZiwgR3JpZE9wdGlvbnMsIElDZWxsUmVuZGVyZXJQYXJhbXMsIElHZXRSb3dzUGFyYW1zLCBNZW51SXRlbURlZiwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIsIERhdG9HcmlkRmlsdGVyU2VjdGlvbnMsIExpc3RJdGVtIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1NlcnZlclBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuLi9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9saWIvZXZlbnRzJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZE1vcmVNZW51QWN0aW9ucyB9IGZyb20gJy4uL2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUvZ3JpZC1jb2x1bW4taGVhZGVyLW1vcmUtbWVudS50eXBlcyc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgQ29yZUV2ZW50VHlwZXMgfSBmcm9tICcuLi8uLi9ldmVudC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0b0dyaWRPdmVybGF5SW5wdXQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RWRpdGFibGVDb2x1bW5SZW5kZXJlciA9IHBhcmFtcyA9PlxuICBwYXJhbXMgJiYgcGFyYW1zLnZhbHVlID8gYDxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyIGVsbGlwc2lzXCI+JHtwYXJhbXMudmFsdWV9PC9kaXY+YCA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBlZGl0YWJsZUNlbGxSZW5kZXJlcldpdGhTZWFyY2hIaWdobGlnaHQgPSAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy52YWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInZhbHVlLXdyYXBwZXIgZWxsaXBzaXNcIj4ke3NlYXJjaEhpZ2hsaWdodENlbGxSZW5kZXJlcihwYXJhbXMsIHNlYXJjaFRlcm0pfTwvZGl2PmA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoSGlnaGxpZ2h0Q2VsbFJlbmRlcmVyID0gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcywgc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gIHNlYXJjaFRlcm0gPSAoc2VhcmNoVGVybSB8fCAnJykudHJpbSgpO1xuICBjb25zdCB2YWx1ZSA9IChwYXJhbXMudmFsdWVGb3JtYXR0ZWQgfHwgcGFyYW1zLnZhbHVlIHx8ICcnKS50b1N0cmluZygpO1xuICByZXR1cm4gc2VhcmNoVGVybVxuICAgID8gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdnaScpLCAoc3RyOiBzdHJpbmcpID0+IGA8c3BhbiBjbGFzcz1cInNlYXJjaC1oaWdobGlnaHRcIj4ke3N0cn08L3NwYW4+YClcbiAgICA6IHZhbHVlO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRDb2x1bW5EZWYgPSB7XG4gIGZpbHRlcnNDb25maWc/OiBEYXRvR3JpZEZpbHRlckNvbmZpZztcbiAgbW9yZU1lbnVBY3Rpb25zPzogRGF0b0dyaWRNb3JlTWVudUFjdGlvbnNbXTtcbiAgaW5mbz86IHN0cmluZztcbiAgb3JpZ2luYWxXaWR0aD86IG51bWJlcjtcbiAgaW5jbHVkZUluU2VhcmNoPzogYm9vbGVhbjtcbiAgY3VzdG9tQ2VsbENvbmZpZz86IERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZztcbiAgdmFsdWVUb0N1c3RvbUNlbGxDb25maWc/OiBIYXNoTWFwPERhdG9HcmlkQ3VzdG9tQ2VsbENvbmZpZz47XG59ICYgQ29sRGVmO1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEN1c3RvbUNlbGxDb25maWcgPSB7XG4gIGNvbG9yPzogJ3ByaW1hcnknIHwgJ2dyZWVuJyB8ICdyZWQnIHwgJ2FjY2VudCcgfCAneWVsbG93JztcbiAgaWNvbj86IHN0cmluZztcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIGljb25Dc3NDbGFzcz86IHN0cmluZztcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIHNob3dTcGlubmVyPzogYm9vbGVhbjtcbiAgbWF4TGFiZWxzPzogbnVtYmVyO1xuICBnZXRBZGRpdGlvbmFsVGV4dD86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0SW1hZ2VVcmw/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGluaXRpYWxzQ29uZmlnPzogRGF0b0dyaWRJbml0aWFsc0NlbGxDb25maWc7XG4gIGdldElzVmlzaWJsZT86IChkYXRhOiBhbnkpID0+IGJvb2xlYW47XG4gIGdldEl0ZW1zPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEluaXRpYWxzQ2VsbENvbmZpZyA9IHtcbiAgZmlyc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGxhc3ROYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGZ1bGxOYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGdldEZ1bGxOYW1lPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpc0JvbGQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRGaWx0ZXJDb25maWcgPSB7XG4gIHNlY3Rpb25zPzogRGF0b0dyaWRGaWx0ZXJTZWN0aW9ucztcbiAgcHJlZGVmaW5lZExpc3RWYWx1ZXM/OiAoc3RyaW5nIHwgTGlzdEl0ZW0pW107XG4gIGtlZXBQcmVkZWZpbmVkTGlzdE9yaWdpbmFsT3JkZXI/OiBib29sZWFuO1xuICBzaG93RW1wdHlDb25kaXRpb25zPzogYm9vbGVhbjtcbiAgc2hvd0NsZWFyRmlsdGVyc0J1dHRvbj86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCBleHRlbmRzIEFnR3JpZEV2ZW50IHtcbiAgdHlwZTogJ1NlcnZlckRhdGFMb2FkZWQnIHwgJ3Jvd0RhdGFDaGFuZ2VkJyB8ICdyb3dEYXRhVXBkYXRlZCc7XG4gIHBhZ2luYXRpb25QYWdlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkR2V0Um93c1BhcmFtcyBleHRlbmRzIElHZXRSb3dzUGFyYW1zIHtcbiAgc2VydmVyQ29uZmlnOiBEYXRvU2VydmVyUGFnaW5hdGlvbkNvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRFeHBvcnRQYXJhbXMgPSBEYXRvR3JpZEFwaSAmIERhdG9HcmlkU2V0dGluZ3M7XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkT25Ib3ZlckNvbmZpZyA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIG1heERpc3BsYXllZEl0ZW1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZE9wdGlvbnMgZXh0ZW5kcyBHcmlkT3B0aW9ucyB7XG4gIGdyaWROYW1lOiBzdHJpbmc7XG4gIGNvbHVtbkRlZnM6IERhdG9HcmlkQ29sdW1uRGVmW107XG4gIHNhdmVTZXR0aW5ncz86IGJvb2xlYW47XG4gIGVuYWJsZVYyXzE/OiBib29sZWFuO1xuICBleHBvcnRHcmlkPyhwYXJhbXM6IERhdG9HcmlkRXhwb3J0UGFyYW1zKTogdm9pZDtcbiAgZGVmYXVsdENvbERlZj86IERhdG9HcmlkQ29sdW1uRGVmO1xuICBkYXRhc291cmNlPzoge1xuICAgIGdldFJvd3MocGFyYW1zOiBEYXRvR3JpZEdldFJvd3NQYXJhbXMpOiB2b2lkO1xuICAgIC8vIG9wdGlvbmFsIGRlc3Ryb3kgbWV0aG9kLCBpZiB5b3VyIGRhdGFzb3VyY2UgaGFzIHN0YXRlIGl0IG5lZWRzIHRvIGNsZWFuIHVwXG4gICAgZGVzdHJveT8oKTogdm9pZDtcbiAgfTtcbiAgY3VzdG9tQ29udGV4dE1lbnU/KHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdKTogUm93QWN0aW9uW107XG4gIGhvdmVyQ29uZmlnPzogRGF0b0dyaWRPbkhvdmVyQ29uZmlnO1xuICBvdmVybGF5c0NvbmZpZz86IERhdG9HcmlkT3ZlcmxheUlucHV0O1xuICBkaXN0aW5jdFJlc3VsdHM/OiBib29sZWFuO1xuICBtYXhEZXB0aD86IG51bWJlcjtcbiAgZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0PzogYm9vbGVhbjtcbiAgY29sdW1uc0luY2x1ZGVkSW5TZWFyY2hCeURlZmF1bHQ/OiBib29sZWFuO1xuICBzZWFyY2hEZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIGluY2x1ZGVIaWRkZW5Db2x1bW5zSW5TZWFyY2g/OiBib29sZWFuO1xuICBzaG93TXVsdGlTZWxlY3Rpb25DaGVja2JveGVzPzogYm9vbGVhbjtcbiAgZW5hYmxlQWxsUGFnZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpZENvbHVtbktleT86IHN0cmluZztcbiAgZW5hYmxlQmFja2dyb3VuZD86IGJvb2xlYW47XG4gIHNob3dCb3R0b21Db250cm9scz86IGJvb2xlYW47XG4gIHNvcnRCeVN0b3JlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnVJdGVtID0gc3RyaW5nIHwgTWVudUl0ZW1EZWY7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udmVydGVyUGFyYW1zIHtcbiAgbm9kZTogUm93Tm9kZTtcbiAgdG9vbGJhckFjdGlvbnM6IFJvd0FjdGlvbltdO1xuICBzZWxlY3RlZFJvd3M6IFJvd05vZGVbXTtcbiAgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnk7XG4gIGxvZ2dlcj86IHtcbiAgICBsb2coZXZlbnRUeXBlOiBDb3JlRXZlbnRUeXBlcy5HUklEX1RBQkxFX0FDVElPTiwgZXZlbnRQcm9wZXJ0aWVzPzogSGFzaE1hcDxhbnk+KTogdm9pZDtcbiAgICBldmVudE9yaWdpbj86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0RGlyZWN0aW9uID0gJ2FzYycgfCAnZGVzYyc7XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNvcnQgPSB7XG4gIGNvbElkOiBzdHJpbmc7XG4gIHNvcnQ6IERhdG9HcmlkU29ydERpcmVjdGlvbjtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIHNvcnRJbmRleD86IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBEYXRvR3JpZFNlcnZlclNvcnREaXJlY3Rpb24gPSAnQVNDJyB8ICdERVNDJztcbmV4cG9ydCB0eXBlIERhdG9HcmlkU2VydmVyU29ydCA9IHsgY29sdW1uOiBzdHJpbmc7IHNvcnRPcmRlcjogRGF0b0dyaWRTZXJ2ZXJTb3J0RGlyZWN0aW9uIH07XG5cbmV4cG9ydCBjb25zdCBlbnVtIERhdG9HcmlkQWxpZ25tZW50IHtcbiAgRklUX1RPX0NPTlRBSU5FUixcbiAgRklUX1RPX0NPTlRFTlQsXG4gIENVU1RPTVxufVxuXG5leHBvcnQgZW51bSBHcmlkTWluV2lkdGhzIHtcbiAgRGVmYXVsdCA9IDEwNyxcbiAgV2l0aF9JbmZvID0gMTMxXG59XG5cbmV4cG9ydCBlbnVtIERhdG9HcmlkQ29sdW1uVHlwZXMge1xuICBTdHJpbmcgPSAnU3RyaW5nJyxcbiAgTnVtYmVyID0gJ051bWJlcicsXG4gIERhdGUgPSAnRGF0ZScsXG4gIFN0YXR1cyA9ICdTdGF0dXMnLFxuICBJdGVtcyA9ICdJdGVtcycsXG4gIEl0ZW1zQ291bnQgPSAnSXRlbXNDb3VudCcsXG4gIEluaXRpYWxzID0gJ0luaXRpYWxzJyxcbiAgQXZhdGFyID0gJ0F2YXRhcidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZFRyZWVDb25maWcge1xuICBpZEtleTogc3RyaW5nO1xuICBwYXJlbnRJREtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBZ0dyaWRSb3dJY29uID1cbiAgfCBzdHJpbmdcbiAgfCB7XG4gICAgICBleHBhbmRlZDogc3RyaW5nO1xuICAgICAgY29sbGFwc2VkOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGVudW0gR3JpZFJvd1NlbGVjdGlvblR5cGUge1xuICBTSU5HTEUgPSAnc2luZ2xlJyxcbiAgTVVMVElQTEUgPSAnbXVsdGlwbGUnXG59XG5cbmV4cG9ydCB0eXBlIEdyaWRSb3dzU2VsZWN0aW9uRGF0YSA9IHtcbiAgdG90YWxSb3dzQ291bnQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRSb3dzQ291bnQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlUm93c0NvdW50OiBudW1iZXI7XG4gIGlzQWxsUGFnZVJvd3NTZWxlY3RlZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdyaWRDaGFuZ2VFdmVudCA9IHtcbiAgdHlwZTogc3RyaW5nO1xuICBkYXRhOiBSb3dOb2RlW107XG4gIGZpbHRlcjogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdO1xuICBzb3J0OiBEYXRvR3JpZFNvcnQ7XG59O1xuIl19