@plait/core 0.0.57 → 0.0.58

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.
@@ -43,7 +43,7 @@ export declare class PlaitBoardComponent implements BoardComponentInterface, OnI
43
43
  resizeElement(): void;
44
44
  private updateViewportState;
45
45
  initViewportContainer(): void;
46
- initViewport(): void;
46
+ initViewport(viewport?: import("../interfaces/viewport").BaseViewport): void;
47
47
  calcViewBox(zoom?: number): void;
48
48
  getMatrix(): number[];
49
49
  setScrollLeft(left: number): void;
@@ -25,8 +25,7 @@ export class PlaitBoardComponent {
25
25
  this.destroy$ = new Subject();
26
26
  this.viewportState = {
27
27
  zoom: 1,
28
- autoFitPadding: 8,
29
- scrollBarWidth: SCROLL_BAR_WIDTH
28
+ autoFitPadding: 8
30
29
  };
31
30
  this.isMoving = false;
32
31
  this.plaitValue = [];
@@ -101,12 +100,10 @@ export class PlaitBoardComponent {
101
100
  this.board = board;
102
101
  if (this.plaitViewport) {
103
102
  this.board.viewport = this.plaitViewport;
103
+ this.updateViewportState({
104
+ zoom: this.plaitViewport?.zoom ?? 1
105
+ });
104
106
  }
105
- const scrollBarWidth = this.plaitOptions?.hideScrollbar ? SCROLL_BAR_WIDTH : 0;
106
- this.updateViewportState({
107
- scrollBarWidth,
108
- zoom: this.board.viewport?.zoom ?? 1
109
- });
110
107
  }
111
108
  initializeEvents() {
112
109
  fromEvent(this.host, 'mousedown')
@@ -206,8 +203,7 @@ export class PlaitBoardComponent {
206
203
  this.renderer2.setStyle(this.viewportContainer.nativeElement, 'width', `${width}px`);
207
204
  this.renderer2.setStyle(this.viewportContainer.nativeElement, 'height', `${height}px`);
208
205
  }
209
- initViewport() {
210
- const viewport = this.board.viewport;
206
+ initViewport(viewport = this.board.viewport) {
211
207
  const originationCoord = viewport?.originationCoord;
212
208
  const zoom = viewport?.zoom ?? this.viewportState.zoom;
213
209
  if (originationCoord) {
@@ -225,7 +221,7 @@ export class PlaitBoardComponent {
225
221
  }
226
222
  calcViewBox(zoom = this.viewportState.zoom) {
227
223
  zoom = clampZoomLevel(zoom);
228
- const scrollBarWidth = this.viewportState.scrollBarWidth;
224
+ const scrollBarWidth = this.plaitOptions?.hideScrollbar ? SCROLL_BAR_WIDTH : 0;
229
225
  const viewportContainerBox = getViewportContainerBox(this.board);
230
226
  const groupBBox = getRootGroupBBox(this.board, zoom);
231
227
  const horizontalPadding = viewportContainerBox.width / 2;
@@ -274,13 +270,15 @@ export class PlaitBoardComponent {
274
270
  }
275
271
  setScrollLeft(left) {
276
272
  const viewportContainerBox = getViewportContainerBox(this.board);
277
- const { viewportWidth, scrollBarWidth } = this.viewportState;
273
+ const scrollBarWidth = this.plaitOptions?.hideScrollbar ? SCROLL_BAR_WIDTH : 0;
274
+ const { viewportWidth } = this.viewportState;
278
275
  const width = viewportWidth - viewportContainerBox.width + scrollBarWidth;
279
276
  this.viewportState.scrollLeft = left < 0 ? 0 : left > width ? width : left;
280
277
  }
281
278
  setScrollTop(top) {
282
279
  const viewportContainerBox = getViewportContainerBox(this.board);
283
- const { viewportHeight, scrollBarWidth } = this.viewportState;
280
+ const scrollBarWidth = this.plaitOptions?.hideScrollbar ? SCROLL_BAR_WIDTH : 0;
281
+ const { viewportHeight } = this.viewportState;
284
282
  const height = viewportHeight - viewportContainerBox.height + scrollBarWidth;
285
283
  this.viewportState.scrollTop = top < 0 ? 0 : top > height ? height : top;
286
284
  }
@@ -388,8 +386,8 @@ export class PlaitBoardComponent {
388
386
  const svgRect = this.host.getBoundingClientRect();
389
387
  const viewportContainerBox = getViewportContainerBox(this.board);
390
388
  if (svgRect.width > viewportContainerBox.width || svgRect.height > viewportContainerBox.height) {
389
+ const scrollBarWidth = this.plaitOptions?.hideScrollbar ? SCROLL_BAR_WIDTH : 0;
391
390
  const matrix = this.getMatrix();
392
- const scrollBarWidth = this.viewportState.scrollBarWidth;
393
391
  const [nodePointX, nodePointY] = convertToViewportCoordinates([client.x, client.y], matrix);
394
392
  const [fullNodePointX, fullNodePointY] = convertToViewportCoordinates([client.x + client.width, client.y + client.height], matrix);
395
393
  let newLeft = this.viewportState.scrollLeft;
@@ -497,4 +495,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
497
495
  type: ViewChild,
498
496
  args: ['viewportContainer', { read: ElementRef, static: true }]
499
497
  }] } });
500
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2JvYXJkL2JvYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFJTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sbUJBQW1CLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixpQkFBaUIsRUFDcEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9C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Ozs7Ozs7Ozs7Ozs7S0FxQlQ7NEZBR1EsbUJBQW1CO2tCQTFCL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxQlQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO3lKQW9CWSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcscUJBQXFCO3NCQUE5QixNQUFNO2dCQVdILFNBQVM7c0JBRFosV0FBVzt1QkFBQyxPQUFPO2dCQU1oQixRQUFRO3NCQURYLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU16QixNQUFNO3NCQURULFdBQVc7dUJBQUMsY0FBYztnQkFNdkIsT0FBTztzQkFEVixXQUFXO3VCQUFDLGVBQWU7Z0JBTTVCLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkzQixrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMsY0FBYztnQkFJNUIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCByb3VnaCBmcm9tICdyb3VnaGpzL2Jpbi9yb3VnaCc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU0NST0xMX0JBUl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkQ2hhbmdlRXZlbnQsIFBsYWl0Qm9hcmRPcHRpb25zLCBQbGFpdEJvYXJkVmlld3BvcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGx1Z2luJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydCc7XG5pbXBvcnQgeyBjcmVhdGVCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvY3JlYXRlLWJvYXJkJztcbmltcG9ydCB7IHdpdGhCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1ib2FyZCc7XG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1oaXN0b3J5JztcbmltcG9ydCB7IHdpdGhIYW5kUG9pbnRlciB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1oYW5kJztcbmltcG9ydCB7IHdpdGhTZWxlY3Rpb24gfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uJztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7XG4gICAgZ2V0Um9vdEdyb3VwQkJveCxcbiAgICBjbGFtcFpvb21MZXZlbCxcbiAgICBjb252ZXJ0VG9WaWV3cG9ydENvb3JkaW5hdGVzLFxuICAgIGdldFZpZXdwb3J0Q29udGFpbmVyQm94LFxuICAgIGludmVydFZpZXdwb3J0Q29vcmRpbmF0ZXMsXG4gICAgdHJhbnNmb3JtTWF0MyxcbiAgICBnZXRCb2FyZENsaWVudEJveFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBCT0FSRF9UT19PTl9DSEFOR0UsIEhPU1RfVE9fUk9VR0hfU1ZHLCBJU19URVhUX0VESVRBQkxFLCBQTEFJVF9CT0FSRF9UT19DT01QT05FTlQgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQm9hcmRDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL2JvYXJkLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ncmFwaCc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1ib2FyZCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZXdwb3J0LWNvbnRhaW5lclwiICN2aWV3cG9ydENvbnRhaW5lcj5cbiAgICAgICAgICAgIDxzdmcgI3N2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9zdmc+XG4gICAgICAgICAgICA8cGxhaXQtZWxlbWVudFxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJvYXJkLmNoaWxkcmVuOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICBbYm9hcmRdPVwiYm9hcmRcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwiYm9hcmQuc2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbaG9zdF09XCJob3N0XCJcbiAgICAgICAgICAgID48L3BsYWl0LWVsZW1lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cGxhaXQtdG9vbGJhclxuICAgICAgICAgICAgKm5nSWY9XCJpc0ZvY3VzZWQgJiYgIXRvb2xiYXJUZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICBbYm9hcmRdPVwiYm9hcmRcIlxuICAgICAgICAgICAgKGFkYXB0SGFuZGxlKT1cImFkYXB0SGFuZGxlKClcIlxuICAgICAgICAgICAgKHpvb21JbkhhbmRsZSk9XCJ6b29tSW5IYW5kbGUoKVwiXG4gICAgICAgICAgICAoem9vbU91dEhhbmRsZSk9XCJ6b29tT3V0SGFuZGxlKClcIlxuICAgICAgICAgICAgKHJlc2V0Wm9vbUhhbmRlbCk9XCJyZXNldFpvb21IYW5kZWwoKVwiXG4gICAgICAgID48L3BsYWl0LXRvb2xiYXI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBsYWl0Qm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBCb2FyZENvbXBvbmVudEludGVyZmFjZSwgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgaGFzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIHJvdWdoU1ZHITogUm91Z2hTVkc7XG5cbiAgICBkZXN0cm95JDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHZpZXdwb3J0U3RhdGU6IFBsYWl0Qm9hcmRWaWV3cG9ydCA9IHtcbiAgICAgICAgem9vbTogMSxcbiAgICAgICAgYXV0b0ZpdFBhZGRpbmc6IDgsXG4gICAgICAgIHNjcm9sbEJhcldpZHRoOiBTQ1JPTExfQkFSX1dJRFRIXG4gICAgfTtcblxuICAgIHB1YmxpYyBpc01vdmluZyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xuXG4gICAgQElucHV0KCkgcGxhaXRWYWx1ZTogUGxhaXRFbGVtZW50W10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHBsYWl0Vmlld3BvcnQhOiBWaWV3cG9ydDtcblxuICAgIEBJbnB1dCgpIHBsYWl0UGx1Z2luczogUGxhaXRQbHVnaW5bXSA9IFtdO1xuXG4gICAgQElucHV0KCkgcGxhaXRPcHRpb25zITogUGxhaXRCb2FyZE9wdGlvbnM7XG5cbiAgICBAT3V0cHV0KCkgcGxhaXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxQbGFpdEJvYXJkQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHBsYWl0Qm9hcmRJbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPFBsYWl0Qm9hcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgZ2V0IGhvc3QoKTogU1ZHRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN2Zy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBpc0ZvY3VzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkPy5zZWxlY3Rpb247XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGhvc3RDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIGBwbGFpdC1ib2FyZC1jb250YWluZXIgJHt0aGlzLmJvYXJkLnBvaW50ZXJ9YDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlYWRvbmx5JylcbiAgICBnZXQgcmVhZG9ubHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLm9wdGlvbnMucmVhZG9ubHk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb3ZpbmcnKVxuICAgIGdldCBtb3ZpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLnBvaW50ZXIgPT09IFBsYWl0UG9pbnRlclR5cGUuaGFuZCAmJiB0aGlzLmlzTW92aW5nO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpXG4gICAgZ2V0IGZvY3VzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRm9jdXNlZDtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdzdmcnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHN2ZyE6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkKCdwbGFpdFRvb2xiYXInKVxuICAgIHB1YmxpYyB0b29sYmFyVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndmlld3BvcnRDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHZpZXdwb3J0Q29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgcm91Z2hTVkcgPSByb3VnaC5zdmcodGhpcy5ob3N0IGFzIFNWR1NWR0VsZW1lbnQsIHtcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgcm91Z2huZXNzOiAwLCBzdHJva2VXaWR0aDogMSB9XG4gICAgICAgIH0pO1xuICAgICAgICBIT1NUX1RPX1JPVUdIX1NWRy5zZXQodGhpcy5ob3N0LCByb3VnaFNWRyk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVBsdWdpbnMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRXZlbnRzKCk7XG4gICAgICAgIFBMQUlUX0JPQVJEX1RPX0NPTVBPTkVOVC5zZXQodGhpcy5ib2FyZCwgdGhpcyk7XG4gICAgICAgIEJPQVJEX1RPX09OX0NIQU5HRS5zZXQodGhpcy5ib2FyZCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IFBsYWl0Qm9hcmRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGhpcy5ib2FyZC5jaGlsZHJlbixcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25zOiB0aGlzLmJvYXJkLm9wZXJhdGlvbnMsXG4gICAgICAgICAgICAgICAgdmlld3BvcnQ6IHRoaXMuYm9hcmQudmlld3BvcnQsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB0aGlzLmJvYXJkLnNlbGVjdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMucGxhaXRDaGFuZ2UuZW1pdChjaGFuZ2VFdmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmhhc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZSA9IGNoYW5nZXNbJ3BsYWl0VmFsdWUnXTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBjaGFuZ2VzWydwbGFpdE9wdGlvbnMnXTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5jaGlsZHJlbiA9IHZhbHVlQ2hhbmdlLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zKSB0aGlzLmJvYXJkLm9wdGlvbnMgPSBvcHRpb25zLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBsYWl0Qm9hcmRJbml0aWFsaXplZC5lbWl0KHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLmluaXRWaWV3cG9ydENvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLmNhbGNWaWV3Qm94KHRoaXMudmlld3BvcnRTdGF0ZS56b29tKTtcbiAgICAgICAgdGhpcy5pbml0Vmlld3BvcnQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVQbHVnaW5zKCkge1xuICAgICAgICBsZXQgYm9hcmQgPSB3aXRoSGFuZFBvaW50ZXIod2l0aEhpc3Rvcnkod2l0aFNlbGVjdGlvbih3aXRoQm9hcmQoY3JlYXRlQm9hcmQodGhpcy5ob3N0LCB0aGlzLnBsYWl0VmFsdWUsIHRoaXMucGxhaXRPcHRpb25zKSkpKSk7XG4gICAgICAgIHRoaXMucGxhaXRQbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHtcbiAgICAgICAgICAgIGJvYXJkID0gcGx1Z2luKGJvYXJkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYm9hcmQgPSBib2FyZDtcblxuICAgICAgICBpZiAodGhpcy5wbGFpdFZpZXdwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLnZpZXdwb3J0ID0gdGhpcy5wbGFpdFZpZXdwb3J0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSB0aGlzLnBsYWl0T3B0aW9ucz8uaGlkZVNjcm9sbGJhciA/IFNDUk9MTF9CQVJfV0lEVEggOiAwO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U3RhdGUoe1xuICAgICAgICAgICAgc2Nyb2xsQmFyV2lkdGgsXG4gICAgICAgICAgICB6b29tOiB0aGlzLmJvYXJkLnZpZXdwb3J0Py56b29tID8/IDFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRXZlbnRzKCkge1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNldXAnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmdsb2JhbE1vdXNldXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ2RibGNsaWNrJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5kYmxjbGljayhldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIUlTX1RFWFRfRURJVEFCTEUuZ2V0KHRoaXMuYm9hcmQpICYmICEhdGhpcy5ib2FyZC5zZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZD8ua2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFJU19URVhUX0VESVRBQkxFLmdldCh0aGlzLmJvYXJkKSAmJiAhIXRoaXMuYm9hcmQuc2VsZWN0aW9uO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/LmtleXVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxDbGlwYm9hcmRFdmVudD4oZG9jdW1lbnQsICdjb3B5JylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIUlTX1RFWFRfRURJVEFCTEUuZ2V0KHRoaXMuYm9hcmQpICYmICEhdGhpcy5ib2FyZC5zZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZD8uc2V0RnJhZ21lbnQoZXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KGRvY3VtZW50LCAncGFzdGUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhSVNfVEVYVF9FRElUQUJMRS5nZXQodGhpcy5ib2FyZCkgJiYgISF0aGlzLmJvYXJkLnNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZD8uaW5zZXJ0RnJhZ21lbnQoZXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KGRvY3VtZW50LCAnY3V0JylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIUlTX1RFWFRfRURJVEFCTEUuZ2V0KHRoaXMuYm9hcmQpICYmICEhdGhpcy5ib2FyZC5zZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZD8uc2V0RnJhZ21lbnQoZXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZD8uZGVsZXRlRnJhZ21lbnQoZXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy52aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0aGlzLmlzRm9jdXNlZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbExlZnQhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxUb3AhO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhsZWZ0IC0gc2Nyb2xsTGVmdCkgPj0gMSB8fCBNYXRoLmFicyh0b3AgLSBzY3JvbGxUb3ApID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxMZWZ0KHNjcm9sbExlZnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvcChzY3JvbGxUb3ApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZpZXdwb3J0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzaXplRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHJlc2l6ZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Vmlld3BvcnRDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGNWaWV3Qm94KHRoaXMuYm9hcmQudmlld3BvcnQuem9vbSk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaWV3Qm94U3R5bGVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydFNjcm9sbGluZygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3cG9ydFN0YXRlKHN0YXRlOiBQYXJ0aWFsPFBsYWl0Qm9hcmRWaWV3cG9ydD4pIHtcbiAgICAgICAgdGhpcy52aWV3cG9ydFN0YXRlID0ge1xuICAgICAgICAgICAgLi4udGhpcy52aWV3cG9ydFN0YXRlLFxuICAgICAgICAgICAgLi4uc3RhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbml0Vmlld3BvcnRDb250YWluZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0Qm9hcmRDbGllbnRCb3godGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMudmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7d2lkdGh9cHhgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy52aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XG4gICAgfVxuXG4gICAgaW5pdFZpZXdwb3J0KCkge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMuYm9hcmQudmlld3BvcnQ7XG4gICAgICAgIGNvbnN0IG9yaWdpbmF0aW9uQ29vcmQgPSB2aWV3cG9ydD8ub3JpZ2luYXRpb25Db29yZDtcbiAgICAgICAgY29uc3Qgem9vbSA9IHZpZXdwb3J0Py56b29tID8/IHRoaXMudmlld3BvcnRTdGF0ZS56b29tO1xuXG4gICAgICAgIGlmIChvcmlnaW5hdGlvbkNvb3JkKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICAgICAgY29uc3QgW3BvaW50WCwgcG9pbnRZXSA9IGludmVydFZpZXdwb3J0Q29vcmRpbmF0ZXMoWzAsIDBdLCBtYXRyaXgpO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxMZWZ0ITtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxUb3AhO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IHNjcm9sbExlZnQgKyAob3JpZ2luYXRpb25Db29yZFswXSAtIHBvaW50WCkgKiB6b29tO1xuICAgICAgICAgICAgY29uc3QgdG9wID0gc2Nyb2xsVG9wICsgKG9yaWdpbmF0aW9uQ29vcmRbMV0gLSBwb2ludFkpICogem9vbTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsKGxlZnQsIHRvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkYXB0SGFuZGxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxjVmlld0JveCh6b29tID0gdGhpcy52aWV3cG9ydFN0YXRlLnpvb20pIHtcbiAgICAgICAgem9vbSA9IGNsYW1wWm9vbUxldmVsKHpvb20pO1xuXG4gICAgICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbEJhcldpZHRoO1xuICAgICAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lckJveCA9IGdldFZpZXdwb3J0Q29udGFpbmVyQm94KHRoaXMuYm9hcmQpO1xuICAgICAgICBjb25zdCBncm91cEJCb3ggPSBnZXRSb290R3JvdXBCQm94KHRoaXMuYm9hcmQsIHpvb20pO1xuICAgICAgICBjb25zdCBob3Jpem9udGFsUGFkZGluZyA9IHZpZXdwb3J0Q29udGFpbmVyQm94LndpZHRoIC8gMjtcbiAgICAgICAgY29uc3QgdmVydGljYWxQYWRkaW5nID0gdmlld3BvcnRDb250YWluZXJCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IChncm91cEJCb3gucmlnaHQgLSBncm91cEJCb3gubGVmdCkgKiB6b29tICsgMiAqIGhvcml6b250YWxQYWRkaW5nICsgc2Nyb2xsQmFyV2lkdGg7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gKGdyb3VwQkJveC5ib3R0b20gLSBncm91cEJCb3gudG9wKSAqIHpvb20gKyAyICogdmVydGljYWxQYWRkaW5nICsgc2Nyb2xsQmFyV2lkdGg7XG5cbiAgICAgICAgY29uc3Qgdmlld0JveCA9IFtcbiAgICAgICAgICAgIGdyb3VwQkJveC5sZWZ0IC0gaG9yaXpvbnRhbFBhZGRpbmcgLyB6b29tLFxuICAgICAgICAgICAgZ3JvdXBCQm94LnRvcCAtIHZlcnRpY2FsUGFkZGluZyAvIHpvb20sXG4gICAgICAgICAgICB2aWV3cG9ydFdpZHRoIC8gem9vbSxcbiAgICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0IC8gem9vbVxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICBsZXQgc2Nyb2xsTGVmdDtcbiAgICAgICAgbGV0IHNjcm9sbFRvcDtcblxuICAgICAgICBpZiAobWF0cml4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGZvY3VzUG9pbnRcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzWCA9IHZpZXdwb3J0Q29udGFpbmVyQm94LnggKyB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCAvIDI7XG4gICAgICAgICAgICBjb25zdCBmb2N1c1kgPSB2aWV3cG9ydENvbnRhaW5lckJveC55ICsgdmlld3BvcnRDb250YWluZXJCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyUG9pbnQgPSBbZm9jdXNYIC0gdmlld3BvcnRDb250YWluZXJCb3gueCwgZm9jdXNZIC0gdmlld3BvcnRDb250YWluZXJCb3gueSwgMV07XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IGludmVydFZpZXdwb3J0Q29vcmRpbmF0ZXMoW3ZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMF0sIHZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMV1dLCBtYXRyaXgpO1xuICAgICAgICAgICAgY29uc3QgbmV3TWF0cml4ID0gW3pvb20sIDAsIDAsIDAsIHpvb20sIDAsIC16b29tICogdmlld0JveFswXSwgLXpvb20gKiB2aWV3Qm94WzFdLCAxXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50ID0gdHJhbnNmb3JtTWF0MyhbXSwgcG9pbnQsIG5ld01hdHJpeCk7XG5cbiAgICAgICAgICAgIHNjcm9sbExlZnQgPSBuZXdQb2ludFswXSAtIHZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMF07XG4gICAgICAgICAgICBzY3JvbGxUb3AgPSBuZXdQb2ludFsxXSAtIHZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzY3JvbGxMZWZ0ID0gaG9yaXpvbnRhbFBhZGRpbmc7XG4gICAgICAgICAgICBzY3JvbGxUb3AgPSB2ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydFN0YXRlKHtcbiAgICAgICAgICAgIHZpZXdwb3J0V2lkdGgsXG4gICAgICAgICAgICB2aWV3cG9ydEhlaWdodCxcbiAgICAgICAgICAgIHpvb20sXG4gICAgICAgICAgICB2aWV3Qm94XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFNjcm9sbExlZnQoc2Nyb2xsTGVmdCk7XG4gICAgICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgZ2V0TWF0cml4KCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgeyB2aWV3Qm94LCB6b29tLCBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IHRoaXMudmlld3BvcnRTdGF0ZTtcbiAgICAgICAgaWYgKHNjcm9sbExlZnQhID49IDAgJiYgc2Nyb2xsVG9wISA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3pvb20sIDAsIDAsIDAsIHpvb20sIDAsIC1zY3JvbGxMZWZ0ISAtIHpvb20gKiB2aWV3Qm94IVswXSwgLXNjcm9sbFRvcCEgLSB6b29tICogdmlld0JveCFbMV0sIDFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBzZXRTY3JvbGxMZWZ0KGxlZnQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lckJveCA9IGdldFZpZXdwb3J0Q29udGFpbmVyQm94KHRoaXMuYm9hcmQpO1xuICAgICAgICBjb25zdCB7IHZpZXdwb3J0V2lkdGgsIHNjcm9sbEJhcldpZHRoIH0gPSB0aGlzLnZpZXdwb3J0U3RhdGU7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdmlld3BvcnRXaWR0aCEgLSB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCArIHNjcm9sbEJhcldpZHRoO1xuICAgICAgICB0aGlzLnZpZXdwb3J0U3RhdGUuc2Nyb2xsTGVmdCA9IGxlZnQgPCAwID8gMCA6IGxlZnQgPiB3aWR0aCA/IHdpZHRoIDogbGVmdDtcbiAgICB9XG5cbiAgICBzZXRTY3JvbGxUb3AodG9wOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgdmlld3BvcnRDb250YWluZXJCb3ggPSBnZXRWaWV3cG9ydENvbnRhaW5lckJveCh0aGlzLmJvYXJkKTtcbiAgICAgICAgY29uc3QgeyB2aWV3cG9ydEhlaWdodCwgc2Nyb2xsQmFyV2lkdGggfSA9IHRoaXMudmlld3BvcnRTdGF0ZTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdmlld3BvcnRIZWlnaHQhIC0gdmlld3BvcnRDb250YWluZXJCb3guaGVpZ2h0ICsgc2Nyb2xsQmFyV2lkdGg7XG4gICAgICAgIHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxUb3AgPSB0b3AgPCAwID8gMCA6IHRvcCA+IGhlaWdodCA/IGhlaWdodCA6IHRvcDtcbiAgICB9XG5cbiAgICBzZXRTY3JvbGwobGVmdDogbnVtYmVyLCB0b3A6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldFNjcm9sbExlZnQobGVmdCk7XG4gICAgICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHRvcCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld0JveFN0eWxlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U2Nyb2xsaW5nKCk7XG4gICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZpZXdCb3hTdHlsZXMoKSB7XG4gICAgICAgIGNvbnN0IHsgaG9zdCwgdmlld3BvcnRTdGF0ZSB9ID0gdGhpcztcbiAgICAgICAgY29uc3QgeyB2aWV3cG9ydFdpZHRoLCB2aWV3cG9ydEhlaWdodCwgdmlld0JveCB9ID0gdmlld3BvcnRTdGF0ZTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZShob3N0LCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZShob3N0LCAnd2lkdGgnLCBgJHt2aWV3cG9ydFdpZHRofXB4YCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKGhvc3QsICdoZWlnaHQnLCBgJHt2aWV3cG9ydEhlaWdodH1weGApO1xuXG4gICAgICAgIGlmICh2aWV3Qm94ICYmIHZpZXdCb3hbMl0gPiAwICYmIHZpZXdCb3hbM10gPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRBdHRyaWJ1dGUoaG9zdCwgJ3ZpZXdCb3gnLCB2aWV3Qm94LmpvaW4oJyAnKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZpZXdwb3J0U2Nyb2xsaW5nKCkge1xuICAgICAgICBjb25zdCB7IHZpZXdwb3J0Q29udGFpbmVyLCB2aWV3cG9ydFN0YXRlIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQsIHNjcm9sbFRvcCB9ID0gdmlld3BvcnRTdGF0ZTtcbiAgICAgICAgdmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdCE7XG4gICAgICAgIHZpZXdwb3J0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wITtcbiAgICB9XG5cbiAgICBzZXRWaWV3cG9ydCgpIHtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLmJvYXJkPy52aWV3cG9ydDtcbiAgICAgICAgY29uc3Qgb2xkT3JpZ2luYXRpb25Db29yZCA9IHZpZXdwb3J0Py5vcmlnaW5hdGlvbkNvb3JkID8/IFtdO1xuICAgICAgICBjb25zdCBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICBjb25zdCBvcmlnaW5hdGlvbkNvb3JkID0gaW52ZXJ0Vmlld3BvcnRDb29yZGluYXRlcyhbMCwgMF0sIG1hdHJpeCk7XG5cbiAgICAgICAgaWYgKCFvcmlnaW5hdGlvbkNvb3JkLmV2ZXJ5KChpdGVtLCBpbmRleCkgPT4gaXRlbSA9PT0gb2xkT3JpZ2luYXRpb25Db29yZFtpbmRleF0pKSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFZpZXdwb3J0KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgICAgICAuLi52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICB6b29tOiB0aGlzLnZpZXdwb3J0U3RhdGUuem9vbSxcbiAgICAgICAgICAgICAgICBvcmlnaW5hdGlvbkNvb3JkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9O1xuXG4gICAgYWRhcHRIYW5kbGUoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckJveCA9IGdldFZpZXdwb3J0Q29udGFpbmVyQm94KHRoaXMuYm9hcmQpO1xuICAgICAgICBjb25zdCByb290R3JvdXAgPSB0aGlzLmhvc3QuZmlyc3RDaGlsZCBhcyBTVkdHcmFwaGljc0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG5cbiAgICAgICAgY29uc3Qgcm9vdEdyb3VwQm94ID0gcm9vdEdyb3VwLmdldEJCb3goKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBbY29udGFpbmVyQm94LndpZHRoIC8gMiwgY29udGFpbmVyQm94LmhlaWdodCAvIDJdO1xuICAgICAgICBjb25zdCByb290R3JvdXBDZW50ZXJYID0gcm9vdEdyb3VwQm94LnggKyByb290R3JvdXBCb3gud2lkdGggLyAyO1xuICAgICAgICBjb25zdCByb290R3JvdXBDZW50ZXJZID0gcm9vdEdyb3VwQm94LnkgKyByb290R3JvdXBCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRQb2ludCA9IHRyYW5zZm9ybU1hdDMoW10sIFtyb290R3JvdXBDZW50ZXJYLCByb290R3JvdXBDZW50ZXJZLCAxXSwgbWF0cml4KTtcblxuICAgICAgICBjb25zdCBvZmZzZXRMZWZ0ID0gY2VudGVyUG9pbnRbMF0gLSB0cmFuc2Zvcm1lZFBvaW50WzBdO1xuICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSBjZW50ZXJQb2ludFsxXSAtIHRyYW5zZm9ybWVkUG9pbnRbMV07XG5cbiAgICAgICAgY29uc3QgeyBhdXRvRml0UGFkZGluZywgem9vbSwgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSB0aGlzLnZpZXdwb3J0U3RhdGU7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSBjb250YWluZXJCb3gud2lkdGggLSAyICogYXV0b0ZpdFBhZGRpbmc7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gY29udGFpbmVyQm94LmhlaWdodCAtIDIgKiBhdXRvRml0UGFkZGluZztcbiAgICAgICAgbGV0IG5ld1pvb20gPSB6b29tO1xuICAgICAgICBpZiAodmlld3BvcnRXaWR0aCA8IHJvb3RHcm91cEJveC53aWR0aCB8fCB2aWV3cG9ydEhlaWdodCA8IHJvb3RHcm91cEJveC5oZWlnaHQpIHtcbiAgICAgICAgICAgIG5ld1pvb20gPSBNYXRoLm1pbih2aWV3cG9ydFdpZHRoIC8gcm9vdEdyb3VwQm94LndpZHRoLCB2aWV3cG9ydEhlaWdodCAvIHJvb3RHcm91cEJveC5oZWlnaHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3Wm9vbSA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNjcm9sbExlZnQoc2Nyb2xsTGVmdCEgLSBvZmZzZXRMZWZ0KTtcbiAgICAgICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wISAtIG9mZnNldFRvcCk7XG4gICAgICAgIHRoaXMuY2FsY1ZpZXdCb3gobmV3Wm9vbSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld0JveFN0eWxlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U2Nyb2xsaW5nKCk7XG4gICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcbiAgICB9XG5cbiAgICB6b29tSW5IYW5kbGUoKSB7XG4gICAgICAgIHRoaXMuY2FsY1ZpZXdCb3godGhpcy52aWV3cG9ydFN0YXRlLnpvb20gKyAwLjEpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdCb3hTdHlsZXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydFNjcm9sbGluZygpO1xuICAgICAgICB0aGlzLnNldFZpZXdwb3J0KCk7XG4gICAgfVxuXG4gICAgem9vbU91dEhhbmRsZSgpIHtcbiAgICAgICAgdGhpcy5jYWxjVmlld0JveCh0aGlzLnZpZXdwb3J0U3RhdGUuem9vbSAtIDAuMSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld0JveFN0eWxlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U2Nyb2xsaW5nKCk7XG4gICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcbiAgICB9XG5cbiAgICByZXNldFpvb21IYW5kZWwoKSB7XG4gICAgICAgIHRoaXMuY2FsY1ZpZXdCb3goMSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld0JveFN0eWxlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U2Nyb2xsaW5nKCk7XG4gICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcbiAgICB9XG5cbiAgICBtb3ZpbmdDaGFuZ2UoaXNNb3Zpbmc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc01vdmluZyA9IGlzTW92aW5nO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICBIT1NUX1RPX1JPVUdIX1NWRy5kZWxldGUodGhpcy5ob3N0KTtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFya0ZvckNoZWNrKCkge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBzY3JvbGxUb1JlY3RhbmdsZShjbGllbnQ6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICB0aGlzLmNhbGNWaWV3Qm94KCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld0JveFN0eWxlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U2Nyb2xsaW5nKCk7XG4gICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcblxuICAgICAgICBjb25zdCBzdmdSZWN0ID0gdGhpcy5ob3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lckJveCA9IGdldFZpZXdwb3J0Q29udGFpbmVyQm94KHRoaXMuYm9hcmQpO1xuXG4gICAgICAgIGlmIChzdmdSZWN0LndpZHRoID4gdmlld3BvcnRDb250YWluZXJCb3gud2lkdGggfHwgc3ZnUmVjdC5oZWlnaHQgPiB2aWV3cG9ydENvbnRhaW5lckJveC5oZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxCYXJXaWR0aCA9IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxCYXJXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IFtub2RlUG9pbnRYLCBub2RlUG9pbnRZXSA9IGNvbnZlcnRUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMoW2NsaWVudC54LCBjbGllbnQueV0sIG1hdHJpeCk7XG4gICAgICAgICAgICBjb25zdCBbZnVsbE5vZGVQb2ludFgsIGZ1bGxOb2RlUG9pbnRZXSA9IGNvbnZlcnRUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMoXG4gICAgICAgICAgICAgICAgW2NsaWVudC54ICsgY2xpZW50LndpZHRoLCBjbGllbnQueSArIGNsaWVudC5oZWlnaHRdLFxuICAgICAgICAgICAgICAgIG1hdHJpeFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGV0IG5ld0xlZnQgPSB0aGlzLnZpZXdwb3J0U3RhdGUuc2Nyb2xsTGVmdCE7XG4gICAgICAgICAgICBsZXQgbmV3VG9wID0gdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbFRvcCE7XG5cbiAgICAgICAgICAgIGlmIChub2RlUG9pbnRYIDwgMCkge1xuICAgICAgICAgICAgICAgIG5ld0xlZnQgLT0gTWF0aC5hYnMobm9kZVBvaW50WCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZVBvaW50WCA+IDAgJiYgZnVsbE5vZGVQb2ludFggPiB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCkge1xuICAgICAgICAgICAgICAgIG5ld0xlZnQgKz0gZnVsbE5vZGVQb2ludFggLSB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCArIHNjcm9sbEJhcldpZHRoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZVBvaW50WSA8IDApIHtcbiAgICAgICAgICAgICAgICBuZXdUb3AgLT0gTWF0aC5hYnMobm9kZVBvaW50WSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZVBvaW50WSA+IDAgJiYgZnVsbE5vZGVQb2ludFkgPiB2aWV3cG9ydENvbnRhaW5lckJveC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBuZXdUb3AgKz0gZnVsbE5vZGVQb2ludFkgLSB2aWV3cG9ydENvbnRhaW5lckJveC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0xlZnQgIT09IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxMZWZ0ISB8fCBuZXdUb3AgIT09IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxUb3AhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGwobmV3TGVmdCwgbmV3VG9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2JvYXJkL2JvYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFJTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sbUJBQW1CLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixpQkFBaUIsRUFDcEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9C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Q0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFUCxTQUFTLENBQWdCLFFBQVEsRUFBRSxTQUFTLENBQUM7YUFDeEMsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFUCxTQUFTLENBQWdCLFFBQVEsRUFBRSxPQUFPLENBQUM7YUFDdEMsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFUCxTQUFTLENBQWlCLFFBQVEsRUFBRSxNQUFNLENBQUM7YUFDdEMsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLENBQUMsZ0JBQWdC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LE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNuQztTQUNKO0lBQ0wsQ0FBQzs7aUhBamZRLG1CQUFtQjtxR0FBbkIsbUJBQW1CLG90QkFnRVksVUFBVSxnRUF4RnhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxQlQ7NEZBR1EsbUJBQW1CO2tCQTFCL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxQlQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO3lKQW1CWSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcscUJBQXFCO3NCQUE5QixNQUFNO2dCQVdILFNBQVM7c0JBRFosV0FBVzt1QkFBQyxPQUFPO2dCQU1oQixRQUFRO3NCQURYLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU16QixNQUFNO3NCQURULFdBQVc7dUJBQUMsY0FBYztnQkFNdkIsT0FBTztzQkFEVixXQUFXO3VCQUFDLGVBQWU7Z0JBTTVCLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkzQixrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMsY0FBYztnQkFJNUIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCByb3VnaCBmcm9tICdyb3VnaGpzL2Jpbi9yb3VnaCc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU0NST0xMX0JBUl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkQ2hhbmdlRXZlbnQsIFBsYWl0Qm9hcmRPcHRpb25zLCBQbGFpdEJvYXJkVmlld3BvcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGx1Z2luJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydCc7XG5pbXBvcnQgeyBjcmVhdGVCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvY3JlYXRlLWJvYXJkJztcbmltcG9ydCB7IHdpdGhCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1ib2FyZCc7XG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1oaXN0b3J5JztcbmltcG9ydCB7IHdpdGhIYW5kUG9pbnRlciB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1oYW5kJztcbmltcG9ydCB7IHdpdGhTZWxlY3Rpb24gfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uJztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7XG4gICAgZ2V0Um9vdEdyb3VwQkJveCxcbiAgICBjbGFtcFpvb21MZXZlbCxcbiAgICBjb252ZXJ0VG9WaWV3cG9ydENvb3JkaW5hdGVzLFxuICAgIGdldFZpZXdwb3J0Q29udGFpbmVyQm94LFxuICAgIGludmVydFZpZXdwb3J0Q29vcmRpbmF0ZXMsXG4gICAgdHJhbnNmb3JtTWF0MyxcbiAgICBnZXRCb2FyZENsaWVudEJveFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBCT0FSRF9UT19PTl9DSEFOR0UsIEhPU1RfVE9fUk9VR0hfU1ZHLCBJU19URVhUX0VESVRBQkxFLCBQTEFJVF9CT0FSRF9UT19DT01QT05FTlQgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQm9hcmRDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL2JvYXJkLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ncmFwaCc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1ib2FyZCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZXdwb3J0LWNvbnRhaW5lclwiICN2aWV3cG9ydENvbnRhaW5lcj5cbiAgICAgICAgICAgIDxzdmcgI3N2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9zdmc+XG4gICAgICAgICAgICA8cGxhaXQtZWxlbWVudFxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJvYXJkLmNoaWxkcmVuOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICBbYm9hcmRdPVwiYm9hcmRcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwiYm9hcmQuc2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbaG9zdF09XCJob3N0XCJcbiAgICAgICAgICAgID48L3BsYWl0LWVsZW1lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cGxhaXQtdG9vbGJhclxuICAgICAgICAgICAgKm5nSWY9XCJpc0ZvY3VzZWQgJiYgIXRvb2xiYXJUZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICBbYm9hcmRdPVwiYm9hcmRcIlxuICAgICAgICAgICAgKGFkYXB0SGFuZGxlKT1cImFkYXB0SGFuZGxlKClcIlxuICAgICAgICAgICAgKHpvb21JbkhhbmRsZSk9XCJ6b29tSW5IYW5kbGUoKVwiXG4gICAgICAgICAgICAoem9vbU91dEhhbmRsZSk9XCJ6b29tT3V0SGFuZGxlKClcIlxuICAgICAgICAgICAgKHJlc2V0Wm9vbUhhbmRlbCk9XCJyZXNldFpvb21IYW5kZWwoKVwiXG4gICAgICAgID48L3BsYWl0LXRvb2xiYXI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBsYWl0Qm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBCb2FyZENvbXBvbmVudEludGVyZmFjZSwgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgaGFzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIHJvdWdoU1ZHITogUm91Z2hTVkc7XG5cbiAgICBkZXN0cm95JDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHZpZXdwb3J0U3RhdGU6IFBsYWl0Qm9hcmRWaWV3cG9ydCA9IHtcbiAgICAgICAgem9vbTogMSxcbiAgICAgICAgYXV0b0ZpdFBhZGRpbmc6IDhcbiAgICB9O1xuXG4gICAgcHVibGljIGlzTW92aW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgICBASW5wdXQoKSBwbGFpdFZhbHVlOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgcGxhaXRWaWV3cG9ydCE6IFZpZXdwb3J0O1xuXG4gICAgQElucHV0KCkgcGxhaXRQbHVnaW5zOiBQbGFpdFBsdWdpbltdID0gW107XG5cbiAgICBASW5wdXQoKSBwbGFpdE9wdGlvbnMhOiBQbGFpdEJvYXJkT3B0aW9ucztcblxuICAgIEBPdXRwdXQoKSBwbGFpdENoYW5nZTogRXZlbnRFbWl0dGVyPFBsYWl0Qm9hcmRDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgcGxhaXRCb2FyZEluaXRpYWxpemVkOiBFdmVudEVtaXR0ZXI8UGxhaXRCb2FyZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBnZXQgaG9zdCgpOiBTVkdFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ZnLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGlzRm9jdXNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9hcmQ/LnNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgaG9zdENsYXNzKCkge1xuICAgICAgICByZXR1cm4gYHBsYWl0LWJvYXJkLWNvbnRhaW5lciAke3RoaXMuYm9hcmQucG9pbnRlcn1gO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucmVhZG9ubHknKVxuICAgIGdldCByZWFkb25seSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9hcmQub3B0aW9ucy5yZWFkb25seTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vdmluZycpXG4gICAgZ2V0IG1vdmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9hcmQucG9pbnRlciA9PT0gUGxhaXRQb2ludGVyVHlwZS5oYW5kICYmIHRoaXMuaXNNb3Zpbmc7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb2N1c2VkJylcbiAgICBnZXQgZm9jdXNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGb2N1c2VkO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ3N2ZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgc3ZnITogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3BsYWl0VG9vbGJhcicpXG4gICAgcHVibGljIHRvb2xiYXJUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd2aWV3cG9ydENvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdmlld3BvcnRDb250YWluZXIhOiBFbGVtZW50UmVmO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByb3VnaFNWRyA9IHJvdWdoLnN2Zyh0aGlzLmhvc3QgYXMgU1ZHU1ZHRWxlbWVudCwge1xuICAgICAgICAgICAgb3B0aW9uczogeyByb3VnaG5lc3M6IDAsIHN0cm9rZVdpZHRoOiAxIH1cbiAgICAgICAgfSk7XG4gICAgICAgIEhPU1RfVE9fUk9VR0hfU1ZHLnNldCh0aGlzLmhvc3QsIHJvdWdoU1ZHKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUGx1Z2lucygpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVFdmVudHMoKTtcbiAgICAgICAgUExBSVRfQk9BUkRfVE9fQ09NUE9ORU5ULnNldCh0aGlzLmJvYXJkLCB0aGlzKTtcbiAgICAgICAgQk9BUkRfVE9fT05fQ0hBTkdFLnNldCh0aGlzLmJvYXJkLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogUGxhaXRCb2FyZENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLmJvYXJkLmNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbnM6IHRoaXMuYm9hcmQub3BlcmF0aW9ucyxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydDogdGhpcy5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb246IHRoaXMuYm9hcmQuc2VsZWN0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5wbGFpdENoYW5nZS5lbWl0KGNoYW5nZUV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaGFzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlID0gY2hhbmdlc1sncGxhaXRWYWx1ZSddO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGNoYW5nZXNbJ3BsYWl0T3B0aW9ucyddO1xuXG4gICAgICAgICAgICBpZiAodmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmNoaWxkcmVuID0gdmFsdWVDaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHRoaXMuYm9hcmQub3B0aW9ucyA9IG9wdGlvbnMuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGxhaXRCb2FyZEluaXRpYWxpemVkLmVtaXQodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuaW5pdFZpZXdwb3J0Q29udGFpbmVyKCk7XG4gICAgICAgIHRoaXMuY2FsY1ZpZXdCb3godGhpcy52aWV3cG9ydFN0YXRlLnpvb20pO1xuICAgICAgICB0aGlzLmluaXRWaWV3cG9ydCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVBsdWdpbnMoKSB7XG4gICAgICAgIGxldCBib2FyZCA9IHdpdGhIYW5kUG9pbnRlcih3aXRoSGlzdG9yeSh3aXRoU2VsZWN0aW9uKHdpdGhCb2FyZChjcmVhdGVCb2FyZCh0aGlzLmhvc3QsIHRoaXMucGxhaXRWYWx1ZSwgdGhpcy5wbGFpdE9wdGlvbnMpKSkpKTtcbiAgICAgICAgdGhpcy5wbGFpdFBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgICAgICAgYm9hcmQgPSBwbHVnaW4oYm9hcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ib2FyZCA9IGJvYXJkO1xuXG4gICAgICAgIGlmICh0aGlzLnBsYWl0Vmlld3BvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9hcmQudmlld3BvcnQgPSB0aGlzLnBsYWl0Vmlld3BvcnQ7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U3RhdGUoe1xuICAgICAgICAgICAgICAgIHpvb206IHRoaXMucGxhaXRWaWV3cG9ydD8uem9vbSA/PyAxXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUV2ZW50cygpIHtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlZG93bicpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2Vkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZW1vdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLm1vdXNlbW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nbG9iYWxNb3VzZXVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdkYmxjbGljaycpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZGJsY2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFJU19URVhUX0VESVRBQkxFLmdldCh0aGlzLmJvYXJkKSAmJiAhIXRoaXMuYm9hcmQuc2VsZWN0aW9uO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/LmtleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5dXAnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhSVNfVEVYVF9FRElUQUJMRS5nZXQodGhpcy5ib2FyZCkgJiYgISF0aGlzLmJvYXJkLnNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkPy5rZXl1cChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KGRvY3VtZW50LCAnY29weScpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFJU19URVhUX0VESVRBQkxFLmdldCh0aGlzLmJvYXJkKSAmJiAhIXRoaXMuYm9hcmQuc2VsZWN0aW9uO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/LnNldEZyYWdtZW50KGV2ZW50LmNsaXBib2FyZERhdGEpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PENsaXBib2FyZEV2ZW50Pihkb2N1bWVudCwgJ3Bhc3RlJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIUlTX1RFWFRfRURJVEFCTEUuZ2V0KHRoaXMuYm9hcmQpICYmICEhdGhpcy5ib2FyZC5zZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/Lmluc2VydEZyYWdtZW50KGV2ZW50LmNsaXBib2FyZERhdGEpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PENsaXBib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2N1dCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFJU19URVhUX0VESVRBQkxFLmdldCh0aGlzLmJvYXJkKSAmJiAhIXRoaXMuYm9hcmQuc2VsZWN0aW9uO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/LnNldEZyYWdtZW50KGV2ZW50LmNsaXBib2FyZERhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/LmRlbGV0ZUZyYWdtZW50KGV2ZW50LmNsaXBib2FyZERhdGEpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMudmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5pc0ZvY3VzZWQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxMZWZ0ITtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnZpZXdwb3J0U3RhdGUuc2Nyb2xsVG9wITtcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMobGVmdCAtIHNjcm9sbExlZnQpID49IDEgfHwgTWF0aC5hYnModG9wIC0gc2Nyb2xsVG9wKSA+PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsTGVmdChzY3JvbGxMZWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWaWV3cG9ydCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2l6ZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICByZXNpemVFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFZpZXdwb3J0Q29udGFpbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjVmlld0JveCh0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb20pO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlld0JveFN0eWxlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRTY3JvbGxpbmcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpZXdwb3J0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmlld3BvcnRTdGF0ZShzdGF0ZTogUGFydGlhbDxQbGFpdEJvYXJkVmlld3BvcnQ+KSB7XG4gICAgICAgIHRoaXMudmlld3BvcnRTdGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMudmlld3BvcnRTdGF0ZSxcbiAgICAgICAgICAgIC4uLnN0YXRlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaW5pdFZpZXdwb3J0Q29udGFpbmVyKCkge1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldEJvYXJkQ2xpZW50Qm94KHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLnZpZXdwb3J0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3dpZHRofXB4YCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMudmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodH1weGApO1xuICAgIH1cblxuICAgIGluaXRWaWV3cG9ydCh2aWV3cG9ydCA9IHRoaXMuYm9hcmQudmlld3BvcnQpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYXRpb25Db29yZCA9IHZpZXdwb3J0Py5vcmlnaW5hdGlvbkNvb3JkO1xuICAgICAgICBjb25zdCB6b29tID0gdmlld3BvcnQ/Lnpvb20gPz8gdGhpcy52aWV3cG9ydFN0YXRlLnpvb207XG5cbiAgICAgICAgaWYgKG9yaWdpbmF0aW9uQ29vcmQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgICAgICBjb25zdCBbcG9pbnRYLCBwb2ludFldID0gaW52ZXJ0Vmlld3BvcnRDb29yZGluYXRlcyhbMCwgMF0sIG1hdHJpeCk7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbExlZnQhO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbFRvcCE7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc2Nyb2xsTGVmdCArIChvcmlnaW5hdGlvbkNvb3JkWzBdIC0gcG9pbnRYKSAqIHpvb207XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBzY3JvbGxUb3AgKyAob3JpZ2luYXRpb25Db29yZFsxXSAtIHBvaW50WSkgKiB6b29tO1xuICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGwobGVmdCwgdG9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWRhcHRIYW5kbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGNWaWV3Qm94KHpvb20gPSB0aGlzLnZpZXdwb3J0U3RhdGUuem9vbSkge1xuICAgICAgICB6b29tID0gY2xhbXBab29tTGV2ZWwoem9vbSk7XG5cbiAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSB0aGlzLnBsYWl0T3B0aW9ucz8uaGlkZVNjcm9sbGJhciA/IFNDUk9MTF9CQVJfV0lEVEggOiAwO1xuICAgICAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lckJveCA9IGdldFZpZXdwb3J0Q29udGFpbmVyQm94KHRoaXMuYm9hcmQpO1xuICAgICAgICBjb25zdCBncm91cEJCb3ggPSBnZXRSb290R3JvdXBCQm94KHRoaXMuYm9hcmQsIHpvb20pO1xuICAgICAgICBjb25zdCBob3Jpem9udGFsUGFkZGluZyA9IHZpZXdwb3J0Q29udGFpbmVyQm94LndpZHRoIC8gMjtcbiAgICAgICAgY29uc3QgdmVydGljYWxQYWRkaW5nID0gdmlld3BvcnRDb250YWluZXJCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IChncm91cEJCb3gucmlnaHQgLSBncm91cEJCb3gubGVmdCkgKiB6b29tICsgMiAqIGhvcml6b250YWxQYWRkaW5nICsgc2Nyb2xsQmFyV2lkdGg7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gKGdyb3VwQkJveC5ib3R0b20gLSBncm91cEJCb3gudG9wKSAqIHpvb20gKyAyICogdmVydGljYWxQYWRkaW5nICsgc2Nyb2xsQmFyV2lkdGg7XG5cbiAgICAgICAgY29uc3Qgdmlld0JveCA9IFtcbiAgICAgICAgICAgIGdyb3VwQkJveC5sZWZ0IC0gaG9yaXpvbnRhbFBhZGRpbmcgLyB6b29tLFxuICAgICAgICAgICAgZ3JvdXBCQm94LnRvcCAtIHZlcnRpY2FsUGFkZGluZyAvIHpvb20sXG4gICAgICAgICAgICB2aWV3cG9ydFdpZHRoIC8gem9vbSxcbiAgICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0IC8gem9vbVxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICBsZXQgc2Nyb2xsTGVmdDtcbiAgICAgICAgbGV0IHNjcm9sbFRvcDtcblxuICAgICAgICBpZiAobWF0cml4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIGZvY3VzUG9pbnRcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzWCA9IHZpZXdwb3J0Q29udGFpbmVyQm94LnggKyB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCAvIDI7XG4gICAgICAgICAgICBjb25zdCBmb2N1c1kgPSB2aWV3cG9ydENvbnRhaW5lckJveC55ICsgdmlld3BvcnRDb250YWluZXJCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyUG9pbnQgPSBbZm9jdXNYIC0gdmlld3BvcnRDb250YWluZXJCb3gueCwgZm9jdXNZIC0gdmlld3BvcnRDb250YWluZXJCb3gueSwgMV07XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IGludmVydFZpZXdwb3J0Q29vcmRpbmF0ZXMoW3ZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMF0sIHZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMV1dLCBtYXRyaXgpO1xuICAgICAgICAgICAgY29uc3QgbmV3TWF0cml4ID0gW3pvb20sIDAsIDAsIDAsIHpvb20sIDAsIC16b29tICogdmlld0JveFswXSwgLXpvb20gKiB2aWV3Qm94WzFdLCAxXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50ID0gdHJhbnNmb3JtTWF0MyhbXSwgcG9pbnQsIG5ld01hdHJpeCk7XG5cbiAgICAgICAgICAgIHNjcm9sbExlZnQgPSBuZXdQb2ludFswXSAtIHZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMF07XG4gICAgICAgICAgICBzY3JvbGxUb3AgPSBuZXdQb2ludFsxXSAtIHZpZXdwb3J0Q29udGFpbmVyUG9pbnRbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzY3JvbGxMZWZ0ID0gaG9yaXpvbnRhbFBhZGRpbmc7XG4gICAgICAgICAgICBzY3JvbGxUb3AgPSB2ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydFN0YXRlKHtcbiAgICAgICAgICAgIHZpZXdwb3J0V2lkdGgsXG4gICAgICAgICAgICB2aWV3cG9ydEhlaWdodCxcbiAgICAgICAgICAgIHpvb20sXG4gICAgICAgICAgICB2aWV3Qm94XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFNjcm9sbExlZnQoc2Nyb2xsTGVmdCk7XG4gICAgICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgZ2V0TWF0cml4KCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgeyB2aWV3Qm94LCB6b29tLCBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IHRoaXMudmlld3BvcnRTdGF0ZTtcbiAgICAgICAgaWYgKHNjcm9sbExlZnQhID49IDAgJiYgc2Nyb2xsVG9wISA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3pvb20sIDAsIDAsIDAsIHpvb20sIDAsIC1zY3JvbGxMZWZ0ISAtIHpvb20gKiB2aWV3Qm94IVswXSwgLXNjcm9sbFRvcCEgLSB6b29tICogdmlld0JveCFbMV0sIDFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBzZXRTY3JvbGxMZWZ0KGxlZnQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lckJveCA9IGdldFZpZXdwb3J0Q29udGFpbmVyQm94KHRoaXMuYm9hcmQpO1xuICAgICAgICBjb25zdCBzY3JvbGxCYXJXaWR0aCA9IHRoaXMucGxhaXRPcHRpb25zPy5oaWRlU2Nyb2xsYmFyID8gU0NST0xMX0JBUl9XSURUSCA6IDA7XG4gICAgICAgIGNvbnN0IHsgdmlld3BvcnRXaWR0aCB9ID0gdGhpcy52aWV3cG9ydFN0YXRlO1xuICAgICAgICBjb25zdCB3aWR0aCA9IHZpZXdwb3J0V2lkdGghIC0gdmlld3BvcnRDb250YWluZXJCb3gud2lkdGggKyBzY3JvbGxCYXJXaWR0aDtcbiAgICAgICAgdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbExlZnQgPSBsZWZ0IDwgMCA/IDAgOiBsZWZ0ID4gd2lkdGggPyB3aWR0aCA6IGxlZnQ7XG4gICAgfVxuXG4gICAgc2V0U2Nyb2xsVG9wKHRvcDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyQm94ID0gZ2V0Vmlld3BvcnRDb250YWluZXJCb3godGhpcy5ib2FyZCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gdGhpcy5wbGFpdE9wdGlvbnM/LmhpZGVTY3JvbGxiYXIgPyBTQ1JPTExfQkFSX1dJRFRIIDogMDtcbiAgICAgICAgY29uc3QgeyB2aWV3cG9ydEhlaWdodCB9ID0gdGhpcy52aWV3cG9ydFN0YXRlO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSB2aWV3cG9ydEhlaWdodCEgLSB2aWV3cG9ydENvbnRhaW5lckJveC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aDtcbiAgICAgICAgdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbFRvcCA9IHRvcCA8IDAgPyAwIDogdG9wID4gaGVpZ2h0ID8gaGVpZ2h0IDogdG9wO1xuICAgIH1cblxuICAgIHNldFNjcm9sbChsZWZ0OiBudW1iZXIsIHRvcDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0U2Nyb2xsTGVmdChsZWZ0KTtcbiAgICAgICAgdGhpcy5zZXRTY3JvbGxUb3AodG9wKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3Qm94U3R5bGVzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRTY3JvbGxpbmcoKTtcbiAgICAgICAgdGhpcy5zZXRWaWV3cG9ydCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmlld0JveFN0eWxlcygpIHtcbiAgICAgICAgY29uc3QgeyBob3N0LCB2aWV3cG9ydFN0YXRlIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0LCB2aWV3Qm94IH0gPSB2aWV3cG9ydFN0YXRlO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKGhvc3QsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKGhvc3QsICd3aWR0aCcsIGAke3ZpZXdwb3J0V2lkdGh9cHhgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUoaG9zdCwgJ2hlaWdodCcsIGAke3ZpZXdwb3J0SGVpZ2h0fXB4YCk7XG5cbiAgICAgICAgaWYgKHZpZXdCb3ggJiYgdmlld0JveFsyXSA+IDAgJiYgdmlld0JveFszXSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZShob3N0LCAndmlld0JveCcsIHZpZXdCb3guam9pbignICcpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmlld3BvcnRTY3JvbGxpbmcoKSB7XG4gICAgICAgIGNvbnN0IHsgdmlld3BvcnRDb250YWluZXIsIHZpZXdwb3J0U3RhdGUgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSB2aWV3cG9ydFN0YXRlO1xuICAgICAgICB2aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0ITtcbiAgICAgICAgdmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3AhO1xuICAgIH1cblxuICAgIHNldFZpZXdwb3J0KCkge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMuYm9hcmQ/LnZpZXdwb3J0O1xuICAgICAgICBjb25zdCBvbGRPcmlnaW5hdGlvbkNvb3JkID0gdmlld3BvcnQ/Lm9yaWdpbmF0aW9uQ29vcmQgPz8gW107XG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmF0aW9uQ29vcmQgPSBpbnZlcnRWaWV3cG9ydENvb3JkaW5hdGVzKFswLCAwXSwgbWF0cml4KTtcblxuICAgICAgICBpZiAoIW9yaWdpbmF0aW9uQ29vcmQuZXZlcnkoKGl0ZW0sIGluZGV4KSA9PiBpdGVtID09PSBvbGRPcmlnaW5hdGlvbkNvb3JkW2luZGV4XSkpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Vmlld3BvcnQodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgICAgIC4uLnZpZXdwb3J0LFxuICAgICAgICAgICAgICAgIHpvb206IHRoaXMudmlld3BvcnRTdGF0ZS56b29tLFxuICAgICAgICAgICAgICAgIG9yaWdpbmF0aW9uQ29vcmRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH07XG5cbiAgICBhZGFwdEhhbmRsZSgpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQm94ID0gZ2V0Vmlld3BvcnRDb250YWluZXJCb3godGhpcy5ib2FyZCk7XG4gICAgICAgIGNvbnN0IHJvb3RHcm91cCA9IHRoaXMuaG9zdC5maXJzdENoaWxkIGFzIFNWR0dyYXBoaWNzRWxlbWVudDtcbiAgICAgICAgY29uc3QgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcblxuICAgICAgICBjb25zdCByb290R3JvdXBCb3ggPSByb290R3JvdXAuZ2V0QkJveCgpO1xuICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IFtjb250YWluZXJCb3gud2lkdGggLyAyLCBjb250YWluZXJCb3guaGVpZ2h0IC8gMl07XG4gICAgICAgIGNvbnN0IHJvb3RHcm91cENlbnRlclggPSByb290R3JvdXBCb3gueCArIHJvb3RHcm91cEJveC53aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IHJvb3RHcm91cENlbnRlclkgPSByb290R3JvdXBCb3gueSArIHJvb3RHcm91cEJveC5oZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFBvaW50ID0gdHJhbnNmb3JtTWF0MyhbXSwgW3Jvb3RHcm91cENlbnRlclgsIHJvb3RHcm91cENlbnRlclksIDFdLCBtYXRyaXgpO1xuXG4gICAgICAgIGNvbnN0IG9mZnNldExlZnQgPSBjZW50ZXJQb2ludFswXSAtIHRyYW5zZm9ybWVkUG9pbnRbMF07XG4gICAgICAgIGNvbnN0IG9mZnNldFRvcCA9IGNlbnRlclBvaW50WzFdIC0gdHJhbnNmb3JtZWRQb2ludFsxXTtcblxuICAgICAgICBjb25zdCB7IGF1dG9GaXRQYWRkaW5nLCB6b29tLCBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IHRoaXMudmlld3BvcnRTdGF0ZTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGNvbnRhaW5lckJveC53aWR0aCAtIDIgKiBhdXRvRml0UGFkZGluZztcbiAgICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBjb250YWluZXJCb3guaGVpZ2h0IC0gMiAqIGF1dG9GaXRQYWRkaW5nO1xuICAgICAgICBsZXQgbmV3Wm9vbSA9IHpvb207XG4gICAgICAgIGlmICh2aWV3cG9ydFdpZHRoIDwgcm9vdEdyb3VwQm94LndpZHRoIHx8IHZpZXdwb3J0SGVpZ2h0IDwgcm9vdEdyb3VwQm94LmhlaWdodCkge1xuICAgICAgICAgICAgbmV3Wm9vbSA9IE1hdGgubWluKHZpZXdwb3J0V2lkdGggLyByb290R3JvdXBCb3gud2lkdGgsIHZpZXdwb3J0SGVpZ2h0IC8gcm9vdEdyb3VwQm94LmhlaWdodCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdab29tID0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0U2Nyb2xsTGVmdChzY3JvbGxMZWZ0ISAtIG9mZnNldExlZnQpO1xuICAgICAgICB0aGlzLnNldFNjcm9sbFRvcChzY3JvbGxUb3AhIC0gb2Zmc2V0VG9wKTtcbiAgICAgICAgdGhpcy5jYWxjVmlld0JveChuZXdab29tKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3Qm94U3R5bGVzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRTY3JvbGxpbmcoKTtcbiAgICAgICAgdGhpcy5zZXRWaWV3cG9ydCgpO1xuICAgIH1cblxuICAgIHpvb21JbkhhbmRsZSgpIHtcbiAgICAgICAgdGhpcy5jYWxjVmlld0JveCh0aGlzLnZpZXdwb3J0U3RhdGUuem9vbSArIDAuMSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld0JveFN0eWxlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0U2Nyb2xsaW5nKCk7XG4gICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcbiAgICB9XG5cbiAgICB6b29tT3V0SGFuZGxlKCkge1xuICAgICAgICB0aGlzLmNhbGNWaWV3Qm94KHRoaXMudmlld3BvcnRTdGF0ZS56b29tIC0gMC4xKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3Qm94U3R5bGVzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRTY3JvbGxpbmcoKTtcbiAgICAgICAgdGhpcy5zZXRWaWV3cG9ydCgpO1xuICAgIH1cblxuICAgIHJlc2V0Wm9vbUhhbmRlbCgpIHtcbiAgICAgICAgdGhpcy5jYWxjVmlld0JveCgxKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3Qm94U3R5bGVzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRTY3JvbGxpbmcoKTtcbiAgICAgICAgdGhpcy5zZXRWaWV3cG9ydCgpO1xuICAgIH1cblxuICAgIG1vdmluZ0NoYW5nZShpc01vdmluZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzTW92aW5nID0gaXNNb3Zpbmc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIEhPU1RfVE9fUk9VR0hfU1ZHLmRlbGV0ZSh0aGlzLmhvc3QpO1xuICAgICAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtYXJrRm9yQ2hlY2soKSB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHNjcm9sbFRvUmVjdGFuZ2xlKGNsaWVudDogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHRoaXMuY2FsY1ZpZXdCb3goKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3Qm94U3R5bGVzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRTY3JvbGxpbmcoKTtcbiAgICAgICAgdGhpcy5zZXRWaWV3cG9ydCgpO1xuXG4gICAgICAgIGNvbnN0IHN2Z1JlY3QgPSB0aGlzLmhvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyQm94ID0gZ2V0Vmlld3BvcnRDb250YWluZXJCb3godGhpcy5ib2FyZCk7XG5cbiAgICAgICAgaWYgKHN2Z1JlY3Qud2lkdGggPiB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCB8fCBzdmdSZWN0LmhlaWdodCA+IHZpZXdwb3J0Q29udGFpbmVyQm94LmhlaWdodCkge1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSB0aGlzLnBsYWl0T3B0aW9ucz8uaGlkZVNjcm9sbGJhciA/IFNDUk9MTF9CQVJfV0lEVEggOiAwO1xuICAgICAgICAgICAgY29uc3QgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgICAgIGNvbnN0IFtub2RlUG9pbnRYLCBub2RlUG9pbnRZXSA9IGNvbnZlcnRUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMoW2NsaWVudC54LCBjbGllbnQueV0sIG1hdHJpeCk7XG4gICAgICAgICAgICBjb25zdCBbZnVsbE5vZGVQb2ludFgsIGZ1bGxOb2RlUG9pbnRZXSA9IGNvbnZlcnRUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMoXG4gICAgICAgICAgICAgICAgW2NsaWVudC54ICsgY2xpZW50LndpZHRoLCBjbGllbnQueSArIGNsaWVudC5oZWlnaHRdLFxuICAgICAgICAgICAgICAgIG1hdHJpeFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGV0IG5ld0xlZnQgPSB0aGlzLnZpZXdwb3J0U3RhdGUuc2Nyb2xsTGVmdCE7XG4gICAgICAgICAgICBsZXQgbmV3VG9wID0gdGhpcy52aWV3cG9ydFN0YXRlLnNjcm9sbFRvcCE7XG5cbiAgICAgICAgICAgIGlmIChub2RlUG9pbnRYIDwgMCkge1xuICAgICAgICAgICAgICAgIG5ld0xlZnQgLT0gTWF0aC5hYnMobm9kZVBvaW50WCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZVBvaW50WCA+IDAgJiYgZnVsbE5vZGVQb2ludFggPiB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCkge1xuICAgICAgICAgICAgICAgIG5ld0xlZnQgKz0gZnVsbE5vZGVQb2ludFggLSB2aWV3cG9ydENvbnRhaW5lckJveC53aWR0aCArIHNjcm9sbEJhcldpZHRoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZVBvaW50WSA8IDApIHtcbiAgICAgICAgICAgICAgICBuZXdUb3AgLT0gTWF0aC5hYnMobm9kZVBvaW50WSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZVBvaW50WSA+IDAgJiYgZnVsbE5vZGVQb2ludFkgPiB2aWV3cG9ydENvbnRhaW5lckJveC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBuZXdUb3AgKz0gZnVsbE5vZGVQb2ludFkgLSB2aWV3cG9ydENvbnRhaW5lckJveC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0xlZnQgIT09IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxMZWZ0ISB8fCBuZXdUb3AgIT09IHRoaXMudmlld3BvcnRTdGF0ZS5zY3JvbGxUb3AhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGwobmV3TGVmdCwgbmV3VG9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gJy4vcG9pbnRlcic7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBQbGFpdEVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCB9IGZyb20gJy4uL2NvcmUvZWxlbWVudC9jb250ZXh0JztcbmltcG9ydCB7IFBsYWl0SGlzdG9yeSB9IGZyb20gJy4vaGlzdG9yeSc7XG5pbXBvcnQgeyBQbGFpdE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi92aWV3cG9ydCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlL2VsZW1lbnQvcGx1Z2luLWVsZW1lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Qm9hcmQge1xuICAgIGhvc3Q6IFNWR0VsZW1lbnQ7XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIGNoaWxkcmVuOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBvcGVyYXRpb25zOiBQbGFpdE9wZXJhdGlvbltdO1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbDtcbiAgICBwb2ludGVyOiBQbGFpdFBvaW50ZXJUeXBlO1xuICAgIGhpc3Rvcnk6IFBsYWl0SGlzdG9yeTtcbiAgICBvcHRpb25zOiBQbGFpdEJvYXJkT3B0aW9ucztcbiAgICB1bmRvOiAoKSA9PiB2b2lkO1xuICAgIHJlZG86ICgpID0+IHZvaWQ7XG4gICAgYXBwbHk6IChvcGVyYXRpb246IFBsYWl0T3BlcmF0aW9uKSA9PiB2b2lkO1xuICAgIG9uQ2hhbmdlOiAoKSA9PiB2b2lkO1xuICAgIG1vdXNlZG93bjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGdsb2JhbE1vdXNldXA6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBtb3VzZW1vdmU6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBrZXlkb3duOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG4gICAga2V5dXA6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgICBzZXRGcmFnbWVudDogKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHZvaWQ7XG4gICAgaW5zZXJ0RnJhZ21lbnQ6IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB2b2lkO1xuICAgIGRlbGV0ZUZyYWdtZW50OiAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4gdm9pZDtcbiAgICBkYmxjbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGRyYXdFbGVtZW50OiAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4gU1ZHR0VsZW1lbnRbXSB8IENvbXBvbmVudFR5cGU8UGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PjtcbiAgICByZWRyYXdFbGVtZW50OiAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCwgcHJldmlvdXNDb250ZXh0PzogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4gU1ZHR0VsZW1lbnRbXSB8IHZvaWQ7XG4gICAgZGVzdHJveUVsZW1lbnQ6IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Qm9hcmRDaGFuZ2VFdmVudCB7XG4gICAgY2hpbGRyZW46IFBsYWl0RWxlbWVudFtdO1xuICAgIG9wZXJhdGlvbnM6IFBsYWl0T3BlcmF0aW9uW107XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEJvYXJkT3B0aW9ucyB7XG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgYWxsb3dDbGVhckJvYXJkOiBib29sZWFuO1xuICAgIGhpZGVTY3JvbGxiYXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZE1vdmUge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZFZpZXdwb3J0IHtcbiAgICB6b29tOiBudW1iZXI7XG4gICAgYXV0b0ZpdFBhZGRpbmc6IG51bWJlcjtcbiAgICBzY3JvbGxCYXJXaWR0aDogbnVtYmVyO1xuICAgIGZvY3VzUG9pbnQ/OiBudW1iZXJbXTtcbiAgICB2aWV3Qm94PzogbnVtYmVyW107XG4gICAgdmlld3BvcnRXaWR0aD86IG51bWJlcjtcbiAgICB2aWV3cG9ydEhlaWdodD86IG51bWJlcjtcbiAgICBzY3JvbGxMZWZ0PzogbnVtYmVyO1xuICAgIHNjcm9sbFRvcD86IG51bWJlcjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gJy4vcG9pbnRlcic7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBQbGFpdEVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCB9IGZyb20gJy4uL2NvcmUvZWxlbWVudC9jb250ZXh0JztcbmltcG9ydCB7IFBsYWl0SGlzdG9yeSB9IGZyb20gJy4vaGlzdG9yeSc7XG5pbXBvcnQgeyBQbGFpdE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi92aWV3cG9ydCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlL2VsZW1lbnQvcGx1Z2luLWVsZW1lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Qm9hcmQge1xuICAgIGhvc3Q6IFNWR0VsZW1lbnQ7XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIGNoaWxkcmVuOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBvcGVyYXRpb25zOiBQbGFpdE9wZXJhdGlvbltdO1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbDtcbiAgICBwb2ludGVyOiBQbGFpdFBvaW50ZXJUeXBlO1xuICAgIGhpc3Rvcnk6IFBsYWl0SGlzdG9yeTtcbiAgICBvcHRpb25zOiBQbGFpdEJvYXJkT3B0aW9ucztcbiAgICB1bmRvOiAoKSA9PiB2b2lkO1xuICAgIHJlZG86ICgpID0+IHZvaWQ7XG4gICAgYXBwbHk6IChvcGVyYXRpb246IFBsYWl0T3BlcmF0aW9uKSA9PiB2b2lkO1xuICAgIG9uQ2hhbmdlOiAoKSA9PiB2b2lkO1xuICAgIG1vdXNlZG93bjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGdsb2JhbE1vdXNldXA6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBtb3VzZW1vdmU6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBrZXlkb3duOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG4gICAga2V5dXA6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgICBzZXRGcmFnbWVudDogKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHZvaWQ7XG4gICAgaW5zZXJ0RnJhZ21lbnQ6IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB2b2lkO1xuICAgIGRlbGV0ZUZyYWdtZW50OiAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4gdm9pZDtcbiAgICBkYmxjbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGRyYXdFbGVtZW50OiAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4gU1ZHR0VsZW1lbnRbXSB8IENvbXBvbmVudFR5cGU8UGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PjtcbiAgICByZWRyYXdFbGVtZW50OiAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCwgcHJldmlvdXNDb250ZXh0PzogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4gU1ZHR0VsZW1lbnRbXSB8IHZvaWQ7XG4gICAgZGVzdHJveUVsZW1lbnQ6IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Qm9hcmRDaGFuZ2VFdmVudCB7XG4gICAgY2hpbGRyZW46IFBsYWl0RWxlbWVudFtdO1xuICAgIG9wZXJhdGlvbnM6IFBsYWl0T3BlcmF0aW9uW107XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEJvYXJkT3B0aW9ucyB7XG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgYWxsb3dDbGVhckJvYXJkOiBib29sZWFuO1xuICAgIGhpZGVTY3JvbGxiYXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZE1vdmUge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZFZpZXdwb3J0IHtcbiAgICB6b29tOiBudW1iZXI7XG4gICAgYXV0b0ZpdFBhZGRpbmc6IG51bWJlcjtcbiAgICBmb2N1c1BvaW50PzogbnVtYmVyW107XG4gICAgdmlld0JveD86IG51bWJlcltdO1xuICAgIHZpZXdwb3J0V2lkdGg/OiBudW1iZXI7XG4gICAgdmlld3BvcnRIZWlnaHQ/OiBudW1iZXI7XG4gICAgc2Nyb2xsTGVmdD86IG51bWJlcjtcbiAgICBzY3JvbGxUb3A/OiBudW1iZXI7XG59XG4iXX0=
@@ -1,7 +1,10 @@
1
- import { PLAIT_BOARD_TO_COMPONENT } from "../utils";
1
+ import { PLAIT_BOARD_TO_COMPONENT } from '../utils';
2
2
  export const updatePointerType = (board, pointer) => {
3
3
  board.pointer = pointer;
4
4
  const boardComponent = PLAIT_BOARD_TO_COMPONENT.get(board);
5
5
  boardComponent?.markForCheck();
6
6
  };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmb3Jtcy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUM5RSxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN4QixNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsY0FBYyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9ib2FyZFwiO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3BvaW50ZXJcIjtcbmltcG9ydCB7IFBMQUlUX0JPQVJEX1RPX0NPTVBPTkVOVCB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUG9pbnRlclR5cGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFBsYWl0UG9pbnRlclR5cGUpID0+IHtcbiAgICBib2FyZC5wb2ludGVyID0gcG9pbnRlcjtcbiAgICBjb25zdCBib2FyZENvbXBvbmVudCA9IFBMQUlUX0JPQVJEX1RPX0NPTVBPTkVOVC5nZXQoYm9hcmQpO1xuICAgIGJvYXJkQ29tcG9uZW50Py5tYXJrRm9yQ2hlY2soKTtcbn07XG5cbiJdfQ==
7
+ export const BoardTransforms = {
8
+ updatePointerType
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmb3Jtcy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUM5RSxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN4QixNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsY0FBYyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixpQkFBaUI7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0UG9pbnRlclR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50ZXInO1xuaW1wb3J0IHsgUExBSVRfQk9BUkRfVE9fQ09NUE9ORU5UIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUG9pbnRlclR5cGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFBsYWl0UG9pbnRlclR5cGUpID0+IHtcbiAgICBib2FyZC5wb2ludGVyID0gcG9pbnRlcjtcbiAgICBjb25zdCBib2FyZENvbXBvbmVudCA9IFBMQUlUX0JPQVJEX1RPX0NPTVBPTkVOVC5nZXQoYm9hcmQpO1xuICAgIGJvYXJkQ29tcG9uZW50Py5tYXJrRm9yQ2hlY2soKTtcbn07XG5cbmV4cG9ydCBjb25zdCBCb2FyZFRyYW5zZm9ybXMgPSB7XG4gICAgdXBkYXRlUG9pbnRlclR5cGVcbn07XG4iXX0=
@@ -2,10 +2,11 @@ import { GeneralTransforms } from './general';
2
2
  import { NodeTransforms } from './node';
3
3
  import { SelectionTransforms } from './selection';
4
4
  import { ViewportTransforms } from './viewport';
5
+ export { BoardTransforms } from './board';
5
6
  export const Transforms = {
6
7
  ...GeneralTransforms,
7
8
  ...ViewportTransforms,
8
9
  ...SelectionTransforms,
9
10
  ...NodeTransforms
10
11
  };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmb3Jtcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBa0Y7SUFDckcsR0FBRyxpQkFBaUI7SUFDcEIsR0FBRyxrQkFBa0I7SUFDckIsR0FBRyxtQkFBbUI7SUFDdEIsR0FBRyxjQUFjO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmFsVHJhbnNmb3JtcyB9IGZyb20gJy4vZ2VuZXJhbCc7XG5pbXBvcnQgeyBOb2RlVHJhbnNmb3JtcyB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25UcmFuc2Zvcm1zIH0gZnJvbSAnLi9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgVmlld3BvcnRUcmFuc2Zvcm1zIH0gZnJvbSAnLi92aWV3cG9ydCc7XG5cbmV4cG9ydCBjb25zdCBUcmFuc2Zvcm1zOiBHZW5lcmFsVHJhbnNmb3JtcyAmIFZpZXdwb3J0VHJhbnNmb3JtcyAmIFNlbGVjdGlvblRyYW5zZm9ybXMgJiBOb2RlVHJhbnNmb3JtcyA9IHtcbiAgICAuLi5HZW5lcmFsVHJhbnNmb3JtcyxcbiAgICAuLi5WaWV3cG9ydFRyYW5zZm9ybXMsXG4gICAgLi4uU2VsZWN0aW9uVHJhbnNmb3JtcyxcbiAgICAuLi5Ob2RlVHJhbnNmb3Jtc1xufTtcbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmb3Jtcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFrRjtJQUNyRyxHQUFHLGlCQUFpQjtJQUNwQixHQUFHLGtCQUFrQjtJQUNyQixHQUFHLG1CQUFtQjtJQUN0QixHQUFHLGNBQWM7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlbmVyYWxUcmFuc2Zvcm1zIH0gZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCB7IE5vZGVUcmFuc2Zvcm1zIH0gZnJvbSAnLi9ub2RlJztcbmltcG9ydCB7IFNlbGVjdGlvblRyYW5zZm9ybXMgfSBmcm9tICcuL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBWaWV3cG9ydFRyYW5zZm9ybXMgfSBmcm9tICcuL3ZpZXdwb3J0JztcblxuZXhwb3J0IHsgQm9hcmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi9ib2FyZCc7XG5leHBvcnQgY29uc3QgVHJhbnNmb3JtczogR2VuZXJhbFRyYW5zZm9ybXMgJiBWaWV3cG9ydFRyYW5zZm9ybXMgJiBTZWxlY3Rpb25UcmFuc2Zvcm1zICYgTm9kZVRyYW5zZm9ybXMgPSB7XG4gICAgLi4uR2VuZXJhbFRyYW5zZm9ybXMsXG4gICAgLi4uVmlld3BvcnRUcmFuc2Zvcm1zLFxuICAgIC4uLlNlbGVjdGlvblRyYW5zZm9ybXMsXG4gICAgLi4uTm9kZVRyYW5zZm9ybXNcbn07XG4iXX0=