@mintplayer/ng-bootstrap 15.26.2 → 15.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@ import { ElementRef } from '@angular/core';
2
2
  import { BsDockPanelComponent } from '../dock-panel/dock-panel.component';
3
3
  import { BsDockComponent } from '../dock/dock.component';
4
4
  import { BsDockPane } from '../panes/dock-pane';
5
+ import { RemoveFromPaneResult } from '../interfaces/remove-from-pane-result';
5
6
  import { DragOperation } from '../interfaces/drag-operation';
6
7
  import { BsDockService } from '../services/dock/dock.service';
7
8
  import * as i0 from "@angular/core";
@@ -17,6 +18,7 @@ export declare class BsDockPanelHeaderComponent {
17
18
  onMouseDown(ev: MouseEvent): void;
18
19
  onMouseMove(ev: MouseEvent): void;
19
20
  removeFromPaneBis(host: BsDockPane, pane: BsDockPane): void;
21
+ removeFromPane(host: BsDockPane, panel: BsDockPanelComponent): RemoveFromPaneResult;
20
22
  onMouseUp(ev: Event): void;
21
23
  dBlock: boolean;
22
24
  static ɵfac: i0.ɵɵFactoryDeclaration<BsDockPanelHeaderComponent, never>;
@@ -38,7 +38,8 @@ export class BsDockComponent {
38
38
  const clone = deepClone(layout, true,
39
39
  // []
40
40
  [BsContentPane, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane], true, this.paneCache);
41
- this.paneCache = clone.cache;
41
+ // this.paneCache = clone.cache;
42
+ console.log('parentify', { layout, result: clone.result });
42
43
  return clone.result;
43
44
  }));
44
45
  this.parentifiedLayout$.pipe(takeUntil(this.destroyed$)).subscribe(console.log);
@@ -89,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
89
90
  type: HostBinding,
90
91
  args: ['style.right']
91
92
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2svZG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2svZG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBbUMsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0csT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFRbEQsTUFBTSxPQUFPLGVBQWU7SUFDMUI7UUF1Q0EsZ0JBQWdCO1FBQ2hCLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBeUIsRUFBRSxDQUFDLENBQUM7UUFhMUQsWUFBWTtRQUVaLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBZ0MsRUFBRSxDQUFDLENBQUM7UUFNbkUscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBTXhCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFJZixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQXRFekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXhCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQWU7WUFDL0MsUUFBUSxFQUFFLE9BQU87WUFDakIsYUFBYSxFQUFFLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsOENBQThDO1FBQzlDLHNDQUFzQztRQUN0Qyx1Q0FBdUM7UUFFdkMsT0FBTztRQUVQLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDdEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FDckIsTUFBTSxFQUFFLElBQUk7WUFDWixLQUFLO1lBQ0wsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLEVBQzVFLElBQUksRUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBRTdCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBTUQsSUFBMkMsTUFBTSxDQUFDLEtBQXNDO1FBQ3RGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFJRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFvQixNQUFNLENBQUMsS0FBbUI7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUlELElBQThCLGFBQWEsQ0FBQyxLQUE2QztRQUN2RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBY0QsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7OzRHQTVFVSxlQUFlO2dHQUFmLGVBQWUsd1RBMENULG9CQUFvQiwySEM3RHZDLGlwQkFnQkE7MkZER2EsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxTQUFTOzBFQThDd0IsTUFBTTtzQkFBaEQsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBU2pCLE1BQU07c0JBQXpCLEtBQUs7Z0JBTXdCLGFBQWE7c0JBQTFDLFlBQVk7dUJBQUMsVUFBVTtnQkFLeEIsZ0JBQWdCO3NCQURmLFdBQVc7dUJBQUMseUJBQXlCO2dCQU90QyxVQUFVO3NCQUpULFdBQVc7dUJBQUMsV0FBVzs7c0JBQ3ZCLFdBQVc7dUJBQUMsWUFBWTs7c0JBQ3hCLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBWaWV3Q2hpbGRyZW4sIElucHV0LCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgY29tYmluZUxhdGVzdEFsbCwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQYXJlbnRpZmllZCwgZGVlcENsb25lIH0gZnJvbSAnQG1pbnRwbGF5ZXIvcGFyZW50aWZ5JztcbmltcG9ydCB7IEJzRG9ja1BhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vZG9jay1wYW5lbC9kb2NrLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFUGFuZVR5cGUgfSBmcm9tICcuLi9lbnVtcy9wYW5lLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBCc0RvY2tMYXlvdXQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RvY2stbGF5b3V0JztcbmltcG9ydCB7IEJzVGFiR3JvdXBQYW5lIH0gZnJvbSAnLi4vcGFuZXMvdGFiLWdyb3VwLXBhbmUnO1xuaW1wb3J0IHsgQnNEb2N1bWVudEhvc3QgfSBmcm9tICcuLi9wYW5lcy9kb2N1bWVudC1ob3N0LXBhbmUnO1xuaW1wb3J0IHsgQnNDb250ZW50UGFuZSB9IGZyb20gJy4uL3BhbmVzL2NvbnRlbnQtcGFuZSc7XG5pbXBvcnQgeyBCc0Zsb2F0aW5nUGFuZSB9IGZyb20gJy4uL3BhbmVzL2Zsb2F0aW5nLXBhbmUnO1xuaW1wb3J0IHsgQnNTcGxpdFBhbmUgfSBmcm9tICcuLi9wYW5lcy9zcGxpdC1wYW5lJztcbmltcG9ydCB7IEJzRG9ja1BhbmVSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2RvY2stcGFuZS1yZW5kZXJlci9kb2NrLXBhbmUtcmVuZGVyZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtZG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jay5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzRG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHRhYnMgPSBuZXcgQnNUYWJHcm91cFBhbmUoKTtcbiAgICBjb25zdCBkb2NIb3N0ID0gbmV3IEJzRG9jdW1lbnRIb3N0KCk7XG4gICAgZG9jSG9zdC5yb290UGFuZSA9IHRhYnM7XG5cbiAgICB0aGlzLmxheW91dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJzRG9ja0xheW91dD4oe1xuICAgICAgcm9vdFBhbmU6IGRvY0hvc3QsXG4gICAgICBmbG9hdGluZ1BhbmVzOiBbXVxuICAgIH0pO1xuXG4gICAgLy8gY29tYmluZUxhdGVzdChbdGhpcy5sYXlvdXQkLCB0aGlzLnBhbmVscyRdKVxuICAgIC8vICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgLy8gICAuc3Vic2NyaWJlKChbbGF5b3V0LCBwYW5lbHNdKSA9PiB7XG4gICAgICAgIFxuICAgIC8vICAgfSlcblxuICAgIHRoaXMuZmxvYXRpbmckLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKChmbG9hdGluZykgPT4ge1xuICAgICAgICBmbG9hdGluZy5mb3JFYWNoKChwYW5lbCkgPT4gcGFuZWwubW92ZVRvT3ZlcmxheSgpKTtcbiAgICAgIH0pO1xuICAgICAgXG4gICAgdGhpcy5wYXJlbnRpZmllZExheW91dCQgPSB0aGlzLmxheW91dCQucGlwZShtYXAobGF5b3V0ID0+IHtcbiAgICAgIGNvbnN0IGNsb25lID0gZGVlcENsb25lKFxuICAgICAgICBsYXlvdXQsIHRydWUsXG4gICAgICAgIC8vIFtdXG4gICAgICAgIFtCc0NvbnRlbnRQYW5lLCBCc0RvY3VtZW50SG9zdCwgQnNGbG9hdGluZ1BhbmUsIEJzU3BsaXRQYW5lLCBCc1RhYkdyb3VwUGFuZV0sXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRoaXMucGFuZUNhY2hlKTtcblxuICAgICAgdGhpcy5wYW5lQ2FjaGUgPSBjbG9uZS5jYWNoZTtcblxuICAgICAgcmV0dXJuIGNsb25lLnJlc3VsdDtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnBhcmVudGlmaWVkTGF5b3V0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoY29uc29sZS5sb2cpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYW5lQ2FjaGU/OiBNYXA8YW55LCBhbnk+O1xuXG4gIC8vI3JlZ2lvbiBQYW5lbHNcbiAgcGFuZWxzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnNEb2NrUGFuZWxDb21wb25lbnRbXT4oW10pO1xuICBAQ29udGVudENoaWxkcmVuKEJzRG9ja1BhbmVsQ29tcG9uZW50KSBzZXQgcGFuZWxzKHZhbHVlOiBRdWVyeUxpc3Q8QnNEb2NrUGFuZWxDb21wb25lbnQ+KSB7XG4gICAgdGhpcy5wYW5lbHMkLm5leHQodmFsdWUudG9BcnJheSgpKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIExheW91dFxuICBsYXlvdXQkOiBCZWhhdmlvclN1YmplY3Q8QnNEb2NrTGF5b3V0PjtcbiAgcHVibGljIGdldCBsYXlvdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0JC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGxheW91dCh2YWx1ZTogQnNEb2NrTGF5b3V0KSB7XG4gICAgdGhpcy5sYXlvdXQkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIGZsb2F0aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnNEb2NrUGFuZVJlbmRlcmVyQ29tcG9uZW50W10+KFtdKTtcbiAgQFZpZXdDaGlsZHJlbignZmxvYXRpbmcnKSBzZXQgZmxvYXRpbmdQYW5lcyh2YWx1ZTogUXVlcnlMaXN0PEJzRG9ja1BhbmVSZW5kZXJlckNvbXBvbmVudD4pIHtcbiAgICB0aGlzLmZsb2F0aW5nJC5uZXh0KHZhbHVlLnRvQXJyYXkoKSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvc2l0aW9uLWFic29sdXRlJylcbiAgcG9zaXRpb25BYnNvbHV0ZSA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS50b3AnKVxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQnKVxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmJvdHRvbScpXG4gIEBIb3N0QmluZGluZygnc3R5bGUucmlnaHQnKVxuICBwb3NpdGlvblB4ID0gMDtcblxuICBwYXJlbnRpZmllZExheW91dCQ6IE9ic2VydmFibGU8UGFyZW50aWZpZWQ8QnNEb2NrTGF5b3V0Pj47XG5cbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZmxvYXRpbmckLnZhbHVlLmZvckVhY2gocGFuZWwgPT4gcGFuZWwuZGlzcG9zZU92ZXJsYXkoKSk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIobGF5b3V0JCB8IGFzeW5jKSBhcyBsYXlvdXRcIj5cbiAgICA8YnMtZG9jay1wYW5lLXJlbmRlcmVyIFtsYXlvdXRdPVwibGF5b3V0LnJvb3RQYW5lXCI+PC9icy1kb2NrLXBhbmUtcmVuZGVyZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYW5lIG9mIGxheW91dC5mbG9hdGluZ1BhbmVzXCI+XG4gICAgICAgIDxicy1kb2NrLXBhbmUtcmVuZGVyZXIgI2Zsb2F0aW5nICpuZ0lmPVwicGFuZS5wYW5lXCIgW2xheW91dF09XCJwYW5lXCI+PC9icy1kb2NrLXBhbmUtcmVuZGVyZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjwhLS0gPGJzLXNwbGl0dGVyPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYW5lbCBvZiAocGFuZWxzJCB8IGFzeW5jKVwiPlxuICAgICAgICA8YnMtc3BsaXQtcGFuZWw+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJwYW5lbC5wb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2JzLXNwbGl0LXBhbmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9icy1zcGxpdHRlcj4gLS0+XG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2svZG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2svZG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBbUMsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0csT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFRbEQsTUFBTSxPQUFPLGVBQWU7SUFDMUI7UUF5Q0EsZ0JBQWdCO1FBQ2hCLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBeUIsRUFBRSxDQUFDLENBQUM7UUFhMUQsWUFBWTtRQUVaLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBZ0MsRUFBRSxDQUFDLENBQUM7UUFNbkUscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBTXhCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFJZixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQXhFekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXhCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQWU7WUFDL0MsUUFBUSxFQUFFLE9BQU87WUFDakIsYUFBYSxFQUFFLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsOENBQThDO1FBQzlDLHNDQUFzQztRQUN0Qyx1Q0FBdUM7UUFFdkMsT0FBTztRQUVQLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDdEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FDckIsTUFBTSxFQUFFLElBQUk7WUFDWixLQUFLO1lBQ0wsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLEVBQzVFLElBQUksRUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFbEIsZ0NBQWdDO1lBRWhDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUUzRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQU1ELElBQTJDLE1BQU0sQ0FBQyxLQUFzQztRQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBSUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBb0IsTUFBTSxDQUFDLEtBQW1CO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFJRCxJQUE4QixhQUFhLENBQUMsS0FBNkM7UUFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQWNELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDOzs0R0E5RVUsZUFBZTtnR0FBZixlQUFlLHdUQTRDVCxvQkFBb0IsMkhDL0R2QyxpcEJBZ0JBOzJGREdhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsU0FBUzswRUFnRHdCLE1BQU07c0JBQWhELGVBQWU7dUJBQUMsb0JBQW9CO2dCQVNqQixNQUFNO3NCQUF6QixLQUFLO2dCQU13QixhQUFhO3NCQUExQyxZQUFZO3VCQUFDLFVBQVU7Z0JBS3hCLGdCQUFnQjtzQkFEZixXQUFXO3VCQUFDLHlCQUF5QjtnQkFPdEMsVUFBVTtzQkFKVCxXQUFXO3VCQUFDLFdBQVc7O3NCQUN2QixXQUFXO3VCQUFDLFlBQVk7O3NCQUN4QixXQUFXO3VCQUFDLGNBQWM7O3NCQUMxQixXQUFXO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgVmlld0NoaWxkcmVuLCBJbnB1dCwgT25EZXN0cm95LCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGNvbWJpbmVMYXRlc3RBbGwsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUGFyZW50aWZpZWQsIGRlZXBDbG9uZSB9IGZyb20gJ0BtaW50cGxheWVyL3BhcmVudGlmeSc7XG5pbXBvcnQgeyBCc0RvY2tQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2RvY2stcGFuZWwvZG9jay1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRVBhbmVUeXBlIH0gZnJvbSAnLi4vZW51bXMvcGFuZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgQnNEb2NrTGF5b3V0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kb2NrLWxheW91dCc7XG5pbXBvcnQgeyBCc1RhYkdyb3VwUGFuZSB9IGZyb20gJy4uL3BhbmVzL3RhYi1ncm91cC1wYW5lJztcbmltcG9ydCB7IEJzRG9jdW1lbnRIb3N0IH0gZnJvbSAnLi4vcGFuZXMvZG9jdW1lbnQtaG9zdC1wYW5lJztcbmltcG9ydCB7IEJzQ29udGVudFBhbmUgfSBmcm9tICcuLi9wYW5lcy9jb250ZW50LXBhbmUnO1xuaW1wb3J0IHsgQnNGbG9hdGluZ1BhbmUgfSBmcm9tICcuLi9wYW5lcy9mbG9hdGluZy1wYW5lJztcbmltcG9ydCB7IEJzU3BsaXRQYW5lIH0gZnJvbSAnLi4vcGFuZXMvc3BsaXQtcGFuZSc7XG5pbXBvcnQgeyBCc0RvY2tQYW5lUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9kb2NrLXBhbmUtcmVuZGVyZXIvZG9jay1wYW5lLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWRvY2snLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY2suY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCc0RvY2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCB0YWJzID0gbmV3IEJzVGFiR3JvdXBQYW5lKCk7XG4gICAgY29uc3QgZG9jSG9zdCA9IG5ldyBCc0RvY3VtZW50SG9zdCgpO1xuICAgIGRvY0hvc3Qucm9vdFBhbmUgPSB0YWJzO1xuXG4gICAgdGhpcy5sYXlvdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCc0RvY2tMYXlvdXQ+KHtcbiAgICAgIHJvb3RQYW5lOiBkb2NIb3N0LFxuICAgICAgZmxvYXRpbmdQYW5lczogW11cbiAgICB9KTtcblxuICAgIC8vIGNvbWJpbmVMYXRlc3QoW3RoaXMubGF5b3V0JCwgdGhpcy5wYW5lbHMkXSlcbiAgICAvLyAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgIC8vICAgLnN1YnNjcmliZSgoW2xheW91dCwgcGFuZWxzXSkgPT4ge1xuICAgICAgICBcbiAgICAvLyAgIH0pXG5cbiAgICB0aGlzLmZsb2F0aW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgoZmxvYXRpbmcpID0+IHtcbiAgICAgICAgZmxvYXRpbmcuZm9yRWFjaCgocGFuZWwpID0+IHBhbmVsLm1vdmVUb092ZXJsYXkoKSk7XG4gICAgICB9KTtcbiAgICAgIFxuICAgIHRoaXMucGFyZW50aWZpZWRMYXlvdXQkID0gdGhpcy5sYXlvdXQkLnBpcGUobWFwKGxheW91dCA9PiB7XG4gICAgICBjb25zdCBjbG9uZSA9IGRlZXBDbG9uZShcbiAgICAgICAgbGF5b3V0LCB0cnVlLFxuICAgICAgICAvLyBbXVxuICAgICAgICBbQnNDb250ZW50UGFuZSwgQnNEb2N1bWVudEhvc3QsIEJzRmxvYXRpbmdQYW5lLCBCc1NwbGl0UGFuZSwgQnNUYWJHcm91cFBhbmVdLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0aGlzLnBhbmVDYWNoZSk7XG5cbiAgICAgIC8vIHRoaXMucGFuZUNhY2hlID0gY2xvbmUuY2FjaGU7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdwYXJlbnRpZnknLCB7IGxheW91dCwgcmVzdWx0OiBjbG9uZS5yZXN1bHQgfSk7XG5cbiAgICAgIHJldHVybiBjbG9uZS5yZXN1bHQ7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5wYXJlbnRpZmllZExheW91dCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGNvbnNvbGUubG9nKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFuZUNhY2hlPzogTWFwPGFueSwgYW55PjtcblxuICAvLyNyZWdpb24gUGFuZWxzXG4gIHBhbmVscyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJzRG9ja1BhbmVsQ29tcG9uZW50W10+KFtdKTtcbiAgQENvbnRlbnRDaGlsZHJlbihCc0RvY2tQYW5lbENvbXBvbmVudCkgc2V0IHBhbmVscyh2YWx1ZTogUXVlcnlMaXN0PEJzRG9ja1BhbmVsQ29tcG9uZW50Pikge1xuICAgIHRoaXMucGFuZWxzJC5uZXh0KHZhbHVlLnRvQXJyYXkoKSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBMYXlvdXRcbiAgbGF5b3V0JDogQmVoYXZpb3JTdWJqZWN0PEJzRG9ja0xheW91dD47XG4gIHB1YmxpYyBnZXQgbGF5b3V0KCkge1xuICAgIHJldHVybiB0aGlzLmxheW91dCQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBsYXlvdXQodmFsdWU6IEJzRG9ja0xheW91dCkge1xuICAgIHRoaXMubGF5b3V0JC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBmbG9hdGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJzRG9ja1BhbmVSZW5kZXJlckNvbXBvbmVudFtdPihbXSk7XG4gIEBWaWV3Q2hpbGRyZW4oJ2Zsb2F0aW5nJykgc2V0IGZsb2F0aW5nUGFuZXModmFsdWU6IFF1ZXJ5TGlzdDxCc0RvY2tQYW5lUmVuZGVyZXJDb21wb25lbnQ+KSB7XG4gICAgdGhpcy5mbG9hdGluZyQubmV4dCh2YWx1ZS50b0FycmF5KCkpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wb3NpdGlvbi1hYnNvbHV0ZScpXG4gIHBvc2l0aW9uQWJzb2x1dGUgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUudG9wJylcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0JylcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ib3R0b20nKVxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnJpZ2h0JylcbiAgcG9zaXRpb25QeCA9IDA7XG5cbiAgcGFyZW50aWZpZWRMYXlvdXQkOiBPYnNlcnZhYmxlPFBhcmVudGlmaWVkPEJzRG9ja0xheW91dD4+O1xuXG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmZsb2F0aW5nJC52YWx1ZS5mb3JFYWNoKHBhbmVsID0+IHBhbmVsLmRpc3Bvc2VPdmVybGF5KCkpO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48bmctY29udGFpbmVyICpuZ0lmPVwiKGxheW91dCQgfCBhc3luYykgYXMgbGF5b3V0XCI+XG4gICAgPGJzLWRvY2stcGFuZS1yZW5kZXJlciBbbGF5b3V0XT1cImxheW91dC5yb290UGFuZVwiPjwvYnMtZG9jay1wYW5lLXJlbmRlcmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZSBvZiBsYXlvdXQuZmxvYXRpbmdQYW5lc1wiPlxuICAgICAgICA8YnMtZG9jay1wYW5lLXJlbmRlcmVyICNmbG9hdGluZyAqbmdJZj1cInBhbmUucGFuZVwiIFtsYXlvdXRdPVwicGFuZVwiPjwvYnMtZG9jay1wYW5lLXJlbmRlcmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48IS0tIDxicy1zcGxpdHRlcj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgKHBhbmVscyQgfCBhc3luYylcIj5cbiAgICAgICAgPGJzLXNwbGl0LXBhbmVsPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwicGFuZWwucG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9icy1zcGxpdC1wYW5lbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvYnMtc3BsaXR0ZXI+IC0tPlxuIl19
@@ -30,10 +30,10 @@ export class BsDockPanelHeaderComponent {
30
30
  if (this.isMouseDown) {
31
31
  if (!this.isDragging) {
32
32
  this.isDragging = true;
33
- this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {
33
+ this.dock.parentifiedLayout$.pipe(take(1)).subscribe((parentifiedLayout) => {
34
34
  // this.dock.layout$.pipe(take(1)).subscribe((layout) => {
35
- const traces = this.dockService.buildTraces(layout);
36
- console.log('traces', { layout, traces });
35
+ const traces = this.dockService.buildTraces(parentifiedLayout);
36
+ console.log('traces', { parentifiedLayout, traces });
37
37
  const matching = traces.filter(t => {
38
38
  const lastPane = t.trace[t.trace.length - 1];
39
39
  // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);
@@ -63,7 +63,7 @@ export class BsDockPanelHeaderComponent {
63
63
  };
64
64
  // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
65
65
  // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
66
- // this.removeFromPane(layout.rootPane, this.dockPanel);
66
+ this.removeFromPane(parentifiedLayout.$original.rootPane, this.dockPanel);
67
67
  const trace = [...matching[0].trace];
68
68
  this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
69
69
  this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
@@ -74,9 +74,9 @@ export class BsDockPanelHeaderComponent {
74
74
  break;
75
75
  }
76
76
  else {
77
- const floatingIndex = layout.floatingPanes.indexOf(trace[0]);
77
+ const floatingIndex = parentifiedLayout.floatingPanes.indexOf(trace[0]);
78
78
  if (trace[0].isEmpty && (floatingIndex > -1)) {
79
- layout.floatingPanes.splice(floatingIndex, 1);
79
+ parentifiedLayout.$original.floatingPanes.splice(floatingIndex, 1);
80
80
  }
81
81
  }
82
82
  }
@@ -103,8 +103,9 @@ export class BsDockPanelHeaderComponent {
103
103
  offsetY: ev.offsetY,
104
104
  floatingPane
105
105
  };
106
- layout.floatingPanes.push(floatingPane);
107
- setTimeout(() => this.dock.layout$.next(layout), 5);
106
+ parentifiedLayout.$original.floatingPanes.push(floatingPane);
107
+ // debugger;
108
+ setTimeout(() => this.dock.layout$.next(parentifiedLayout.$original), 5);
108
109
  // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });
109
110
  // let element: HTMLElement | null = this.element.nativeElement;
110
111
  // let tree: HTMLElement[] = [];
@@ -191,58 +192,64 @@ export class BsDockPanelHeaderComponent {
191
192
  throw 'Unknown pane type';
192
193
  }
193
194
  }
194
- // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {
195
- // if (host instanceof BsContentPane) {
196
- // return { paneRemoved: false, hostIsEmpty: false };
197
- // } else if (host instanceof BsDocumentHost) {
198
- // // Actually documentHost should never be removed
199
- // if (!host.rootPane) {
200
- // return { paneRemoved: false, hostIsEmpty: true };
201
- // }
202
- // const result = this.removeFromPane(host.rootPane, panel);
203
- // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
204
- // } else if (host instanceof BsTabGroupPane) {
205
- // const matching = host.panes.filter(p => p.dockPanel === panel);
206
- // if (matching.length > 0) {
207
- // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
208
- // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
209
- // } else {
210
- // // ATM. all panes are ContentPanes anyway.
211
- // // So unless you'd want to have splitters inside the tabs,
212
- // // This code will not be hit.
213
- // // const result = host.panes
214
- // // .map(parentPane => this.removeFromPane(parentPane, panel))
215
- // // .filter(r => r.paneRemoved);
216
- // //
217
- // // if (result.length > 0) {
218
- // // return { paneRemoved: true, hostIsEmpty: }
219
- // // }
220
- // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
221
- // }
222
- // } else if (host instanceof BsSplitPane) {
223
- // const matching = host.panes
224
- // .filter(p => p instanceof BsContentPane)
225
- // .map(p => <BsContentPane>p)
226
- // .filter(p => p.dockPanel === panel);
227
- // if (matching.length > 0) {
228
- // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
229
- // // TODO: Remove splitter if only 1 pane left?
230
- // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
231
- // } else {
232
- // for (let splitPane of host.panes) {
233
- // const result = this.removeFromPane(splitPane, panel);
234
- // if (result.paneRemoved && result.hostIsEmpty) {
235
- // // splitPane is empty now, so we can remove it from this splitter
236
- // host.panes.splice(host.panes.indexOf(splitPane), 1);
237
- // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
238
- // }
239
- // }
240
- // }
241
- // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
242
- // } else {
243
- // throw 'unknown host type';
244
- // }
245
- // }
195
+ removeFromPane(host, panel /*, parents: BsDockPane[] */) {
196
+ if (host instanceof BsContentPane) {
197
+ return { paneRemoved: false, hostIsEmpty: false };
198
+ }
199
+ else if (host instanceof BsDocumentHost) {
200
+ // Actually documentHost should never be removed
201
+ if (!host.rootPane) {
202
+ return { paneRemoved: false, hostIsEmpty: true };
203
+ }
204
+ const result = this.removeFromPane(host.rootPane, panel);
205
+ return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
206
+ }
207
+ else if (host instanceof BsTabGroupPane) {
208
+ const matching = host.panes.filter(p => p.dockPanel === panel);
209
+ if (matching.length > 0) {
210
+ host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
211
+ return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
212
+ }
213
+ else {
214
+ // ATM. all panes are ContentPanes anyway.
215
+ // So unless you'd want to have splitters inside the tabs,
216
+ // This code will not be hit.
217
+ // const result = host.panes
218
+ // .map(parentPane => this.removeFromPane(parentPane, panel))
219
+ // .filter(r => r.paneRemoved);
220
+ //
221
+ // if (result.length > 0) {
222
+ // return { paneRemoved: true, hostIsEmpty: }
223
+ // }
224
+ return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
225
+ }
226
+ }
227
+ else if (host instanceof BsSplitPane) {
228
+ const matching = host.panes
229
+ .filter(p => p instanceof BsContentPane)
230
+ .map(p => p)
231
+ .filter(p => p.dockPanel === panel);
232
+ if (matching.length > 0) {
233
+ host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
234
+ // TODO: Remove splitter if only 1 pane left?
235
+ return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
236
+ }
237
+ else {
238
+ for (let splitPane of host.panes) {
239
+ const result = this.removeFromPane(splitPane, panel);
240
+ if (result.paneRemoved && result.hostIsEmpty) {
241
+ // splitPane is empty now, so we can remove it from this splitter
242
+ host.panes.splice(host.panes.indexOf(splitPane), 1);
243
+ return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
244
+ }
245
+ }
246
+ }
247
+ return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
248
+ }
249
+ else {
250
+ throw 'unknown host type';
251
+ }
252
+ }
246
253
  onMouseUp(ev) {
247
254
  this.isMouseDown = false;
248
255
  this.isDragging = false;
@@ -267,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
267
274
  type: HostBinding,
268
275
  args: ['class.d-block']
269
276
  }] } });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1wYW5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9kb2NrLXBhbmVsLWhlYWRlci9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2stcGFuZWwtaGVhZGVyL2RvY2stcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQU85RCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLFNBQStCLEVBQVUsSUFBcUIsRUFBVSxXQUEwQixFQUFVLE9BQWdDO1FBQTVJLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQVUsU0FBSSxH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LCtQQ3JCdkMsMkJBQXlCOzJGRHFCWiwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usc0JBQXNCOzhMQVVPLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUtXLFdBQVc7c0JBQTFELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd1BBLFNBQVM7c0JBQXRELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWQsTUFBTTtzQkFBbkMsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9wdGlvbmFsLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RhYkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvdGFiLWNvbnRyb2wnO1xuaW1wb3J0IHsgUGFyZW50aWZpZWQgfSBmcm9tICdAbWludHBsYXllci9wYXJlbnRpZnknO1xuaW1wb3J0IHsgQnNEb2NrUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9kb2NrLXBhbmVsL2RvY2stcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJzRG9ja0NvbXBvbmVudCB9IGZyb20gJy4uL2RvY2svZG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gJy4uL3BhbmVzL2RvY2stcGFuZSc7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZSB9IGZyb20gJy4uL3BhbmVzL3NwbGl0LXBhbmUnO1xuaW1wb3J0IHsgQnNDb250ZW50UGFuZSB9IGZyb20gJy4uL3BhbmVzL2NvbnRlbnQtcGFuZSc7XG5pbXBvcnQgeyBCc0Zsb2F0aW5nUGFuZSB9IGZyb20gJy4uL3BhbmVzL2Zsb2F0aW5nLXBhbmUnO1xuaW1wb3J0IHsgQnNUYWJHcm91cFBhbmUgfSBmcm9tICcuLi9wYW5lcy90YWItZ3JvdXAtcGFuZSc7XG5pbXBvcnQgeyBCc0RvY3VtZW50SG9zdCB9IGZyb20gJy4uL3BhbmVzL2RvY3VtZW50LWhvc3QtcGFuZSc7XG5pbXBvcnQgeyBSZW1vdmVGcm9tUGFuZVJlc3VsdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVtb3ZlLWZyb20tcGFuZS1yZXN1bHQnO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgQnNEb2NrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RvY2svZG9jay5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtZG9jay1wYW5lbC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jay1wYW5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzRG9ja1BhbmVsSGVhZGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkb2NrUGFuZWw6IEJzRG9ja1BhbmVsQ29tcG9uZW50LCBwcml2YXRlIGRvY2s6IEJzRG9ja0NvbXBvbmVudCwgcHJpdmF0ZSBkb2NrU2VydmljZTogQnNEb2NrU2VydmljZSwgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBpc01vdXNlRG93biA9IGZhbHNlO1xuICBkcmFnT3BlcmF0aW9uPzogRHJhZ09wZXJhdGlvbjtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKSBvbk1vdXNlRG93bihldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKSBvbk1vdXNlTW92ZShldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzTW91c2VEb3duKSB7XG4gICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgIFxuICAgICAgICB0aGlzLmRvY2sucGFyZW50aWZpZWRMYXlvdXQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChsYXlvdXQpID0+IHtcbiAgICAgICAgLy8gdGhpcy5kb2NrLmxheW91dCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGxheW91dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRyYWNlcyA9IHRoaXMuZG9ja1NlcnZpY2UuYnVpbGRUcmFjZXMobGF5b3V0KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygndHJhY2VzJywge2xheW91dCwgdHJhY2VzfSk7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB0cmFjZXMuZmlsdGVyKHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFzdFBhbmUgPSB0LnRyYWNlW3QudHJhY2UubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAvLyByZXR1cm4gKGxhc3RQYW5lIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkgJiYgKGxhc3RQYW5lLmRvY2tQYW5lbCA9PT0gdGhpcy5kb2NrUGFuZWwpO1xuICAgICAgICAgICAgcmV0dXJuIChsYXN0UGFuZSBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpICYmIChsYXN0UGFuZS5kb2NrUGFuZWwgPT09IHRoaXMuZG9ja1BhbmVsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnbWF0Y2hpbmcnLCBtYXRjaGluZyk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGNvbnN0IHRhYnMgPSBtYXRjaGluZ1swXS50cmFjZS5maWx0ZXIocGFuZSA9PiBwYW5lIGluc3RhbmNlb2YgQnNUYWJHcm91cFBhbmUpO1xuICAgICAgICAgIC8vIGNvbnN0IGxhc3RUYWJHcm91cCA9IHRhYnNbdGFicy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAvLyAvLyBjb25zb2xlLmxvZygnbGFzdCB0YWJncm91cCcsIGxhc3RUYWJHcm91cCk7XG5cbiAgICAgICAgICBsZXQgdGFiQ29udHJvbEVsID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRhYkNvbnRyb2xFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICAgIHRhYkNvbnRyb2xFbCA9IHRhYkNvbnRyb2xFbCEucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93ICdObyBtb3JlIHBhcmVudHMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKHRhYkNvbnRyb2xFbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09ICdCUy1UQUItQ09OVFJPTCcpO1xuXG4gICAgICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICAgICAgd2lkdGg6IHRhYkNvbnRyb2xFbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGFiQ29udHJvbEVsLmNsaWVudEhlaWdodCxcbiAgICAgICAgICAgIGxlZnQ6IGV2LmNsaWVudFggLSBldi5vZmZzZXRYLFxuICAgICAgICAgICAgdG9wOiBldi5jbGllbnRZIC0gZXYub2Zmc2V0WSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uZGV0YWNoKCk7XG4gICAgICAgICAgLy8gdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICAvLyB0aGlzLnJlbW92ZUZyb21QYW5lKGxheW91dC5yb290UGFuZSwgdGhpcy5kb2NrUGFuZWwpO1xuXG4gICAgICAgICAgY29uc3QgdHJhY2UgPSBbLi4ubWF0Y2hpbmdbMF0udHJhY2VdO1xuXG4gICAgICAgICAgdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uZGV0YWNoKCk7XG4gICAgICAgICAgdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHRyYWNlLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFuZUJpcyh0cmFjZVtpbmRleCAtIDFdLCB0cmFjZVtpbmRleF0pO1xuICAgICAgICAgICAgICBpZiAoIXRyYWNlW2luZGV4IC0gMV0uaXNFbXB0eSkgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBmbG9hdGluZ0luZGV4ID0gbGF5b3V0LmZsb2F0aW5nUGFuZXMuaW5kZXhPZih0cmFjZVswXSk7XG4gICAgICAgICAgICAgIGlmICh0cmFjZVswXS5pc0VtcHR5ICYmIChmbG9hdGluZ0luZGV4ID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgbGF5b3V0LmZsb2F0aW5nUGFuZXMuc3BsaWNlKGZsb2F0aW5nSW5kZXgsIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICAgIC8vIHRoaXMucmVtb3ZlRnJvbVBhbmUoKDxhbnk+bWF0Y2hpbmdbMF0udHJhY2VbMF0pWyckb3JpZ2luYWwnXSwgdGhpcy5kb2NrUGFuZWwpO1xuXG4gICAgICAgICAgY29uc3QgZmxvYXRpbmdQYW5lID0gbmV3IEJzRmxvYXRpbmdQYW5lKHtcbiAgICAgICAgICAgIHBhbmU6IG5ldyBCc1RhYkdyb3VwUGFuZSh7XG4gICAgICAgICAgICAgIHBhbmVzOiBbXG4gICAgICAgICAgICAgICAgbmV3IEJzQ29udGVudFBhbmUoe1xuICAgICAgICAgICAgICAgICAgZG9ja1BhbmVsOiB0aGlzLmRvY2tQYW5lbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2l6ZToge1xuICAgICAgICAgICAgICB3aWR0aDogY29vcmRzLndpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGNvb3Jkcy5oZWlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICAgICAgeDogY29vcmRzLmxlZnQsXG4gICAgICAgICAgICAgIHk6IGNvb3Jkcy50b3AsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5kcmFnT3BlcmF0aW9uID0ge1xuICAgICAgICAgICAgb2Zmc2V0WDogZXYub2Zmc2V0WCxcbiAgICAgICAgICAgIG9mZnNldFk6IGV2Lm9mZnNldFksXG4gICAgICAgICAgICBmbG9hdGluZ1BhbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGxheW91dC5mbG9hdGluZ1BhbmVzLnB1c2goZmxvYXRpbmdQYW5lKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZG9jay5sYXlvdXQkLm5leHQobGF5b3V0KSwgNSk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3RyYWNlcycsIHsgdHJhY2VzLCBtYXRjaGluZywgZG9ja1BhbmVsOiB0aGlzLmRvY2tQYW5lbCwgZXF1YWxzOiB0cmFjZXNbMl0udHJhY2VbM10gfSk7XG5cbiAgICAgICAgICAvLyAgICAgbGV0IGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIC8vICAgICBsZXQgdHJlZTogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICAgIC8vICAgICBkbyB7XG4gICAgICAgICAgLy8gICAgICAgdHJlZS5wdXNoKGVsZW1lbnQhKTtcbiAgICAgICAgICAvLyAgICAgICBlbGVtZW50ID0gZWxlbWVudCEucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAvLyAgICAgfSB3aGlsZSAoZWxlbWVudCk7XG5cbiAgICAgICAgICAvLyAgICAgY29uc3QgdGFiQ29udHJvbHMgPSB0cmVlLmZpbHRlcihlbCA9PiBlbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdCUy1UQUItQ09OVFJPTCcpO1xuICAgICAgICAgIC8vICAgICBpZiAodGFiQ29udHJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vICAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgICAvLyAgICAgICAgIHdpZHRoOiB0YWJDb250cm9sc1swXS5jbGllbnRXaWR0aCxcbiAgICAgICAgICAvLyAgICAgICAgIGhlaWdodDogdGFiQ29udHJvbHNbMF0uY2xpZW50SGVpZ2h0LFxuICAgICAgICAgIC8vICAgICAgICAgbGVmdDogZXYuY2xpZW50WCAtIGV2Lm9mZnNldFgsXG4gICAgICAgICAgLy8gICAgICAgICB0b3A6IGV2LmNsaWVudFkgLSBldi5vZmZzZXRZLFxuICAgICAgICAgIC8vICAgICAgIH07XG5cbiAgICAgICAgICAvLyAgICAgICB0aGlzLmRvY2tQYW5lbC5oZWFkZXJQb3J0YWw/LmlzQXR0YWNoZWQgJiYgdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICAvLyAgICAgICB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmNvbnRlbnRQb3J0YWw/LmRldGFjaCgpO1xuICAgICAgICAgIC8vICAgICAgIHRoaXMucmVtb3ZlRnJvbVBhbmUobGF5b3V0LnJvb3RQYW5lLCB0aGlzLmRvY2tQYW5lbCk7XG5cbiAgICAgICAgICAvLyAgICAgICBjb25zdCBmbG9hdGluZ1BhbmUgPSBuZXcgQnNGbG9hdGluZ1BhbmUoe1xuICAgICAgICAgIC8vICAgICAgICAgcGFuZTogbmV3IEJzVGFiR3JvdXBQYW5lKHtcbiAgICAgICAgICAvLyAgICAgICAgICAgcGFuZXM6IFtcbiAgICAgICAgICAvLyAgICAgICAgICAgICBuZXcgQnNDb250ZW50UGFuZSh7XG4gICAgICAgICAgLy8gICAgICAgICAgICAgICBkb2NrUGFuZWw6IHRoaXMuZG9ja1BhbmVsXG4gICAgICAgICAgLy8gICAgICAgICAgICAgfSlcbiAgICAgICAgICAvLyAgICAgICAgICAgXVxuICAgICAgICAgIC8vICAgICAgICAgfSksXG4gICAgICAgICAgLy8gICAgICAgICBzaXplOiB7XG4gICAgICAgICAgLy8gICAgICAgICAgIHdpZHRoOiBjb29yZHMud2lkdGgsXG4gICAgICAgICAgLy8gICAgICAgICAgIGhlaWdodDogY29vcmRzLmhlaWdodCxcbiAgICAgICAgICAvLyAgICAgICAgIH0sXG4gICAgICAgICAgLy8gICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIC8vICAgICAgICAgICB4OiBjb29yZHMubGVmdCxcbiAgICAgICAgICAvLyAgICAgICAgICAgeTogY29vcmRzLnRvcCxcbiAgICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgICAvLyAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAvLyAgICAgICB0aGlzLmRyYWdPcGVyYXRpb24gPSB7XG4gICAgICAgICAgLy8gICAgICAgICBvZmZzZXRYOiBldi5vZmZzZXRYLFxuICAgICAgICAgIC8vICAgICAgICAgb2Zmc2V0WTogZXYub2Zmc2V0WSxcbiAgICAgICAgICAvLyAgICAgICAgIGZsb2F0aW5nUGFuZVxuICAgICAgICAgIC8vICAgICAgIH07XG5cbiAgICAgICAgICAvLyAgICAgICBsYXlvdXQuZmxvYXRpbmdQYW5lcy5wdXNoKGZsb2F0aW5nUGFuZSk7XG4gICAgICAgICAgLy8gICAgICAgdGhpcy5kb2NrLmxheW91dCQubmV4dChsYXlvdXQpO1xuICAgICAgICAgIC8vICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ09wZXJhdGlvbikge1xuICAgICAgICAgIGlmICh0aGlzLmRyYWdPcGVyYXRpb24uZmxvYXRpbmdQYW5lLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdPcGVyYXRpb24uZmxvYXRpbmdQYW5lLmxvY2F0aW9uLnggPSBldi5jbGllbnRYIC0gdGhpcy5kcmFnT3BlcmF0aW9uLm9mZnNldFg7XG4gICAgICAgICAgICB0aGlzLmRyYWdPcGVyYXRpb24uZmxvYXRpbmdQYW5lLmxvY2F0aW9uLnkgPSBldi5jbGllbnRZIC0gdGhpcy5kcmFnT3BlcmF0aW9uLm9mZnNldFk7XG4gICAgICAgICAgfVxuICAgICAgLy8gICB9IGVsc2Uge1xuICAgICAgLy8gICAgIGNvbnN0IHRyYWNlcyA9IHRoaXMuZG9ja1NlcnZpY2UuYnVpbGRUcmFjZXModGhpcy5kb2NrLmxheW91dCk7XG4gICAgICAvLyAgICAgY29uc3QgbWF0Y2hpbmdUcmFjZSA9IHRyYWNlcy5maWx0ZXIodHJhY2UgPT4ge1xuICAgICAgLy8gICAgICAgY29uc3QgcGFuZSA9IHRyYWNlLnRyYWNlW3RyYWNlLnRyYWNlLmxlbmd0aCAtIDFdO1xuICAgICAgLy8gICAgICAgcmV0dXJuIChwYW5lIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkgJiYgKHBhbmUuZG9ja1BhbmVsID09PSB0aGlzLmRvY2tQYW5lbCk7XG4gICAgICAvLyAgICAgfSk7XG5cbiAgICAgIC8vICAgICBjb25zb2xlLmxvZygnbWF0Y2hpbmcnLCB7IHRyYWNlcywgbWF0Y2hpbmdUcmFjZSB9KTtcbiAgICAgIC8vICAgICAvLyB0aGlzLmRyYWdPcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBcbiAgICAgIC8vICAgICAvLyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVGcm9tUGFuZUJpcyhob3N0OiBCc0RvY2tQYW5lLCBwYW5lOiBCc0RvY2tQYW5lKSB7XG4gICAgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKSB7XG4gICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNEb2N1bWVudEhvc3QpIHtcbiAgICAgIC8vIEFjdHVhbGx5IGRvY3VtZW50SG9zdCBzaG91bGQgbmV2ZXIgYmUgcmVtb3ZlZFxuICAgIH0gZWxzZSBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzVGFiR3JvdXBQYW5lKSB7XG4gICAgICBpZiAocGFuZSBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBob3N0LnBhbmVzLmluZGV4T2YocGFuZSk7XG4gICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc1NwbGl0UGFuZSkge1xuICAgICAgY29uc3QgaW5kZXggPSBob3N0LnBhbmVzLmluZGV4T2YocGFuZSk7XG4gICAgICBob3N0LnBhbmVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNGbG9hdGluZ1BhbmUpIHtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgJ1Vua25vd24gcGFuZSB0eXBlJztcbiAgICB9XG4gIH1cblxuICAvLyByZW1vdmVGcm9tUGFuZShob3N0OiBCc0RvY2tQYW5lLCBwYW5lbDogQnNEb2NrUGFuZWxDb21wb25lbnQgLyosIHBhcmVudHM6IEJzRG9ja1BhbmVbXSAqLyk6IFJlbW92ZUZyb21QYW5lUmVzdWx0IHtcbiAgLy8gICBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpIHtcbiAgLy8gICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiBmYWxzZSwgaG9zdElzRW1wdHk6IGZhbHNlIH07XG4gIC8vICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNEb2N1bWVudEhvc3QpIHtcbiAgLy8gICAgIC8vIEFjdHVhbGx5IGRvY3VtZW50SG9zdCBzaG91bGQgbmV2ZXIgYmUgcmVtb3ZlZFxuXG4gIC8vICAgICBpZiAoIWhvc3Qucm9vdFBhbmUpIHtcbiAgLy8gICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogdHJ1ZSB9O1xuICAvLyAgICAgfVxuXG4gIC8vICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlbW92ZUZyb21QYW5lKGhvc3Qucm9vdFBhbmUsIHBhbmVsKTtcbiAgLy8gICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiByZXN1bHQucGFuZVJlbW92ZWQsIGhvc3RJc0VtcHR5OiByZXN1bHQuaG9zdElzRW1wdHkgfTtcblxuICAvLyAgIH0gZWxzZSBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzVGFiR3JvdXBQYW5lKSB7XG5cblxuXG4gIC8vICAgICBjb25zdCBtYXRjaGluZyA9IGhvc3QucGFuZXMuZmlsdGVyKHAgPT4gcC5kb2NrUGFuZWwgPT09IHBhbmVsKTtcbiAgLy8gICAgIGlmIChtYXRjaGluZy5sZW5ndGggPiAwKSB7XG4gIC8vICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGhvc3QucGFuZXMuZmluZEluZGV4KHAgPT4gcC5kb2NrUGFuZWwgPT09IHBhbmVsKSwgMSk7XG4gIC8vICAgICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiB0cnVlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIC8vIEFUTS4gYWxsIHBhbmVzIGFyZSBDb250ZW50UGFuZXMgYW55d2F5LlxuICAvLyAgICAgICAvLyBTbyB1bmxlc3MgeW91J2Qgd2FudCB0byBoYXZlIHNwbGl0dGVycyBpbnNpZGUgdGhlIHRhYnMsXG4gIC8vICAgICAgIC8vIFRoaXMgY29kZSB3aWxsIG5vdCBiZSBoaXQuXG5cbiAgLy8gICAgICAgLy8gY29uc3QgcmVzdWx0ID0gaG9zdC5wYW5lc1xuICAvLyAgICAgICAvLyAgIC5tYXAocGFyZW50UGFuZSA9PiB0aGlzLnJlbW92ZUZyb21QYW5lKHBhcmVudFBhbmUsIHBhbmVsKSlcbiAgLy8gICAgICAgLy8gICAuZmlsdGVyKHIgPT4gci5wYW5lUmVtb3ZlZCk7XG4gIC8vICAgICAgIC8vXG4gIC8vICAgICAgIC8vIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAvLyAgICAgICAvLyAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiB0cnVlLCBob3N0SXNFbXB0eTogfVxuICAvLyAgICAgICAvLyB9XG4gIC8vICAgICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiBmYWxzZSwgaG9zdElzRW1wdHk6IGhvc3QucGFuZXMubGVuZ3RoID09PSAwIH07XG4gIC8vICAgICB9XG5cblxuXG5cbiAgLy8gICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc1NwbGl0UGFuZSkge1xuICAvLyAgICAgY29uc3QgbWF0Y2hpbmcgPSBob3N0LnBhbmVzXG4gIC8vICAgICAgIC5maWx0ZXIocCA9PiBwIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSlcbiAgLy8gICAgICAgLm1hcChwID0+IDxCc0NvbnRlbnRQYW5lPnApXG4gIC8vICAgICAgIC5maWx0ZXIocCA9PiBwLmRvY2tQYW5lbCA9PT0gcGFuZWwpO1xuICAgICAgXG4gIC8vICAgICBpZiAobWF0Y2hpbmcubGVuZ3RoID4gMCkge1xuICAvLyAgICAgICBob3N0LnBhbmVzLnNwbGljZShob3N0LnBhbmVzLmZpbmRJbmRleChwID0+IChwIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkgJiYgbWF0Y2hpbmcuaW5jbHVkZXMocCkpLCAxKTtcblxuICAvLyAgICAgICAvLyBUT0RPOiBSZW1vdmUgc3BsaXR0ZXIgaWYgb25seSAxIHBhbmUgbGVmdD9cbiAgLy8gICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAvLyAgICAgfSBlbHNlIHtcblxuXG4gIC8vICAgICAgIGZvciAobGV0IHNwbGl0UGFuZSBvZiBob3N0LnBhbmVzKSB7XG4gIC8vICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZW1vdmVGcm9tUGFuZShzcGxpdFBhbmUsIHBhbmVsKTtcbiAgLy8gICAgICAgICBpZiAocmVzdWx0LnBhbmVSZW1vdmVkICYmIHJlc3VsdC5ob3N0SXNFbXB0eSkge1xuICAvLyAgICAgICAgICAgLy8gc3BsaXRQYW5lIGlzIGVtcHR5IG5vdywgc28gd2UgY2FuIHJlbW92ZSBpdCBmcm9tIHRoaXMgc3BsaXR0ZXJcbiAgLy8gICAgICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGhvc3QucGFuZXMuaW5kZXhPZihzcGxpdFBhbmUpLCAxKTtcbiAgLy8gICAgICAgICAgIHJldHVybiB7IHBhbmVSZW1vdmVkOiB0cnVlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cblxuICAvLyAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgdGhyb3cgJ3Vua25vd24gaG9zdCB0eXBlJztcbiAgLy8gICB9XG4gIC8vIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSkgb25Nb3VzZVVwKGV2OiBFdmVudCkge1xuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmRyYWdPcGVyYXRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtYmxvY2snKSBkQmxvY2sgPSB0cnVlO1xufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1wYW5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9kb2NrL3NyYy9kb2NrLXBhbmVsLWhlYWRlci9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL2RvY2svc3JjL2RvY2stcGFuZWwtaGVhZGVyL2RvY2stcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQU85RCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLFNBQStCLEVBQVUsSUFBcUIsRUFBVSxXQUEwQixFQUFVLE9BQWdDO1FBQTVJLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBRWhLLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFxUVcsV0FBTSxHQUFHLElBQUksQ0FBQztJQXpRdUgsQ0FBQztJQUs3SCxXQUFXLENBQUMsRUFBYztRQUMvRCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUUrQyxXQUFXLENBQUMsRUFBYztRQUN4RSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUV2QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO29CQUMzRSwwREFBMEQ7b0JBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztvQkFDbkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDakMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDN0MseUZBQXlGO3dCQUN6RixPQUFPLENBQUMsUUFBUSxZQUFZLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3hGLENBQUMsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUN6QixPQUFPO3FCQUNSO29CQUVELGlGQUFpRjtvQkFDakYsOENBQThDO29CQUM5QyxpREFBaUQ7b0JBRWpELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO29CQUM5QyxHQUFHO3dCQUNELElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRTs0QkFDOUIsWUFBWSxHQUFHLFlBQWEsQ0FBQyxhQUFhLENBQUM7eUJBQzVDOzZCQUFNOzRCQUNMLE1BQU0saUJBQWlCLENBQUM7eUJBQ3pCO3FCQUNGLFFBQVEsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRTtvQkFFbEUsTUFBTSxNQUFNLEdBQUc7d0JBQ2IsS0FBSyxFQUFFLFlBQVksQ0FBQyxXQUFXO3dCQUMvQixNQUFNLEVBQUUsWUFBWSxDQUFDLFlBQVk7d0JBQ2pDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPO3dCQUM3QixHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTztxQkFDN0IsQ0FBQztvQkFFRixvRkFBb0Y7b0JBQ3BGLHNGQUFzRjtvQkFDdEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFFMUUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUNqRixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBR25GLEtBQUssSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTt3QkFDdEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFOzRCQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOzRCQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPO2dDQUFFLE1BQU07eUJBQ3RDOzZCQUFNOzRCQUNMLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3hFLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUM1QyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7NkJBQ3BFO3lCQUNGO3FCQUNGO29CQUlELGlGQUFpRjtvQkFFakYsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQUM7d0JBQ3RDLElBQUksRUFBRSxJQUFJLGNBQWMsQ0FBQzs0QkFDdkIsS0FBSyxFQUFFO2dDQUNMLElBQUksYUFBYSxDQUFDO29DQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUNBQzFCLENBQUM7NkJBQ0g7eUJBQ0YsQ0FBQzt3QkFDRixJQUFJLEVBQUU7NEJBQ0osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLOzRCQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07eUJBQ3RCO3dCQUNELFFBQVEsRUFBRTs0QkFDUixDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUk7NEJBQ2QsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHO3lCQUNkO3FCQUNGLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsYUFBYSxHQUFHO3dCQUNuQixPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU87d0JBQ25CLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTzt3QkFDbkIsWUFBWTtxQkFDYixDQUFDO29CQUNGLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUM3RCxZQUFZO29CQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pFLHNHQUFzRztvQkFFdEcsb0VBQW9FO29CQUNwRSxvQ0FBb0M7b0JBQ3BDLFdBQVc7b0JBQ1gsNkJBQTZCO29CQUM3QiwwQ0FBMEM7b0JBQzFDLHlCQUF5QjtvQkFFekIsNEZBQTRGO29CQUM1RixvQ0FBb0M7b0JBQ3BDLHlCQUF5QjtvQkFDekIsNkNBQTZDO29CQUM3QywrQ0FBK0M7b0JBQy9DLHlDQUF5QztvQkFDekMsd0NBQXdDO29CQUN4QyxXQUFXO29CQUVYLDBGQUEwRjtvQkFDMUYsNEZBQTRGO29CQUM1Riw4REFBOEQ7b0JBRTlELGtEQUFrRDtvQkFDbEQscUNBQXFDO29CQUNyQyxxQkFBcUI7b0JBQ3JCLGtDQUFrQztvQkFDbEMsMENBQTBDO29CQUMxQyxpQkFBaUI7b0JBQ2pCLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxrQkFBa0I7b0JBQ2xCLGlDQUFpQztvQkFDakMsbUNBQW1DO29CQUNuQyxhQUFhO29CQUNiLHNCQUFzQjtvQkFDdEIsNEJBQTRCO29CQUM1QiwyQkFBMkI7b0JBQzNCLFlBQVk7b0JBQ1osWUFBWTtvQkFFWiwrQkFBK0I7b0JBQy9CLCtCQUErQjtvQkFDL0IsK0JBQStCO29CQUMvQix1QkFBdUI7b0JBQ3ZCLFdBQVc7b0JBRVgsaURBQWlEO29CQUNqRCx3Q0FBd0M7b0JBQ3hDLFFBQVE7Z0JBQ1YsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3RCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO3dCQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7d0JBQ3JGLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztxQkFDdEY7b0JBQ0wsYUFBYTtvQkFDYixxRUFBcUU7b0JBQ3JFLHFEQUFxRDtvQkFDckQsMERBQTBEO29CQUMxRCx1RkFBdUY7b0JBQ3ZGLFVBQVU7b0JBRVYsMERBQTBEO29CQUMxRCxnQ0FBZ0M7b0JBRWhDLFdBQVc7aUJBQ1I7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQWdCLEVBQUUsSUFBZ0I7UUFDbEQsSUFBSSxJQUFJLFlBQVksYUFBYSxFQUFFO1NBQ2xDO2FBQU0sSUFBSSxJQUFJLFlBQVksY0FBYyxFQUFFO1lBQ3pDLGdEQUFnRDtTQUNqRDthQUFNLElBQUksSUFBSSxZQUFZLGNBQWMsRUFBRTtZQUN6QyxJQUFJLElBQUksWUFBWSxhQUFhLEVBQUU7Z0JBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDN0I7U0FDRjthQUFNLElBQUksSUFBSSxZQUFZLFdBQVcsRUFBRTtZQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDN0I7YUFBTSxJQUFJLElBQUksWUFBWSxjQUFjLEVBQUU7U0FDMUM7YUFBTTtZQUNMLE1BQU0sbUJBQW1CLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWdCLEVBQUUsS0FBMkIsQ0FBQyw0QkFBNEI7UUFDdkYsSUFBSSxJQUFJLFlBQVksYUFBYSxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNuRDthQUFNLElBQUksSUFBSSxZQUFZLGNBQWMsRUFBRTtZQUN6QyxnREFBZ0Q7WUFFaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNsRDtZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUU3RTthQUFNLElBQUksSUFBSSxZQUFZLGNBQWMsRUFBRTtZQUl6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDL0QsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDcEU7aUJBQU07Z0JBQ0wsMENBQTBDO2dCQUMxQywwREFBMEQ7Z0JBQzFELDZCQUE2QjtnQkFFN0IsNEJBQTRCO2dCQUM1QiwrREFBK0Q7Z0JBQy9ELGlDQUFpQztnQkFDakMsRUFBRTtnQkFDRiwyQkFBMkI7Z0JBQzNCLCtDQUErQztnQkFDL0MsSUFBSTtnQkFDSixPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDckU7U0FLRjthQUFNLElBQUksSUFBSSxZQUFZLFdBQVcsRUFBRTtZQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSztpQkFDeEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLGFBQWEsQ0FBQztpQkFDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQWdCLENBQUMsQ0FBQztpQkFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQztZQUV0QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLGFBQWEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFdEcsNkNBQTZDO2dCQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDcEU7aUJBQU07Z0JBR0wsS0FBSyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDckQsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7d0JBQzVDLGlFQUFpRTt3QkFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztxQkFDcEU7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUNyRTthQUFNO1lBQ0wsTUFBTSxtQkFBbUIsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFNkMsU0FBUyxDQUFDLEVBQVM7UUFDL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDakMsQ0FBQzs7dUhBeFFVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLCtQQ3JCdkMsMkJBQXlCOzJGRHFCWiwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usc0JBQXNCOzhMQVVPLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUtXLFdBQVc7c0JBQTFELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBeVBBLFNBQVM7c0JBQXRELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWQsTUFBTTtzQkFBbkMsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9wdGlvbmFsLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc1RhYkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvdGFiLWNvbnRyb2wnO1xuaW1wb3J0IHsgUGFyZW50aWZpZWQgfSBmcm9tICdAbWludHBsYXllci9wYXJlbnRpZnknO1xuaW1wb3J0IHsgQnNEb2NrUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9kb2NrLXBhbmVsL2RvY2stcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJzRG9ja0NvbXBvbmVudCB9IGZyb20gJy4uL2RvY2svZG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnNEb2NrUGFuZSB9IGZyb20gJy4uL3BhbmVzL2RvY2stcGFuZSc7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZSB9IGZyb20gJy4uL3BhbmVzL3NwbGl0LXBhbmUnO1xuaW1wb3J0IHsgQnNDb250ZW50UGFuZSB9IGZyb20gJy4uL3BhbmVzL2NvbnRlbnQtcGFuZSc7XG5pbXBvcnQgeyBCc0Zsb2F0aW5nUGFuZSB9IGZyb20gJy4uL3BhbmVzL2Zsb2F0aW5nLXBhbmUnO1xuaW1wb3J0IHsgQnNUYWJHcm91cFBhbmUgfSBmcm9tICcuLi9wYW5lcy90YWItZ3JvdXAtcGFuZSc7XG5pbXBvcnQgeyBCc0RvY3VtZW50SG9zdCB9IGZyb20gJy4uL3BhbmVzL2RvY3VtZW50LWhvc3QtcGFuZSc7XG5pbXBvcnQgeyBSZW1vdmVGcm9tUGFuZVJlc3VsdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVtb3ZlLWZyb20tcGFuZS1yZXN1bHQnO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgQnNEb2NrU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RvY2svZG9jay5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtZG9jay1wYW5lbC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jay1wYW5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2NrLXBhbmVsLWhlYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJzRG9ja1BhbmVsSGVhZGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkb2NrUGFuZWw6IEJzRG9ja1BhbmVsQ29tcG9uZW50LCBwcml2YXRlIGRvY2s6IEJzRG9ja0NvbXBvbmVudCwgcHJpdmF0ZSBkb2NrU2VydmljZTogQnNEb2NrU2VydmljZSwgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBpc01vdXNlRG93biA9IGZhbHNlO1xuICBkcmFnT3BlcmF0aW9uPzogRHJhZ09wZXJhdGlvbjtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKSBvbk1vdXNlRG93bihldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKSBvbk1vdXNlTW92ZShldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzTW91c2VEb3duKSB7XG4gICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgIFxuICAgICAgICB0aGlzLmRvY2sucGFyZW50aWZpZWRMYXlvdXQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChwYXJlbnRpZmllZExheW91dCkgPT4ge1xuICAgICAgICAvLyB0aGlzLmRvY2subGF5b3V0JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XG4gICAgICAgICAgY29uc3QgdHJhY2VzID0gdGhpcy5kb2NrU2VydmljZS5idWlsZFRyYWNlcyhwYXJlbnRpZmllZExheW91dCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3RyYWNlcycsIHtwYXJlbnRpZmllZExheW91dCwgdHJhY2VzfSk7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB0cmFjZXMuZmlsdGVyKHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFzdFBhbmUgPSB0LnRyYWNlW3QudHJhY2UubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAvLyByZXR1cm4gKGxhc3RQYW5lIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkgJiYgKGxhc3RQYW5lLmRvY2tQYW5lbCA9PT0gdGhpcy5kb2NrUGFuZWwpO1xuICAgICAgICAgICAgcmV0dXJuIChsYXN0UGFuZSBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpICYmIChsYXN0UGFuZS5kb2NrUGFuZWwgPT09IHRoaXMuZG9ja1BhbmVsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnbWF0Y2hpbmcnLCBtYXRjaGluZyk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGNvbnN0IHRhYnMgPSBtYXRjaGluZ1swXS50cmFjZS5maWx0ZXIocGFuZSA9PiBwYW5lIGluc3RhbmNlb2YgQnNUYWJHcm91cFBhbmUpO1xuICAgICAgICAgIC8vIGNvbnN0IGxhc3RUYWJHcm91cCA9IHRhYnNbdGFicy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAvLyAvLyBjb25zb2xlLmxvZygnbGFzdCB0YWJncm91cCcsIGxhc3RUYWJHcm91cCk7XG5cbiAgICAgICAgICBsZXQgdGFiQ29udHJvbEVsID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRhYkNvbnRyb2xFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICAgIHRhYkNvbnRyb2xFbCA9IHRhYkNvbnRyb2xFbCEucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93ICdObyBtb3JlIHBhcmVudHMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKHRhYkNvbnRyb2xFbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09ICdCUy1UQUItQ09OVFJPTCcpO1xuXG4gICAgICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICAgICAgd2lkdGg6IHRhYkNvbnRyb2xFbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGFiQ29udHJvbEVsLmNsaWVudEhlaWdodCxcbiAgICAgICAgICAgIGxlZnQ6IGV2LmNsaWVudFggLSBldi5vZmZzZXRYLFxuICAgICAgICAgICAgdG9wOiBldi5jbGllbnRZIC0gZXYub2Zmc2V0WSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uZGV0YWNoKCk7XG4gICAgICAgICAgLy8gdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUZyb21QYW5lKHBhcmVudGlmaWVkTGF5b3V0LiRvcmlnaW5hbC5yb290UGFuZSwgdGhpcy5kb2NrUGFuZWwpO1xuXG4gICAgICAgICAgY29uc3QgdHJhY2UgPSBbLi4ubWF0Y2hpbmdbMF0udHJhY2VdO1xuXG4gICAgICAgICAgdGhpcy5kb2NrUGFuZWwuaGVhZGVyUG9ydGFsPy5pc0F0dGFjaGVkICYmIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uZGV0YWNoKCk7XG4gICAgICAgICAgdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5jb250ZW50UG9ydGFsPy5kZXRhY2goKTtcbiAgICAgICAgICBcbiAgICAgICAgICBcbiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IHRyYWNlLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFuZUJpcyh0cmFjZVtpbmRleCAtIDFdLCB0cmFjZVtpbmRleF0pO1xuICAgICAgICAgICAgICBpZiAoIXRyYWNlW2luZGV4IC0gMV0uaXNFbXB0eSkgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBmbG9hdGluZ0luZGV4ID0gcGFyZW50aWZpZWRMYXlvdXQuZmxvYXRpbmdQYW5lcy5pbmRleE9mKHRyYWNlWzBdKTtcbiAgICAgICAgICAgICAgaWYgKHRyYWNlWzBdLmlzRW1wdHkgJiYgKGZsb2F0aW5nSW5kZXggPiAtMSkpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRpZmllZExheW91dC4kb3JpZ2luYWwuZmxvYXRpbmdQYW5lcy5zcGxpY2UoZmxvYXRpbmdJbmRleCwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cblxuXG4gICAgICAgICAgLy8gdGhpcy5yZW1vdmVGcm9tUGFuZSgoPGFueT5tYXRjaGluZ1swXS50cmFjZVswXSlbJyRvcmlnaW5hbCddLCB0aGlzLmRvY2tQYW5lbCk7XG5cbiAgICAgICAgICBjb25zdCBmbG9hdGluZ1BhbmUgPSBuZXcgQnNGbG9hdGluZ1BhbmUoe1xuICAgICAgICAgICAgcGFuZTogbmV3IEJzVGFiR3JvdXBQYW5lKHtcbiAgICAgICAgICAgICAgcGFuZXM6IFtcbiAgICAgICAgICAgICAgICBuZXcgQnNDb250ZW50UGFuZSh7XG4gICAgICAgICAgICAgICAgICBkb2NrUGFuZWw6IHRoaXMuZG9ja1BhbmVsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaXplOiB7XG4gICAgICAgICAgICAgIHdpZHRoOiBjb29yZHMud2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogY29vcmRzLmhlaWdodCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgICB4OiBjb29yZHMubGVmdCxcbiAgICAgICAgICAgICAgeTogY29vcmRzLnRvcCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmRyYWdPcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBvZmZzZXRYOiBldi5vZmZzZXRYLFxuICAgICAgICAgICAgb2Zmc2V0WTogZXYub2Zmc2V0WSxcbiAgICAgICAgICAgIGZsb2F0aW5nUGFuZVxuICAgICAgICAgIH07XG4gICAgICAgICAgcGFyZW50aWZpZWRMYXlvdXQuJG9yaWdpbmFsLmZsb2F0aW5nUGFuZXMucHVzaChmbG9hdGluZ1BhbmUpO1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kb2NrLmxheW91dCQubmV4dChwYXJlbnRpZmllZExheW91dC4kb3JpZ2luYWwpLCA1KTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygndHJhY2VzJywgeyB0cmFjZXMsIG1hdGNoaW5nLCBkb2NrUGFuZWw6IHRoaXMuZG9ja1BhbmVsLCBlcXVhbHM6IHRyYWNlc1syXS50cmFjZVszXSB9KTtcblxuICAgICAgICAgIC8vICAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgLy8gICAgIGxldCB0cmVlOiBIVE1MRWxlbWVudFtdID0gW107XG4gICAgICAgICAgLy8gICAgIGRvIHtcbiAgICAgICAgICAvLyAgICAgICB0cmVlLnB1c2goZWxlbWVudCEpO1xuICAgICAgICAgIC8vICAgICAgIGVsZW1lbnQgPSBlbGVtZW50IS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgIC8vICAgICB9IHdoaWxlIChlbGVtZW50KTtcblxuICAgICAgICAgIC8vICAgICBjb25zdCB0YWJDb250cm9scyA9IHRyZWUuZmlsdGVyKGVsID0+IGVsLnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0JTLVRBQi1DT05UUk9MJyk7XG4gICAgICAgICAgLy8gICAgIGlmICh0YWJDb250cm9scy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICAgIC8vICAgICAgICAgd2lkdGg6IHRhYkNvbnRyb2xzWzBdLmNsaWVudFdpZHRoLFxuICAgICAgICAgIC8vICAgICAgICAgaGVpZ2h0OiB0YWJDb250cm9sc1swXS5jbGllbnRIZWlnaHQsXG4gICAgICAgICAgLy8gICAgICAgICBsZWZ0OiBldi5jbGllbnRYIC0gZXYub2Zmc2V0WCxcbiAgICAgICAgICAvLyAgICAgICAgIHRvcDogZXYuY2xpZW50WSAtIGV2Lm9mZnNldFksXG4gICAgICAgICAgLy8gICAgICAgfTtcblxuICAgICAgICAgIC8vICAgICAgIHRoaXMuZG9ja1BhbmVsLmhlYWRlclBvcnRhbD8uaXNBdHRhY2hlZCAmJiB0aGlzLmRvY2tQYW5lbC5oZWFkZXJQb3J0YWw/LmRldGFjaCgpO1xuICAgICAgICAgIC8vICAgICAgIHRoaXMuZG9ja1BhbmVsLmNvbnRlbnRQb3J0YWw/LmlzQXR0YWNoZWQgJiYgdGhpcy5kb2NrUGFuZWwuY29udGVudFBvcnRhbD8uZGV0YWNoKCk7XG4gICAgICAgICAgLy8gICAgICAgdGhpcy5yZW1vdmVGcm9tUGFuZShsYXlvdXQucm9vdFBhbmUsIHRoaXMuZG9ja1BhbmVsKTtcblxuICAgICAgICAgIC8vICAgICAgIGNvbnN0IGZsb2F0aW5nUGFuZSA9IG5ldyBCc0Zsb2F0aW5nUGFuZSh7XG4gICAgICAgICAgLy8gICAgICAgICBwYW5lOiBuZXcgQnNUYWJHcm91cFBhbmUoe1xuICAgICAgICAgIC8vICAgICAgICAgICBwYW5lczogW1xuICAgICAgICAgIC8vICAgICAgICAgICAgIG5ldyBCc0NvbnRlbnRQYW5lKHtcbiAgICAgICAgICAvLyAgICAgICAgICAgICAgIGRvY2tQYW5lbDogdGhpcy5kb2NrUGFuZWxcbiAgICAgICAgICAvLyAgICAgICAgICAgICB9KVxuICAgICAgICAgIC8vICAgICAgICAgICBdXG4gICAgICAgICAgLy8gICAgICAgICB9KSxcbiAgICAgICAgICAvLyAgICAgICAgIHNpemU6IHtcbiAgICAgICAgICAvLyAgICAgICAgICAgd2lkdGg6IGNvb3Jkcy53aWR0aCxcbiAgICAgICAgICAvLyAgICAgICAgICAgaGVpZ2h0OiBjb29yZHMuaGVpZ2h0LFxuICAgICAgICAgIC8vICAgICAgICAgfSxcbiAgICAgICAgICAvLyAgICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgLy8gICAgICAgICAgIHg6IGNvb3Jkcy5sZWZ0LFxuICAgICAgICAgIC8vICAgICAgICAgICB5OiBjb29yZHMudG9wLFxuICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgIC8vICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgIC8vICAgICAgIHRoaXMuZHJhZ09wZXJhdGlvbiA9IHtcbiAgICAgICAgICAvLyAgICAgICAgIG9mZnNldFg6IGV2Lm9mZnNldFgsXG4gICAgICAgICAgLy8gICAgICAgICBvZmZzZXRZOiBldi5vZmZzZXRZLFxuICAgICAgICAgIC8vICAgICAgICAgZmxvYXRpbmdQYW5lXG4gICAgICAgICAgLy8gICAgICAgfTtcblxuICAgICAgICAgIC8vICAgICAgIGxheW91dC5mbG9hdGluZ1BhbmVzLnB1c2goZmxvYXRpbmdQYW5lKTtcbiAgICAgICAgICAvLyAgICAgICB0aGlzLmRvY2subGF5b3V0JC5uZXh0KGxheW91dCk7XG4gICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kcmFnT3BlcmF0aW9uKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZHJhZ09wZXJhdGlvbi5mbG9hdGluZ1BhbmUubG9jYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ09wZXJhdGlvbi5mbG9hdGluZ1BhbmUubG9jYXRpb24ueCA9IGV2LmNsaWVudFggLSB0aGlzLmRyYWdPcGVyYXRpb24ub2Zmc2V0WDtcbiAgICAgICAgICAgIHRoaXMuZHJhZ09wZXJhdGlvbi5mbG9hdGluZ1BhbmUubG9jYXRpb24ueSA9IGV2LmNsaWVudFkgLSB0aGlzLmRyYWdPcGVyYXRpb24ub2Zmc2V0WTtcbiAgICAgICAgICB9XG4gICAgICAvLyAgIH0gZWxzZSB7XG4gICAgICAvLyAgICAgY29uc3QgdHJhY2VzID0gdGhpcy5kb2NrU2VydmljZS5idWlsZFRyYWNlcyh0aGlzLmRvY2subGF5b3V0KTtcbiAgICAgIC8vICAgICBjb25zdCBtYXRjaGluZ1RyYWNlID0gdHJhY2VzLmZpbHRlcih0cmFjZSA9PiB7XG4gICAgICAvLyAgICAgICBjb25zdCBwYW5lID0gdHJhY2UudHJhY2VbdHJhY2UudHJhY2UubGVuZ3RoIC0gMV07XG4gICAgICAvLyAgICAgICByZXR1cm4gKHBhbmUgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKSAmJiAocGFuZS5kb2NrUGFuZWwgPT09IHRoaXMuZG9ja1BhbmVsKTtcbiAgICAgIC8vICAgICB9KTtcblxuICAgICAgLy8gICAgIGNvbnNvbGUubG9nKCdtYXRjaGluZycsIHsgdHJhY2VzLCBtYXRjaGluZ1RyYWNlIH0pO1xuICAgICAgLy8gICAgIC8vIHRoaXMuZHJhZ09wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIFxuICAgICAgLy8gICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUZyb21QYW5lQmlzKGhvc3Q6IEJzRG9ja1BhbmUsIHBhbmU6IEJzRG9ja1BhbmUpIHtcbiAgICBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzQ29udGVudFBhbmUpIHtcbiAgICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc0RvY3VtZW50SG9zdCkge1xuICAgICAgLy8gQWN0dWFsbHkgZG9jdW1lbnRIb3N0IHNob3VsZCBuZXZlciBiZSByZW1vdmVkXG4gICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNUYWJHcm91cFBhbmUpIHtcbiAgICAgIGlmIChwYW5lIGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGhvc3QucGFuZXMuaW5kZXhPZihwYW5lKTtcbiAgICAgICAgaG9zdC5wYW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzU3BsaXRQYW5lKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGhvc3QucGFuZXMuaW5kZXhPZihwYW5lKTtcbiAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc0Zsb2F0aW5nUGFuZSkge1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyAnVW5rbm93biBwYW5lIHR5cGUnO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUZyb21QYW5lKGhvc3Q6IEJzRG9ja1BhbmUsIHBhbmVsOiBCc0RvY2tQYW5lbENvbXBvbmVudCAvKiwgcGFyZW50czogQnNEb2NrUGFuZVtdICovKTogUmVtb3ZlRnJvbVBhbmVSZXN1bHQge1xuICAgIGlmIChob3N0IGluc3RhbmNlb2YgQnNDb250ZW50UGFuZSkge1xuICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogZmFsc2UgfTtcbiAgICB9IGVsc2UgaWYgKGhvc3QgaW5zdGFuY2VvZiBCc0RvY3VtZW50SG9zdCkge1xuICAgICAgLy8gQWN0dWFsbHkgZG9jdW1lbnRIb3N0IHNob3VsZCBuZXZlciBiZSByZW1vdmVkXG5cbiAgICAgIGlmICghaG9zdC5yb290UGFuZSkge1xuICAgICAgICByZXR1cm4geyBwYW5lUmVtb3ZlZDogZmFsc2UsIGhvc3RJc0VtcHR5OiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVtb3ZlRnJvbVBhbmUoaG9zdC5yb290UGFuZSwgcGFuZWwpO1xuICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHJlc3VsdC5wYW5lUmVtb3ZlZCwgaG9zdElzRW1wdHk6IHJlc3VsdC5ob3N0SXNFbXB0eSB9O1xuXG4gICAgfSBlbHNlIGlmIChob3N0IGluc3RhbmNlb2YgQnNUYWJHcm91cFBhbmUpIHtcblxuXG5cbiAgICAgIGNvbnN0IG1hdGNoaW5nID0gaG9zdC5wYW5lcy5maWx0ZXIocCA9PiBwLmRvY2tQYW5lbCA9PT0gcGFuZWwpO1xuICAgICAgaWYgKG1hdGNoaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaG9zdC5wYW5lcy5zcGxpY2UoaG9zdC5wYW5lcy5maW5kSW5kZXgocCA9PiBwLmRvY2tQYW5lbCA9PT0gcGFuZWwpLCAxKTtcbiAgICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQVRNLiBhbGwgcGFuZXMgYXJlIENvbnRlbnRQYW5lcyBhbnl3YXkuXG4gICAgICAgIC8vIFNvIHVubGVzcyB5b3UnZCB3YW50IHRvIGhhdmUgc3BsaXR0ZXJzIGluc2lkZSB0aGUgdGFicyxcbiAgICAgICAgLy8gVGhpcyBjb2RlIHdpbGwgbm90IGJlIGhpdC5cblxuICAgICAgICAvLyBjb25zdCByZXN1bHQgPSBob3N0LnBhbmVzXG4gICAgICAgIC8vICAgLm1hcChwYXJlbnRQYW5lID0+IHRoaXMucmVtb3ZlRnJvbVBhbmUocGFyZW50UGFuZSwgcGFuZWwpKVxuICAgICAgICAvLyAgIC5maWx0ZXIociA9PiByLnBhbmVSZW1vdmVkKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IGZhbHNlLCBob3N0SXNFbXB0eTogaG9zdC5wYW5lcy5sZW5ndGggPT09IDAgfTtcbiAgICAgIH1cblxuXG5cblxuICAgIH0gZWxzZSBpZiAoaG9zdCBpbnN0YW5jZW9mIEJzU3BsaXRQYW5lKSB7XG4gICAgICBjb25zdCBtYXRjaGluZyA9IGhvc3QucGFuZXNcbiAgICAgICAgLmZpbHRlcihwID0+IHAgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKVxuICAgICAgICAubWFwKHAgPT4gPEJzQ29udGVudFBhbmU+cClcbiAgICAgICAgLmZpbHRlcihwID0+IHAuZG9ja1BhbmVsID09PSBwYW5lbCk7XG4gICAgICBcbiAgICAgIGlmIChtYXRjaGluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGhvc3QucGFuZXMuc3BsaWNlKGhvc3QucGFuZXMuZmluZEluZGV4KHAgPT4gKHAgaW5zdGFuY2VvZiBCc0NvbnRlbnRQYW5lKSAmJiBtYXRjaGluZy5pbmNsdWRlcyhwKSksIDEpO1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBzcGxpdHRlciBpZiBvbmx5IDEgcGFuZSBsZWZ0P1xuICAgICAgICByZXR1cm4geyBwYW5lUmVtb3ZlZDogdHJ1ZSwgaG9zdElzRW1wdHk6IGhvc3QucGFuZXMubGVuZ3RoID09PSAwIH07XG4gICAgICB9IGVsc2Uge1xuXG5cbiAgICAgICAgZm9yIChsZXQgc3BsaXRQYW5lIG9mIGhvc3QucGFuZXMpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlbW92ZUZyb21QYW5lKHNwbGl0UGFuZSwgcGFuZWwpO1xuICAgICAgICAgIGlmIChyZXN1bHQucGFuZVJlbW92ZWQgJiYgcmVzdWx0Lmhvc3RJc0VtcHR5KSB7XG4gICAgICAgICAgICAvLyBzcGxpdFBhbmUgaXMgZW1wdHkgbm93LCBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGZyb20gdGhpcyBzcGxpdHRlclxuICAgICAgICAgICAgaG9zdC5wYW5lcy5zcGxpY2UoaG9zdC5wYW5lcy5pbmRleE9mKHNwbGl0UGFuZSksIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcGFuZVJlbW92ZWQ6IHRydWUsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBwYW5lUmVtb3ZlZDogZmFsc2UsIGhvc3RJc0VtcHR5OiBob3N0LnBhbmVzLmxlbmd0aCA9PT0gMCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyAndW5rbm93biBob3N0IHR5cGUnO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnLCBbJyRldmVudCddKSBvbk1vdXNlVXAoZXY6IEV2ZW50KSB7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IGZhbHNlO1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ09wZXJhdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1ibG9jaycpIGRCbG9jayA9IHRydWU7XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+Il19
@@ -177,7 +177,8 @@ class BsDockComponent {
177
177
  const clone = deepClone(layout, true,
178
178
  // []
179
179
  [BsContentPane, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane], true, this.paneCache);
180
- this.paneCache = clone.cache;
180
+ // this.paneCache = clone.cache;
181
+ console.log('parentify', { layout, result: clone.result });
181
182
  return clone.result;
182
183
  }));
183
184
  this.parentifiedLayout$.pipe(takeUntil(this.destroyed$)).subscribe(console.log);
@@ -296,11 +297,11 @@ class BsDockPanelHeaderComponent {
296
297
  if (this.isMouseDown) {
297
298
  if (!this.isDragging) {
298
299
  this.isDragging = true;
299
- this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {
300
+ this.dock.parentifiedLayout$.pipe(take(1)).subscribe((parentifiedLayout) => {
300
301
  var _a, _b, _c, _d;
301
302
  // this.dock.layout$.pipe(take(1)).subscribe((layout) => {
302
- const traces = this.dockService.buildTraces(layout);
303
- console.log('traces', { layout, traces });
303
+ const traces = this.dockService.buildTraces(parentifiedLayout);
304
+ console.log('traces', { parentifiedLayout, traces });
304
305
  const matching = traces.filter(t => {
305
306
  const lastPane = t.trace[t.trace.length - 1];
306
307
  // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);
@@ -330,7 +331,7 @@ class BsDockPanelHeaderComponent {
330
331
  };
331
332
  // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
332
333
  // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
333
- // this.removeFromPane(layout.rootPane, this.dockPanel);
334
+ this.removeFromPane(parentifiedLayout.$original.rootPane, this.dockPanel);
334
335
  const trace = [...matching[0].trace];
335
336
  ((_a = this.dockPanel.headerPortal) === null || _a === void 0 ? void 0 : _a.isAttached) && ((_b = this.dockPanel.headerPortal) === null || _b === void 0 ? void 0 : _b.detach());
336
337
  ((_c = this.dockPanel.contentPortal) === null || _c === void 0 ? void 0 : _c.isAttached) && ((_d = this.dockPanel.contentPortal) === null || _d === void 0 ? void 0 : _d.detach());
@@ -341,9 +342,9 @@ class BsDockPanelHeaderComponent {
341
342
  break;
342
343
  }
343
344
  else {
344
- const floatingIndex = layout.floatingPanes.indexOf(trace[0]);
345
+ const floatingIndex = parentifiedLayout.floatingPanes.indexOf(trace[0]);
345
346
  if (trace[0].isEmpty && (floatingIndex > -1)) {
346
- layout.floatingPanes.splice(floatingIndex, 1);
347
+ parentifiedLayout.$original.floatingPanes.splice(floatingIndex, 1);
347
348
  }
348
349
  }
349
350
  }
@@ -370,8 +371,9 @@ class BsDockPanelHeaderComponent {
370
371
  offsetY: ev.offsetY,
371
372
  floatingPane
372
373
  };
373
- layout.floatingPanes.push(floatingPane);
374
- setTimeout(() => this.dock.layout$.next(layout), 5);
374
+ parentifiedLayout.$original.floatingPanes.push(floatingPane);
375
+ // debugger;
376
+ setTimeout(() => this.dock.layout$.next(parentifiedLayout.$original), 5);
375
377
  // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });
376
378
  // let element: HTMLElement | null = this.element.nativeElement;
377
379
  // let tree: HTMLElement[] = [];
@@ -458,58 +460,64 @@ class BsDockPanelHeaderComponent {
458
460
  throw 'Unknown pane type';
459
461
  }
460
462
  }
461
- // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {
462
- // if (host instanceof BsContentPane) {
463
- // return { paneRemoved: false, hostIsEmpty: false };
464
- // } else if (host instanceof BsDocumentHost) {
465
- // // Actually documentHost should never be removed
466
- // if (!host.rootPane) {
467
- // return { paneRemoved: false, hostIsEmpty: true };
468
- // }
469
- // const result = this.removeFromPane(host.rootPane, panel);
470
- // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
471
- // } else if (host instanceof BsTabGroupPane) {
472
- // const matching = host.panes.filter(p => p.dockPanel === panel);
473
- // if (matching.length > 0) {
474
- // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
475
- // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
476
- // } else {
477
- // // ATM. all panes are ContentPanes anyway.
478
- // // So unless you'd want to have splitters inside the tabs,
479
- // // This code will not be hit.
480
- // // const result = host.panes
481
- // // .map(parentPane => this.removeFromPane(parentPane, panel))
482
- // // .filter(r => r.paneRemoved);
483
- // //
484
- // // if (result.length > 0) {
485
- // // return { paneRemoved: true, hostIsEmpty: }
486
- // // }
487
- // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
488
- // }
489
- // } else if (host instanceof BsSplitPane) {
490
- // const matching = host.panes
491
- // .filter(p => p instanceof BsContentPane)
492
- // .map(p => <BsContentPane>p)
493
- // .filter(p => p.dockPanel === panel);
494
- // if (matching.length > 0) {
495
- // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
496
- // // TODO: Remove splitter if only 1 pane left?
497
- // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
498
- // } else {
499
- // for (let splitPane of host.panes) {
500
- // const result = this.removeFromPane(splitPane, panel);
501
- // if (result.paneRemoved && result.hostIsEmpty) {
502
- // // splitPane is empty now, so we can remove it from this splitter
503
- // host.panes.splice(host.panes.indexOf(splitPane), 1);
504
- // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
505
- // }
506
- // }
507
- // }
508
- // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
509
- // } else {
510
- // throw 'unknown host type';
511
- // }
512
- // }
463
+ removeFromPane(host, panel /*, parents: BsDockPane[] */) {
464
+ if (host instanceof BsContentPane) {
465
+ return { paneRemoved: false, hostIsEmpty: false };
466
+ }
467
+ else if (host instanceof BsDocumentHost) {
468
+ // Actually documentHost should never be removed
469
+ if (!host.rootPane) {
470
+ return { paneRemoved: false, hostIsEmpty: true };
471
+ }
472
+ const result = this.removeFromPane(host.rootPane, panel);
473
+ return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
474
+ }
475
+ else if (host instanceof BsTabGroupPane) {
476
+ const matching = host.panes.filter(p => p.dockPanel === panel);
477
+ if (matching.length > 0) {
478
+ host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
479
+ return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
480
+ }
481
+ else {
482
+ // ATM. all panes are ContentPanes anyway.
483
+ // So unless you'd want to have splitters inside the tabs,
484
+ // This code will not be hit.
485
+ // const result = host.panes
486
+ // .map(parentPane => this.removeFromPane(parentPane, panel))
487
+ // .filter(r => r.paneRemoved);
488
+ //
489
+ // if (result.length > 0) {
490
+ // return { paneRemoved: true, hostIsEmpty: }
491
+ // }
492
+ return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
493
+ }
494
+ }
495
+ else if (host instanceof BsSplitPane) {
496
+ const matching = host.panes
497
+ .filter(p => p instanceof BsContentPane)
498
+ .map(p => p)
499
+ .filter(p => p.dockPanel === panel);
500
+ if (matching.length > 0) {
501
+ host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
502
+ // TODO: Remove splitter if only 1 pane left?
503
+ return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
504
+ }
505
+ else {
506
+ for (let splitPane of host.panes) {
507
+ const result = this.removeFromPane(splitPane, panel);
508
+ if (result.paneRemoved && result.hostIsEmpty) {
509
+ // splitPane is empty now, so we can remove it from this splitter
510
+ host.panes.splice(host.panes.indexOf(splitPane), 1);
511
+ return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
512
+ }
513
+ }
514
+ }
515
+ return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
516
+ }
517
+ else {
518
+ throw 'unknown host type';
519
+ }
520
+ }
513
521
  onMouseUp(ev) {
514
522
  this.isMouseDown = false;
515
523
  this.isDragging = false;