@plait/mind 0.20.0 → 0.22.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.
Files changed (45) hide show
  1. package/base/image-base.component.d.ts +5 -3
  2. package/drawer/node-image.drawer.d.ts +3 -5
  3. package/esm2020/base/image-base.component.mjs +9 -5
  4. package/esm2020/drawer/node-image.drawer.mjs +34 -39
  5. package/esm2020/interfaces/element.mjs +1 -1
  6. package/esm2020/node.component.mjs +8 -9
  7. package/esm2020/plugins/with-abstract-resize.mjs +1 -2
  8. package/esm2020/plugins/with-mind-hotkey.mjs +3 -2
  9. package/esm2020/plugins/with-mind.mjs +5 -4
  10. package/esm2020/plugins/with-node-dnd.mjs +3 -3
  11. package/esm2020/plugins/with-node-hover-detect.mjs +16 -0
  12. package/esm2020/plugins/with-node-image.mjs +60 -0
  13. package/esm2020/plugins/with-node-resize.mjs +122 -0
  14. package/esm2020/transforms/index.mjs +3 -2
  15. package/esm2020/transforms/node.mjs +13 -2
  16. package/esm2020/utils/node/common.mjs +11 -2
  17. package/esm2020/utils/node/image.mjs +23 -0
  18. package/esm2020/utils/node/index.mjs +2 -1
  19. package/esm2020/utils/node-hover/extend.mjs +54 -0
  20. package/esm2020/utils/position/image.mjs +9 -4
  21. package/esm2020/utils/position/topic.mjs +3 -3
  22. package/esm2020/utils/space/node-space.mjs +23 -22
  23. package/fesm2015/plait-mind.mjs +328 -148
  24. package/fesm2015/plait-mind.mjs.map +1 -1
  25. package/fesm2020/plait-mind.mjs +329 -148
  26. package/fesm2020/plait-mind.mjs.map +1 -1
  27. package/interfaces/element.d.ts +1 -0
  28. package/node.component.d.ts +0 -1
  29. package/package.json +1 -1
  30. package/plugins/with-mind-hotkey.d.ts +1 -1
  31. package/plugins/with-node-hover-detect.d.ts +2 -0
  32. package/plugins/with-node-image.d.ts +2 -0
  33. package/plugins/with-node-resize.d.ts +10 -0
  34. package/styles/styles.scss +9 -2
  35. package/transforms/index.d.ts +1 -0
  36. package/transforms/node.d.ts +1 -0
  37. package/utils/node/common.d.ts +2 -0
  38. package/utils/node/image.d.ts +6 -0
  39. package/utils/node/index.d.ts +1 -0
  40. package/utils/node-hover/extend.d.ts +9 -0
  41. package/utils/space/node-space.d.ts +3 -3
  42. package/esm2020/plugins/with-mind-image.mjs +0 -49
  43. package/esm2020/plugins/with-node-hover.mjs +0 -58
  44. package/plugins/with-mind-image.d.ts +0 -2
  45. package/plugins/with-node-hover.d.ts +0 -5
@@ -1,16 +1,18 @@
1
- import { ElementRef, OnInit } from '@angular/core';
1
+ import { ChangeDetectorRef, ElementRef, OnInit } from '@angular/core';
2
2
  import { ImageItem, ImageData } from '../interfaces/element-data';
3
3
  import { PlaitBoard } from '@plait/core';
4
4
  import { MindElement } from '../interfaces';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class MindImageBaseComponent implements OnInit {
7
7
  protected elementRef: ElementRef<HTMLElement>;
8
+ cdr: ChangeDetectorRef;
8
9
  imageItem: ImageItem;
9
10
  board: PlaitBoard;
10
11
  element: MindElement<ImageData>;
12
+ isFocus: boolean;
11
13
  get nativeElement(): HTMLElement;
12
- constructor(elementRef: ElementRef<HTMLElement>);
14
+ constructor(elementRef: ElementRef<HTMLElement>, cdr: ChangeDetectorRef);
13
15
  ngOnInit(): void;
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<MindImageBaseComponent, never>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<MindImageBaseComponent, never, never, { "imageItem": "imageItem"; "board": "board"; "element": "element"; }, {}, never, never, false, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MindImageBaseComponent, never, never, { "imageItem": "imageItem"; "board": "board"; "element": "element"; "isFocus": "isFocus"; }, {}, never, never, false, never>;
16
18
  }
@@ -1,4 +1,4 @@
1
- import { ImageData, MindElement } from '../interfaces';
1
+ import { MindElement } from '../interfaces';
2
2
  import { PlaitMindBoard } from '../plugins/with-mind.board';
3
3
  import { ComponentRef, ViewContainerRef } from '@angular/core';
4
4
  import { MindImageBaseComponent } from '../base/image-base.component';
@@ -7,10 +7,8 @@ export declare class NodeImageDrawer {
7
7
  private viewContainerRef;
8
8
  componentRef: ComponentRef<MindImageBaseComponent> | null;
9
9
  g?: SVGGElement;
10
- activeG?: SVGGElement;
11
10
  constructor(board: PlaitMindBoard, viewContainerRef: ViewContainerRef);
12
- drawImage(element: MindElement): SVGGElement | undefined;
13
- drawActive(element: MindElement<ImageData>): void;
14
- destroyActive(): void;
11
+ drawImage(nodeG: SVGGElement, element: MindElement): void;
12
+ updateImage(nodeG: SVGGElement, previous: MindElement, current: MindElement): void;
15
13
  destroy(): void;
16
14
  }
@@ -4,13 +4,15 @@ export class MindImageBaseComponent {
4
4
  get nativeElement() {
5
5
  return this.elementRef.nativeElement;
6
6
  }
7
- constructor(elementRef) {
7
+ constructor(elementRef, cdr) {
8
8
  this.elementRef = elementRef;
9
+ this.cdr = cdr;
10
+ this.isFocus = false;
9
11
  }
10
12
  ngOnInit() { }
11
13
  }
12
- MindImageBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindImageBaseComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
13
- MindImageBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindImageBaseComponent, inputs: { imageItem: "imageItem", board: "board", element: "element" }, host: { classAttribute: "mind-node-image" }, ngImport: i0 });
14
+ MindImageBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindImageBaseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
15
+ MindImageBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindImageBaseComponent, inputs: { imageItem: "imageItem", board: "board", element: "element", isFocus: "isFocus" }, host: { classAttribute: "mind-node-image" }, ngImport: i0 });
14
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindImageBaseComponent, decorators: [{
15
17
  type: Directive,
16
18
  args: [{
@@ -18,11 +20,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
18
20
  class: 'mind-node-image'
19
21
  }
20
22
  }]
21
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { imageItem: [{
23
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { imageItem: [{
22
24
  type: Input
23
25
  }], board: [{
24
26
  type: Input
25
27
  }], element: [{
26
28
  type: Input
29
+ }], isFocus: [{
30
+ type: Input
27
31
  }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9iYXNlL2ltYWdlLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQVVyRSxNQUFNLE9BQU8sc0JBQXNCO0lBVS9CLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQXNCLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO0lBQUcsQ0FBQztJQUU3RCxRQUFRLEtBQVUsQ0FBQzs7bUhBaEJWLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1AsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxpQkFBaUI7cUJBQzNCO2lCQUNKO2lHQUdHLFNBQVM7c0JBRFIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWFnZUl0ZW0sIEltYWdlRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWluZC1ub2RlLWltYWdlJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWluZEltYWdlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBpbWFnZUl0ZW0hOiBJbWFnZUl0ZW07XG5cbiAgICBASW5wdXQoKVxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudCE6IE1pbmRFbGVtZW50PEltYWdlRGF0YT47XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cbn1cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9iYXNlL2ltYWdlLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFVeEYsTUFBTSxPQUFPLHNCQUFzQjtJQWEvQixJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFzQixVQUFtQyxFQUFTLEdBQXNCO1FBQWxFLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFOeEYsWUFBTyxHQUFZLEtBQUssQ0FBQztJQU1rRSxDQUFDO0lBRTVGLFFBQVEsS0FBVSxDQUFDOzttSEFuQlYsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLGlCQUFpQjtxQkFDM0I7aUJBQ0o7aUlBR0csU0FBUztzQkFEUixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VJdGVtLCBJbWFnZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQtZGF0YSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21pbmQtbm9kZS1pbWFnZSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1pbmRJbWFnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgaW1hZ2VJdGVtITogSW1hZ2VJdGVtO1xuXG4gICAgQElucHV0KClcbiAgICBib2FyZCE6IFBsYWl0Qm9hcmQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnQhOiBNaW5kRWxlbWVudDxJbWFnZURhdGE+O1xuXG4gICAgQElucHV0KClcbiAgICBpc0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG59XG4iXX0=
@@ -1,52 +1,47 @@
1
- import { PlaitBoard, RectangleClient, createForeignObject, createG } from '@plait/core';
1
+ import { createForeignObject, createG, updateForeignObject } from '@plait/core';
2
2
  import { MindElement } from '../interfaces';
3
3
  import { getImageForeignRectangle } from '../utils';
4
4
  import { MindImageBaseComponent } from '../base/image-base.component';
5
- import { PRIMARY_COLOR, WithMindPluginKey } from '../constants';
5
+ import { WithMindPluginKey } from '../constants';
6
6
  export class NodeImageDrawer {
7
7
  constructor(board, viewContainerRef) {
8
8
  this.board = board;
9
9
  this.viewContainerRef = viewContainerRef;
10
10
  this.componentRef = null;
11
11
  }
12
- drawImage(element) {
13
- this.destroy();
14
- if (MindElement.hasImage(element)) {
15
- this.g = createG();
16
- const foreignRectangle = getImageForeignRectangle(this.board, element);
17
- const foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
18
- this.g.append(foreignObject);
19
- if (this.componentRef) {
20
- this.componentRef.destroy();
21
- this.componentRef = null;
22
- }
23
- const componentType = this.board.getPluginOptions(WithMindPluginKey).imageComponentType || MindImageBaseComponent;
24
- if (!componentType) {
25
- throw new Error('Not implement drawEmoji method error.');
26
- }
27
- this.componentRef = this.viewContainerRef.createComponent(componentType);
28
- this.componentRef.instance.board = this.board;
29
- this.componentRef.instance.element = element;
30
- this.componentRef.instance.imageItem = element.data.image;
31
- foreignObject.append(this.componentRef.instance.nativeElement);
32
- return this.g;
12
+ drawImage(nodeG, element) {
13
+ if (!MindElement.hasImage(element)) {
14
+ this.destroy();
15
+ return;
33
16
  }
34
- return undefined;
35
- }
36
- drawActive(element) {
37
- this.destroyActive();
38
- const imageRectangle = getImageForeignRectangle(this.board, element);
39
- const rectangle = RectangleClient.getOutlineRectangle(imageRectangle, -1);
40
- const roughSVG = PlaitBoard.getRoughSVG(this.board);
41
- this.activeG = roughSVG.rectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height, {
42
- stroke: PRIMARY_COLOR,
43
- fill: '',
44
- fillStyle: 'solid'
45
- });
46
- this.g?.append(this.activeG);
17
+ this.g = createG();
18
+ const foreignRectangle = getImageForeignRectangle(this.board, element);
19
+ const foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
20
+ this.g.append(foreignObject);
21
+ const componentType = this.board.getPluginOptions(WithMindPluginKey).imageComponentType || MindImageBaseComponent;
22
+ if (!componentType) {
23
+ throw new Error('Not implement drawEmoji method error.');
24
+ }
25
+ this.componentRef = this.viewContainerRef.createComponent(componentType);
26
+ this.componentRef.instance.board = this.board;
27
+ this.componentRef.instance.element = element;
28
+ this.componentRef.instance.imageItem = element.data.image;
29
+ this.componentRef.instance.cdr.markForCheck();
30
+ foreignObject.append(this.componentRef.instance.nativeElement);
31
+ nodeG.appendChild(this.g);
47
32
  }
48
- destroyActive() {
49
- this.activeG?.remove();
33
+ updateImage(nodeG, previous, current) {
34
+ if (!MindElement.hasImage(previous) || !MindElement.hasImage(current)) {
35
+ this.drawImage(nodeG, current);
36
+ return;
37
+ }
38
+ if (previous !== current && this.componentRef) {
39
+ this.componentRef.instance.element = current;
40
+ this.componentRef.instance.imageItem = current.data.image;
41
+ }
42
+ const currentForeignObject = getImageForeignRectangle(this.board, current);
43
+ updateForeignObject(this.g, currentForeignObject.width, currentForeignObject.height, currentForeignObject.x, currentForeignObject.y);
44
+ this.componentRef?.instance.cdr.markForCheck();
50
45
  }
51
46
  destroy() {
52
47
  if (this.g) {
@@ -58,4 +53,4 @@ export class NodeImageDrawer {
58
53
  }
59
54
  }
60
55
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1pbWFnZS5kcmF3ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9kcmF3ZXIvbm9kZS1pbWFnZS5kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hGLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFaEUsTUFBTSxPQUFPLGVBQWU7SUFPeEIsWUFBb0IsS0FBcUIsRUFBVSxnQkFBa0M7UUFBakUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTnJGLGlCQUFZLEdBQWdELElBQUksQ0FBQztJQU11QixDQUFDO0lBRXpGLFNBQVMsQ0FBQyxPQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUNuQixNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkUsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQ3JDLGdCQUFnQixDQUFDLENBQUMsRUFDbEIsZ0JBQWdCLENBQUMsQ0FBQyxFQUNsQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQ3RCLGdCQUFnQixDQUFDLE1BQU0sQ0FDMUIsQ0FBQztZQUVGLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTdCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7YUFDNUI7WUFDRCxNQUFNLGFBQWEsR0FDZixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFrQixpQkFBaUIsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLHNCQUFzQixDQUFDO1lBQ2pILElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQzthQUM1RDtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUUxRCxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBK0I7UUFDdEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLE1BQU0sY0FBYyxHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNGLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbkI7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUM1QjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgY3JlYXRlRm9yZWlnbk9iamVjdCwgY3JlYXRlRyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEltYWdlRGF0YSwgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNaW5kSW1hZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9pbWFnZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXRoTWluZE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wdGlvbnMnO1xuaW1wb3J0IHsgUFJJTUFSWV9DT0xPUiwgV2l0aE1pbmRQbHVnaW5LZXkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgTm9kZUltYWdlRHJhd2VyIHtcbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxNaW5kSW1hZ2VCYXNlQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgZz86IFNWR0dFbGVtZW50O1xuXG4gICAgYWN0aXZlRz86IFNWR0dFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBib2FyZDogUGxhaXRNaW5kQm9hcmQsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIGRyYXdJbWFnZShlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICBjb25zdCBmb3JlaWduUmVjdGFuZ2xlID0gZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgZm9yZWlnbk9iamVjdCA9IGNyZWF0ZUZvcmVpZ25PYmplY3QoXG4gICAgICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS54LFxuICAgICAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUueSxcbiAgICAgICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUuaGVpZ2h0XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kKGZvcmVpZ25PYmplY3QpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nZXRQbHVnaW5PcHRpb25zPFdpdGhNaW5kT3B0aW9ucz4oV2l0aE1pbmRQbHVnaW5LZXkpLmltYWdlQ29tcG9uZW50VHlwZSB8fCBNaW5kSW1hZ2VCYXNlQ29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKCFjb21wb25lbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50IGRyYXdFbW9qaSBtZXRob2QgZXJyb3IuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50VHlwZSk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5ib2FyZCA9IHRoaXMuYm9hcmQ7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmltYWdlSXRlbSA9IGVsZW1lbnQuZGF0YS5pbWFnZTtcblxuICAgICAgICAgICAgZm9yZWlnbk9iamVjdC5hcHBlbmQodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZHJhd0FjdGl2ZShlbGVtZW50OiBNaW5kRWxlbWVudDxJbWFnZURhdGE+KSB7XG4gICAgICAgIHRoaXMuZGVzdHJveUFjdGl2ZSgpO1xuXG4gICAgICAgIGNvbnN0IGltYWdlUmVjdGFuZ2xlID0gZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShpbWFnZVJlY3RhbmdsZSwgLTEpO1xuICAgICAgICBjb25zdCByb3VnaFNWRyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRyA9IHJvdWdoU1ZHLnJlY3RhbmdsZShyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnksIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLmhlaWdodCwge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbDogJycsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZz8uYXBwZW5kKHRoaXMuYWN0aXZlRyk7XG4gICAgfVxuXG4gICAgZGVzdHJveUFjdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHPy5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5nKSB7XG4gICAgICAgICAgICB0aGlzLmcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1pbWFnZS5kcmF3ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9kcmF3ZXIvbm9kZS1pbWFnZS5kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakcsT0FBTyxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpELE1BQU0sT0FBTyxlQUFlO0lBS3hCLFlBQW9CLEtBQXFCLEVBQVUsZ0JBQWtDO1FBQWpFLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUpyRixpQkFBWSxHQUFnRCxJQUFJLENBQUM7SUFJdUIsQ0FBQztJQUV6RixTQUFTLENBQUMsS0FBa0IsRUFBRSxPQUFvQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ25CLE1BQU0sZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RSxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFrQixpQkFBaUIsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLHNCQUFzQixDQUFDO1FBQ25JLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQzVEO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUU5QyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBa0IsRUFBRSxRQUFxQixFQUFFLE9BQW9CO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLFFBQVEsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUM3RDtRQUVELE1BQU0sb0JBQW9CLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRSxtQkFBbUIsQ0FDZixJQUFJLENBQUMsQ0FBRSxFQUNQLG9CQUFvQixDQUFDLEtBQUssRUFDMUIsb0JBQW9CLENBQUMsTUFBTSxFQUMzQixvQkFBb0IsQ0FBQyxDQUFDLEVBQ3RCLG9CQUFvQixDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbkI7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUM1QjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCwgY3JlYXRlRm9yZWlnbk9iamVjdCwgY3JlYXRlRywgdXBkYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEltYWdlRGF0YSwgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNaW5kSW1hZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9pbWFnZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXRoTWluZE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wdGlvbnMnO1xuaW1wb3J0IHsgV2l0aE1pbmRQbHVnaW5LZXkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgTm9kZUltYWdlRHJhd2VyIHtcbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxNaW5kSW1hZ2VCYXNlQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgZz86IFNWR0dFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBib2FyZDogUGxhaXRNaW5kQm9hcmQsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIGRyYXdJbWFnZShub2RlRzogU1ZHR0VsZW1lbnQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGlmICghTWluZEVsZW1lbnQuaGFzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nID0gY3JlYXRlRygpO1xuICAgICAgICBjb25zdCBmb3JlaWduUmVjdGFuZ2xlID0gZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBmb3JlaWduT2JqZWN0ID0gY3JlYXRlRm9yZWlnbk9iamVjdChmb3JlaWduUmVjdGFuZ2xlLngsIGZvcmVpZ25SZWN0YW5nbGUueSwgZm9yZWlnblJlY3RhbmdsZS53aWR0aCwgZm9yZWlnblJlY3RhbmdsZS5oZWlnaHQpO1xuXG4gICAgICAgIHRoaXMuZy5hcHBlbmQoZm9yZWlnbk9iamVjdCk7XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuYm9hcmQuZ2V0UGx1Z2luT3B0aW9uczxXaXRoTWluZE9wdGlvbnM+KFdpdGhNaW5kUGx1Z2luS2V5KS5pbWFnZUNvbXBvbmVudFR5cGUgfHwgTWluZEltYWdlQmFzZUNvbXBvbmVudDtcbiAgICAgICAgaWYgKCFjb21wb25lbnRUeXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnQgZHJhd0Vtb2ppIG1ldGhvZCBlcnJvci4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50VHlwZSk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmJvYXJkID0gdGhpcy5ib2FyZDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmltYWdlSXRlbSA9IGVsZW1lbnQuZGF0YS5pbWFnZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGZvcmVpZ25PYmplY3QuYXBwZW5kKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBub2RlRy5hcHBlbmRDaGlsZCh0aGlzLmcpO1xuICAgIH1cblxuICAgIHVwZGF0ZUltYWdlKG5vZGVHOiBTVkdHRWxlbWVudCwgcHJldmlvdXM6IE1pbmRFbGVtZW50LCBjdXJyZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBpZiAoIU1pbmRFbGVtZW50Lmhhc0ltYWdlKHByZXZpb3VzKSB8fCAhTWluZEVsZW1lbnQuaGFzSW1hZ2UoY3VycmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhd0ltYWdlKG5vZGVHLCBjdXJyZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmV2aW91cyAhPT0gY3VycmVudCAmJiB0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWxlbWVudCA9IGN1cnJlbnQ7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbWFnZUl0ZW0gPSBjdXJyZW50LmRhdGEuaW1hZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50Rm9yZWlnbk9iamVjdCA9IGdldEltYWdlRm9yZWlnblJlY3RhbmdsZSh0aGlzLmJvYXJkLCBjdXJyZW50KTtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChcbiAgICAgICAgICAgIHRoaXMuZyEsXG4gICAgICAgICAgICBjdXJyZW50Rm9yZWlnbk9iamVjdC53aWR0aCxcbiAgICAgICAgICAgIGN1cnJlbnRGb3JlaWduT2JqZWN0LmhlaWdodCxcbiAgICAgICAgICAgIGN1cnJlbnRGb3JlaWduT2JqZWN0LngsXG4gICAgICAgICAgICBjdXJyZW50Rm9yZWlnbk9iamVjdC55XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5nKSB7XG4gICAgICAgICAgICB0aGlzLmcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -110,4 +110,4 @@ export var BranchShape;
110
110
  BranchShape["bight"] = "bight";
111
111
  BranchShape["polyline"] = "polyline";
112
112
  })(BranchShape || (BranchShape = {}));
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2ludGVyZmFjZXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWtCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBb0MzQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDckIsTUFBTSxFQUFFLENBQUMsS0FBVSxFQUFzQixFQUFFO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7SUFDcEMsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDdkIsU0FBUyxDQUFDLEtBQWtCLEVBQUUsTUFBc0I7UUFDaEQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE9BQU8sT0FBTyxLQUFLLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBa0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBbUIsQ0FBQztRQUN4RSxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBaUIsRUFBRSxPQUFxQjtRQUNsRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMs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Q0FBQyxLQUFLLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQStCO1FBQ3JDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxPQUFvQjtRQUMzQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBc0IsQ0FBQztRQUMxRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUFvQjtRQUM5QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBc0IsQ0FBQztRQUMxRSxJQUFJLFNBQVMsRUFBRTtZQUNYLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUM1RDtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDeEIsc0RBQWtDLENBQUE7SUFDbEMsMkNBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFHM0I7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLDhCQUFlLENBQUE7SUFDZixvQ0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0luZGVudGVkTGF5b3V0LCBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE5PREVfVE9fUEFSRU5ULCBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0Tm9kZSwgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgRUxFTUVOVF9UT19OT0RFIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQmFzZURhdGEsIEVtb2ppRGF0YSwgSW1hZ2VEYXRhIH0gZnJvbSAnLi9lbGVtZW50LWRhdGEnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluZEVsZW1lbnQ8VCA9IEJhc2VEYXRhPiBleHRlbmRzIFBsYWl0RWxlbWVudCB7XG4gICAgZGF0YTogVDtcbiAgICBjaGlsZHJlbjogTWluZEVsZW1lbnRbXTtcbiAgICByaWdodE5vZGVDb3VudD86IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGlzUm9vdD86IGJvb2xlYW47XG5cbiAgICAvLyBub2RlIHN0eWxlIGF0dHJpYnV0ZXNcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHNoYXBlPzogTWluZEVsZW1lbnRTaGFwZTtcblxuICAgIC8vIGxpbmsgc3R5bGUgYXR0cmlidXRlc1xuICAgIGJyYW5jaENvbG9yPzogc3RyaW5nO1xuICAgIGJyYW5jaFdpZHRoPzogbnVtYmVyO1xuICAgIGJyYW5jaFNoYXBlPzogQnJhbmNoU2hhcGU7XG5cbiAgICAvLyBsYXlvdXRcbiAgICBsYXlvdXQ/OiBNaW5kTGF5b3V0VHlwZTtcbiAgICBpc0NvbGxhcHNlZD86IGJvb2xlYW47XG5cbiAgICBzdGFydD86IG51bWJlcjtcbiAgICBlbmQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRNaW5kIGV4dGVuZHMgTWluZEVsZW1lbnQge1xuICAgIHR5cGU6ICdtaW5kbWFwJztcbiAgICBwb2ludHM6IFBvaW50W107XG59XG5cbmV4cG9ydCBjb25zdCBQbGFpdE1pbmQgPSB7XG4gICAgaXNNaW5kOiAodmFsdWU6IGFueSk6IHZhbHVlIGlzIFBsYWl0TWluZCA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50eXBlID09PSAnbWluZG1hcCc7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1pbmRFbGVtZW50ID0ge1xuICAgIGhhc0xheW91dCh2YWx1ZTogTWluZEVsZW1lbnQsIGxheW91dDogTWluZExheW91dFR5cGUpIHtcbiAgICAgICAgY29uc3QgX2xheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBfbGF5b3V0ID09PSBsYXlvdXQ7XG4gICAgfSxcbiAgICBpc0luZGVudGVkTGF5b3V0KHZhbHVlOiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBfbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHZhbHVlKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgcmV0dXJuIGlzSW5kZW50ZWRMYXlvdXQoX2xheW91dCk7XG4gICAgfSxcbiAgICBpc01pbmRFbGVtZW50KGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpOiBlbGVtZW50IGlzIE1pbmRFbGVtZW50IHtcbiAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByb290RWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGguc2xpY2UoMCwgMSkpO1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChyb290RWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBnZXRQYXJlbnQobm9kZTogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQobm9kZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWluZCByb290IG5vZGUgY2FuIG5vdCBnZXQgcGFyZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyZW50ID0gTk9ERV9UT19QQVJFTlQuZ2V0KG5vZGUpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0sXG4gICAgZmluZFBhcmVudChub2RlOiBNaW5kRWxlbWVudCkge1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJlbnQgPSBOT0RFX1RPX1BBUkVOVC5nZXQobm9kZSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfSxcbiAgICBnZXRSb290KGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoLnNsaWNlKDAsIDEpKSBhcyBQbGFpdE1pbmQ7XG4gICAgfSxcbiAgICBnZXRBbmNlc3RvcnMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgcGFyZW50czogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIFBhdGguYW5jZXN0b3JzKHBhdGgsIHsgcmV2ZXJzZTogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHApO1xuICAgICAgICAgICAgaWYgKG4gJiYgIVBsYWl0Qm9hcmQuaXNCb2FyZChuKSkge1xuICAgICAgICAgICAgICAgIHBhcmVudHMucHVzaChuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50cztcbiAgICB9LFxuICAgIGdldE5vZGUoZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEVMRU1FTlRfVE9fTk9ERS5nZXQoZWxlbWVudCk7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW4gbm90IGdldCBub2RlIGZyb20gJHtKU09OLnN0cmluZ2lmeShlbGVtZW50KX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9LFxuICAgIGZpbmRQYXJlbnROb2RlKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIE1pbmRFbGVtZW50LmdldE5vZGUocGFyZW50KTtcbiAgICB9LFxuICAgIGhhc0Vtb2ppcyhlbGVtZW50OiBNaW5kRWxlbWVudCk6IGVsZW1lbnQgaXMgTWluZEVsZW1lbnQ8RW1vamlEYXRhPiB7XG4gICAgICAgIGlmIChlbGVtZW50LmRhdGEuZW1vamlzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaGFzSW1hZ2UoZWxlbWVudDogTWluZEVsZW1lbnQpOiBlbGVtZW50IGlzIE1pbmRFbGVtZW50PEltYWdlRGF0YT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5kYXRhLmltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0RW1vamlzKGVsZW1lbnQ6IE1pbmRFbGVtZW50PEVtb2ppRGF0YT4pIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuZGF0YS5lbW9qaXM7XG4gICAgfSxcbiAgICBoYXNNb3VudGVkKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiAhIWNvbXBvbmVudDtcbiAgICB9LFxuICAgIGdldFRleHRFZGl0b3IoZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChlbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC50ZXh0TWFuYWdlLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lZGl0b3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW4gbm90IGdldCBjb3JyZWN0bHkgY29tcG9uZW50IGluIGdldCB0ZXh0IGVkaXRvcicpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBlbnVtIE1pbmRFbGVtZW50U2hhcGUge1xuICAgIHJvdW5kUmVjdGFuZ2xlID0gJ3JvdW5kLXJlY3RhbmdsZScsXG4gICAgdW5kZXJsaW5lID0gJ3VuZGVybGluZSdcbn1cblxuZXhwb3J0IGVudW0gQnJhbmNoU2hhcGUge1xuICAgIGJpZ2h0ID0gJ2JpZ2h0JyxcbiAgICBwb2x5bGluZSA9ICdwb2x5bGluZSdcbn1cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2ludGVyZmFjZXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWtCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBcUMzQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDckIsTUFBTSxFQUFFLENBQUMsS0FBVSxFQUFzQixFQUFFO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7SUFDcEMsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDdkIsU0FBUyxDQUFDLEtBQWtCLEVBQUUsTUFBc0I7UUFDaEQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE9BQU8sT0FBTyxLQUFLLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBa0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBbUIsQ0FBQztRQUN4RSxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBaUIsRUFBRSxPQUFxQjtRQUNsRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMs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Q0FBQyxLQUFLLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQStCO1FBQ3JDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxPQUFvQjtRQUMzQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBc0IsQ0FBQztRQUMxRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUFvQjtRQUM5QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBc0IsQ0FBQztRQUMxRSxJQUFJLFNBQVMsRUFBRTtZQUNYLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUM1RDtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDeEIsc0RBQWtDLENBQUE7SUFDbEMsMkNBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFHM0I7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLDhCQUFlLENBQUE7SUFDZixvQ0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0luZGVudGVkTGF5b3V0LCBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE5PREVfVE9fUEFSRU5ULCBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0Tm9kZSwgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgRUxFTUVOVF9UT19OT0RFIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQmFzZURhdGEsIEVtb2ppRGF0YSwgSW1hZ2VEYXRhIH0gZnJvbSAnLi9lbGVtZW50LWRhdGEnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluZEVsZW1lbnQ8VCA9IEJhc2VEYXRhPiBleHRlbmRzIFBsYWl0RWxlbWVudCB7XG4gICAgZGF0YTogVDtcbiAgICBjaGlsZHJlbjogTWluZEVsZW1lbnRbXTtcbiAgICByaWdodE5vZGVDb3VudD86IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIG1hbnVhbFdpZHRoPzogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGlzUm9vdD86IGJvb2xlYW47XG5cbiAgICAvLyBub2RlIHN0eWxlIGF0dHJpYnV0ZXNcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHNoYXBlPzogTWluZEVsZW1lbnRTaGFwZTtcblxuICAgIC8vIGxpbmsgc3R5bGUgYXR0cmlidXRlc1xuICAgIGJyYW5jaENvbG9yPzogc3RyaW5nO1xuICAgIGJyYW5jaFdpZHRoPzogbnVtYmVyO1xuICAgIGJyYW5jaFNoYXBlPzogQnJhbmNoU2hhcGU7XG5cbiAgICAvLyBsYXlvdXRcbiAgICBsYXlvdXQ/OiBNaW5kTGF5b3V0VHlwZTtcbiAgICBpc0NvbGxhcHNlZD86IGJvb2xlYW47XG5cbiAgICBzdGFydD86IG51bWJlcjtcbiAgICBlbmQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRNaW5kIGV4dGVuZHMgTWluZEVsZW1lbnQge1xuICAgIHR5cGU6ICdtaW5kbWFwJztcbiAgICBwb2ludHM6IFBvaW50W107XG59XG5cbmV4cG9ydCBjb25zdCBQbGFpdE1pbmQgPSB7XG4gICAgaXNNaW5kOiAodmFsdWU6IGFueSk6IHZhbHVlIGlzIFBsYWl0TWluZCA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50eXBlID09PSAnbWluZG1hcCc7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1pbmRFbGVtZW50ID0ge1xuICAgIGhhc0xheW91dCh2YWx1ZTogTWluZEVsZW1lbnQsIGxheW91dDogTWluZExheW91dFR5cGUpIHtcbiAgICAgICAgY29uc3QgX2xheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBfbGF5b3V0ID09PSBsYXlvdXQ7XG4gICAgfSxcbiAgICBpc0luZGVudGVkTGF5b3V0KHZhbHVlOiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBfbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHZhbHVlKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgcmV0dXJuIGlzSW5kZW50ZWRMYXlvdXQoX2xheW91dCk7XG4gICAgfSxcbiAgICBpc01pbmRFbGVtZW50KGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpOiBlbGVtZW50IGlzIE1pbmRFbGVtZW50IHtcbiAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByb290RWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGguc2xpY2UoMCwgMSkpO1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChyb290RWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBnZXRQYXJlbnQobm9kZTogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQobm9kZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWluZCByb290IG5vZGUgY2FuIG5vdCBnZXQgcGFyZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyZW50ID0gTk9ERV9UT19QQVJFTlQuZ2V0KG5vZGUpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0sXG4gICAgZmluZFBhcmVudChub2RlOiBNaW5kRWxlbWVudCkge1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJlbnQgPSBOT0RFX1RPX1BBUkVOVC5nZXQobm9kZSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfSxcbiAgICBnZXRSb290KGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoLnNsaWNlKDAsIDEpKSBhcyBQbGFpdE1pbmQ7XG4gICAgfSxcbiAgICBnZXRBbmNlc3RvcnMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgcGFyZW50czogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIFBhdGguYW5jZXN0b3JzKHBhdGgsIHsgcmV2ZXJzZTogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHApO1xuICAgICAgICAgICAgaWYgKG4gJiYgIVBsYWl0Qm9hcmQuaXNCb2FyZChuKSkge1xuICAgICAgICAgICAgICAgIHBhcmVudHMucHVzaChuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50cztcbiAgICB9LFxuICAgIGdldE5vZGUoZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEVMRU1FTlRfVE9fTk9ERS5nZXQoZWxlbWVudCk7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW4gbm90IGdldCBub2RlIGZyb20gJHtKU09OLnN0cmluZ2lmeShlbGVtZW50KX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9LFxuICAgIGZpbmRQYXJlbnROb2RlKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIE1pbmRFbGVtZW50LmdldE5vZGUocGFyZW50KTtcbiAgICB9LFxuICAgIGhhc0Vtb2ppcyhlbGVtZW50OiBNaW5kRWxlbWVudCk6IGVsZW1lbnQgaXMgTWluZEVsZW1lbnQ8RW1vamlEYXRhPiB7XG4gICAgICAgIGlmIChlbGVtZW50LmRhdGEuZW1vamlzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaGFzSW1hZ2UoZWxlbWVudDogTWluZEVsZW1lbnQpOiBlbGVtZW50IGlzIE1pbmRFbGVtZW50PEltYWdlRGF0YT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5kYXRhLmltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0RW1vamlzKGVsZW1lbnQ6IE1pbmRFbGVtZW50PEVtb2ppRGF0YT4pIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuZGF0YS5lbW9qaXM7XG4gICAgfSxcbiAgICBoYXNNb3VudGVkKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiAhIWNvbXBvbmVudDtcbiAgICB9LFxuICAgIGdldFRleHRFZGl0b3IoZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChlbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC50ZXh0TWFuYWdlLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lZGl0b3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW4gbm90IGdldCBjb3JyZWN0bHkgY29tcG9uZW50IGluIGdldCB0ZXh0IGVkaXRvcicpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBlbnVtIE1pbmRFbGVtZW50U2hhcGUge1xuICAgIHJvdW5kUmVjdGFuZ2xlID0gJ3JvdW5kLXJlY3RhbmdsZScsXG4gICAgdW5kZXJsaW5lID0gJ3VuZGVybGluZSdcbn1cblxuZXhwb3J0IGVudW0gQnJhbmNoU2hhcGUge1xuICAgIGJpZ2h0ID0gJ2JpZ2h0JyxcbiAgICBwb2x5bGluZSA9ICdwb2x5bGluZSdcbn1cbiJdfQ==
@@ -20,6 +20,7 @@ import { NodeActiveDrawer } from './drawer/node-active.drawer';
20
20
  import { CollapseDrawer } from './drawer/node-collapse.drawer';
21
21
  import { WithMindPluginKey } from './constants/default';
22
22
  import { NodeImageDrawer } from './drawer/node-image.drawer';
23
+ import { NodeSpace } from './utils/space/node-space';
23
24
  import * as i0 from "@angular/core";
24
25
  import * as i1 from "@angular/common";
25
26
  import * as i2 from "@plait/core";
@@ -73,13 +74,17 @@ export class MindNodeComponent extends PlaitPluginElementComponent {
73
74
  this.activeDrawer.draw(this.element, this.g, { selected: this.selected, isEditing: this.textManage.isEditing });
74
75
  this.drawEmojis();
75
76
  this.drawExtend();
76
- this.drawImage();
77
+ this.imageDrawer.drawImage(this.g, this.element);
77
78
  if (PlaitMind.isMind(this.context.parent)) {
78
79
  this.g.classList.add('branch');
79
80
  }
80
81
  }
81
82
  editTopic() {
82
83
  this.activeDrawer.draw(this.element, this.g, { selected: this.selected, isEditing: true });
84
+ if (this.element.manualWidth) {
85
+ const width = NodeSpace.getNodeResizableWidth(this.board, this.element);
86
+ this.textManage.updateWidth(width);
87
+ }
83
88
  this.textManage.edit((origin) => {
84
89
  if (origin === ExitOrigin.default) {
85
90
  this.activeDrawer.draw(this.element, this.g, { selected: this.selected, isEditing: false });
@@ -96,8 +101,8 @@ export class MindNodeComponent extends PlaitPluginElementComponent {
96
101
  this.drawShape();
97
102
  this.drawLink();
98
103
  this.drawEmojis();
99
- this.drawImage();
100
104
  this.drawExtend();
105
+ this.imageDrawer.updateImage(this.g, previous.element, value.element);
101
106
  this.textManage.updateText(this.element.data.topic);
102
107
  this.textManage.updateRectangle();
103
108
  }
@@ -118,12 +123,6 @@ export class MindNodeComponent extends PlaitPluginElementComponent {
118
123
  this.g.append(g);
119
124
  }
120
125
  }
121
- drawImage() {
122
- const image = this.imageDrawer.drawImage(this.element);
123
- if (image) {
124
- this.g.append(image);
125
- }
126
- }
127
126
  drawShape() {
128
127
  this.destroyShape();
129
128
  const shape = getShapeByElement(this.board, this.node.origin);
@@ -226,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
226
225
  changeDetection: ChangeDetectionStrategy.OnPush
227
226
  }]
228
227
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixhQUFhLEVBR2IsZUFBZSxFQUVsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdC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SUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pELGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQzs7OEdBbk9RLGlCQUFpQjtrR0FBakIsaUJBQWlCLDhFQVhoQjs7Ozs7Ozs7S0FRVDsyRkFHUSxpQkFBaUI7a0JBYjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7OztLQVFUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBjcmVhdGVHLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50LFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBOT0RFX1RPX0lOREVYLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgUG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgaXNIb3Jpem9udGFsTGF5b3V0LCBBYnN0cmFjdE5vZGUsIE1pbmRMYXlvdXRUeXBlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgVGV4dE1hbmFnZVJlZiwgVGV4dE1hbmFnZSwgRXhpdE9yaWdpbiB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRyYXdSb3VuZFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vdXRpbHMvZHJhdy9ub2RlLXNoYXBlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi9xdWVyaWVzJztcbmltcG9ydCB7IGlzSGl0TWluZEVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL3Bvc2l0aW9uL25vZGUnO1xuaW1wb3J0IHsgZ2V0U2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL25vZGUtc3R5bGUvc2hhcGUnO1xuaW1wb3J0IHsgRUxFTUVOVF9UT19OT0RFIH0gZnJvbSAnLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgZHJhd0Fic3RyYWN0TGluayB9IGZyb20gJy4vdXRpbHMvZHJhdy9ub2RlLWxpbmsvYWJzdHJhY3QtbGluayc7XG5pbXBvcnQgeyBOb2RlRW1vamlzRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1lbW9qaXMuZHJhd2VyJztcbmltcG9ydCB7IE1pbmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IE1pbmRFbGVtZW50U2hhcGUgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTm9kZUluc2VydERyYXdlciB9IGZyb20gJy4vZHJhd2VyL25vZGUtaW5zZXJ0LmRyYXdlcic7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgZHJhd0xpbmsgfSBmcm9tICcuL3V0aWxzL2RyYXcvbm9kZS1saW5rL2RyYXctbGluayc7XG5pbXBvcnQgeyBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vdXRpbHMvcG9zaXRpb24vdG9waWMnO1xuaW1wb3J0IHsgTm9kZUFjdGl2ZURyYXdlciB9IGZyb20gJy4vZHJhd2VyL25vZGUtYWN0aXZlLmRyYXdlcic7XG5pbXBvcnQgeyBDb2xsYXBzZURyYXdlciB9IGZyb20gJy4vZHJhd2VyL25vZGUtY29sbGFwc2UuZHJhd2VyJztcbmltcG9ydCB7IFdpdGhNaW5kT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcy9vcHRpb25zJztcbmltcG9ydCB7IFdpdGhNaW5kUGx1Z2luS2V5IH0gZnJvbSAnLi9jb25zdGFudHMvZGVmYXVsdCc7XG5pbXBvcnQgeyBOb2RlSW1hZ2VEcmF3ZXIgfSBmcm9tICcuL2RyYXdlci9ub2RlLWltYWdlLmRyYXdlcic7XG5cbi8vIDEuIFdoZW4gdGhlIHRleHQgYXQgdGhlIGVuZCBoYXMgYW4gaXRhbGljIGF0dHJpYnV0ZSwgdGhlIHRleHQgaXMgcGFydGlhbGx5IGNvdmVyZWRcbi8vIDIuIFRoZXJlIHdpbGwgYmUgc29tZSBkaWZmZXJlbmNlcyBpbiB0aGUgd2lkdGggbWVhc3VyZWQgYnkgZGlmZmVyZW50IGJyb3dzZXJzXG5jb25zdCBXSURUSF9CVUZGRVIgPSA0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LW1pbmQtbm9kZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHBsYWl0LWNoaWxkcmVuXG4gICAgICAgICAgICAqbmdJZj1cIiFlbGVtZW50LmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgIFtib2FyZF09XCJib2FyZFwiXG4gICAgICAgICAgICBbcGFyZW50XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2VmZmVjdF09XCJlZmZlY3RcIlxuICAgICAgICAgICAgW3BhcmVudEddPVwicGFyZW50R1wiXG4gICAgICAgID48L3BsYWl0LWNoaWxkcmVuPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWluZE5vZGVDb21wb25lbnQgZXh0ZW5kcyBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQ8TWluZEVsZW1lbnQsIFBsYWl0TWluZEJvYXJkPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ29udGV4dENoYW5nZWQ8TWluZEVsZW1lbnQsIFBsYWl0TWluZEJvYXJkPiB7XG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIG5vZGUhOiBNaW5kTm9kZTtcblxuICAgIGluZGV4ITogbnVtYmVyO1xuXG4gICAgcGFyZW50RyE6IFNWR0dFbGVtZW50O1xuXG4gICAgc2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGlua0c/OiBTVkdHRWxlbWVudDtcblxuICAgIGV4dGVuZEc/OiBTVkdHRWxlbWVudDtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIG5vZGVFbW9qaXNEcmF3ZXIhOiBOb2RlRW1vamlzRHJhd2VyO1xuXG4gICAgbm9kZUluc2VydERyYXdlciE6IE5vZGVJbnNlcnREcmF3ZXI7XG5cbiAgICBpbWFnZURyYXdlciE6IE5vZGVJbWFnZURyYXdlcjtcblxuICAgIHRleHRNYW5hZ2UhOiBUZXh0TWFuYWdlO1xuXG4gICAgYWN0aXZlRHJhd2VyITogTm9kZUFjdGl2ZURyYXdlcjtcblxuICAgIGNvbGxhcHNlRHJhd2VyITogQ29sbGFwc2VEcmF3ZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGNkcik7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZURyYXdlcigpIHtcbiAgICAgICAgdGhpcy5ub2RlRW1vamlzRHJhd2VyID0gbmV3IE5vZGVFbW9qaXNEcmF3ZXIodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5ub2RlSW5zZXJ0RHJhd2VyID0gbmV3IE5vZGVJbnNlcnREcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyID0gbmV3IE5vZGVBY3RpdmVEcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VEcmF3ZXIgPSBuZXcgQ29sbGFwc2VEcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuaW1hZ2VEcmF3ZXIgPSBuZXcgTm9kZUltYWdlRHJhd2VyKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLmJvYXJkLmdldFBsdWdpbk9wdGlvbnM8V2l0aE1pbmRPcHRpb25zPihXaXRoTWluZFBsdWdpbktleSkudGV4dFBsdWdpbnM7XG5cbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlID0gbmV3IFRleHRNYW5hZ2UoXG4gICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZSh0aGlzLmJvYXJkLCB0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWN0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNIaXRNaW5kRWxlbWVudCh0aGlzLmJvYXJkLCBwb2ludCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAodGV4dE1hbmFnZVJlZjogVGV4dE1hbmFnZVJlZikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGV4dE1hbmFnZVJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0ZXh0TWFuYWdlUmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAodGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpYyh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHRleHRNYW5hZ2VSZWYubmV3VmFsdWUgYXMgTWluZEVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldFRvcGljU2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwbHVnaW5zXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZURyYXdlcigpO1xuICAgICAgICB0aGlzLm5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIHRoaXMuaW5kZXggPSBOT0RFX1RPX0lOREVYLmdldCh0aGlzLmVsZW1lbnQpIHx8IDA7XG4gICAgICAgIHRoaXMucm91Z2hTVkcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnBhcmVudEcgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KE1pbmRFbGVtZW50LmdldFJvb3QodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSkucm9vdEcgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgdGhpcy5kcmF3VGV4dCgpO1xuICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRoaXMudGV4dE1hbmFnZS5pc0VkaXRpbmcgfSk7XG4gICAgICAgIHRoaXMuZHJhd0Vtb2ppcygpO1xuICAgICAgICB0aGlzLmRyYXdFeHRlbmQoKTtcbiAgICAgICAgdGhpcy5kcmF3SW1hZ2UoKTtcbiAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQodGhpcy5jb250ZXh0LnBhcmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdicmFuY2gnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVkaXRUb3BpYygpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UuZWRpdCgob3JpZ2luOiBFeGl0T3JpZ2luKSA9PiB7XG4gICAgICAgICAgICBpZiAob3JpZ2luID09PSBFeGl0T3JpZ2luLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKFxuICAgICAgICB2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxNaW5kRWxlbWVudCwgUGxhaXRNaW5kQm9hcmQ+LFxuICAgICAgICBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxNaW5kRWxlbWVudCwgUGxhaXRNaW5kQm9hcmQ+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IG5ld05vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKHZhbHVlLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBpc0VxdWFsTm9kZSA9IFJlY3RhbmdsZUNsaWVudC5pc0VxdWFsKHRoaXMubm9kZSwgbmV3Tm9kZSk7XG4gICAgICAgIHRoaXMubm9kZSA9IG5ld05vZGU7XG5cbiAgICAgICAgY29uc3QgaXNDaGFuZ2VUaGVtZSA9IHRoaXMuYm9hcmQub3BlcmF0aW9ucy5maW5kKG9wID0+IG9wLnR5cGUgPT09ICdzZXRfdGhlbWUnKTtcblxuICAgICAgICBpZiAoIWlzRXF1YWxOb2RlIHx8IHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgaXNDaGFuZ2VUaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiB0aGlzLnRleHRNYW5hZ2UuaXNFZGl0aW5nIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmF3U2hhcGUoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0Vtb2ppcygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3SW1hZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0V4dGVuZCgpO1xuICAgICAgICAgICAgdGhpcy50ZXh0TWFuYWdlLnVwZGF0ZVRleHQodGhpcy5lbGVtZW50LmRhdGEudG9waWMpO1xuICAgICAgICAgICAgdGhpcy50ZXh0TWFuYWdlLnVwZGF0ZVJlY3RhbmdsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZVNlbGVjdGVkID0gdmFsdWUuc2VsZWN0ZWQgPT09IHByZXZpb3VzLnNlbGVjdGVkO1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZVBhcmVudCA9IHZhbHVlLnBhcmVudCA9PT0gcHJldmlvdXMucGFyZW50O1xuICAgICAgICAgICAgaWYgKCFoYXNTYW1lU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRoaXMudGV4dE1hbmFnZS5pc0VkaXRpbmcgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RW1vamlzKCkge1xuICAgICAgICBjb25zdCBnID0gdGhpcy5ub2RlRW1vamlzRHJhd2VyLmRyYXdFbW9qaXModGhpcy5lbGVtZW50KTtcbiAgICAgICAgaWYgKGcpIHtcbiAgICAgICAgICAgIHRoaXMuZy5hcHBlbmQoZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3SW1hZ2UoKSB7XG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5pbWFnZURyYXdlci5kcmF3SW1hZ2UodGhpcy5lbGVtZW50KTtcbiAgICAgICAgaWYgKGltYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kKGltYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdTaGFwZSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U2hhcGUoKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZUJ5RWxlbWVudCh0aGlzLmJvYXJkLCB0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kRWxlbWVudFNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgICAgICAgICBjYXNlIE1pbmRFbGVtZW50U2hhcGUucm91bmRSZWN0YW5nbGU6XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBkcmF3Um91bmRSZWN0YW5nbGVCeU5vZGUodGhpcy5ib2FyZCwgdGhpcy5ub2RlIGFzIE1pbmROb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmcucHJlcGVuZCh0aGlzLnNoYXBlRyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVNoYXBlKCkge1xuICAgICAgICBpZiAodGhpcy5zaGFwZUcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0xpbmsoKSB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudCh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLmxpbmtHKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdCh0aGlzLm5vZGUub3JpZ2luKSkge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdBYnN0cmFjdExpbmsodGhpcy5ib2FyZCwgdGhpcy5ub2RlLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0xpbmsodGhpcy5ib2FyZCwgcGFyZW50Tm9kZSwgdGhpcy5ub2RlLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLmxpbmtHKTtcbiAgICB9XG5cbiAgICBkZXN0cm95TGluZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RXh0ZW5kKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lFeHRlbmQoKTtcblxuICAgICAgICB0aGlzLmV4dGVuZEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIHRoaXMuZXh0ZW5kRy5jbGFzc0xpc3QuYWRkKCdleHRlbmQnKTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLmV4dGVuZEcpO1xuXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QucmVtb3ZlKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm9kZUluc2VydERyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5leHRlbmRHISk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZXh0ZW5kRyEpO1xuICAgIH1cblxuICAgIGRlc3Ryb3lFeHRlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmV4dGVuZEcpIHtcbiAgICAgICAgICAgIHRoaXMuZXh0ZW5kRy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdUZXh0KCkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UuZHJhdyh0aGlzLmVsZW1lbnQuZGF0YS50b3BpYyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy50ZXh0TWFuYWdlLmcpO1xuICAgIH1cblxuICAgIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgbm9kZTogTWluZE5vZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG5vZGUub3JpZ2luLmlkO1xuICAgIH07XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5ub2RlRW1vamlzRHJhd2VyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5pbWFnZURyYXdlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmIChFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgPT09IHRoaXMubm9kZSkge1xuICAgICAgICAgICAgRUxFTUVOVF9UT19OT0RFLmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixhQUFhLEVBR2IsZUFBZSxFQUVsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdC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QUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzs4R0FoT1EsaUJBQWlCO2tHQUFqQixpQkFBaUIsOEVBWGhCOzs7Ozs7OztLQVFUOzJGQUdRLGlCQUFpQjtrQkFiN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7Ozs7O0tBUVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNyZWF0ZUcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIE5PREVfVE9fSU5ERVgsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBPbkNvbnRleHRDaGFuZ2VkLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMYXlvdXQsIEFic3RyYWN0Tm9kZSwgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBUZXh0TWFuYWdlUmVmLCBUZXh0TWFuYWdlLCBFeGl0T3JpZ2luIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZHJhd1JvdW5kUmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi91dGlscy9kcmF3L25vZGUtc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgaXNIaXRNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBnZXRTaGFwZUJ5RWxlbWVudCB9IGZyb20gJy4vdXRpbHMvbm9kZS1zdHlsZS9zaGFwZSc7XG5pbXBvcnQgeyBFTEVNRU5UX1RPX05PREUgfSBmcm9tICcuL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RMaW5rIH0gZnJvbSAnLi91dGlscy9kcmF3L25vZGUtbGluay9hYnN0cmFjdC1saW5rJztcbmltcG9ydCB7IE5vZGVFbW9qaXNEcmF3ZXIgfSBmcm9tICcuL2RyYXdlci9ub2RlLWVtb2ppcy5kcmF3ZXInO1xuaW1wb3J0IHsgTWluZFRyYW5zZm9ybXMgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOb2RlSW5zZXJ0RHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1pbnNlcnQuZHJhd2VyJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi9wbHVnaW5zL3dpdGgtbWluZC5ib2FyZCc7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4vdXRpbHMvZHJhdy9ub2RlLWxpbmsvZHJhdy1saW5rJztcbmltcG9ydCB7IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi91dGlscy9wb3NpdGlvbi90b3BpYyc7XG5pbXBvcnQgeyBOb2RlQWN0aXZlRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1hY3RpdmUuZHJhd2VyJztcbmltcG9ydCB7IENvbGxhcHNlRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1jb2xsYXBzZS5kcmF3ZXInO1xuaW1wb3J0IHsgV2l0aE1pbmRPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL29wdGlvbnMnO1xuaW1wb3J0IHsgV2l0aE1pbmRQbHVnaW5LZXkgfSBmcm9tICcuL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IE5vZGVJbWFnZURyYXdlciB9IGZyb20gJy4vZHJhd2VyL25vZGUtaW1hZ2UuZHJhd2VyJztcbmltcG9ydCB7IE5vZGVTcGFjZSB9IGZyb20gJy4vdXRpbHMvc3BhY2Uvbm9kZS1zcGFjZSc7XG5cbi8vIDEuIFdoZW4gdGhlIHRleHQgYXQgdGhlIGVuZCBoYXMgYW4gaXRhbGljIGF0dHJpYnV0ZSwgdGhlIHRleHQgaXMgcGFydGlhbGx5IGNvdmVyZWRcbi8vIDIuIFRoZXJlIHdpbGwgYmUgc29tZSBkaWZmZXJlbmNlcyBpbiB0aGUgd2lkdGggbWVhc3VyZWQgYnkgZGlmZmVyZW50IGJyb3dzZXJzXG5jb25zdCBXSURUSF9CVUZGRVIgPSA0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LW1pbmQtbm9kZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHBsYWl0LWNoaWxkcmVuXG4gICAgICAgICAgICAqbmdJZj1cIiFlbGVtZW50LmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgIFtib2FyZF09XCJib2FyZFwiXG4gICAgICAgICAgICBbcGFyZW50XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2VmZmVjdF09XCJlZmZlY3RcIlxuICAgICAgICAgICAgW3BhcmVudEddPVwicGFyZW50R1wiXG4gICAgICAgID48L3BsYWl0LWNoaWxkcmVuPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWluZE5vZGVDb21wb25lbnQgZXh0ZW5kcyBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQ8TWluZEVsZW1lbnQsIFBsYWl0TWluZEJvYXJkPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ29udGV4dENoYW5nZWQ8TWluZEVsZW1lbnQsIFBsYWl0TWluZEJvYXJkPiB7XG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIG5vZGUhOiBNaW5kTm9kZTtcblxuICAgIGluZGV4ITogbnVtYmVyO1xuXG4gICAgcGFyZW50RyE6IFNWR0dFbGVtZW50O1xuXG4gICAgc2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGlua0c/OiBTVkdHRWxlbWVudDtcblxuICAgIGV4dGVuZEc/OiBTVkdHRWxlbWVudDtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIG5vZGVFbW9qaXNEcmF3ZXIhOiBOb2RlRW1vamlzRHJhd2VyO1xuXG4gICAgbm9kZUluc2VydERyYXdlciE6IE5vZGVJbnNlcnREcmF3ZXI7XG5cbiAgICBpbWFnZURyYXdlciE6IE5vZGVJbWFnZURyYXdlcjtcblxuICAgIHRleHRNYW5hZ2UhOiBUZXh0TWFuYWdlO1xuXG4gICAgYWN0aXZlRHJhd2VyITogTm9kZUFjdGl2ZURyYXdlcjtcblxuICAgIGNvbGxhcHNlRHJhd2VyITogQ29sbGFwc2VEcmF3ZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGNkcik7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZURyYXdlcigpIHtcbiAgICAgICAgdGhpcy5ub2RlRW1vamlzRHJhd2VyID0gbmV3IE5vZGVFbW9qaXNEcmF3ZXIodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5ub2RlSW5zZXJ0RHJhd2VyID0gbmV3IE5vZGVJbnNlcnREcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyID0gbmV3IE5vZGVBY3RpdmVEcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VEcmF3ZXIgPSBuZXcgQ29sbGFwc2VEcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuaW1hZ2VEcmF3ZXIgPSBuZXcgTm9kZUltYWdlRHJhd2VyKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLmJvYXJkLmdldFBsdWdpbk9wdGlvbnM8V2l0aE1pbmRPcHRpb25zPihXaXRoTWluZFBsdWdpbktleSkudGV4dFBsdWdpbnM7XG5cbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlID0gbmV3IFRleHRNYW5hZ2UoXG4gICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZSh0aGlzLmJvYXJkLCB0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWN0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNIaXRNaW5kRWxlbWVudCh0aGlzLmJvYXJkLCBwb2ludCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAodGV4dE1hbmFnZVJlZjogVGV4dE1hbmFnZVJlZikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGV4dE1hbmFnZVJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0ZXh0TWFuYWdlUmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAodGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpYyh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHRleHRNYW5hZ2VSZWYubmV3VmFsdWUgYXMgTWluZEVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldFRvcGljU2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwbHVnaW5zXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZURyYXdlcigpO1xuICAgICAgICB0aGlzLm5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIHRoaXMuaW5kZXggPSBOT0RFX1RPX0lOREVYLmdldCh0aGlzLmVsZW1lbnQpIHx8IDA7XG4gICAgICAgIHRoaXMucm91Z2hTVkcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnBhcmVudEcgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KE1pbmRFbGVtZW50LmdldFJvb3QodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSkucm9vdEcgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgdGhpcy5kcmF3VGV4dCgpO1xuICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRoaXMudGV4dE1hbmFnZS5pc0VkaXRpbmcgfSk7XG4gICAgICAgIHRoaXMuZHJhd0Vtb2ppcygpO1xuICAgICAgICB0aGlzLmRyYXdFeHRlbmQoKTtcbiAgICAgICAgdGhpcy5pbWFnZURyYXdlci5kcmF3SW1hZ2UodGhpcy5nLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZCh0aGlzLmNvbnRleHQucGFyZW50KSkge1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2JyYW5jaCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZWRpdFRvcGljKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRydWUgfSk7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQubWFudWFsV2lkdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gTm9kZVNwYWNlLmdldE5vZGVSZXNpemFibGVXaWR0aCh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy50ZXh0TWFuYWdlLnVwZGF0ZVdpZHRoKHdpZHRoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRleHRNYW5hZ2UuZWRpdCgob3JpZ2luOiBFeGl0T3JpZ2luKSA9PiB7XG4gICAgICAgICAgICBpZiAob3JpZ2luID09PSBFeGl0T3JpZ2luLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKFxuICAgICAgICB2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxNaW5kRWxlbWVudCwgUGxhaXRNaW5kQm9hcmQ+LFxuICAgICAgICBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxNaW5kRWxlbWVudCwgUGxhaXRNaW5kQm9hcmQ+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IG5ld05vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKHZhbHVlLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBpc0VxdWFsTm9kZSA9IFJlY3RhbmdsZUNsaWVudC5pc0VxdWFsKHRoaXMubm9kZSwgbmV3Tm9kZSk7XG4gICAgICAgIHRoaXMubm9kZSA9IG5ld05vZGU7XG5cbiAgICAgICAgY29uc3QgaXNDaGFuZ2VUaGVtZSA9IHRoaXMuYm9hcmQub3BlcmF0aW9ucy5maW5kKG9wID0+IG9wLnR5cGUgPT09ICdzZXRfdGhlbWUnKTtcblxuICAgICAgICBpZiAoIWlzRXF1YWxOb2RlIHx8IHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgaXNDaGFuZ2VUaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiB0aGlzLnRleHRNYW5hZ2UuaXNFZGl0aW5nIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmF3U2hhcGUoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0Vtb2ppcygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RXh0ZW5kKCk7XG4gICAgICAgICAgICB0aGlzLmltYWdlRHJhd2VyLnVwZGF0ZUltYWdlKHRoaXMuZywgcHJldmlvdXMuZWxlbWVudCwgdmFsdWUuZWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnRleHRNYW5hZ2UudXBkYXRlVGV4dCh0aGlzLmVsZW1lbnQuZGF0YS50b3BpYyk7XG4gICAgICAgICAgICB0aGlzLnRleHRNYW5hZ2UudXBkYXRlUmVjdGFuZ2xlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lUGFyZW50ID0gdmFsdWUucGFyZW50ID09PSBwcmV2aW91cy5wYXJlbnQ7XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIGlzRWRpdGluZzogdGhpcy50ZXh0TWFuYWdlLmlzRWRpdGluZyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaGFzU2FtZVBhcmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdFbW9qaXMoKSB7XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLm5vZGVFbW9qaXNEcmF3ZXIuZHJhd0Vtb2ppcyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBpZiAoZykge1xuICAgICAgICAgICAgdGhpcy5nLmFwcGVuZChnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdTaGFwZSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U2hhcGUoKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZUJ5RWxlbWVudCh0aGlzLmJvYXJkLCB0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kRWxlbWVudFNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgICAgICAgICBjYXNlIE1pbmRFbGVtZW50U2hhcGUucm91bmRSZWN0YW5nbGU6XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBkcmF3Um91bmRSZWN0YW5nbGVCeU5vZGUodGhpcy5ib2FyZCwgdGhpcy5ub2RlIGFzIE1pbmROb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmcucHJlcGVuZCh0aGlzLnNoYXBlRyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVNoYXBlKCkge1xuICAgICAgICBpZiAodGhpcy5zaGFwZUcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0xpbmsoKSB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudCh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLmxpbmtHKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdCh0aGlzLm5vZGUub3JpZ2luKSkge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdBYnN0cmFjdExpbmsodGhpcy5ib2FyZCwgdGhpcy5ub2RlLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0xpbmsodGhpcy5ib2FyZCwgcGFyZW50Tm9kZSwgdGhpcy5ub2RlLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLmxpbmtHKTtcbiAgICB9XG5cbiAgICBkZXN0cm95TGluZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RXh0ZW5kKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lFeHRlbmQoKTtcblxuICAgICAgICB0aGlzLmV4dGVuZEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIHRoaXMuZXh0ZW5kRy5jbGFzc0xpc3QuYWRkKCdleHRlbmQnKTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLmV4dGVuZEcpO1xuXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QucmVtb3ZlKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm9kZUluc2VydERyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5leHRlbmRHISk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZXh0ZW5kRyEpO1xuICAgIH1cblxuICAgIGRlc3Ryb3lFeHRlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmV4dGVuZEcpIHtcbiAgICAgICAgICAgIHRoaXMuZXh0ZW5kRy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdUZXh0KCkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UuZHJhdyh0aGlzLmVsZW1lbnQuZGF0YS50b3BpYyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy50ZXh0TWFuYWdlLmcpO1xuICAgIH1cblxuICAgIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgbm9kZTogTWluZE5vZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG5vZGUub3JpZ2luLmlkO1xuICAgIH07XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5ub2RlRW1vamlzRHJhd2VyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5pbWFnZURyYXdlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmIChFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgPT09IHRoaXMubm9kZSkge1xuICAgICAgICAgICAgRUxFTUVOVF9UT19OT0RFLmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -40,7 +40,6 @@ export const withAbstract = (board) => {
40
40
  const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
41
41
  touchedAbstract = handleTouchedAbstract(board, touchedAbstract, endPoint);
42
42
  if (abstractHandlePosition && activeAbstractElement) {
43
- event.preventDefault();
44
43
  const abstractComponent = PlaitElement.getComponent(activeAbstractElement);
45
44
  const element = abstractComponent.element;
46
45
  const nodeLayout = MindQueries.getCorrectLayoutByElement(board, activeAbstractElement);
@@ -108,4 +107,4 @@ export const withAbstract = (board) => {
108
107
  };
109
108
  return board;
110
109
  };
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFHWixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBRS9HLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBOEMsQ0FBQztJQUNuRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBd0MsQ0FBQztJQUM3QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxL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cUJBQXFCLENBQUMsQ0FBQzthQUNoRjtZQUNELHFCQUFxQixHQUFHLFNBQVMsQ0FBQztTQUNyQztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJPQVJEX1RPX0hPU1QsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQbHVnaW4sXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzTWFpblBvaW50ZXIsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQsIGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQsIE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBmaW5kTG9jYXRpb25MZWZ0SW5kZXgsIGdldEhpdEFic3RyYWN0SGFuZGxlLCBnZXRMb2NhdGlvblNjb3BlLCBoYW5kbGVUb3VjaGVkQWJzdHJhY3QgfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9yZXNpemUnO1xuaW1wb3J0IHsgc2VwYXJhdGVDaGlsZHJlbiB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBBYnN0cmFjdFJlc2l6ZVN0YXRlLCBQbGFpdEFic3RyYWN0Qm9hcmQgfSBmcm9tICcuL3dpdGgtYWJzdHJhY3QtcmVzaXplLmJvYXJkJztcblxuZXhwb3J0IGNvbnN0IHdpdGhBYnN0cmFjdDogUGxhaXRQbHVnaW4gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdEFic3RyYWN0Qm9hcmQ7XG5cbiAgICBjb25zdCB7IG1vdXNlZG93biwgbW91c2Vtb3ZlLCBtb3VzZXVwIH0gPSBib2FyZDtcbiAgICBsZXQgYWN0aXZlQWJzdHJhY3RFbGVtZW50OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdG91Y2hlZEFic3RyYWN0OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgc3RhcnRQb2ludDogUG9pbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG5ld1Byb3BlcnR5OiB7IGVuZDogbnVtYmVyIH0gfCB7IHN0YXJ0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzTWFpblBvaW50ZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aXZlQWJzdHJhY3RFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmZpbHRlcihlbGVtZW50ID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGhvc3QhKSk7XG5cbiAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gYWN0aXZlQWJzdHJhY3RFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9IGdldEhpdEFic3RyYWN0SGFuZGxlKGJvYXJkLCBlbGVtZW50IGFzIE1pbmRFbGVtZW50LCBwb2ludCk7XG4gICAgICAgICAgICByZXR1cm4gYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5vbkFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQub25BYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuXG4gICAgICAgIHRvdWNoZWRBYnN0cmFjdCA9IGhhbmRsZVRvdWNoZWRBYnN0cmFjdChib2FyZCwgdG91Y2hlZEFic3RyYWN0LCBlbmRQb2ludCk7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gJiYgYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGFjdGl2ZUFic3RyYWN0RWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gYWJzdHJhY3RDb21wb25lbnQuZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KG5vZGVMYXlvdXQpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcblxuICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbjtcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50TGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZWZ0Q2hpbGRyZW4sIHJpZ2h0Q2hpbGRyZW4gfSA9IHNlcGFyYXRlQ2hpbGRyZW4ocGFyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLmVuZCEgPCByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHJpZ2h0Q2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5zdGFydCEgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBsZWZ0Q2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/Lm9uQWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5vbkFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUucmVzaXppbmcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXNpemluZ0xvY2F0aW9uID0gaXNIb3Jpem9udGFsID8gZW5kUG9pbnRbMV0gOiBlbmRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IChNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudEVsZW1lbnQpIGFzIHVua25vd24pIGFzIExheW91dE5vZGU7XG4gICAgICAgICAgICBjb25zdCBzY29wZSA9IGdldExvY2F0aW9uU2NvcGUoYm9hcmQsIGFic3RyYWN0SGFuZGxlUG9zaXRpb24sIGNoaWxkcmVuLCBlbGVtZW50LCBwYXJlbnQsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IE1hdGgubWluKHNjb3BlLm1heCwgTWF0aC5tYXgoc2NvcGUubWluLCByZXNpemluZ0xvY2F0aW9uKSk7XG5cbiAgICAgICAgICAgIGxldCBsb2NhdGlvbkluZGV4ID0gZmluZExvY2F0aW9uTGVmdEluZGV4KGJvYXJkLCBjaGlsZHJlbiwgbG9jYXRpb24sIGlzSG9yaXpvbnRhbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzUHJvcGVydHlVbmNoYW5nZWQgPVxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKyAxID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5zdGFydCEpIHx8XG4gICAgICAgICAgICAgICAgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kICYmIGxvY2F0aW9uSW5kZXggPT09IChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLmVuZCEpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9wZXJ0eVVuY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnQubGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudC5vcmlnaW4ucmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGVsZW1lbnQuc3RhcnQhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKz0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9XG4gICAgICAgICAgICAgICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQgPyB7IHN0YXJ0OiBsb2NhdGlvbkluZGV4ICsgMSB9IDogeyBlbmQ6IGxvY2F0aW9uSW5kZXggfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWJzdHJhY3RDb21wb25lbnQhLmFjdGl2ZURyYXdlci51cGRhdGVBYnN0cmFjdE91dGxpbmUoYWN0aXZlQWJzdHJhY3RFbGVtZW50LCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBzdGFydFBvaW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/Lm9uQWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5vbkFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUuZW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1Byb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFjdGl2ZUFic3RyYWN0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdQcm9wZXJ0eSwgcGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS5hY3RpdmVEcmF3ZXIudXBkYXRlQWJzdHJhY3RPdXRsaW5lKGFjdGl2ZUFic3RyYWN0RWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2V1cChldmVudCk7XG4gICAgfTtcbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFHWixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBRS9HLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBOEMsQ0FBQztJQUNuRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBd0MsQ0FBQztJQUM3QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxL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QXFCLEdBQUcsU0FBUyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQk9BUkRfVE9fSE9TVCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQbGFpdFBsdWdpbixcbiAgICBQb2ludCxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaXNNYWluUG9pbnRlcixcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgTGF5b3V0Tm9kZSwgTWluZExheW91dFR5cGUsIGlzSG9yaXpvbnRhbExheW91dCwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCwgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IGZpbmRMb2NhdGlvbkxlZnRJbmRleCwgZ2V0SGl0QWJzdHJhY3RIYW5kbGUsIGdldExvY2F0aW9uU2NvcGUsIGhhbmRsZVRvdWNoZWRBYnN0cmFjdCB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L3Jlc2l6ZSc7XG5pbXBvcnQgeyBzZXBhcmF0ZUNoaWxkcmVuIH0gZnJvbSAnLi4vdXRpbHMvYWJzdHJhY3QvY29tbW9uJztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sIEFic3RyYWN0UmVzaXplU3RhdGUsIFBsYWl0QWJzdHJhY3RCb2FyZCB9IGZyb20gJy4vd2l0aC1hYnN0cmFjdC1yZXNpemUuYm9hcmQnO1xuXG5leHBvcnQgY29uc3Qgd2l0aEFic3RyYWN0OiBQbGFpdFBsdWdpbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG5ld0JvYXJkID0gYm9hcmQgYXMgUGxhaXRCb2FyZCAmIFBsYWl0QWJzdHJhY3RCb2FyZDtcblxuICAgIGNvbnN0IHsgbW91c2Vkb3duLCBtb3VzZW1vdmUsIG1vdXNldXAgfSA9IGJvYXJkO1xuICAgIGxldCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQ6IE1pbmRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uIHwgdW5kZWZpbmVkO1xuICAgIGxldCB0b3VjaGVkQWJzdHJhY3Q6IE1pbmRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgbmV3UHJvcGVydHk6IHsgZW5kOiBudW1iZXIgfSB8IHsgc3RhcnQ6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuXG4gICAgYm9hcmQubW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNNYWluUG9pbnRlcihldmVudCkpIHtcbiAgICAgICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmVBYnN0cmFjdEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKGVsZW1lbnQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgIGNvbnN0IGhvc3QgPSBCT0FSRF9UT19IT1NULmdldChib2FyZCk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgaG9zdCEpKTtcblxuICAgICAgICBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgPSBhY3RpdmVBYnN0cmFjdEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gZ2V0SGl0QWJzdHJhY3RIYW5kbGUoYm9hcmQsIGVsZW1lbnQgYXMgTWluZEVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgIHJldHVybiBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/Lm9uQWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5vbkFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUuc3RhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2Vtb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGhvc3QhKSk7XG5cbiAgICAgICAgdG91Y2hlZEFic3RyYWN0ID0gaGFuZGxlVG91Y2hlZEFic3RyYWN0KGJvYXJkLCB0b3VjaGVkQWJzdHJhY3QsIGVuZFBvaW50KTtcblxuICAgICAgICBpZiAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiAmJiBhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGFic3RyYWN0Q29tcG9uZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBub2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChwYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudEVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH0gPSBzZXBhcmF0ZUNoaWxkcmVuKHBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSByaWdodENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gbGVmdENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5vbkFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQub25BYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnJlc2l6aW5nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzaXppbmdMb2NhdGlvbiA9IGlzSG9yaXpvbnRhbCA/IGVuZFBvaW50WzFdIDogZW5kUG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSAoTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnRFbGVtZW50KSBhcyB1bmtub3duKSBhcyBMYXlvdXROb2RlO1xuICAgICAgICAgICAgY29uc3Qgc2NvcGUgPSBnZXRMb2NhdGlvblNjb3BlKGJvYXJkLCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBjaGlsZHJlbiwgZWxlbWVudCwgcGFyZW50LCBpc0hvcml6b250YWwpO1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBNYXRoLm1pbihzY29wZS5tYXgsIE1hdGgubWF4KHNjb3BlLm1pbiwgcmVzaXppbmdMb2NhdGlvbikpO1xuXG4gICAgICAgICAgICBsZXQgbG9jYXRpb25JbmRleCA9IGZpbmRMb2NhdGlvbkxlZnRJbmRleChib2FyZCwgY2hpbGRyZW4sIGxvY2F0aW9uLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgICAgICBjb25zdCBpc1Byb3BlcnR5VW5jaGFuZ2VkID1cbiAgICAgICAgICAgICAgICAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCAmJlxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICsgMSA9PT0gKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhKSB8fFxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZCAmJiBsb2NhdGlvbkluZGV4ID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhKTtcblxuICAgICAgICAgICAgaWYgKGlzUHJvcGVydHlVbmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50LmxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBlbGVtZW50LnN0YXJ0ITtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICs9IHJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPVxuICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ID8geyBzdGFydDogbG9jYXRpb25JbmRleCArIDEgfSA6IHsgZW5kOiBsb2NhdGlvbkluZGV4IH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS5hY3RpdmVEcmF3ZXIudXBkYXRlQWJzdHJhY3RPdXRsaW5lKGFjdGl2ZUFic3RyYWN0RWxlbWVudCwgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgbG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNlbW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNldXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgc3RhcnRQb2ludCA9IHVuZGVmaW5lZDtcbiAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5vbkFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQub25BYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLmVuZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3UHJvcGVydHksIHBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBhYnN0cmFjdENvbXBvbmVudCEuYWN0aXZlRHJhd2VyLnVwZGF0ZUFic3RyYWN0T3V0bGluZShhY3RpdmVBYnN0cmFjdEVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNldXAoZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
@@ -9,7 +9,8 @@ import { MindTransforms } from '../transforms';
9
9
  import { deleteElementHandleAbstract, insertElementHandleAbstract } from '../utils/abstract/common';
10
10
  import { isVirtualKey } from '../utils/is-virtual-key';
11
11
  import { editTopic } from '../utils/node/common';
12
- export const withMindHotkey = (board) => {
12
+ export const withMindHotkey = (baseBoard) => {
13
+ const board = baseBoard;
13
14
  const { keydown } = board;
14
15
  board.keydown = (event) => {
15
16
  const selectedElements = getSelectedElements(board);
@@ -120,4 +121,4 @@ export const isEnterHotkey = (event) => {
120
121
  export const isSpaceHotkey = (event) => {
121
122
  return event.code === 'Space';
122
123
  };
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLWhvdGtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1taW5kLWhvdGtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsSUFBSSxFQUNKLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxxQkFBcUIsRUFDeEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQ0gsa0NBQWtDLEVBQ2xDLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDbEMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO0lBQ3BELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFMUIsS0FBSyxDQUFDLE9BQU8s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SSxLQUFLLE9BQU8sQ0FBQztBQUNsQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBhdGgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEhpc3RvcnlCb2FyZCxcbiAgICBQbGFpdE5vZGUsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBob3RrZXlzLFxuICAgIHJlbW92ZVNlbGVjdGVkRWxlbWVudFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc0tleUhvdGtleSB9IGZyb20gJ2lzLWhvdGtleSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBnZXRGaXJzdExldmVsRWxlbWVudCwgaW5zZXJ0TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9taW5kJztcbmltcG9ydCB7IGZpbmROZXdDaGlsZE5vZGVQYXRoLCBmaW5kTmV3U2libGluZ05vZGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvcGF0aCc7XG5pbXBvcnQge1xuICAgIGRlbGV0ZUVsZW1lbnRzSGFuZGxlUmlnaHROb2RlQ291bnQsXG4gICAgaW5zZXJ0RWxlbWVudEhhbmRsZVJpZ2h0Tm9kZUNvdW50LFxuICAgIGlzSW5SaWdodEJyYW5jaE9mU3RhbmRhcmRMYXlvdXRcbn0gZnJvbSAnLi4vdXRpbHMvbm9kZS9yaWdodC1ub2RlLWNvdW50JztcbmltcG9ydCB7IE1pbmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkZWxldGVFbGVtZW50SGFuZGxlQWJzdHJhY3QsIGluc2VydEVsZW1lbnRIYW5kbGVBYnN0cmFjdCB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5pbXBvcnQgeyBpc1ZpcnR1YWxLZXkgfSBmcm9tICcuLi91dGlscy9pcy12aXJ0dWFsLWtleSc7XG5pbXBvcnQgeyBlZGl0VG9waWMgfSBmcm9tICcuLi91dGlscy9ub2RlL2NvbW1vbic7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4vd2l0aC1taW5kLmJvYXJkJztcblxuZXhwb3J0IGNvbnN0IHdpdGhNaW5kSG90a2V5ID0gKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsga2V5ZG93biB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVTZWxlY3Rpb24gPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVNaW5kRWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHNbMF0pO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXSBhcyBNaW5kRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNFeHBhbmRIb3RrZXkoZXZlbnQpICYmIGlzU2luZ2xlTWluZEVsZW1lbnQgJiYgIVBsYWl0TWluZC5pc01pbmQodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50LmNoaWxkcmVuICYmIHRhcmdldEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIHsgaXNDb2xsYXBzZWQ6IHRhcmdldEVsZW1lbnQuaXNDb2xsYXBzZWQgPyBmYWxzZSA6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgaWYgKGlzVGFiSG90a2V5KGV2ZW50KSAmJiBpc1NpbmdsZU1pbmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRQYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICBQbGFpdEhpc3RvcnlCb2FyZC53aXRob3V0U2F2aW5nKGJvYXJkLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHRhcmdldEVsZW1lbnRQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluc2VydE1pbmRFbGVtZW50KGJvYXJkLCB0YXJnZXRFbGVtZW50LCBmaW5kTmV3Q2hpbGROb2RlUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGlzRW50ZXJIb3RrZXkoZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgaXNTaW5nbGVNaW5kRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgICFQbGFpdE1pbmQuaXNNaW5kKHRhcmdldEVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHRhcmdldEVsZW1lbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50UGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpc0luUmlnaHRCcmFuY2hPZlN0YW5kYXJkTGF5b3V0KHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZnMgPSBpbnNlcnRFbGVtZW50SGFuZGxlUmlnaHROb2RlQ291bnQoYm9hcmQsIHRhcmdldEVsZW1lbnRQYXRoLnNsaWNlKDAsIDEpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0UmlnaHROb2RlQ291bnRCeVJlZnMoYm9hcmQsIHJlZnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhYnN0cmFjdFJlZnMgPSBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIFBhdGgubmV4dCh0YXJnZXRFbGVtZW50UGF0aCkpO1xuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldEFic3RyYWN0c0J5UmVmcyhib2FyZCwgYWJzdHJhY3RSZWZzKTtcbiAgICAgICAgICAgICAgICBpbnNlcnRNaW5kRWxlbWVudChib2FyZCwgdGFyZ2V0RWxlbWVudCwgZmluZE5ld1NpYmxpbmdOb2RlUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMCAmJiAoaG90a2V5cy5pc0RlbGV0ZUJhY2t3YXJkKGV2ZW50KSB8fCBob3RrZXlzLmlzRGVsZXRlRm9yd2FyZChldmVudCkpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRNaW5kRWxlbWVudHMgPSBzZWxlY3RlZEVsZW1lbnRzLmZpbHRlcihlbCA9PiBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbCkpIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RMZXZlbEVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQodGFyZ2V0TWluZEVsZW1lbnRzKTtcblxuICAgICAgICAgICAgICAgIGlmIChmaXJzdExldmVsRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWxldGFibGVFbGVtZW50cyA9IFsuLi5maXJzdExldmVsRWxlbWVudHNdLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RSZWZzID0gZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0KGJvYXJkLCBkZWxldGFibGVFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldEFic3RyYWN0c0J5UmVmcyhib2FyZCwgYWJzdHJhY3RSZWZzKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZzID0gZGVsZXRlRWxlbWVudHNIYW5kbGVSaWdodE5vZGVDb3VudChib2FyZCwgdGFyZ2V0TWluZEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0UmlnaHROb2RlQ291bnRCeVJlZnMoYm9hcmQsIHJlZnMpO1xuXG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnJlbW92ZUVsZW1lbnRzKGJvYXJkLCB0YXJnZXRNaW5kRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTZWxlY3RlZCA9IGdldE5leHRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgbmV4dFNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNWaXJ0dWFsS2V5KGV2ZW50KSAmJiAhaXNTcGFjZUhvdGtleShldmVudCkgJiYgaXNTaW5nbGVTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGVkaXRUb3BpYyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBrZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5leHRTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50czogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCBhY3RpdmVFbGVtZW50OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaXJzdExldmVsRWxlbWVudCA9IGZpcnN0TGV2ZWxFbGVtZW50c1swXTtcbiAgICBjb25zdCBmaXJzdExldmVsRWxlbWVudFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBmaXJzdExldmVsRWxlbWVudCk7XG5cbiAgICBsZXQgbmV4dFNlbGVjdGVkUGF0aCA9IGZpcnN0TGV2ZWxFbGVtZW50UGF0aDtcbiAgICBpZiAoUGF0aC5oYXNQcmV2aW91cyhmaXJzdExldmVsRWxlbWVudFBhdGgpKSB7XG4gICAgICAgIG5leHRTZWxlY3RlZFBhdGggPSBQYXRoLnByZXZpb3VzKGZpcnN0TGV2ZWxFbGVtZW50UGF0aCk7XG4gICAgfVxuXG4gICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGZpcnN0TGV2ZWxFbGVtZW50KSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZmlyc3RMZXZlbEVsZW1lbnQpO1xuICAgICAgICBpZiAoIWZpcnN0TGV2ZWxFbGVtZW50cy5pbmNsdWRlcyhwYXJlbnQuY2hpbGRyZW5bZmlyc3RMZXZlbEVsZW1lbnQuc3RhcnRdKSkge1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IHBhcmVudC5jaGlsZHJlbltmaXJzdExldmVsRWxlbWVudC5zdGFydF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0PE1pbmRFbGVtZW50Pihib2FyZCwgbmV4dFNlbGVjdGVkUGF0aCk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge31cblxuICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IGZpcnN0TGV2ZWxFbGVtZW50c1swXTtcbiAgICBjb25zdCBmaXJzdEVsZW1lbnRQYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGZpcnN0RWxlbWVudCk7XG4gICAgY29uc3QgaGFzU2FtZVBhcmVudCA9IGZpcnN0TGV2ZWxFbGVtZW50cy5ldmVyeShlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoZWxlbWVudCkgPT09IGZpcnN0RWxlbWVudFBhcmVudDtcbiAgICB9KTtcbiAgICBpZiAoZmlyc3RFbGVtZW50UGFyZW50ICYmIGhhc1NhbWVQYXJlbnQgJiYgIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9IGZpcnN0RWxlbWVudFBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFeHBhbmRIb3RrZXkgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICByZXR1cm4gaXNLZXlIb3RrZXkoJ21vZCsvJywgZXZlbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGFiSG90a2V5ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50LmtleSA9PT0gJ1RhYic7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbnRlckhvdGtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5rZXkgPT09ICdFbnRlcic7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTcGFjZUhvdGtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5jb2RlID09PSAnU3BhY2UnO1xufTtcbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLWhvdGtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1taW5kLWhvdGtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsSUFBSSxFQUNKLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxxQkFBcUIsRUFDeEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQ0gsa0NBQWtDLEVBQ2xDLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDbEMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBcUIsRUFBRSxFQUFFO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFNBQXdDLENBQUM7SUFDdkQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFH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QUUsRUFBRTtJQUNsRCxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGF0aCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0SGlzdG9yeUJvYXJkLFxuICAgIFBsYWl0Tm9kZSxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIGFkZFNlbGVjdGVkRWxlbWVudCxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGhvdGtleXMsXG4gICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGlzS2V5SG90a2V5IH0gZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGdldEZpcnN0TGV2ZWxFbGVtZW50LCBpbnNlcnRNaW5kRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL21pbmQnO1xuaW1wb3J0IHsgZmluZE5ld0NoaWxkTm9kZVBhdGgsIGZpbmROZXdTaWJsaW5nTm9kZVBhdGggfSBmcm9tICcuLi91dGlscy9wYXRoJztcbmltcG9ydCB7XG4gICAgZGVsZXRlRWxlbWVudHNIYW5kbGVSaWdodE5vZGVDb3VudCxcbiAgICBpbnNlcnRFbGVtZW50SGFuZGxlUmlnaHROb2RlQ291bnQsXG4gICAgaXNJblJpZ2h0QnJhbmNoT2ZTdGFuZGFyZExheW91dFxufSBmcm9tICcuLi91dGlscy9ub2RlL3JpZ2h0LW5vZGUtY291bnQnO1xuaW1wb3J0IHsgTWluZFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdCwgaW5zZXJ0RWxlbWVudEhhbmRsZUFic3RyYWN0IH0gZnJvbSAnLi4vdXRpbHMvYWJzdHJhY3QvY29tbW9uJztcbmltcG9ydCB7IGlzVmlydHVhbEtleSB9IGZyb20gJy4uL3V0aWxzL2lzLXZpcnR1YWwta2V5JztcbmltcG9ydCB7IGVkaXRUb3BpYyB9IGZyb20gJy4uL3V0aWxzL25vZGUvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi93aXRoLW1pbmQuYm9hcmQnO1xuXG5leHBvcnQgY29uc3Qgd2l0aE1pbmRIb3RrZXkgPSAoYmFzZUJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgYm9hcmQgPSBiYXNlQm9hcmQgYXMgUGxhaXRCb2FyZCAmIFBsYWl0TWluZEJvYXJkO1xuICAgIGNvbnN0IHsga2V5ZG93biB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVTZWxlY3Rpb24gPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVNaW5kRWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHNbMF0pO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXSBhcyBNaW5kRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNFeHBhbmRIb3RrZXkoZXZlbnQpICYmIGlzU2luZ2xlTWluZEVsZW1lbnQgJiYgIVBsYWl0TWluZC5pc01pbmQodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50LmNoaWxkcmVuICYmIHRhcmdldEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIHsgaXNDb2xsYXBzZWQ6IHRhcmdldEVsZW1lbnQuaXNDb2xsYXBzZWQgPyBmYWxzZSA6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgaWYgKGlzVGFiSG90a2V5KGV2ZW50KSAmJiBpc1NpbmdsZU1pbmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRQYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICBQbGFpdEhpc3RvcnlCb2FyZC53aXRob3V0U2F2aW5nKGJvYXJkLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHRhcmdldEVsZW1lbnRQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluc2VydE1pbmRFbGVtZW50KGJvYXJkLCB0YXJnZXRFbGVtZW50LCBmaW5kTmV3Q2hpbGROb2RlUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGlzRW50ZXJIb3RrZXkoZXZlbnQpICYmXG4gICAgICAgICAgICAgICAgaXNTaW5nbGVNaW5kRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgICFQbGFpdE1pbmQuaXNNaW5kKHRhcmdldEVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHRhcmdldEVsZW1lbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50UGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpc0luUmlnaHRCcmFuY2hPZlN0YW5kYXJkTGF5b3V0KHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZnMgPSBpbnNlcnRFbGVtZW50SGFuZGxlUmlnaHROb2RlQ291bnQoYm9hcmQsIHRhcmdldEVsZW1lbnRQYXRoLnNsaWNlKDAsIDEpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0UmlnaHROb2RlQ291bnRCeVJlZnMoYm9hcmQsIHJlZnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhYnN0cmFjdFJlZnMgPSBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIFBhdGgubmV4dCh0YXJnZXRFbGVtZW50UGF0aCkpO1xuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldEFic3RyYWN0c0J5UmVmcyhib2FyZCwgYWJzdHJhY3RSZWZzKTtcbiAgICAgICAgICAgICAgICBpbnNlcnRNaW5kRWxlbWVudChib2FyZCwgdGFyZ2V0RWxlbWVudCwgZmluZE5ld1NpYmxpbmdOb2RlUGF0aChib2FyZCwgdGFyZ2V0RWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMCAmJiAoaG90a2V5cy5pc0RlbGV0ZUJhY2t3YXJkKGV2ZW50KSB8fCBob3RrZXlzLmlzRGVsZXRlRm9yd2FyZChldmVudCkpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRNaW5kRWxlbWVudHMgPSBzZWxlY3RlZEVsZW1lbnRzLmZpbHRlcihlbCA9PiBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbCkpIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RMZXZlbEVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQodGFyZ2V0TWluZEVsZW1lbnRzKTtcblxuICAgICAgICAgICAgICAgIGlmIChmaXJzdExldmVsRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWxldGFibGVFbGVtZW50cyA9IFsuLi5maXJzdExldmVsRWxlbWVudHNdLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RSZWZzID0gZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0KGJvYXJkLCBkZWxldGFibGVFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldEFic3RyYWN0c0J5UmVmcyhib2FyZCwgYWJzdHJhY3RSZWZzKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZzID0gZGVsZXRlRWxlbWVudHNIYW5kbGVSaWdodE5vZGVDb3VudChib2FyZCwgdGFyZ2V0TWluZEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0UmlnaHROb2RlQ291bnRCeVJlZnMoYm9hcmQsIHJlZnMpO1xuXG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnJlbW92ZUVsZW1lbnRzKGJvYXJkLCB0YXJnZXRNaW5kRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTZWxlY3RlZCA9IGdldE5leHRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgbmV4dFNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNWaXJ0dWFsS2V5KGV2ZW50KSAmJiAhaXNTcGFjZUhvdGtleShldmVudCkgJiYgaXNTaW5nbGVTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGVkaXRUb3BpYyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBrZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5leHRTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50czogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCBhY3RpdmVFbGVtZW50OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaXJzdExldmVsRWxlbWVudCA9IGZpcnN0TGV2ZWxFbGVtZW50c1swXTtcbiAgICBjb25zdCBmaXJzdExldmVsRWxlbWVudFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBmaXJzdExldmVsRWxlbWVudCk7XG5cbiAgICBsZXQgbmV4dFNlbGVjdGVkUGF0aCA9IGZpcnN0TGV2ZWxFbGVtZW50UGF0aDtcbiAgICBpZiAoUGF0aC5oYXNQcmV2aW91cyhmaXJzdExldmVsRWxlbWVudFBhdGgpKSB7XG4gICAgICAgIG5leHRTZWxlY3RlZFBhdGggPSBQYXRoLnByZXZpb3VzKGZpcnN0TGV2ZWxFbGVtZW50UGF0aCk7XG4gICAgfVxuXG4gICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGZpcnN0TGV2ZWxFbGVtZW50KSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZmlyc3RMZXZlbEVsZW1lbnQpO1xuICAgICAgICBpZiAoIWZpcnN0TGV2ZWxFbGVtZW50cy5pbmNsdWRlcyhwYXJlbnQuY2hpbGRyZW5bZmlyc3RMZXZlbEVsZW1lbnQuc3RhcnRdKSkge1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IHBhcmVudC5jaGlsZHJlbltmaXJzdExldmVsRWxlbWVudC5zdGFydF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0PE1pbmRFbGVtZW50Pihib2FyZCwgbmV4dFNlbGVjdGVkUGF0aCk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge31cblxuICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IGZpcnN0TGV2ZWxFbGVtZW50c1swXTtcbiAgICBjb25zdCBmaXJzdEVsZW1lbnRQYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGZpcnN0RWxlbWVudCk7XG4gICAgY29uc3QgaGFzU2FtZVBhcmVudCA9IGZpcnN0TGV2ZWxFbGVtZW50cy5ldmVyeShlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoZWxlbWVudCkgPT09IGZpcnN0RWxlbWVudFBhcmVudDtcbiAgICB9KTtcbiAgICBpZiAoZmlyc3RFbGVtZW50UGFyZW50ICYmIGhhc1NhbWVQYXJlbnQgJiYgIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9IGZpcnN0RWxlbWVudFBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFeHBhbmRIb3RrZXkgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICByZXR1cm4gaXNLZXlIb3RrZXkoJ21vZCsvJywgZXZlbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGFiSG90a2V5ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50LmtleSA9PT0gJ1RhYic7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbnRlckhvdGtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5rZXkgPT09ICdFbnRlcic7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTcGFjZUhvdGtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5jb2RlID09PSAnU3BhY2UnO1xufTtcbiJdfQ==