@plait/draw 0.70.0 → 0.72.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 (83) hide show
  1. package/arrow-line.component.d.ts +1 -1
  2. package/constants/default.d.ts +1 -0
  3. package/constants/geometry.d.ts +5 -5
  4. package/constants/index.d.ts +1 -0
  5. package/constants/pointer.d.ts +3 -3
  6. package/engines/table/table.d.ts +2 -2
  7. package/engines/uml/combined-fragment.d.ts +2 -2
  8. package/engines/uml/package.d.ts +2 -2
  9. package/esm2022/arrow-line.component.mjs +13 -13
  10. package/esm2022/constants/default.mjs +2 -0
  11. package/esm2022/constants/geometry.mjs +8 -8
  12. package/esm2022/constants/index.mjs +2 -1
  13. package/esm2022/constants/pointer.mjs +4 -4
  14. package/esm2022/engines/table/table.mjs +3 -3
  15. package/esm2022/engines/uml/combined-fragment.mjs +5 -5
  16. package/esm2022/engines/uml/package.mjs +5 -5
  17. package/esm2022/generators/geometry-shape.generator.mjs +6 -5
  18. package/esm2022/generators/single-text.generator.mjs +3 -3
  19. package/esm2022/generators/table.generator.mjs +6 -5
  20. package/esm2022/generators/text.generator.mjs +25 -21
  21. package/esm2022/geometry.component.mjs +4 -5
  22. package/esm2022/interfaces/arrow-line.mjs +1 -1
  23. package/esm2022/interfaces/element.mjs +1 -7
  24. package/esm2022/interfaces/geometry.mjs +6 -6
  25. package/esm2022/interfaces/index.mjs +13 -1
  26. package/esm2022/interfaces/options.mjs +2 -0
  27. package/esm2022/interfaces/vector-line.mjs +5 -5
  28. package/esm2022/plugins/with-arrow-line-text.mjs +2 -2
  29. package/esm2022/plugins/with-draw-fragment.mjs +8 -12
  30. package/esm2022/plugins/with-draw-hotkey.mjs +3 -3
  31. package/esm2022/plugins/with-draw-resize.mjs +11 -6
  32. package/esm2022/plugins/with-draw-rotate.mjs +3 -2
  33. package/esm2022/plugins/with-draw.mjs +10 -11
  34. package/esm2022/plugins/with-vector-line-create.mjs +123 -0
  35. package/esm2022/plugins/with-vector-line-resize.mjs +3 -3
  36. package/esm2022/table.component.mjs +8 -9
  37. package/esm2022/transforms/index.mjs +3 -3
  38. package/esm2022/transforms/multi-text-geometry-text.mjs +3 -3
  39. package/esm2022/utils/arrow-line/arrow-line-basic.mjs +6 -5
  40. package/esm2022/utils/clipboard.mjs +6 -17
  41. package/esm2022/utils/common.mjs +15 -8
  42. package/esm2022/utils/geometry.mjs +3 -3
  43. package/esm2022/utils/hit.mjs +21 -19
  44. package/esm2022/utils/index.mjs +2 -1
  45. package/esm2022/utils/multi-text-geometry.mjs +3 -3
  46. package/esm2022/utils/selected.mjs +9 -1
  47. package/esm2022/utils/snap-resizing.mjs +1 -1
  48. package/esm2022/utils/style/stroke.mjs +7 -17
  49. package/esm2022/utils/table.mjs +2 -2
  50. package/esm2022/utils/vector-line.mjs +6 -10
  51. package/esm2022/vector-line.component.mjs +2 -4
  52. package/fesm2022/plait-draw.mjs +259 -318
  53. package/fesm2022/plait-draw.mjs.map +1 -1
  54. package/generators/single-text.generator.d.ts +2 -2
  55. package/generators/text.generator.d.ts +11 -11
  56. package/interfaces/arrow-line.d.ts +1 -1
  57. package/interfaces/element.d.ts +0 -5
  58. package/interfaces/geometry.d.ts +11 -10
  59. package/interfaces/index.d.ts +4 -1
  60. package/interfaces/options.d.ts +4 -0
  61. package/interfaces/vector-line.d.ts +4 -4
  62. package/package.json +1 -1
  63. package/plugins/with-vector-line-create.d.ts +2 -0
  64. package/styles/styles.scss +1 -1
  65. package/table.component.d.ts +2 -2
  66. package/transforms/common.d.ts +1 -1
  67. package/transforms/geometry.d.ts +1 -1
  68. package/transforms/index.d.ts +3 -3
  69. package/transforms/multi-text-geometry-text.d.ts +2 -2
  70. package/utils/clipboard.d.ts +10 -3
  71. package/utils/common.d.ts +5 -3
  72. package/utils/geometry.d.ts +6 -6
  73. package/utils/hit.d.ts +8 -4
  74. package/utils/index.d.ts +1 -0
  75. package/utils/multi-text-geometry.d.ts +6 -10
  76. package/utils/selected.d.ts +3 -1
  77. package/utils/snap-resizing.d.ts +2 -2
  78. package/utils/style/stroke.d.ts +1 -2
  79. package/utils/vector-line.d.ts +0 -1
  80. package/esm2022/plugins/with-geometry-resize.mjs +0 -70
  81. package/esm2022/plugins/with-vector-pen-create.mjs +0 -123
  82. package/plugins/with-geometry-resize.d.ts +0 -2
  83. package/plugins/with-vector-pen-create.d.ts +0 -2
@@ -0,0 +1,123 @@
1
+ import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, addSelectedElement, clearSelectedElement, createG, distanceBetweenPointAndPoint, getElementById, toHostPoint, toViewBoxPoint } from '@plait/core';
2
+ import { VectorLineShape, VectorLinePointerType } from '../interfaces';
3
+ import { LINE_HIT_GEOMETRY_BUFFER, getVectorLinePointers } from '../constants';
4
+ import { isDrawingMode } from '@plait/common';
5
+ import { vectorLineCreating } from '../utils';
6
+ import { isKeyHotkey } from 'is-hotkey';
7
+ export const withVectorLineCreateByDraw = (board) => {
8
+ const { pointerDown, pointerMove, dblClick, globalKeyDown } = board;
9
+ let lineShapeG = null;
10
+ let temporaryElement = null;
11
+ let vectorLineRef;
12
+ const vectorLineComplete = () => {
13
+ if (vectorLineRef) {
14
+ clearSelectedElement(board);
15
+ if (vectorLineRef?.element) {
16
+ addSelectedElement(board, vectorLineRef?.element);
17
+ }
18
+ }
19
+ PlaitBoard.getBoardContainer(board).classList.remove(`vector-line-closed`);
20
+ lineShapeG?.remove();
21
+ lineShapeG = null;
22
+ vectorLineRef = null;
23
+ temporaryElement = null;
24
+ };
25
+ board.pointerDown = (event) => {
26
+ const penPointers = getVectorLinePointers();
27
+ const isVectorLinePointer = PlaitBoard.isInPointer(board, penPointers);
28
+ if (isVectorLinePointer && !vectorLineRef) {
29
+ vectorLineRef = { shape: VectorLineShape.straight };
30
+ }
31
+ if (!PlaitBoard.isReadonly(board) && vectorLineRef && isDrawingMode(board)) {
32
+ let point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
33
+ if (!temporaryElement) {
34
+ vectorLineRef = {
35
+ ...vectorLineRef,
36
+ start: point
37
+ };
38
+ }
39
+ else {
40
+ if (!vectorLineRef.element) {
41
+ vectorLineRef.element = temporaryElement;
42
+ Transforms.insertNode(board, vectorLineRef.element, [board.children.length]);
43
+ }
44
+ else {
45
+ let points = vectorLineRef.element.points;
46
+ const isClosed = distanceBetweenPointAndPoint(...point, ...vectorLineRef.start) <= LINE_HIT_GEOMETRY_BUFFER;
47
+ if (isClosed) {
48
+ point = vectorLineRef.start;
49
+ }
50
+ if (vectorLineRef.path) {
51
+ const lastPoint = points[points.length - 1];
52
+ const distance = distanceBetweenPointAndPoint(...point, ...lastPoint);
53
+ if (distance > 2) {
54
+ Transforms.setNode(board, { points: [...points, point] }, vectorLineRef.path);
55
+ }
56
+ }
57
+ vectorLineRef.element = getElementById(board, vectorLineRef.element.id);
58
+ if (isClosed) {
59
+ vectorLineComplete();
60
+ }
61
+ }
62
+ }
63
+ }
64
+ pointerDown(event);
65
+ };
66
+ board.pointerMove = (event) => {
67
+ lineShapeG?.remove();
68
+ lineShapeG = createG();
69
+ let movingPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
70
+ const pointer = PlaitBoard.getPointer(board);
71
+ if (pointer !== VectorLinePointerType.vectorLine) {
72
+ vectorLineComplete();
73
+ }
74
+ if (vectorLineRef && vectorLineRef.start) {
75
+ let drawPoints = [vectorLineRef.start];
76
+ if (vectorLineRef.element) {
77
+ drawPoints = [vectorLineRef.start, ...vectorLineRef.element.points];
78
+ const path = PlaitBoard.findPath(board, vectorLineRef.element);
79
+ vectorLineRef.path = path;
80
+ }
81
+ const distance = distanceBetweenPointAndPoint(...movingPoint, ...vectorLineRef.start);
82
+ if (distance <= LINE_HIT_GEOMETRY_BUFFER) {
83
+ movingPoint = vectorLineRef.start;
84
+ PlaitBoard.getBoardContainer(board).classList.add(`vector-line-closed`);
85
+ }
86
+ else {
87
+ PlaitBoard.getBoardContainer(board).classList.remove(`vector-line-closed`);
88
+ }
89
+ temporaryElement = vectorLineCreating(board, vectorLineRef.shape, drawPoints, movingPoint, lineShapeG);
90
+ }
91
+ pointerMove(event);
92
+ };
93
+ board.dblClick = (event) => {
94
+ if (!PlaitBoard.isReadonly(board)) {
95
+ if (vectorLineRef) {
96
+ if (vectorLineRef.path) {
97
+ Transforms.setNode(board, { points: vectorLineRef?.element?.points }, vectorLineRef.path);
98
+ }
99
+ vectorLineComplete();
100
+ BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
101
+ }
102
+ }
103
+ dblClick(event);
104
+ };
105
+ board.globalKeyDown = (event) => {
106
+ if (!PlaitBoard.isReadonly(board)) {
107
+ const isEsc = isKeyHotkey('esc', event);
108
+ const isV = isKeyHotkey('v', event);
109
+ if ((isEsc || isV) && vectorLineRef) {
110
+ if (vectorLineRef.path) {
111
+ Transforms.setNode(board, { points: vectorLineRef.element?.points }, vectorLineRef.path);
112
+ }
113
+ vectorLineComplete();
114
+ if (isV) {
115
+ BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
116
+ }
117
+ }
118
+ }
119
+ globalKeyDown(event);
120
+ };
121
+ return board;
122
+ };
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12ZWN0b3ItbGluZS1jcmVhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdmVjdG9yLWxpbmUtY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQW1CLGVBQWUsRUFBRSxxQkFBcUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFtQix3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzVELE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFcEUsSUFBSSxVQUFVLEdBQXVCLElBQUksQ0FBQztJQUUxQyxJQUFJLGdCQUFnQixHQUEyQixJQUFJLENBQUM7SUFFcEQsSUFBSSxhQUFtQyxDQUFDO0lBRXhDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQzVCLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsSUFBSSxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JB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QU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDckIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdGLENBQUM7Z0JBQ0Qsa0JBQWtCLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDTixlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIFRyYW5zZm9ybXMsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNyZWF0ZUcsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBnZXRFbGVtZW50QnlJZCxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdFZlY3RvckxpbmUsIFZlY3RvckxpbmVTaGFwZSwgVmVjdG9yTGluZVBvaW50ZXJUeXBlLCBWZWN0b3JMaW5lUmVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3UG9pbnRlclR5cGUsIExJTkVfSElUX0dFT01FVFJZX0JVRkZFUiwgZ2V0VmVjdG9yTGluZVBvaW50ZXJzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGlzRHJhd2luZ01vZGUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IHZlY3RvckxpbmVDcmVhdGluZyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGlzS2V5SG90a2V5IH0gZnJvbSAnaXMtaG90a2V5JztcblxuZXhwb3J0IGNvbnN0IHdpdGhWZWN0b3JMaW5lQ3JlYXRlQnlEcmF3ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGRibENsaWNrLCBnbG9iYWxLZXlEb3duIH0gPSBib2FyZDtcblxuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IHRlbXBvcmFyeUVsZW1lbnQ6IFBsYWl0VmVjdG9yTGluZSB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IHZlY3RvckxpbmVSZWY6IFZlY3RvckxpbmVSZWYgfCBudWxsO1xuXG4gICAgY29uc3QgdmVjdG9yTGluZUNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgICBpZiAodmVjdG9yTGluZVJlZikge1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICAgICAgaWYgKHZlY3RvckxpbmVSZWY/LmVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIHZlY3RvckxpbmVSZWY/LmVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoYHZlY3Rvci1saW5lLWNsb3NlZGApO1xuICAgICAgICBsaW5lU2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgbGluZVNoYXBlRyA9IG51bGw7XG4gICAgICAgIHZlY3RvckxpbmVSZWYgPSBudWxsO1xuICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBwZW5Qb2ludGVycyA9IGdldFZlY3RvckxpbmVQb2ludGVycygpO1xuICAgICAgICBjb25zdCBpc1ZlY3RvckxpbmVQb2ludGVyID0gUGxhaXRCb2FyZC5pc0luUG9pbnRlcihib2FyZCwgcGVuUG9pbnRlcnMpO1xuICAgICAgICBpZiAoaXNWZWN0b3JMaW5lUG9pbnRlciAmJiAhdmVjdG9yTGluZVJlZikge1xuICAgICAgICAgICAgdmVjdG9yTGluZVJlZiA9IHsgc2hhcGU6IFZlY3RvckxpbmVTaGFwZS5zdHJhaWdodCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmIHZlY3RvckxpbmVSZWYgJiYgaXNEcmF3aW5nTW9kZShib2FyZCkpIHtcbiAgICAgICAgICAgIGxldCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgaWYgKCF0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdmVjdG9yTGluZVJlZiA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udmVjdG9yTGluZVJlZixcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCF2ZWN0b3JMaW5lUmVmLmVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGluZVJlZi5lbGVtZW50ID0gdGVtcG9yYXJ5RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCB2ZWN0b3JMaW5lUmVmLmVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcG9pbnRzID0gdmVjdG9yTGluZVJlZi5lbGVtZW50LnBvaW50cztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDbG9zZWQgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50LCAuLi52ZWN0b3JMaW5lUmVmLnN0YXJ0ISkgPD0gTElORV9ISVRfR0VPTUVUUllfQlVGRkVSO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ID0gdmVjdG9yTGluZVJlZi5zdGFydCE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlY3RvckxpbmVSZWYucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdFBvaW50ID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5wb2ludCwgLi4ubGFzdFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzOiBbLi4ucG9pbnRzLCBwb2ludF0gfSwgdmVjdG9yTGluZVJlZi5wYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMaW5lUmVmLmVsZW1lbnQgPSBnZXRFbGVtZW50QnlJZChib2FyZCwgdmVjdG9yTGluZVJlZi5lbGVtZW50LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMaW5lQ29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBwb2ludGVyID0gUGxhaXRCb2FyZC5nZXRQb2ludGVyKGJvYXJkKSBhcyBEcmF3UG9pbnRlclR5cGU7XG4gICAgICAgIGlmIChwb2ludGVyICE9PSBWZWN0b3JMaW5lUG9pbnRlclR5cGUudmVjdG9yTGluZSkge1xuICAgICAgICAgICAgdmVjdG9yTGluZUNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZlY3RvckxpbmVSZWYgJiYgdmVjdG9yTGluZVJlZi5zdGFydCkge1xuICAgICAgICAgICAgbGV0IGRyYXdQb2ludHMgPSBbdmVjdG9yTGluZVJlZi5zdGFydF07XG4gICAgICAgICAgICBpZiAodmVjdG9yTGluZVJlZi5lbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgZHJhd1BvaW50cyA9IFt2ZWN0b3JMaW5lUmVmLnN0YXJ0LCAuLi52ZWN0b3JMaW5lUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdmVjdG9yTGluZVJlZi5lbGVtZW50ISk7XG4gICAgICAgICAgICAgICAgdmVjdG9yTGluZVJlZi5wYXRoID0gcGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5tb3ZpbmdQb2ludCwgLi4udmVjdG9yTGluZVJlZi5zdGFydCk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPD0gTElORV9ISVRfR0VPTUVUUllfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgbW92aW5nUG9pbnQgPSB2ZWN0b3JMaW5lUmVmLnN0YXJ0O1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoYHZlY3Rvci1saW5lLWNsb3NlZGApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QucmVtb3ZlKGB2ZWN0b3ItbGluZS1jbG9zZWRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSB2ZWN0b3JMaW5lQ3JlYXRpbmcoYm9hcmQsIHZlY3RvckxpbmVSZWYuc2hhcGUsIGRyYXdQb2ludHMsIG1vdmluZ1BvaW50LCBsaW5lU2hhcGVHKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmRibENsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgaWYgKHZlY3RvckxpbmVSZWYpIHtcbiAgICAgICAgICAgICAgICBpZiAodmVjdG9yTGluZVJlZi5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHM6IHZlY3RvckxpbmVSZWY/LmVsZW1lbnQ/LnBvaW50cyB9LCB2ZWN0b3JMaW5lUmVmLnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2ZWN0b3JMaW5lQ29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkYmxDbGljayhldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbEtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBpc0VzYyA9IGlzS2V5SG90a2V5KCdlc2MnLCBldmVudCk7XG4gICAgICAgICAgICBjb25zdCBpc1YgPSBpc0tleUhvdGtleSgndicsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICgoaXNFc2MgfHwgaXNWKSAmJiB2ZWN0b3JMaW5lUmVmKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZlY3RvckxpbmVSZWYucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzOiB2ZWN0b3JMaW5lUmVmLmVsZW1lbnQ/LnBvaW50cyB9LCB2ZWN0b3JMaW5lUmVmLnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2ZWN0b3JMaW5lQ29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNWKSB7XG4gICAgICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnbG9iYWxLZXlEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
@@ -1,9 +1,9 @@
1
- import { isClosedVectorLine } from './../utils/vector-line';
2
1
  import { Transforms, distanceBetweenPointAndPoint } from '@plait/core';
3
2
  import { withResize } from '@plait/common';
4
3
  import { getSelectedVectorLineElements } from '../utils/selected';
5
4
  import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
6
5
  import { LINE_HIT_GEOMETRY_BUFFER } from '../constants';
6
+ import { isClosedPoints } from '../utils';
7
7
  export const withVectorLineResize = (board) => {
8
8
  const options = {
9
9
  key: 'draw-vector-line',
@@ -33,7 +33,7 @@ export const withVectorLineResize = (board) => {
33
33
  let handleIndex = resizeRef.handleIndex;
34
34
  if (resizeRef.handle === LineResizeHandle.source || resizeRef.handle === LineResizeHandle.target) {
35
35
  points[handleIndex] = resizeState.endPoint;
36
- if (isClosedVectorLine(resizeRef.element)) {
36
+ if (isClosedPoints(resizeRef.element.points)) {
37
37
  points[points.length - 1] = resizeState.endPoint;
38
38
  }
39
39
  else {
@@ -58,4 +58,4 @@ export const withVectorLineResize = (board) => {
58
58
  withResize(board, options);
59
59
  return board;
60
60
  };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12ZWN0b3ItbGluZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdmVjdG9yLWxpbmUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBMkIsVUFBVSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBNkMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV4RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLE9BQU8sR0FBeUQ7UUFDbEUsR0FBRyxFQUFFLGtCQUFrQjtRQUN2QixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3RCLE1BQU0sMEJBQTBCLEdBQUcsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEUsSUFBSSwwQkFBMEIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbEIsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN2QyxNQUFNLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNqRSxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNaLE1BQU0sR0FBRzs0QkFDTCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07NEJBQ3hCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVzt5QkFDckMsQ0FBQztvQkFDTixDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsUUFBUSxFQUFFLENBQUMsU0FBdUQsRUFBRSxXQUF3QixFQUFFLEVBQUU7WUFDNUYsSUFBSSxNQUFNLEdBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVksQ0FBQztZQUN6QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQy9GLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUMzQyxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUNyRCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pHLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO29CQUN2RixJQUFJLFFBQVEsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO3dCQUN2QyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDO29CQUN0QyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUMvQyxDQUFDO1lBQ0wsQ0FBQztZQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO1FBQ2xFLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUFvQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFOUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNDbG9zZWRWZWN0b3JMaW5lIH0gZnJvbSAnLi8uLi91dGlscy92ZWN0b3ItbGluZSc7XG5pbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQb2ludCwgVHJhbnNmb3JtcywgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYsIExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IFBsYWl0VmVjdG9yTGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTElORV9ISVRfR0VPTUVUUllfQlVGRkVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhWZWN0b3JMaW5lUmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXRWZWN0b3JMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiA9IHtcbiAgICAgICAga2V5OiAnZHJhdy12ZWN0b3ItbGluZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRWZWN0b3JMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmID0gZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgdmFsdWUsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleDogaGFuZGxlUmVmLmhhbmRsZUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRWZWN0b3JMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBsZXQgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlIHx8IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgIGlmIChpc0Nsb3NlZFZlY3RvckxpbmUocmVzaXplUmVmLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlID8gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSA6IHBvaW50c1swXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnJlc2l6ZVN0YXRlLmVuZFBvaW50LCAuLi50YXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8PSBMSU5FX0hJVF9HRU9NRVRSWV9CVUZGRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSB0YXJnZXRQb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoaGFuZGxlSW5kZXggKyAxLCAwLCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0VmVjdG9yTGluZSwgTGluZVJlc2l6ZUhhbmRsZT4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12ZWN0b3ItbGluZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdmVjdG9yLWxpbmUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsVUFBVSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBNkMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3RELE1BQU0sT0FBTyxHQUF5RDtRQUNsRSxHQUFHLEVBQUUsa0JBQWtCO1FBQ3ZCLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDdEIsTUFBTSwwQkFBMEIsR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RSxJQUFJLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNsQiwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLHlCQUF5QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pFLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ1osTUFBTSxHQUFHOzRCQUNMLE9BQU8sRUFBRSxLQUFLOzRCQUNkLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTs0QkFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO3lCQUNyQyxDQUFDO29CQUNOLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxRQUFRLEVBQUUsQ0FBQyxTQUF1RCxFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUM1RixJQUFJLE1BQU0sR0FBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBWSxDQUFDO1lBQ3pDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDL0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDckQsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6RyxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztvQkFDdkYsSUFBSSxRQUFRLElBQUksd0JBQXdCLEVBQUUsQ0FBQzt3QkFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztvQkFDdEMsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVELENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDL0MsQ0FBQztZQUNMLENBQUM7WUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFZLENBQUMsQ0FBQztRQUNsRSxDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBb0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTlELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBvaW50LCBUcmFuc2Zvcm1zLCBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVzaXplUmVmLCBSZXNpemVTdGF0ZSwgV2l0aFJlc2l6ZU9wdGlvbnMsIHdpdGhSZXNpemUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZiwgTGluZVJlc2l6ZUhhbmRsZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2xpbmUnO1xuaW1wb3J0IHsgUGxhaXRWZWN0b3JMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMSU5FX0hJVF9HRU9NRVRSWV9CVUZGRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNDbG9zZWRQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoVmVjdG9yTGluZVJlc2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0VmVjdG9yTGluZSwgTGluZVJlc2l6ZUhhbmRsZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctdmVjdG9yLWxpbmUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cyA9IGdldFNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWZWN0b3JMaW5lRWxlbWVudHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIHZhbHVlLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXg6IGhhbmRsZVJlZi5oYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBvblJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0VmVjdG9yTGluZSwgTGluZVJlc2l6ZUhhbmRsZT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHBvaW50czogUG9pbnRbXSA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5wb2ludHNdO1xuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZUluZGV4ITtcbiAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSB8fCByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICBpZiAoaXNDbG9zZWRQb2ludHMocmVzaXplUmVmLmVsZW1lbnQucG9pbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSA/IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0gOiBwb2ludHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5yZXNpemVTdGF0ZS5lbmRQb2ludCwgLi4udGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPD0gTElORV9ISVRfR0VPTUVUUllfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gdGFyZ2V0UG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKGhhbmRsZUluZGV4ICsgMSwgMCwgcmVzaXplU3RhdGUuZW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHMgfSwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdFZlY3RvckxpbmUsIExpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
@@ -1,10 +1,10 @@
1
1
  import { PlaitBoard, ACTIVE_STROKE_WIDTH, RectangleClient, setAngleForG, degreesToRadians } from '@plait/core';
2
2
  import { ActiveGenerator, CommonElementFlavour, canResize } from '@plait/common';
3
3
  import { PlaitTableElement } from './interfaces/table';
4
- import { getTextManage, TextGenerator } from './generators/text.generator';
4
+ import { TextGenerator } from './generators/text.generator';
5
5
  import { TableGenerator } from './generators/table.generator';
6
6
  import { DrawTransforms } from './transforms';
7
- import { getCellWithPoints, isCellIncludeText } from './utils/table';
7
+ import { getCellWithPoints, getTextManageByCell, isCellIncludeText } from './utils/table';
8
8
  import { clearSelectedCells, getCellsRectangle, getSelectedCells, getStrokeWidthByElement, memorizeLatestText, setSelectedCells } from './utils';
9
9
  import { getEngine } from './engines';
10
10
  import { TableSymbols } from './interfaces';
@@ -60,7 +60,7 @@ export class TableComponent extends CommonElementFlavour {
60
60
  const table = this.board.buildTable(this.element);
61
61
  table.cells.forEach(item => {
62
62
  if (PlaitTableElement.isVerticalText(item)) {
63
- const textManage = getTextManage(this.board, item.id);
63
+ const textManage = getTextManageByCell(this.board, item);
64
64
  if (textManage) {
65
65
  const engine = getEngine(TableSymbols.table);
66
66
  const rectangle = engine.getTextRectangle(this.element, { key: item.id, board: this.board });
@@ -75,7 +75,7 @@ export class TableComponent extends CommonElementFlavour {
75
75
  .filter(item => isCellIncludeText(item))
76
76
  .map(item => {
77
77
  return {
78
- key: item.id,
78
+ id: item.id,
79
79
  text: item.text,
80
80
  textHeight: item.textHeight,
81
81
  board: this.board
@@ -88,12 +88,12 @@ export class TableComponent extends CommonElementFlavour {
88
88
  onChange: (value, data, text) => {
89
89
  const path = PlaitBoard.findPath(this.board, value);
90
90
  if (data.newText) {
91
- DrawTransforms.setTableText(this.board, path, text.key, data.newText, data.height);
91
+ DrawTransforms.setTableText(this.board, path, text.id, data.newText, data.height);
92
92
  }
93
93
  data.operations && memorizeLatestText(value, data.operations);
94
94
  },
95
95
  getRenderRectangle: (value, text) => {
96
- const cell = getCellWithPoints(this.board, value, text.key);
96
+ const cell = getCellWithPoints(this.board, value, text.id);
97
97
  if (PlaitTableElement.isVerticalText(cell)) {
98
98
  const cellRectangle = RectangleClient.getRectangleByPoints(cell.points);
99
99
  const strokeWidth = getStrokeWidthByElement(cell);
@@ -114,8 +114,7 @@ export class TableComponent extends CommonElementFlavour {
114
114
  this.textGenerator.initialize();
115
115
  }
116
116
  onContextChanged(value, previous) {
117
- const isChangeTheme = this.board.operations.find(op => op.type === 'set_theme');
118
- if (value.element !== previous.element || isChangeTheme) {
117
+ if (value.element !== previous.element || value.hasThemeChanged) {
119
118
  const previousSelectedCells = getSelectedCells(previous.element);
120
119
  if (previousSelectedCells?.length) {
121
120
  clearSelectedCells(previous.element);
@@ -153,4 +152,4 @@ export class TableComponent extends CommonElementFlavour {
153
152
  this.lineAutoCompleteGenerator.destroy();
154
153
  }
155
154
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQStDLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEcsT0FBTyxFQUFFLGFBQWEsRUFBc0IsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNuQixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRWpHLE1BQU0sT0FBTyxjQUFxQyxTQUFRLG9CQUFtQztJQVN6RjtRQUNJLEtB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Q0FBQztnQkFDakIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckcsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBPbkNvbnRleHRDaGFuZ2VkLFxuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIHNldEFuZ2xlRm9yRyxcbiAgICBkZWdyZWVzVG9SYWRpYW5zXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvciwgQ29tbW9uRWxlbWVudEZsYXZvdXIsIFRleHRNYW5hZ2VDaGFuZ2VEYXRhLCBjYW5SZXNpemUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0VGFibGUsIFBsYWl0VGFibGVCb2FyZCwgUGxhaXRUYWJsZUNlbGwsIFBsYWl0VGFibGVFbGVtZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7IGdldFRleHRNYW5hZ2UsIFBsYWl0RHJhd1NoYXBlVGV4dCwgVGV4dEdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy90ZXh0LmdlbmVyYXRvcic7XG5pbXBvcnQgeyBUYWJsZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy90YWJsZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0Q2VsbFdpdGhQb2ludHMsIGlzQ2VsbEluY2x1ZGVUZXh0IH0gZnJvbSAnLi91dGlscy90YWJsZSc7XG5pbXBvcnQge1xuICAgIGNsZWFyU2VsZWN0ZWRDZWxscyxcbiAgICBnZXRDZWxsc1JlY3RhbmdsZSxcbiAgICBnZXRTZWxlY3RlZENlbGxzLFxuICAgIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50LFxuICAgIG1lbW9yaXplTGF0ZXN0VGV4dCxcbiAgICBzZXRTZWxlY3RlZENlbGxzXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9lbmdpbmVzJztcbmltcG9ydCB7IFRhYmxlU3ltYm9scyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRIb3Jpem9udGFsVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4vZW5naW5lcy90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9hcnJvdy1saW5lLWF1dG8tY29tcGxldGUuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBQbGFpdFRhYmxlPiBleHRlbmRzIENvbW1vbkVsZW1lbnRGbGF2b3VyPFQsIFBsYWl0Qm9hcmQ+IGltcGxlbWVudHMgT25Db250ZXh0Q2hhbmdlZDxULCBQbGFpdEJvYXJkPiB7XG4gICAgYWN0aXZlR2VuZXJhdG9yITogQWN0aXZlR2VuZXJhdG9yPFQ+O1xuXG4gICAgdGFibGVHZW5lcmF0b3IhOiBUYWJsZUdlbmVyYXRvcjxUPjtcblxuICAgIHRleHRHZW5lcmF0b3IhOiBUZXh0R2VuZXJhdG9yPFQ+O1xuXG4gICAgbGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciE6IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcjxQbGFpdFRhYmxlPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVHZW5lcmF0b3IoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yID0gbmV3IEFjdGl2ZUdlbmVyYXRvcjxUPih0aGlzLmJvYXJkLCB7XG4gICAgICAgICAgICBnZXRTdHJva2VXaWR0aDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFN0cm9rZU9wYWNpdHk6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICh2YWx1ZTogVCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNlbGxzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldENlbGxzUmVjdGFuZ2xlKHRoaXMuYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkLCB0aGlzLmVsZW1lbnQsIGNlbGxzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyh2YWx1ZS5wb2ludHMhKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNSZXNpemVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IGdldFNlbGVjdGVkQ2VsbHModGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjYW5SZXNpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IgPSBuZXcgVGFibGVHZW5lcmF0b3I8VD4odGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yID0gbmV3IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5nZXRSZWYoKS5hZGRHZW5lcmF0b3IoQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLmtleSwgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUdlbmVyYXRvcigpO1xuICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICB9XG5cbiAgICBkcmF3KCkge1xuICAgICAgICB0aGlzLnRhYmxlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yLmRyYXcodGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgdGhpcy5yb3RhdGVWZXJ0aWNhbFRleHQoKTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcm90YXRlVmVydGljYWxUZXh0KCkge1xuICAgICAgICBjb25zdCB0YWJsZSA9ICh0aGlzLmJvYXJkIGFzIFBsYWl0VGFibGVCb2FyZCkuYnVpbGRUYWJsZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB0YWJsZS5jZWxscy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKFBsYWl0VGFibGVFbGVtZW50LmlzVmVydGljYWxUZXh0KGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dE1hbmFnZSA9IGdldFRleHRNYW5hZ2UodGhpcy5ib2FyZCwgaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRleHRNYW5hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5naW5lID0gZ2V0RW5naW5lPFBsYWl0VGFibGU+KFRhYmxlU3ltYm9scy50YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGVuZ2luZS5nZXRUZXh0UmVjdGFuZ2xlISh0aGlzLmVsZW1lbnQsIHsga2V5OiBpdGVtLmlkLCBib2FyZDogdGhpcy5ib2FyZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZS5nLmNsYXNzTGlzdC5hZGQoJ3ZlcnRpY2FsLWNlbGwtdGV4dCcpO1xuICAgICAgICAgICAgICAgICAgICBzZXRBbmdsZUZvckcodGV4dE1hbmFnZS5nLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKSwgZGVncmVlc1RvUmFkaWFucygtOTApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERyYXdTaGFwZVRleHRzKGNlbGxzOiBQbGFpdFRhYmxlQ2VsbFtdKTogUGxhaXREcmF3U2hhcGVUZXh0W10ge1xuICAgICAgICByZXR1cm4gY2VsbHNcbiAgICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpc0NlbGxJbmNsdWRlVGV4dChpdGVtKSlcbiAgICAgICAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQhLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0SGVpZ2h0OiBpdGVtLnRleHRIZWlnaHQhLFxuICAgICAgICAgICAgICAgICAgICBib2FyZDogdGhpcy5ib2FyZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplVGV4dE1hbmFnZSgpIHtcbiAgICAgICAgY29uc3QgdGV4dHMgPSB0aGlzLmdldERyYXdTaGFwZVRleHRzKHRoaXMuZWxlbWVudC5jZWxscyk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvciA9IG5ldyBUZXh0R2VuZXJhdG9yKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCwgdGV4dHMsIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAodmFsdWU6IFBsYWl0VGFibGUsIGRhdGE6IFRleHRNYW5hZ2VDaGFuZ2VEYXRhLCB0ZXh0OiBQbGFpdERyYXdTaGFwZVRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aCh0aGlzLmJvYXJkLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEubmV3VGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRUYWJsZVRleHQodGhpcy5ib2FyZCwgcGF0aCwgdGV4dC5rZXksIGRhdGEubmV3VGV4dCwgZGF0YS5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhLm9wZXJhdGlvbnMgJiYgbWVtb3JpemVMYXRlc3RUZXh0KHZhbHVlLCBkYXRhLm9wZXJhdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlbmRlclJlY3RhbmdsZTogKHZhbHVlOiBQbGFpdFRhYmxlLCB0ZXh0OiBQbGFpdERyYXdTaGFwZVRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsID0gZ2V0Q2VsbFdpdGhQb2ludHModGhpcy5ib2FyZCwgdmFsdWUsIHRleHQua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoUGxhaXRUYWJsZUVsZW1lbnQuaXNWZXJ0aWNhbFRleHQoY2VsbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjZWxsLnBvaW50cyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoY2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gY2VsbC50ZXh0SGVpZ2h0IHx8IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNlbGxSZWN0YW5nbGUuaGVpZ2h0IC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0ID4gMCA/IGhlaWdodCA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB4OiBjZWxsUmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBjZWxsUmVjdGFuZ2xlLnkgKyAoY2VsbFJlY3RhbmdsZS5oZWlnaHQgLSBoZWlnaHQpIC8gMlxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRIb3Jpem9udGFsVGV4dFJlY3RhbmdsZShjZWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IuaW5pdGlhbGl6ZSgpO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZWQodmFsdWU6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8VCwgUGxhaXRCb2FyZD4sIHByZXZpb3VzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFQsIFBsYWl0Qm9hcmQ+KSB7XG4gICAgICAgIGNvbnN0IGlzQ2hhbmdlVGhlbWUgPSB0aGlzLmJvYXJkLm9wZXJhdGlvbnMuZmluZChvcCA9PiBvcC50eXBlID09PSAnc2V0X3RoZW1lJyk7XG4gICAgICAgIGlmICh2YWx1ZS5lbGVtZW50ICE9PSBwcmV2aW91cy5lbGVtZW50IHx8IGlzQ2hhbmdlVGhlbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWRDZWxscyA9IGdldFNlbGVjdGVkQ2VsbHMocHJldmlvdXMuZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNTZWxlY3RlZENlbGxzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjbGVhclNlbGVjdGVkQ2VsbHMocHJldmlvdXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDZWxscyh2YWx1ZS5lbGVtZW50LCBwcmV2aW91c1NlbGVjdGVkQ2VsbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50YWJsZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh2YWx1ZS5lbGVtZW50LCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodmFsdWUuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVGV4dHMgPSB0aGlzLmdldERyYXdTaGFwZVRleHRzKHByZXZpb3VzLmVsZW1lbnQuY2VsbHMpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFRleHRzID0gdGhpcy5nZXREcmF3U2hhcGVUZXh0cyh2YWx1ZS5lbGVtZW50LmNlbGxzKTtcbiAgICAgICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci51cGRhdGUodmFsdWUuZWxlbWVudCwgcHJldmlvdXNUZXh0cywgY3VycmVudFRleHRzLCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICAgICAgdGhpcy5yb3RhdGVWZXJ0aWNhbFRleHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVTZWxlY3RlZCA9IHZhbHVlLnNlbGVjdGVkID09PSBwcmV2aW91cy5zZWxlY3RlZDtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVIYW5kbGVTdGF0ZSA9IHRoaXMuYWN0aXZlR2VuZXJhdG9yLm9wdGlvbnMuaGFzUmVzaXplSGFuZGxlKCkgPT09IHRoaXMuYWN0aXZlR2VuZXJhdG9yLmhhc1Jlc2l6ZUhhbmRsZTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZENlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyh2YWx1ZS5lbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghaGFzU2FtZVNlbGVjdGVkIHx8ICFoYXNTYW1lSGFuZGxlU3RhdGUgfHwgY3VycmVudFNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHZhbHVlLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRDZWxscyh2YWx1ZS5lbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50YWJsZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgfVxufVxuIl19
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQStDLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEcsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ25CLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFakcsTUFBTSxPQUFPLGNBQXFDLFNBQVEsb0JBQW1DO0lBU3pGO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3RELGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLE9BQU8sbUJBQW1CLENBQUM7WUFDL0IsQ0FBQztZQUNELGdCQUFnQixFQUFFLEdBQUcsRUFBRTtnQkFDbkIsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDO1lBQ0QsWUFBWSxFQUFFLENBQUMsS0FBUSxFQUFFLEVBQUU7Z0JBQ3ZCLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNqRixDQUFDO2dCQUNELE9BQU8sZUFBZSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxNQUFPLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7Z0JBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQsVUFBVTtRQUNOLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JHLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsTUFBTSxLQUFLLEdBQUksSUFBSSxDQUFDLEtBQXlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixJQUFJLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUNiLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBYSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUM5RixVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztvQkFDakQsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBdUI7UUFDckMsT0FBTyxLQUFLO2FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1IsT0FBTztnQkFDSCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFLO2dCQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVc7Z0JBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtZQUNwRSxRQUFRLEVBQUUsQ0FBQyxLQUFpQixFQUFFLElBQTBCLEVBQUUsSUFBa0IsRUFBRSxFQUFFO2dCQUM1RSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3BELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNmLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdEYsQ0FBQztnQkFDRCxJQUFJLENBQUMsVUFBVSxJQUFJLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEUsQ0FBQztZQUNELGtCQUFrQixFQUFFLENBQUMsS0FBaUIsRUFBRSxJQUFrQixFQUFFLEVBQUU7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEUsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO29CQUNuQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO29CQUMvRixPQUFPO3dCQUNILEtBQUs7d0JBQ0wsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDL0IsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVzt3QkFDckUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7cUJBQzNELENBQUM7Z0JBQ04sQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBK0MsRUFBRSxRQUFrRDtRQUNoSCxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDOUQsTUFBTSxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakUsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDaEMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdILE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUM3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO1lBQ25ILE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUM1RixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7aUJBQzFCLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyRyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU87UUFDSCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIE9uQ29udGV4dENoYW5nZWQsXG4gICAgQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgc2V0QW5nbGVGb3JHLFxuICAgIGRlZ3JlZXNUb1JhZGlhbnNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZlR2VuZXJhdG9yLCBDb21tb25FbGVtZW50Rmxhdm91ciwgVGV4dE1hbmFnZUNoYW5nZURhdGEsIGNhblJlc2l6ZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRUYWJsZSwgUGxhaXRUYWJsZUJvYXJkLCBQbGFpdFRhYmxlQ2VsbCwgUGxhaXRUYWJsZUVsZW1lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgRHJhd1RleHRJbmZvLCBUZXh0R2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcbmltcG9ydCB7IFRhYmxlR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL3RhYmxlLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRDZWxsV2l0aFBvaW50cywgZ2V0VGV4dE1hbmFnZUJ5Q2VsbCwgaXNDZWxsSW5jbHVkZVRleHQgfSBmcm9tICcuL3V0aWxzL3RhYmxlJztcbmltcG9ydCB7XG4gICAgY2xlYXJTZWxlY3RlZENlbGxzLFxuICAgIGdldENlbGxzUmVjdGFuZ2xlLFxuICAgIGdldFNlbGVjdGVkQ2VsbHMsXG4gICAgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQsXG4gICAgbWVtb3JpemVMYXRlc3RUZXh0LFxuICAgIHNldFNlbGVjdGVkQ2VsbHNcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuL2VuZ2luZXMnO1xuaW1wb3J0IHsgVGFibGVTeW1ib2xzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldEhvcml6b250YWxUZXh0UmVjdGFuZ2xlIH0gZnJvbSAnLi9lbmdpbmVzL3RhYmxlL3RhYmxlJztcbmltcG9ydCB7IFNoYXBlRGVmYXVsdFNwYWNlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL2Fycm93LWxpbmUtYXV0by1jb21wbGV0ZS5nZW5lcmF0b3InO1xuXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFBsYWl0VGFibGU+IGV4dGVuZHMgQ29tbW9uRWxlbWVudEZsYXZvdXI8VCwgUGxhaXRCb2FyZD4gaW1wbGVtZW50cyBPbkNvbnRleHRDaGFuZ2VkPFQsIFBsYWl0Qm9hcmQ+IHtcbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I8VD47XG5cbiAgICB0YWJsZUdlbmVyYXRvciE6IFRhYmxlR2VuZXJhdG9yPFQ+O1xuXG4gICAgdGV4dEdlbmVyYXRvciE6IFRleHRHZW5lcmF0b3I8VD47XG5cbiAgICBsaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yITogQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yPFBsYWl0VGFibGU+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUdlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IgPSBuZXcgQWN0aXZlR2VuZXJhdG9yPFQ+KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGdldFN0cm9rZVdpZHRoOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFDVElWRV9TVFJPS0VfV0lEVEg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U3Ryb2tlT3BhY2l0eTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKHZhbHVlOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRTZWxlY3RlZENlbGxzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Q2VsbHNSZWN0YW5nbGUodGhpcy5ib2FyZCBhcyBQbGFpdFRhYmxlQm9hcmQsIHRoaXMuZWxlbWVudCwgY2VsbHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHZhbHVlLnBvaW50cyEpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChjZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhblJlc2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50YWJsZUdlbmVyYXRvciA9IG5ldyBUYWJsZUdlbmVyYXRvcjxUPih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplVGV4dE1hbmFnZSgpO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgPSBuZXcgQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLmdldFJlZigpLmFkZEdlbmVyYXRvcihBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3Iua2V5LCB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplR2VuZXJhdG9yKCk7XG4gICAgICAgIHRoaXMuZHJhdygpO1xuICAgIH1cblxuICAgIGRyYXcoKSB7XG4gICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IuZHJhdyh0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICB0aGlzLnJvdGF0ZVZlcnRpY2FsVGV4dCgpO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByb3RhdGVWZXJ0aWNhbFRleHQoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gKHRoaXMuYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkKS5idWlsZFRhYmxlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIHRhYmxlLmNlbGxzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoUGxhaXRUYWJsZUVsZW1lbnQuaXNWZXJ0aWNhbFRleHQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZUJ5Q2VsbCh0aGlzLmJvYXJkLCBpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAodGV4dE1hbmFnZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmU8UGxhaXRUYWJsZT4oVGFibGVTeW1ib2xzLnRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZW5naW5lLmdldFRleHRSZWN0YW5nbGUhKHRoaXMuZWxlbWVudCwgeyBrZXk6IGl0ZW0uaWQsIGJvYXJkOiB0aGlzLmJvYXJkIH0pO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlLmcuY2xhc3NMaXN0LmFkZCgndmVydGljYWwtY2VsbC10ZXh0Jyk7XG4gICAgICAgICAgICAgICAgICAgIHNldEFuZ2xlRm9yRyh0ZXh0TWFuYWdlLmcsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChyZWN0YW5nbGUpLCBkZWdyZWVzVG9SYWRpYW5zKC05MCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RHJhd1NoYXBlVGV4dHMoY2VsbHM6IFBsYWl0VGFibGVDZWxsW10pOiBEcmF3VGV4dEluZm9bXSB7XG4gICAgICAgIHJldHVybiBjZWxsc1xuICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IGlzQ2VsbEluY2x1ZGVUZXh0KGl0ZW0pKVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0ISxcbiAgICAgICAgICAgICAgICAgICAgdGV4dEhlaWdodDogaXRlbS50ZXh0SGVpZ2h0ISxcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQ6IHRoaXMuYm9hcmRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKSB7XG4gICAgICAgIGNvbnN0IHRleHRzID0gdGhpcy5nZXREcmF3U2hhcGVUZXh0cyh0aGlzLmVsZW1lbnQuY2VsbHMpO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgPSBuZXcgVGV4dEdlbmVyYXRvcih0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHRleHRzLCB7XG4gICAgICAgICAgICBvbkNoYW5nZTogKHZhbHVlOiBQbGFpdFRhYmxlLCBkYXRhOiBUZXh0TWFuYWdlQ2hhbmdlRGF0YSwgdGV4dDogRHJhd1RleHRJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgodGhpcy5ib2FyZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLm5ld1RleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0VGFibGVUZXh0KHRoaXMuYm9hcmQsIHBhdGgsIHRleHQuaWQsIGRhdGEubmV3VGV4dCwgZGF0YS5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhLm9wZXJhdGlvbnMgJiYgbWVtb3JpemVMYXRlc3RUZXh0KHZhbHVlLCBkYXRhLm9wZXJhdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlbmRlclJlY3RhbmdsZTogKHZhbHVlOiBQbGFpdFRhYmxlLCB0ZXh0OiBEcmF3VGV4dEluZm8pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsID0gZ2V0Q2VsbFdpdGhQb2ludHModGhpcy5ib2FyZCwgdmFsdWUsIHRleHQuaWQpO1xuICAgICAgICAgICAgICAgIGlmIChQbGFpdFRhYmxlRWxlbWVudC5pc1ZlcnRpY2FsVGV4dChjZWxsKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGNlbGwucG9pbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChjZWxsKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBjZWxsLnRleHRIZWlnaHQgfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gY2VsbFJlY3RhbmdsZS5oZWlnaHQgLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgPiAwID8gaGVpZ2h0IDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGNlbGxSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGNlbGxSZWN0YW5nbGUueSArIChjZWxsUmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEhvcml6b250YWxUZXh0UmVjdGFuZ2xlKGNlbGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlZCh2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxULCBQbGFpdEJvYXJkPiwgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8VCwgUGxhaXRCb2FyZD4pIHtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgdmFsdWUuaGFzVGhlbWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGVkQ2VsbHMgPSBnZXRTZWxlY3RlZENlbGxzKHByZXZpb3VzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzU2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJTZWxlY3RlZENlbGxzKHByZXZpb3VzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2VsbHModmFsdWUuZWxlbWVudCwgcHJldmlvdXNTZWxlY3RlZENlbGxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodmFsdWUuZWxlbWVudCwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHZhbHVlLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1RleHRzID0gdGhpcy5nZXREcmF3U2hhcGVUZXh0cyhwcmV2aW91cy5lbGVtZW50LmNlbGxzKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUZXh0cyA9IHRoaXMuZ2V0RHJhd1NoYXBlVGV4dHModmFsdWUuZWxlbWVudC5jZWxscyk7XG4gICAgICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IudXBkYXRlKHZhbHVlLmVsZW1lbnQsIHByZXZpb3VzVGV4dHMsIGN1cnJlbnRUZXh0cywgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgICAgIHRoaXMucm90YXRlVmVydGljYWxUZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lSGFuZGxlU3RhdGUgPSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5vcHRpb25zLmhhc1Jlc2l6ZUhhbmRsZSgpID09PSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5oYXNSZXNpemVIYW5kbGU7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRDZWxscyA9IGdldFNlbGVjdGVkQ2VsbHModmFsdWUuZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVTZWxlY3RlZCB8fCAhaGFzU2FtZUhhbmRsZVN0YXRlIHx8IGN1cnJlbnRTZWxlY3RlZENlbGxzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh2YWx1ZS5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclNlbGVjdGVkQ2VsbHModmFsdWUuZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -3,14 +3,14 @@ import { setText, setTextSize } from './geometry-text';
3
3
  import { insertImage } from './image';
4
4
  import { connectArrowLineToDraw, removeArrowLineText, resizeArrowLine, setArrowLineMark, setArrowLineShape, setArrowLineTexts } from './arrow-line';
5
5
  import { addSwimlaneColumn, addSwimlaneRow, removeSwimlaneColumn, removeSwimlaneRow, updateSwimlaneCount } from './swimlane';
6
- import { setDrawShapeText } from './multi-text-geometry-text';
6
+ import { setDrawTexts } from './multi-text-geometry-text';
7
7
  import { setTableText } from './table-text';
8
8
  import { setTableFill } from './table';
9
9
  import { setVectorLineShape } from './vector-line';
10
10
  import { insertDrawByVector } from './common';
11
11
  export const DrawTransforms = {
12
12
  setText,
13
- setDrawShapeText,
13
+ setDrawTexts,
14
14
  insertGeometry,
15
15
  resizeGeometry,
16
16
  insertText,
@@ -33,4 +33,4 @@ export const DrawTransforms = {
33
33
  setTableFill,
34
34
  insertDrawByVector
35
35
  };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUNILHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ3BCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLE9BQU87SUFDUCxnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGNBQWM7SUFDZCxVQUFVO0lBQ1YsV0FBVztJQUNYLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixrQkFBa0I7Q0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc2VydFRleHQsIGluc2VydEdlb21ldHJ5LCByZXNpemVHZW9tZXRyeSwgc3dpdGNoR2VvbWV0cnlTaGFwZSB9IGZyb20gJy4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgc2V0VGV4dCwgc2V0VGV4dFNpemUgfSBmcm9tICcuL2dlb21ldHJ5LXRleHQnO1xuaW1wb3J0IHsgaW5zZXJ0SW1hZ2UgfSBmcm9tICcuL2ltYWdlJztcbmltcG9ydCB7XG4gICAgY29ubmVjdEFycm93TGluZVRvRHJhdyxcbiAgICByZW1vdmVBcnJvd0xpbmVUZXh0LFxuICAgIHJlc2l6ZUFycm93TGluZSxcbiAgICBzZXRBcnJvd0xpbmVNYXJrLFxuICAgIHNldEFycm93TGluZVNoYXBlLFxuICAgIHNldEFycm93TGluZVRleHRzXG59IGZyb20gJy4vYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBhZGRTd2ltbGFuZUNvbHVtbiwgYWRkU3dpbWxhbmVSb3csIHJlbW92ZVN3aW1sYW5lQ29sdW1uLCByZW1vdmVTd2ltbGFuZVJvdywgdXBkYXRlU3dpbWxhbmVDb3VudCB9IGZyb20gJy4vc3dpbWxhbmUnO1xuaW1wb3J0IHsgc2V0RHJhd1NoYXBlVGV4dCB9IGZyb20gJy4vbXVsdGktdGV4dC1nZW9tZXRyeS10ZXh0JztcbmltcG9ydCB7IHNldFRhYmxlVGV4dCB9IGZyb20gJy4vdGFibGUtdGV4dCc7XG5pbXBvcnQgeyBzZXRUYWJsZUZpbGwgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IHNldFZlY3RvckxpbmVTaGFwZSB9IGZyb20gJy4vdmVjdG9yLWxpbmUnO1xuaW1wb3J0IHsgaW5zZXJ0RHJhd0J5VmVjdG9yIH0gZnJvbSAnLi9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgRHJhd1RyYW5zZm9ybXMgPSB7XG4gICAgc2V0VGV4dCxcbiAgICBzZXREcmF3U2hhcGVUZXh0LFxuICAgIGluc2VydEdlb21ldHJ5LFxuICAgIHJlc2l6ZUdlb21ldHJ5LFxuICAgIGluc2VydFRleHQsXG4gICAgc2V0VGV4dFNpemUsXG4gICAgcmVzaXplQXJyb3dMaW5lLFxuICAgIHNldEFycm93TGluZVRleHRzLFxuICAgIHJlbW92ZUFycm93TGluZVRleHQsXG4gICAgc2V0QXJyb3dMaW5lTWFyayxcbiAgICBzZXRBcnJvd0xpbmVTaGFwZSxcbiAgICBzZXRWZWN0b3JMaW5lU2hhcGUsXG4gICAgaW5zZXJ0SW1hZ2UsXG4gICAgY29ubmVjdEFycm93TGluZVRvRHJhdyxcbiAgICBzd2l0Y2hHZW9tZXRyeVNoYXBlLFxuICAgIHNldFRhYmxlVGV4dCxcbiAgICBhZGRTd2ltbGFuZVJvdyxcbiAgICBhZGRTd2ltbGFuZUNvbHVtbixcbiAgICByZW1vdmVTd2ltbGFuZVJvdyxcbiAgICByZW1vdmVTd2ltbGFuZUNvbHVtbixcbiAgICB1cGRhdGVTd2ltbGFuZUNvdW50LFxuICAgIHNldFRhYmxlRmlsbCxcbiAgICBpbnNlcnREcmF3QnlWZWN0b3Jcbn07XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUNILHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ3BCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixPQUFPO0lBQ1AsWUFBWTtJQUNaLGNBQWM7SUFDZCxjQUFjO0lBQ2QsVUFBVTtJQUNWLFdBQVc7SUFDWCxlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osY0FBYztJQUNkLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osa0JBQWtCO0NBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNlcnRUZXh0LCBpbnNlcnRHZW9tZXRyeSwgcmVzaXplR2VvbWV0cnksIHN3aXRjaEdlb21ldHJ5U2hhcGUgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IHNldFRleHQsIHNldFRleHRTaXplIH0gZnJvbSAnLi9nZW9tZXRyeS10ZXh0JztcbmltcG9ydCB7IGluc2VydEltYWdlIH0gZnJvbSAnLi9pbWFnZSc7XG5pbXBvcnQge1xuICAgIGNvbm5lY3RBcnJvd0xpbmVUb0RyYXcsXG4gICAgcmVtb3ZlQXJyb3dMaW5lVGV4dCxcbiAgICByZXNpemVBcnJvd0xpbmUsXG4gICAgc2V0QXJyb3dMaW5lTWFyayxcbiAgICBzZXRBcnJvd0xpbmVTaGFwZSxcbiAgICBzZXRBcnJvd0xpbmVUZXh0c1xufSBmcm9tICcuL2Fycm93LWxpbmUnO1xuaW1wb3J0IHsgYWRkU3dpbWxhbmVDb2x1bW4sIGFkZFN3aW1sYW5lUm93LCByZW1vdmVTd2ltbGFuZUNvbHVtbiwgcmVtb3ZlU3dpbWxhbmVSb3csIHVwZGF0ZVN3aW1sYW5lQ291bnQgfSBmcm9tICcuL3N3aW1sYW5lJztcbmltcG9ydCB7IHNldERyYXdUZXh0cyB9IGZyb20gJy4vbXVsdGktdGV4dC1nZW9tZXRyeS10ZXh0JztcbmltcG9ydCB7IHNldFRhYmxlVGV4dCB9IGZyb20gJy4vdGFibGUtdGV4dCc7XG5pbXBvcnQgeyBzZXRUYWJsZUZpbGwgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IHNldFZlY3RvckxpbmVTaGFwZSB9IGZyb20gJy4vdmVjdG9yLWxpbmUnO1xuaW1wb3J0IHsgaW5zZXJ0RHJhd0J5VmVjdG9yIH0gZnJvbSAnLi9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgRHJhd1RyYW5zZm9ybXMgPSB7XG4gICAgc2V0VGV4dCxcbiAgICBzZXREcmF3VGV4dHMsXG4gICAgaW5zZXJ0R2VvbWV0cnksXG4gICAgcmVzaXplR2VvbWV0cnksXG4gICAgaW5zZXJ0VGV4dCxcbiAgICBzZXRUZXh0U2l6ZSxcbiAgICByZXNpemVBcnJvd0xpbmUsXG4gICAgc2V0QXJyb3dMaW5lVGV4dHMsXG4gICAgcmVtb3ZlQXJyb3dMaW5lVGV4dCxcbiAgICBzZXRBcnJvd0xpbmVNYXJrLFxuICAgIHNldEFycm93TGluZVNoYXBlLFxuICAgIHNldFZlY3RvckxpbmVTaGFwZSxcbiAgICBpbnNlcnRJbWFnZSxcbiAgICBjb25uZWN0QXJyb3dMaW5lVG9EcmF3LFxuICAgIHN3aXRjaEdlb21ldHJ5U2hhcGUsXG4gICAgc2V0VGFibGVUZXh0LFxuICAgIGFkZFN3aW1sYW5lUm93LFxuICAgIGFkZFN3aW1sYW5lQ29sdW1uLFxuICAgIHJlbW92ZVN3aW1sYW5lUm93LFxuICAgIHJlbW92ZVN3aW1sYW5lQ29sdW1uLFxuICAgIHVwZGF0ZVN3aW1sYW5lQ291bnQsXG4gICAgc2V0VGFibGVGaWxsLFxuICAgIGluc2VydERyYXdCeVZlY3RvclxufTtcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Transforms } from '@plait/core';
2
- export const setDrawShapeText = (board, element, text) => {
2
+ export const setDrawTexts = (board, element, text) => {
3
3
  const newTexts = element.texts?.map(item => {
4
- if (item.key === text.key) {
4
+ if (item.id === text.id) {
5
5
  return { ...item, ...text };
6
6
  }
7
7
  return item;
@@ -12,4 +12,4 @@ export const setDrawShapeText = (board, element, text) => {
12
12
  const path = board.children.findIndex(child => child === element);
13
13
  Transforms.setNode(board, newElement, [path]);
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGV4dC1nZW9tZXRyeS10ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdHJhbnNmb3Jtcy9tdWx0aS10ZXh0LWdlb21ldHJ5LXRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0MsRUFBRSxJQUF3QixFQUFFLEVBQUU7SUFDaEgsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdkMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN4QixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBRztRQUNmLEtBQUssRUFBRSxRQUFRO0tBQ2xCLENBQUM7SUFDRixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztJQUNsRSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbGFpdERyYXdTaGFwZVRleHQgfSBmcm9tICcuLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGNvbnN0IHNldERyYXdTaGFwZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnksIHRleHQ6IFBsYWl0RHJhd1NoYXBlVGV4dCkgPT4ge1xuICAgIGNvbnN0IG5ld1RleHRzID0gZWxlbWVudC50ZXh0cz8ubWFwKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5rZXkgPT09IHRleHQua2V5KSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtLCAuLi50ZXh0IH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHtcbiAgICAgICAgdGV4dHM6IG5ld1RleHRzXG4gICAgfTtcbiAgICBjb25zdCBwYXRoID0gYm9hcmQuY2hpbGRyZW4uZmluZEluZGV4KGNoaWxkID0+IGNoaWxkID09PSBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIFtwYXRoXSk7XG59O1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGV4dC1nZW9tZXRyeS10ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdHJhbnNmb3Jtcy9tdWx0aS10ZXh0LWdlb21ldHJ5LXRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlyRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtDLEVBQUUsSUFBa0IsRUFBRSxFQUFFO0lBQ3RHLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZDLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUc7UUFDZixLQUFLLEVBQUUsUUFBUTtLQUNsQixDQUFDO0lBQ0YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDbEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBUcmFuc2Zvcm1zIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHJhd1RleHRJbmZvIH0gZnJvbSAnLi4vZ2VuZXJhdG9ycy90ZXh0LmdlbmVyYXRvcic7XG5cbmV4cG9ydCBjb25zdCBzZXREcmF3VGV4dHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnksIHRleHQ6IERyYXdUZXh0SW5mbykgPT4ge1xuICAgIGNvbnN0IG5ld1RleHRzID0gZWxlbWVudC50ZXh0cz8ubWFwKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5pZCA9PT0gdGV4dC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgLi4udGV4dCB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7XG4gICAgICAgIHRleHRzOiBuZXdUZXh0c1xuICAgIH07XG4gICAgY29uc3QgcGF0aCA9IGJvYXJkLmNoaWxkcmVuLmZpbmRJbmRleChjaGlsZCA9PiBjaGlsZCA9PT0gZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBbcGF0aF0pO1xufTtcbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import { idCreator, PlaitBoard, createG, RectangleClient, findElements, drawLinearPath, createMask, createRect, distanceBetweenPointAndPoint, catmullRomFitting, setStrokeLinecap } from '@plait/core';
2
2
  import { pointsOnBezierCurves } from 'points-on-curve';
3
- import { getPointOnPolyline, getPointByVectorComponent, removeDuplicatePoints, getExtendPoint } from '@plait/common';
4
- import { ArrowLineMarkerType, ArrowLineShape, PlaitArrowLine, PlaitDrawElement, StrokeStyle } from '../../interfaces';
5
- import { getLineDashByElement, getStrokeColorByElement } from '../style/stroke';
3
+ import { getPointOnPolyline, getPointByVectorComponent, removeDuplicatePoints, getExtendPoint, getStrokeLineDash, StrokeStyle } from '@plait/common';
4
+ import { ArrowLineMarkerType, ArrowLineShape, PlaitArrowLine, PlaitDrawElement } from '../../interfaces';
5
+ import { getStrokeColorByElement, getStrokeStyleByElement } from '../style/stroke';
6
6
  import { getEngine } from '../../engines';
7
7
  import { getElementShape } from '../shape';
8
8
  import { DefaultLineStyle, LINE_TEXT_SPACE } from '../../constants/line';
@@ -82,7 +82,8 @@ export const getCurvePoints = (board, element) => {
82
82
  export const drawArrowLine = (board, element) => {
83
83
  const strokeWidth = getStrokeWidthByElement(element);
84
84
  const strokeColor = getStrokeColorByElement(board, element);
85
- const strokeLineDash = getLineDashByElement(element);
85
+ const strokeStyle = getStrokeStyleByElement(board, element);
86
+ const strokeLineDash = getStrokeLineDash(strokeStyle, strokeWidth);
86
87
  const options = { stroke: strokeColor, strokeWidth, strokeLineDash };
87
88
  const lineG = createG();
88
89
  let points = getArrowLinePoints(board, element);
@@ -201,4 +202,4 @@ function drawArrowLineMask(board, element, id) {
201
202
  maskTargetFillRect.setAttribute('fill', 'none');
202
203
  return { mask, maskTargetFillRect };
203
204
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS1iYXNpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2Fycm93LWxpbmUvYXJyb3ctbGluZS1iYXNpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixPQUFPLEVBQ1AsZUFBZSxFQUNmLFlBQVksRUFFWixjQUFjLEVBQ2QsVUFBVSxFQUNWLFVBQVUsRUFDViw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFFSCxtQkFBbUIsRUFDbkIsY0FBYyxFQUVkLGNBQWMsRUFDZCxnQkFBZ0IsRUFFaEIsV0FBVyxFQUNkLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hF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ICAgaWRDcmVhdG9yLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgY3JlYXRlRyxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZmluZEVsZW1lbnRzLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBkcmF3TGluZWFyUGF0aCxcbiAgICBjcmVhdGVNYXNrLFxuICAgIGNyZWF0ZVJlY3QsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBjYXRtdWxsUm9tRml0dGluZyxcbiAgICBzZXRTdHJva2VMaW5lY2FwXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IHBvaW50c09uQmV6aWVyQ3VydmVzIH0gZnJvbSAncG9pbnRzLW9uLWN1cnZlJztcbmltcG9ydCB7IGdldFBvaW50T25Qb2x5bGluZSwgZ2V0UG9pbnRCeVZlY3RvckNvbXBvbmVudCwgcmVtb3ZlRHVwbGljYXRlUG9pbnRzLCBnZXRFeHRlbmRQb2ludCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBcnJvd0xpbmVIYW5kbGUsXG4gICAgQXJyb3dMaW5lTWFya2VyVHlwZSxcbiAgICBBcnJvd0xpbmVTaGFwZSxcbiAgICBBcnJvd0xpbmVUZXh0LFxuICAgIFBsYWl0QXJyb3dMaW5lLFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRTaGFwZUVsZW1lbnQsXG4gICAgU3Ryb2tlU3R5bGVcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRMaW5lRGFzaEJ5RWxlbWVudCwgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQgfSBmcm9tICcuLi9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi4vLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBnZXRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi9zaGFwZSc7XG5pbXBvcnQgeyBEZWZhdWx0TGluZVN0eWxlLCBMSU5FX1RFWFRfU1BBQ0UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbGluZSc7XG5pbXBvcnQgeyBMSU5FX1NOQVBQSU5HX0NPTk5FQ1RPUl9CVUZGRVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TGluZU1lbW9yaXplZExhdGVzdCB9IGZyb20gJy4uL21lbW9yaXplJztcbmltcG9ydCB7IGFsaWduUG9pbnRzIH0gZnJvbSAnLi9hcnJvdy1saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRBcnJvd0xpbmVIYW5kbGVSZWZQYWlyIH0gZnJvbSAnLi9hcnJvdy1saW5lLWNvbW1vbic7XG5pbXBvcnQgeyBnZXRFbGJvd1BvaW50cyB9IGZyb20gJy4vZWxib3cnO1xuaW1wb3J0IHsgZHJhd0Fycm93TGluZUFycm93IH0gZnJvbSAnLi9hcnJvdy1saW5lLWFycm93JztcbmltcG9ydCB7IGdldFNuYXBwaW5nUmVmLCBnZXRTbmFwcGluZ1NoYXBlLCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBBcnJvd0xpbmVTaGFwZUdlbmVyYXRvciB9IGZyb20gJy4uLy4uL2dlbmVyYXRvcnMvYXJyb3ctbGluZS5nZW5lcmF0b3InO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQXJyb3dMaW5lRWxlbWVudCA9IChcbiAgICBzaGFwZTogQXJyb3dMaW5lU2hhcGUsXG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSxcbiAgICBzb3VyY2U6IEFycm93TGluZUhhbmRsZSxcbiAgICB0YXJnZXQ6IEFycm93TGluZUhhbmRsZSxcbiAgICB0ZXh0cz86IEFycm93TGluZVRleHRbXSxcbiAgICBvcHRpb25zPzogUGljazxQbGFpdEFycm93TGluZSwgJ3N0cm9rZUNvbG9yJyB8ICdzdHJva2VXaWR0aCc+XG4pOiBQbGFpdEFycm93TGluZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnYXJyb3ctbGluZScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRleHRzOiB0ZXh0cyA/IHRleHRzIDogW10sXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcnJvd0xpbmVQb2ludHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lKSA9PiB7XG4gICAgc3dpdGNoIChlbGVtZW50LnNoYXBlKSB7XG4gICAgICAgIGNhc2UgQXJyb3dMaW5lU2hhcGUuZWxib3c6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBcnJvd0xpbmVTaGFwZS5jdXJ2ZToge1xuICAgICAgICAgICAgcmV0dXJuIGdldEN1cnZlUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBQbGFpdEFycm93TGluZS5nZXRQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldEFycm93TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgcG9pbnRzWzBdID0gaGFuZGxlUmVmUGFpci5zb3VyY2UucG9pbnQ7XG4gICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdID0gaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQ7XG4gICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnZlUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEFycm93TGluZSkgPT4ge1xuICAgIGlmIChlbGVtZW50LnBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldEFycm93TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCB7IHNvdXJjZSwgdGFyZ2V0IH0gPSBoYW5kbGVSZWZQYWlyO1xuICAgICAgICBjb25zdCBzb3VyY2VCb3VuZEVsZW1lbnQgPSBoYW5kbGVSZWZQYWlyLnNvdXJjZS5ib3VuZEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldEJvdW5kRWxlbWVudCA9IGhhbmRsZVJlZlBhaXIudGFyZ2V0LmJvdW5kRWxlbWVudDtcbiAgICAgICAgbGV0IGN1cnZlUG9pbnRzOiBQb2ludFtdID0gW3NvdXJjZS5wb2ludF07XG4gICAgICAgIGNvbnN0IHN1bURpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5zb3VyY2UucG9pbnQsIC4uLnRhcmdldC5wb2ludCk7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDEyICsgc3VtRGlzdGFuY2UgLyAzO1xuICAgICAgICBpZiAoc291cmNlQm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3JDb21wb25lbnQoc291cmNlLnBvaW50LCBzb3VyY2UudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0Qm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3JDb21wb25lbnQodGFyZ2V0LnBvaW50LCB0YXJnZXQudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1NpbmdsZUJvdW5kID0gKHNvdXJjZUJvdW5kRWxlbWVudCAmJiAhdGFyZ2V0Qm91bmRFbGVtZW50KSB8fCAoIXNvdXJjZUJvdW5kRWxlbWVudCAmJiB0YXJnZXRCb3VuZEVsZW1lbnQpO1xuICAgICAgICBpZiAoaXNTaW5nbGVCb3VuZCkge1xuICAgICAgICAgICAgY3VydmVQb2ludHMucHVzaCh0YXJnZXQucG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUTJDKGN1cnZlUG9pbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBwb2ludHNPbkJlemllckN1cnZlcyhwb2ludHMpIGFzIFBvaW50W107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzb3VyY2VCb3VuZEVsZW1lbnQgJiYgIXRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgY3VydmVQb2ludHMucHVzaChnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50KHNvdXJjZS5wb2ludCwgc291cmNlLnZlY3Rvciwgb2Zmc2V0KSk7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3JDb21wb25lbnQodGFyZ2V0LnBvaW50LCB0YXJnZXQudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKHRhcmdldC5wb2ludCk7XG4gICAgICAgIHJldHVybiBwb2ludHNPbkJlemllckN1cnZlcyhjdXJ2ZVBvaW50cykgYXMgUG9pbnRbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgZGF0YVBvaW50cyA9IFBsYWl0QXJyb3dMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGRhdGFQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoZGF0YVBvaW50cyk7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGNhdG11bGxSb21GaXR0aW5nKGRhdGFQb2ludHMpO1xuICAgICAgICByZXR1cm4gcG9pbnRzT25CZXppZXJDdXJ2ZXMocG9pbnRzKSBhcyBQb2ludFtdO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3QXJyb3dMaW5lID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEFycm93TGluZSkgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBnZXRTdHJva2VDb2xvckJ5RWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3Qgc3Ryb2tlTGluZURhc2ggPSBnZXRMaW5lRGFzaEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBvcHRpb25zID0geyBzdHJva2U6IHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCwgc3Ryb2tlTGluZURhc2ggfTtcbiAgICBjb25zdCBsaW5lRyA9IGNyZWF0ZUcoKTtcbiAgICBsZXQgcG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBsZXQgbGluZTtcbiAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gQXJyb3dMaW5lU2hhcGUuY3VydmUpIHtcbiAgICAgICAgbGluZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmN1cnZlKHBvaW50cywgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGluZSA9IGRyYXdMaW5lYXJQYXRoKHBvaW50cywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gaWRDcmVhdG9yKCk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ21hc2snLCBgdXJsKCMke2lkfSlgKTtcbiAgICBpZiAoZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gU3Ryb2tlU3R5bGUuZG90dGVkKSB7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAobGluZSwgJ3JvdW5kJyk7XG4gICAgfVxuICAgIGxpbmVHLmFwcGVuZENoaWxkKGxpbmUpO1xuXG4gICAgY29uc3QgeyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfSA9IGRyYXdBcnJvd0xpbmVNYXNrKGJvYXJkLCBlbGVtZW50IGFzIFBsYWl0QXJyb3dMaW5lLCBpZCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobWFzayk7XG4gICAgbGluZS5hcHBlbmRDaGlsZChtYXNrVGFyZ2V0RmlsbFJlY3QpO1xuICAgIGNvbnN0IGFycm93ID0gZHJhd0Fycm93TGluZUFycm93KGVsZW1lbnQgYXMgUGxhaXRBcnJvd0xpbmUsIHBvaW50cywgeyBzdHJva2U6IHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCB9KTtcbiAgICBhcnJvdyAmJiBsaW5lRy5hcHBlbmRDaGlsZChhcnJvdyk7XG4gICAgcmV0dXJuIGxpbmVHO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdENvbm5lY3Rpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQpOiBQb2ludCA9PiB7XG4gICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhoaXRFbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgcmVmID0gZ2V0U25hcHBpbmdSZWYoYm9hcmQsIGhpdEVsZW1lbnQsIHBvaW50KTtcbiAgICBjb25zdCBjb25uZWN0aW9uUG9pbnQgPSByZWYuY29ubmVjdG9yUG9pbnQgfHwgcmVmLmVkZ2VQb2ludDtcbiAgICByZXR1cm4gWyhjb25uZWN0aW9uUG9pbnRbMF0gLSByZWN0YW5nbGUueCkgLyByZWN0YW5nbGUud2lkdGgsIChjb25uZWN0aW9uUG9pbnRbMV0gLSByZWN0YW5nbGUueSkgLyByZWN0YW5nbGUuaGVpZ2h0XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRDb25uZWN0b3JQb2ludCA9IChwb2ludDogUG9pbnQsIGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGhpdEVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldEVsZW1lbnRTaGFwZShoaXRFbGVtZW50KTtcbiAgICBjb25zdCBjb25uZWN0b3JQb2ludHMgPSBnZXRFbmdpbmUoc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIHJldHVybiBjb25uZWN0b3JQb2ludHMuZmluZChjb25uZWN0b3JQb2ludCA9PiB7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLmNvbm5lY3RvclBvaW50LCAuLi5wb2ludCkgPD0gTElORV9TTkFQUElOR19DT05ORUNUT1JfQlVGRkVSO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFycm93TGluZVRleHRSZWN0YW5nbGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBpbmRleDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50ID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gZWxlbWVudC50ZXh0c1tpbmRleF07XG4gICAgY29uc3QgZWxib3dQb2ludHMgPSBnZXRBcnJvd0xpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHBvaW50ID0gZ2V0UG9pbnRPblBvbHlsaW5lKGVsYm93UG9pbnRzLCB0ZXh0LnBvc2l0aW9uKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBwb2ludFswXSAtIHRleHQud2lkdGghIC8gMixcbiAgICAgICAgeTogcG9pbnRbMV0gLSB0ZXh0LmhlaWdodCEgLyAyLFxuICAgICAgICB3aWR0aDogdGV4dC53aWR0aCEsXG4gICAgICAgIGhlaWdodDogdGV4dC5oZWlnaHQhXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcnJvd0xpbmVzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIGZpbmRFbGVtZW50cyhib2FyZCwge1xuICAgICAgICBtYXRjaDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSxcbiAgICAgICAgcmVjdXJzaW9uOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoZWxlbWVudClcbiAgICB9KSBhcyBQbGFpdEFycm93TGluZVtdO1xufTtcblxuLy8gcXVhZHJhdGljIEJlemllciB0byBjdWJpYyBCZXppZXJcbmV4cG9ydCBjb25zdCBRMkMgPSAocG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgY29uc3QgbnVtU2VnbWVudHMgPSBwb2ludHMubGVuZ3RoIC8gMztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVNlZ21lbnRzOyBpKyspIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IHFDb250cm9sID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgZW5kID0gcG9pbnRzW2kgKyAyXTtcbiAgICAgICAgY29uc3Qgc3RhcnREaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uc3RhcnQsIC4uLnFDb250cm9sKTtcbiAgICAgICAgY29uc3QgZW5kRGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLmVuZCwgLi4ucUNvbnRyb2wpO1xuICAgICAgICBjb25zdCBjQ29udHJvbDEgPSBnZXRFeHRlbmRQb2ludChzdGFydCwgcUNvbnRyb2wsIChzdGFydERpc3RhbmNlICogMikgLyAzKTtcbiAgICAgICAgY29uc3QgY0NvbnRyb2wyID0gZ2V0RXh0ZW5kUG9pbnQoZW5kLCBxQ29udHJvbCwgKGVuZERpc3RhbmNlICogMikgLyAzKTtcbiAgICAgICAgcmVzdWx0LnB1c2goc3RhcnQsIGNDb250cm9sMSwgY0NvbnRyb2wyLCBlbmQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFycm93TGluZUNyZWF0aW5nID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGxpbmVTaGFwZTogQXJyb3dMaW5lU2hhcGUsXG4gICAgc291cmNlUG9pbnQ6IFBvaW50LFxuICAgIG1vdmluZ1BvaW50OiBQb2ludCxcbiAgICBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCB8IG51bGwsXG4gICAgbGluZVNoYXBlRzogU1ZHR0VsZW1lbnRcbikgPT4ge1xuICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRTbmFwcGluZ1NoYXBlKGJvYXJkLCBtb3ZpbmdQb2ludCk7XG4gICAgY29uc3QgdGFyZ2V0Q29ubmVjdGlvbiA9IGhpdEVsZW1lbnQgPyBnZXRIaXRDb25uZWN0aW9uKGJvYXJkLCBtb3ZpbmdQb2ludCwgaGl0RWxlbWVudCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc291cmNlQ29ubmVjdGlvbiA9IHNvdXJjZUVsZW1lbnQgPyBnZXRIaXRDb25uZWN0aW9uKGJvYXJkLCBzb3VyY2VQb2ludCwgc291cmNlRWxlbWVudCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGFyZ2V0Qm91bmRJZCA9IGhpdEVsZW1lbnQgPyBoaXRFbGVtZW50LmlkIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxpbmVHZW5lcmF0b3IgPSBuZXcgQXJyb3dMaW5lU2hhcGVHZW5lcmF0b3IoYm9hcmQpO1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldExpbmVNZW1vcml6ZWRMYXRlc3QoKTtcbiAgICBsZXQgc291cmNlTWFya2VyLCB0YXJnZXRNYXJrZXI7XG4gICAgc291cmNlTWFya2VyID0gbWVtb3JpemVkTGF0ZXN0LnNvdXJjZTtcbiAgICB0YXJnZXRNYXJrZXIgPSBtZW1vcml6ZWRMYXRlc3QudGFyZ2V0O1xuICAgIHNvdXJjZU1hcmtlciAmJiBkZWxldGUgbWVtb3JpemVkTGF0ZXN0LnNvdXJjZTtcbiAgICB0YXJnZXRNYXJrZXIgJiYgZGVsZXRlIG1lbW9yaXplZExhdGVzdC50YXJnZXQ7XG4gICAgY29uc3QgdGVtcG9yYXJ5TGluZUVsZW1lbnQgPSBjcmVhdGVBcnJvd0xpbmVFbGVtZW50KFxuICAgICAgICBsaW5lU2hhcGUsXG4gICAgICAgIFtzb3VyY2VQb2ludCwgbW92aW5nUG9pbnRdLFxuICAgICAgICB7IG1hcmtlcjogc291cmNlTWFya2VyIHx8IEFycm93TGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogc291cmNlQ29ubmVjdGlvbiwgYm91bmRJZDogc291cmNlRWxlbWVudD8uaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IHRhcmdldE1hcmtlciB8fCBBcnJvd0xpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiB0YXJnZXRDb25uZWN0aW9uLCBib3VuZElkOiB0YXJnZXRCb3VuZElkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdExpbmVTdHlsZS5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgIC4uLm1lbW9yaXplZExhdGVzdFxuICAgICAgICB9XG4gICAgKTtcbiAgICBjb25zdCBsaW5lUG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCB0ZW1wb3JhcnlMaW5lRWxlbWVudCk7XG4gICAgY29uc3Qgb3RoZXJQb2ludCA9IGxpbmVQb2ludHNbMF07XG4gICAgdGVtcG9yYXJ5TGluZUVsZW1lbnQucG9pbnRzWzFdID0gYWxpZ25Qb2ludHMob3RoZXJQb2ludCwgbW92aW5nUG9pbnQpO1xuICAgIGxpbmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGVtcG9yYXJ5TGluZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChsaW5lU2hhcGVHKTtcbiAgICByZXR1cm4gdGVtcG9yYXJ5TGluZUVsZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiBkcmF3QXJyb3dMaW5lTWFzayhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXNrID0gY3JlYXRlTWFzaygpO1xuICAgIG1hc2suc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRBcnJvd0xpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShyZWN0YW5nbGUsIC0zMCk7XG4gICAgY29uc3QgbWFza0ZpbGxSZWN0ID0gY3JlYXRlUmVjdChyZWN0YW5nbGUsIHtcbiAgICAgICAgZmlsbDogJ3doaXRlJ1xuICAgIH0pO1xuICAgIG1hc2suYXBwZW5kQ2hpbGQobWFza0ZpbGxSZWN0KTtcblxuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICB0ZXh0cy5mb3JFYWNoKCh0ZXh0LCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgdGV4dFJlY3RhbmdsZSA9IGdldEFycm93TGluZVRleHRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGluZGV4KTtcbiAgICAgICAgdGV4dFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHRleHRSZWN0YW5nbGUsIExJTkVfVEVYVF9TUEFDRSAqIDIpO1xuICAgICAgICBjb25zdCByZWN0ID0gY3JlYXRlUmVjdCh0ZXh0UmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICBmaWxsOiAnYmxhY2snXG4gICAgICAgIH0pO1xuICAgICAgICBtYXNrLmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH0pO1xuICAgIC8vIG9wZW4gbGluZVxuICAgIGNvbnN0IG1hc2tUYXJnZXRGaWxsUmVjdCA9IGNyZWF0ZVJlY3QocmVjdGFuZ2xlKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgJzAnKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICByZXR1cm4geyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfTtcbn1cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS1iYXNpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2Fycm93LWxpbmUvYXJyb3ctbGluZS1iYXNpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixPQUFPLEVBQ1AsZUFBZSxFQUNmLFlBQVksRUFFWixjQUFjLEVBQ2QsVUFBVSxFQUNWLFVBQVUsRUFDViw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySixPQUFPLEVBRUgsbUJBQW1CLEVBQ25CLGNBQWMsRUFFZCxjQUFjLEVBQ2QsZ0JBQWdCLEVBRW5CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFx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QUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQb2ludCxcbiAgICBpZENyZWF0b3IsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBjcmVhdGVHLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBmaW5kRWxlbWVudHMsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIGRyYXdMaW5lYXJQYXRoLFxuICAgIGNyZWF0ZU1hc2ssXG4gICAgY3JlYXRlUmVjdCxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIGNhdG11bGxSb21GaXR0aW5nLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgcG9pbnRzT25CZXppZXJDdXJ2ZXMgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgZ2V0UG9pbnRPblBvbHlsaW5lLCBnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50LCByZW1vdmVEdXBsaWNhdGVQb2ludHMsIGdldEV4dGVuZFBvaW50LCBnZXRTdHJva2VMaW5lRGFzaCwgU3Ryb2tlU3R5bGUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQXJyb3dMaW5lSGFuZGxlLFxuICAgIEFycm93TGluZU1hcmtlclR5cGUsXG4gICAgQXJyb3dMaW5lU2hhcGUsXG4gICAgQXJyb3dMaW5lVGV4dCxcbiAgICBQbGFpdEFycm93TGluZSxcbiAgICBQbGFpdERyYXdFbGVtZW50LFxuICAgIFBsYWl0U2hhcGVFbGVtZW50XG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQsIGdldFN0cm9rZVN0eWxlQnlFbGVtZW50IH0gZnJvbSAnLi4vc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uLy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudFNoYXBlIH0gZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgRGVmYXVsdExpbmVTdHlsZSwgTElORV9URVhUX1NQQUNFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xpbmUnO1xuaW1wb3J0IHsgTElORV9TTkFQUElOR19DT05ORUNUT1JfQlVGRkVSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldExpbmVNZW1vcml6ZWRMYXRlc3QgfSBmcm9tICcuLi9tZW1vcml6ZSc7XG5pbXBvcnQgeyBhbGlnblBvaW50cyB9IGZyb20gJy4vYXJyb3ctbGluZS1yZXNpemUnO1xuaW1wb3J0IHsgZ2V0QXJyb3dMaW5lSGFuZGxlUmVmUGFpciB9IGZyb20gJy4vYXJyb3ctbGluZS1jb21tb24nO1xuaW1wb3J0IHsgZ2V0RWxib3dQb2ludHMgfSBmcm9tICcuL2VsYm93JztcbmltcG9ydCB7IGRyYXdBcnJvd0xpbmVBcnJvdyB9IGZyb20gJy4vYXJyb3ctbGluZS1hcnJvdyc7XG5pbXBvcnQgeyBnZXRTbmFwcGluZ1JlZiwgZ2V0U25hcHBpbmdTaGFwZSwgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgQXJyb3dMaW5lU2hhcGVHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9nZW5lcmF0b3JzL2Fycm93LWxpbmUuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFycm93TGluZUVsZW1lbnQgPSAoXG4gICAgc2hhcGU6IEFycm93TGluZVNoYXBlLFxuICAgIHBvaW50czogW1BvaW50LCBQb2ludF0sXG4gICAgc291cmNlOiBBcnJvd0xpbmVIYW5kbGUsXG4gICAgdGFyZ2V0OiBBcnJvd0xpbmVIYW5kbGUsXG4gICAgdGV4dHM/OiBBcnJvd0xpbmVUZXh0W10sXG4gICAgb3B0aW9ucz86IFBpY2s8UGxhaXRBcnJvd0xpbmUsICdzdHJva2VDb2xvcicgfCAnc3Ryb2tlV2lkdGgnPlxuKTogUGxhaXRBcnJvd0xpbmUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgdHlwZTogJ2Fycm93LWxpbmUnLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICB0ZXh0czogdGV4dHMgPyB0ZXh0cyA6IFtdLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXJyb3dMaW5lUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEFycm93TGluZSkgPT4ge1xuICAgIHN3aXRjaCAoZWxlbWVudC5zaGFwZSkge1xuICAgICAgICBjYXNlIEFycm93TGluZVNoYXBlLmVsYm93OiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RWxib3dQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQXJyb3dMaW5lU2hhcGUuY3VydmU6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDdXJ2ZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRBcnJvd0xpbmUuZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZlBhaXIgPSBnZXRBcnJvd0xpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIHBvaW50c1swXSA9IGhhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50O1xuICAgICAgICAgICAgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSA9IGhhbmRsZVJlZlBhaXIudGFyZ2V0LnBvaW50O1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50cztcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDdXJ2ZVBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUpID0+IHtcbiAgICBpZiAoZWxlbWVudC5wb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZVJlZlBhaXIgPSBnZXRBcnJvd0xpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgeyBzb3VyY2UsIHRhcmdldCB9ID0gaGFuZGxlUmVmUGFpcjtcbiAgICAgICAgY29uc3Qgc291cmNlQm91bmRFbGVtZW50ID0gaGFuZGxlUmVmUGFpci5zb3VyY2UuYm91bmRFbGVtZW50O1xuICAgICAgICBjb25zdCB0YXJnZXRCb3VuZEVsZW1lbnQgPSBoYW5kbGVSZWZQYWlyLnRhcmdldC5ib3VuZEVsZW1lbnQ7XG4gICAgICAgIGxldCBjdXJ2ZVBvaW50czogUG9pbnRbXSA9IFtzb3VyY2UucG9pbnRdO1xuICAgICAgICBjb25zdCBzdW1EaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uc291cmNlLnBvaW50LCAuLi50YXJnZXQucG9pbnQpO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAxMiArIHN1bURpc3RhbmNlIC8gMztcbiAgICAgICAgaWYgKHNvdXJjZUJvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgY3VydmVQb2ludHMucHVzaChnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50KHNvdXJjZS5wb2ludCwgc291cmNlLnZlY3Rvciwgb2Zmc2V0KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgY3VydmVQb2ludHMucHVzaChnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50KHRhcmdldC5wb2ludCwgdGFyZ2V0LnZlY3Rvciwgb2Zmc2V0KSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNTaW5nbGVCb3VuZCA9IChzb3VyY2VCb3VuZEVsZW1lbnQgJiYgIXRhcmdldEJvdW5kRWxlbWVudCkgfHwgKCFzb3VyY2VCb3VuZEVsZW1lbnQgJiYgdGFyZ2V0Qm91bmRFbGVtZW50KTtcbiAgICAgICAgaWYgKGlzU2luZ2xlQm91bmQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2godGFyZ2V0LnBvaW50KTtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IFEyQyhjdXJ2ZVBvaW50cyk7XG4gICAgICAgICAgICByZXR1cm4gcG9pbnRzT25CZXppZXJDdXJ2ZXMocG9pbnRzKSBhcyBQb2ludFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc291cmNlQm91bmRFbGVtZW50ICYmICF0YXJnZXRCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3RvckNvbXBvbmVudChzb3VyY2UucG9pbnQsIHNvdXJjZS52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICAgICAgY3VydmVQb2ludHMucHVzaChnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50KHRhcmdldC5wb2ludCwgdGFyZ2V0LnZlY3Rvciwgb2Zmc2V0KSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VydmVQb2ludHMucHVzaCh0YXJnZXQucG9pbnQpO1xuICAgICAgICByZXR1cm4gcG9pbnRzT25CZXppZXJDdXJ2ZXMoY3VydmVQb2ludHMpIGFzIFBvaW50W107XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGRhdGFQb2ludHMgPSBQbGFpdEFycm93TGluZS5nZXRQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBkYXRhUG9pbnRzID0gcmVtb3ZlRHVwbGljYXRlUG9pbnRzKGRhdGFQb2ludHMpO1xuICAgICAgICBjb25zdCBwb2ludHMgPSBjYXRtdWxsUm9tRml0dGluZyhkYXRhUG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIHBvaW50c09uQmV6aWVyQ3VydmVzKHBvaW50cykgYXMgUG9pbnRbXTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0Fycm93TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUpID0+IHtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZUNvbG9yID0gZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZVN0eWxlID0gZ2V0U3Ryb2tlU3R5bGVCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZUxpbmVEYXNoID0gZ2V0U3Ryb2tlTGluZURhc2goc3Ryb2tlU3R5bGUsIHN0cm9rZVdpZHRoKTtcbiAgICBjb25zdCBvcHRpb25zID0geyBzdHJva2U6IHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCwgc3Ryb2tlTGluZURhc2ggfTtcbiAgICBjb25zdCBsaW5lRyA9IGNyZWF0ZUcoKTtcbiAgICBsZXQgcG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBsZXQgbGluZTtcbiAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gQXJyb3dMaW5lU2hhcGUuY3VydmUpIHtcbiAgICAgICAgbGluZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmN1cnZlKHBvaW50cywgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGluZSA9IGRyYXdMaW5lYXJQYXRoKHBvaW50cywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gaWRDcmVhdG9yKCk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ21hc2snLCBgdXJsKCMke2lkfSlgKTtcbiAgICBpZiAoZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gU3Ryb2tlU3R5bGUuZG90dGVkKSB7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAobGluZSwgJ3JvdW5kJyk7XG4gICAgfVxuICAgIGxpbmVHLmFwcGVuZENoaWxkKGxpbmUpO1xuXG4gICAgY29uc3QgeyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfSA9IGRyYXdBcnJvd0xpbmVNYXNrKGJvYXJkLCBlbGVtZW50IGFzIFBsYWl0QXJyb3dMaW5lLCBpZCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobWFzayk7XG4gICAgbGluZS5hcHBlbmRDaGlsZChtYXNrVGFyZ2V0RmlsbFJlY3QpO1xuICAgIGNvbnN0IGFycm93ID0gZHJhd0Fycm93TGluZUFycm93KGVsZW1lbnQgYXMgUGxhaXRBcnJvd0xpbmUsIHBvaW50cywgeyBzdHJva2U6IHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCB9KTtcbiAgICBhcnJvdyAmJiBsaW5lRy5hcHBlbmRDaGlsZChhcnJvdyk7XG4gICAgcmV0dXJuIGxpbmVHO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdENvbm5lY3Rpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQpOiBQb2ludCA9PiB7XG4gICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhoaXRFbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgcmVmID0gZ2V0U25hcHBpbmdSZWYoYm9hcmQsIGhpdEVsZW1lbnQsIHBvaW50KTtcbiAgICBjb25zdCBjb25uZWN0aW9uUG9pbnQgPSByZWYuY29ubmVjdG9yUG9pbnQgfHwgcmVmLmVkZ2VQb2ludDtcbiAgICByZXR1cm4gWyhjb25uZWN0aW9uUG9pbnRbMF0gLSByZWN0YW5nbGUueCkgLyByZWN0YW5nbGUud2lkdGgsIChjb25uZWN0aW9uUG9pbnRbMV0gLSByZWN0YW5nbGUueSkgLyByZWN0YW5nbGUuaGVpZ2h0XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRDb25uZWN0b3JQb2ludCA9IChwb2ludDogUG9pbnQsIGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGhpdEVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldEVsZW1lbnRTaGFwZShoaXRFbGVtZW50KTtcbiAgICBjb25zdCBjb25uZWN0b3JQb2ludHMgPSBnZXRFbmdpbmUoc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIHJldHVybiBjb25uZWN0b3JQb2ludHMuZmluZChjb25uZWN0b3JQb2ludCA9PiB7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLmNvbm5lY3RvclBvaW50LCAuLi5wb2ludCkgPD0gTElORV9TTkFQUElOR19DT05ORUNUT1JfQlVGRkVSO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFycm93TGluZVRleHRSZWN0YW5nbGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBpbmRleDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50ID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gZWxlbWVudC50ZXh0c1tpbmRleF07XG4gICAgY29uc3QgZWxib3dQb2ludHMgPSBnZXRBcnJvd0xpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHBvaW50ID0gZ2V0UG9pbnRPblBvbHlsaW5lKGVsYm93UG9pbnRzLCB0ZXh0LnBvc2l0aW9uKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBwb2ludFswXSAtIHRleHQud2lkdGghIC8gMixcbiAgICAgICAgeTogcG9pbnRbMV0gLSB0ZXh0LmhlaWdodCEgLyAyLFxuICAgICAgICB3aWR0aDogdGV4dC53aWR0aCEsXG4gICAgICAgIGhlaWdodDogdGV4dC5oZWlnaHQhXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcnJvd0xpbmVzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIGZpbmRFbGVtZW50cyhib2FyZCwge1xuICAgICAgICBtYXRjaDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSxcbiAgICAgICAgcmVjdXJzaW9uOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoZWxlbWVudClcbiAgICB9KSBhcyBQbGFpdEFycm93TGluZVtdO1xufTtcblxuLy8gcXVhZHJhdGljIEJlemllciB0byBjdWJpYyBCZXppZXJcbmV4cG9ydCBjb25zdCBRMkMgPSAocG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgY29uc3QgbnVtU2VnbWVudHMgPSBwb2ludHMubGVuZ3RoIC8gMztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVNlZ21lbnRzOyBpKyspIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IHFDb250cm9sID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgZW5kID0gcG9pbnRzW2kgKyAyXTtcbiAgICAgICAgY29uc3Qgc3RhcnREaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uc3RhcnQsIC4uLnFDb250cm9sKTtcbiAgICAgICAgY29uc3QgZW5kRGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLmVuZCwgLi4ucUNvbnRyb2wpO1xuICAgICAgICBjb25zdCBjQ29udHJvbDEgPSBnZXRFeHRlbmRQb2ludChzdGFydCwgcUNvbnRyb2wsIChzdGFydERpc3RhbmNlICogMikgLyAzKTtcbiAgICAgICAgY29uc3QgY0NvbnRyb2wyID0gZ2V0RXh0ZW5kUG9pbnQoZW5kLCBxQ29udHJvbCwgKGVuZERpc3RhbmNlICogMikgLyAzKTtcbiAgICAgICAgcmVzdWx0LnB1c2goc3RhcnQsIGNDb250cm9sMSwgY0NvbnRyb2wyLCBlbmQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFycm93TGluZUNyZWF0aW5nID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGxpbmVTaGFwZTogQXJyb3dMaW5lU2hhcGUsXG4gICAgc291cmNlUG9pbnQ6IFBvaW50LFxuICAgIG1vdmluZ1BvaW50OiBQb2ludCxcbiAgICBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCB8IG51bGwsXG4gICAgbGluZVNoYXBlRzogU1ZHR0VsZW1lbnRcbikgPT4ge1xuICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRTbmFwcGluZ1NoYXBlKGJvYXJkLCBtb3ZpbmdQb2ludCk7XG4gICAgY29uc3QgdGFyZ2V0Q29ubmVjdGlvbiA9IGhpdEVsZW1lbnQgPyBnZXRIaXRDb25uZWN0aW9uKGJvYXJkLCBtb3ZpbmdQb2ludCwgaGl0RWxlbWVudCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc291cmNlQ29ubmVjdGlvbiA9IHNvdXJjZUVsZW1lbnQgPyBnZXRIaXRDb25uZWN0aW9uKGJvYXJkLCBzb3VyY2VQb2ludCwgc291cmNlRWxlbWVudCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGFyZ2V0Qm91bmRJZCA9IGhpdEVsZW1lbnQgPyBoaXRFbGVtZW50LmlkIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxpbmVHZW5lcmF0b3IgPSBuZXcgQXJyb3dMaW5lU2hhcGVHZW5lcmF0b3IoYm9hcmQpO1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldExpbmVNZW1vcml6ZWRMYXRlc3QoKTtcbiAgICBsZXQgc291cmNlTWFya2VyLCB0YXJnZXRNYXJrZXI7XG4gICAgc291cmNlTWFya2VyID0gbWVtb3JpemVkTGF0ZXN0LnNvdXJjZTtcbiAgICB0YXJnZXRNYXJrZXIgPSBtZW1vcml6ZWRMYXRlc3QudGFyZ2V0O1xuICAgIHNvdXJjZU1hcmtlciAmJiBkZWxldGUgbWVtb3JpemVkTGF0ZXN0LnNvdXJjZTtcbiAgICB0YXJnZXRNYXJrZXIgJiYgZGVsZXRlIG1lbW9yaXplZExhdGVzdC50YXJnZXQ7XG4gICAgY29uc3QgdGVtcG9yYXJ5TGluZUVsZW1lbnQgPSBjcmVhdGVBcnJvd0xpbmVFbGVtZW50KFxuICAgICAgICBsaW5lU2hhcGUsXG4gICAgICAgIFtzb3VyY2VQb2ludCwgbW92aW5nUG9pbnRdLFxuICAgICAgICB7IG1hcmtlcjogc291cmNlTWFya2VyIHx8IEFycm93TGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogc291cmNlQ29ubmVjdGlvbiwgYm91bmRJZDogc291cmNlRWxlbWVudD8uaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IHRhcmdldE1hcmtlciB8fCBBcnJvd0xpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiB0YXJnZXRDb25uZWN0aW9uLCBib3VuZElkOiB0YXJnZXRCb3VuZElkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdExpbmVTdHlsZS5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgIC4uLm1lbW9yaXplZExhdGVzdFxuICAgICAgICB9XG4gICAgKTtcbiAgICBjb25zdCBsaW5lUG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCB0ZW1wb3JhcnlMaW5lRWxlbWVudCk7XG4gICAgY29uc3Qgb3RoZXJQb2ludCA9IGxpbmVQb2ludHNbMF07XG4gICAgdGVtcG9yYXJ5TGluZUVsZW1lbnQucG9pbnRzWzFdID0gYWxpZ25Qb2ludHMob3RoZXJQb2ludCwgbW92aW5nUG9pbnQpO1xuICAgIGxpbmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGVtcG9yYXJ5TGluZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChsaW5lU2hhcGVHKTtcbiAgICByZXR1cm4gdGVtcG9yYXJ5TGluZUVsZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiBkcmF3QXJyb3dMaW5lTWFzayhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXNrID0gY3JlYXRlTWFzaygpO1xuICAgIG1hc2suc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRBcnJvd0xpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShyZWN0YW5nbGUsIC0zMCk7XG4gICAgY29uc3QgbWFza0ZpbGxSZWN0ID0gY3JlYXRlUmVjdChyZWN0YW5nbGUsIHtcbiAgICAgICAgZmlsbDogJ3doaXRlJ1xuICAgIH0pO1xuICAgIG1hc2suYXBwZW5kQ2hpbGQobWFza0ZpbGxSZWN0KTtcblxuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICB0ZXh0cy5mb3JFYWNoKCh0ZXh0LCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgdGV4dFJlY3RhbmdsZSA9IGdldEFycm93TGluZVRleHRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGluZGV4KTtcbiAgICAgICAgdGV4dFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHRleHRSZWN0YW5nbGUsIExJTkVfVEVYVF9TUEFDRSAqIDIpO1xuICAgICAgICBjb25zdCByZWN0ID0gY3JlYXRlUmVjdCh0ZXh0UmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICBmaWxsOiAnYmxhY2snXG4gICAgICAgIH0pO1xuICAgICAgICBtYXNrLmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH0pO1xuICAgIC8vIG9wZW4gbGluZVxuICAgIGNvbnN0IG1hc2tUYXJnZXRGaWxsUmVjdCA9IGNyZWF0ZVJlY3QocmVjdGFuZ2xlKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgJzAnKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICByZXR1cm4geyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfTtcbn1cbiJdfQ==