@plait/draw 0.63.0 → 0.64.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.
- package/arrow-line.component.d.ts +3 -3
- package/constants/pointer.d.ts +3 -2
- package/esm2022/arrow-line.component.mjs +6 -5
- package/esm2022/constants/pointer.mjs +5 -2
- package/esm2022/generators/arrow-line.generator.mjs +3 -3
- package/esm2022/generators/index.mjs +2 -2
- package/esm2022/generators/line-active.generator.mjs +81 -0
- package/esm2022/generators/vector-line-generator.mjs +13 -0
- package/esm2022/interfaces/index.mjs +8 -5
- package/esm2022/interfaces/line.mjs +2 -0
- package/esm2022/interfaces/vector-line.mjs +5 -1
- package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +3 -3
- package/esm2022/plugins/with-arrow-line-resize.mjs +9 -9
- package/esm2022/plugins/with-draw-fragment.mjs +7 -5
- package/esm2022/plugins/with-draw.mjs +17 -2
- package/esm2022/plugins/with-vector-line-resize.mjs +61 -0
- package/esm2022/plugins/with-vector-pen-create.mjs +124 -0
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/transforms/index.mjs +3 -1
- package/esm2022/transforms/vector-line.mjs +13 -0
- package/esm2022/utils/arrow-line/arrow-line-basic.mjs +5 -58
- package/esm2022/utils/common.mjs +5 -1
- package/esm2022/utils/hit.mjs +12 -1
- package/esm2022/utils/index.mjs +3 -1
- package/esm2022/utils/line.mjs +64 -0
- package/esm2022/utils/position/arrow-line.mjs +3 -50
- package/esm2022/utils/position/line.mjs +51 -0
- package/esm2022/utils/selected.mjs +5 -1
- package/esm2022/utils/vector-line.mjs +75 -0
- package/esm2022/vector-line.component.mjs +50 -0
- package/fesm2022/plait-draw.mjs +500 -145
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/arrow-line.generator.d.ts +3 -5
- package/generators/index.d.ts +1 -1
- package/generators/line-active.generator.d.ts +13 -0
- package/generators/vector-line-generator.d.ts +6 -0
- package/interfaces/index.d.ts +3 -0
- package/interfaces/line.d.ts +3 -0
- package/interfaces/vector-line.d.ts +10 -1
- package/package.json +1 -1
- package/plugins/with-vector-line-resize.d.ts +2 -0
- package/plugins/with-vector-pen-create.d.ts +2 -0
- package/public-api.d.ts +1 -0
- package/styles/styles.scss +2 -2
- package/transforms/index.d.ts +2 -1
- package/transforms/vector-line.d.ts +3 -0
- package/utils/arrow-line/arrow-line-basic.d.ts +0 -1
- package/utils/clipboard.d.ts +1 -1
- package/utils/geometry.d.ts +17 -17
- package/utils/hit.d.ts +3 -2
- package/utils/index.d.ts +2 -0
- package/utils/line.d.ts +3 -0
- package/utils/position/arrow-line.d.ts +0 -13
- package/utils/position/line.d.ts +15 -0
- package/utils/selected.d.ts +2 -1
- package/utils/shape.d.ts +1 -1
- package/utils/vector-line.d.ts +7 -0
- package/vector-line.component.d.ts +14 -0
- package/esm2022/generators/arrow-line-active.generator.mjs +0 -81
- package/generators/arrow-line-active.generator.d.ts +0 -13
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlaitNode, Point } from '@plait/core';
|
|
2
2
|
import { simplifyOrthogonalPoints, withResize } from '@plait/common';
|
|
3
3
|
import { getSelectedArrowLineElements } from '../utils/selected';
|
|
4
|
-
import {
|
|
4
|
+
import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
|
|
5
5
|
import { ArrowLineShape } from '../interfaces';
|
|
6
6
|
import { DrawTransforms } from '../transforms';
|
|
7
7
|
import { getElbowPoints, getNextRenderPoints, isUseDefaultOrthogonalRoute } from '../utils/arrow-line/elbow';
|
|
@@ -25,7 +25,7 @@ export const withArrowLineResize = (board) => {
|
|
|
25
25
|
if (selectedLineElements.length > 0) {
|
|
26
26
|
let result = null;
|
|
27
27
|
selectedLineElements.forEach(value => {
|
|
28
|
-
const handleRef =
|
|
28
|
+
const handleRef = getHitLineResizeHandleRef(board, value, point);
|
|
29
29
|
if (handleRef) {
|
|
30
30
|
result = {
|
|
31
31
|
element: value,
|
|
@@ -40,8 +40,8 @@ export const withArrowLineResize = (board) => {
|
|
|
40
40
|
},
|
|
41
41
|
beforeResize: (resizeRef) => {
|
|
42
42
|
if (resizeRef.element.shape === ArrowLineShape.elbow &&
|
|
43
|
-
resizeRef.handle !==
|
|
44
|
-
resizeRef.handle !==
|
|
43
|
+
resizeRef.handle !== LineResizeHandle.source &&
|
|
44
|
+
resizeRef.handle !== LineResizeHandle.target) {
|
|
45
45
|
const params = getElbowLineRouteOptions(board, resizeRef.element);
|
|
46
46
|
if (isUseDefaultOrthogonalRoute(resizeRef.element, params)) {
|
|
47
47
|
return;
|
|
@@ -63,8 +63,8 @@ export const withArrowLineResize = (board) => {
|
|
|
63
63
|
let target = { ...resizeRef.element.target };
|
|
64
64
|
let handleIndex = resizeRef.handleIndex;
|
|
65
65
|
const hitElement = getSnappingShape(board, resizeState.endPoint);
|
|
66
|
-
if (resizeRef.handle ===
|
|
67
|
-
const object = resizeRef.handle ===
|
|
66
|
+
if (resizeRef.handle === LineResizeHandle.source || resizeRef.handle === LineResizeHandle.target) {
|
|
67
|
+
const object = resizeRef.handle === LineResizeHandle.source ? source : target;
|
|
68
68
|
points[handleIndex] = resizeState.endPoint;
|
|
69
69
|
if (hitElement) {
|
|
70
70
|
object.connection = getHitConnection(board, resizeState.endPoint, hitElement);
|
|
@@ -95,7 +95,7 @@ export const withArrowLineResize = (board) => {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
else {
|
|
98
|
-
if (resizeRef.handle ===
|
|
98
|
+
if (resizeRef.handle === LineResizeHandle.addHandle) {
|
|
99
99
|
points.splice(handleIndex + 1, 0, resizeState.endPoint);
|
|
100
100
|
}
|
|
101
101
|
else {
|
|
@@ -104,7 +104,7 @@ export const withArrowLineResize = (board) => {
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
if (!hitElement) {
|
|
107
|
-
handleIndex = resizeRef.handle ===
|
|
107
|
+
handleIndex = resizeRef.handle === LineResizeHandle.addHandle ? handleIndex + 1 : handleIndex;
|
|
108
108
|
const drawPoints = getArrowLinePoints(board, resizeRef.element);
|
|
109
109
|
const newPoints = [...points];
|
|
110
110
|
newPoints[0] = drawPoints[0];
|
|
@@ -155,4 +155,4 @@ export const withArrowLineResize = (board) => {
|
|
|
155
155
|
withResize(board, options);
|
|
156
156
|
return board;
|
|
157
157
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hcnJvdy1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1hcnJvdy1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUE2Qyx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckcsT0FBTyxFQUFtQixjQUFjLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdHLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGdDQUFnQyxFQUNoQyw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3ZCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3JELElBQUksY0FBNkIsQ0FBQztJQUNsQyxJQUFJLG9CQUFtQyxDQUFDO0lBQ3hDLElBQUksZ0JBQThCLENBQUM7SUFDbkMsSUFBSSxnQkFB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Q0FBQzt3QkFDN0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNqQixDQUFDO29CQUNELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDdEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztvQkFDaEIsQ0FBQztvQkFDRCxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO29CQUN6RCxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFZLENBQUMsQ0FBQztnQkFDOUUsQ0FBQztZQUNMLENBQUM7WUFDRCxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUM1QixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDeEIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBd0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWxFLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0Tm9kZSwgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBSZXNpemVSZWYsIFJlc2l6ZVN0YXRlLCBXaXRoUmVzaXplT3B0aW9ucywgc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZEFycm93TGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0QXJyb3dMaW5lUmVzaXplSGFuZGxlUmVmLCBBcnJvd0xpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9hcnJvdy1saW5lJztcbmltcG9ydCB7IEFycm93TGluZUhhbmRsZSwgQXJyb3dMaW5lU2hhcGUsIFBsYWl0QXJyb3dMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0RWxib3dQb2ludHMsIGdldE5leHRSZW5kZXJQb2ludHMsIGlzVXNlRGVmYXVsdE9ydGhvZ29uYWxSb3V0ZSB9IGZyb20gJy4uL3V0aWxzL2Fycm93LWxpbmUvZWxib3cnO1xuaW1wb3J0IHtcbiAgICBhbGlnbkVsYm93U2VnbWVudCxcbiAgICBhbGlnblBvaW50cyxcbiAgICBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludCxcbiAgICBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQsXG4gICAgaGFzSWxsZWdhbEVsYm93UG9pbnRcbn0gZnJvbSAnLi4vdXRpbHMvYXJyb3ctbGluZS9hcnJvdy1saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRIaXRDb25uZWN0aW9uLCBnZXRBcnJvd0xpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscy9hcnJvdy1saW5lL2Fycm93LWxpbmUtYmFzaWMnO1xuaW1wb3J0IHsgZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBnZXRTbmFwcGluZ1NoYXBlIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aEFycm93TGluZVJlc2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGxldCBlbGJvd0xpbmVJbmRleDogbnVtYmVyIHwgbnVsbDtcbiAgICBsZXQgZWxib3dMaW5lRGVsZXRlQ291bnQ6IG51bWJlciB8IG51bGw7XG4gICAgbGV0IGVsYm93U291cmNlUG9pbnQ6IFBvaW50IHwgbnVsbDtcbiAgICBsZXQgZWxib3dUYXJnZXRQb2ludDogUG9pbnQgfCBudWxsO1xuICAgIGxldCBlbGJvd05leHRSZW5kZXJQb2ludHM6IFBvaW50W10gfCBudWxsO1xuXG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXRBcnJvd0xpbmUsIEFycm93TGluZVJlc2l6ZUhhbmRsZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctbGluZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTGluZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRBcnJvd0xpbmVFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkTGluZUVsZW1lbnRzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVSZWYgPSBnZXRIaXRBcnJvd0xpbmVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIHZhbHVlLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXg6IGhhbmRsZVJlZi5oYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgYmVmb3JlUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRBcnJvd0xpbmUsIEFycm93TGluZVJlc2l6ZUhhbmRsZT4pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICByZXNpemVSZWYuZWxlbWVudC5zaGFwZSA9PT0gQXJyb3dMaW5lU2hhcGUuZWxib3cgJiZcbiAgICAgICAgICAgICAgICByZXNpemVSZWYuaGFuZGxlICE9PSBBcnJvd0xpbmVSZXNpemVIYW5kbGUuc291cmNlICYmXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLmhhbmRsZSAhPT0gQXJyb3dMaW5lUmVzaXplSGFuZGxlLnRhcmdldFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzVXNlRGVmYXVsdE9ydGhvZ29uYWxSb3V0ZShyZXNpemVSZWYuZWxlbWVudCwgcGFyYW1zKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50czogUG9pbnRbXSA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5wb2ludHNdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZUluZGV4ITtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHNPbkVsYm93ID0gZ2V0RWxib3dQb2ludHMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBlbGJvd1NvdXJjZVBvaW50ID0gcG9pbnRzT25FbGJvd1swXTtcbiAgICAgICAgICAgICAgICBlbGJvd1RhcmdldFBvaW50ID0gcG9pbnRzT25FbGJvd1twb2ludHNPbkVsYm93Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyA9IGdldE5leHRSZW5kZXJQb2ludHMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50LCBwb2ludHNPbkVsYm93KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0SW5kZXhBbmREZWxldGVDb3VudEJ5S2V5UG9pbnQoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50LCBbLi4ucG9pbnRzXSwgZWxib3dOZXh0UmVuZGVyUG9pbnRzLCBoYW5kbGVJbmRleCk7XG4gICAgICAgICAgICAgICAgZWxib3dMaW5lSW5kZXggPSB2YWx1ZS5pbmRleDtcbiAgICAgICAgICAgICAgICBlbGJvd0xpbmVEZWxldGVDb3VudCA9IHZhbHVlLmRlbGV0ZUNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvblJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0QXJyb3dMaW5lLCBBcnJvd0xpbmVSZXNpemVIYW5kbGU+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGxldCBwb2ludHM6IFBvaW50W10gPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgIGxldCBzb3VyY2U6IEFycm93TGluZUhhbmRsZSA9IHsgLi4ucmVzaXplUmVmLmVsZW1lbnQuc291cmNlIH07XG4gICAgICAgICAgICBsZXQgdGFyZ2V0OiBBcnJvd0xpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnRhcmdldCB9O1xuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZUluZGV4ITtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRTbmFwcGluZ1NoYXBlKGJvYXJkLCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gQXJyb3dMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSB8fCByZXNpemVSZWYuaGFuZGxlID09PSBBcnJvd0xpbmVSZXNpemVIYW5kbGUudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gQXJyb3dMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSA/IHNvdXJjZSA6IHRhcmdldDtcbiAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmNvbm5lY3Rpb24gPSBnZXRIaXRDb25uZWN0aW9uKGJvYXJkLCByZXNpemVTdGF0ZS5lbmRQb2ludCwgaGl0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5ib3VuZElkID0gaGl0RWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuY29ubmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IEFycm93TGluZVNoYXBlLmVsYm93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGJvd05leHRSZW5kZXJQb2ludHMgJiYgZWxib3dTb3VyY2VQb2ludCAmJiBlbGJvd1RhcmdldFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQgPSBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0S2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kS2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF0gPSBhbGlnbkVsYm93U2VnbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaWREYXRhUG9pbnRzOiBQb2ludFtdID0gWy4uLnBvaW50c10uc2xpY2UoMSwgcG9pbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsYm93TGluZUluZGV4ICE9PSBudWxsICYmIGVsYm93TGluZURlbGV0ZUNvdW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0lsbGVnYWxFbGJvd1BvaW50KG1pZERhdGFQb2ludHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMgPSBbbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMuc3BsaWNlKGVsYm93TGluZUluZGV4LCBlbGJvd0xpbmVEZWxldGVDb3VudCwgbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ubWlkRGF0YVBvaW50cywgZWxib3dUYXJnZXRQb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gQXJyb3dMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZShoYW5kbGVJbmRleCArIDEsIDAsIHJlc2l6ZVN0YXRlLmVuZFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlID09PSBBcnJvd0xpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlID8gaGFuZGxlSW5kZXggKyAxIDogaGFuZGxlSW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhd1BvaW50cyA9IGdldEFycm93TGluZVBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IFsuLi5wb2ludHNdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1swXSA9IGRyYXdQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgbmV3UG9pbnRzW25ld1BvaW50cy5sZW5ndGggLSAxXSA9IGRyYXdQb2ludHNbZHJhd1BvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlICE9PSBBcnJvd0xpbmVTaGFwZS5lbGJvdyB8fFxuICAgICAgICAgICAgICAgICAgICAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IEFycm93TGluZVNoYXBlLmVsYm93ICYmIG5ld1BvaW50cy5sZW5ndGggPT09IDIpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BvaW50cy5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gaGFuZGxlSW5kZXgpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHNbaGFuZGxlSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IGFsaWduUG9pbnRzKHBvaW50LCBwb2ludHNbaGFuZGxlSW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplQXJyb3dMaW5lKGJvYXJkLCB7IHBvaW50cywgc291cmNlLCB0YXJnZXQgfSwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRBcnJvd0xpbmUsIEFycm93TGluZVJlc2l6ZUhhbmRsZT4pID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNpemVSZWYuZWxlbWVudC5zaGFwZSA9PT0gQXJyb3dMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICAgICAgbGV0IHBvaW50cyA9IGVsZW1lbnQgJiYgWy4uLmVsZW1lbnQucG9pbnRzIV07XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAyICYmIGVsYm93TmV4dFJlbmRlclBvaW50cyAmJiBlbGJvd1NvdXJjZVBvaW50ICYmIGVsYm93VGFyZ2V0UG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFNvdXJjZVBvaW50ID0gZWxib3dOZXh0UmVuZGVyUG9pbnRzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VGFyZ2V0UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbZWxib3dOZXh0UmVuZGVyUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKDAsIDEsIG5leHRTb3VyY2VQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoLTEsIDEsIG5leHRUYXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyhwb2ludHMhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFBvaW50LmlzRXF1YWxzKHBvaW50c1swXSwgbmV4dFNvdXJjZVBvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNFcXVhbHMocG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSwgbmV4dFRhcmdldFBvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ucG9pbnRzLCBlbGJvd1RhcmdldFBvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplQXJyb3dMaW5lKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGJvd0xpbmVJbmRleCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd0xpbmVEZWxldGVDb3VudCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd1NvdXJjZVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0QXJyb3dMaW5lLCBBcnJvd0xpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hcnJvdy1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1hcnJvdy1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUE2Qyx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFtQixjQUFjLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdHLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGdDQUFnQyxFQUNoQyw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3ZCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3JELElBQUksY0FBNkIsQ0FBQztJQUNsQyxJQUFJLG9CQUFtQyxDQUFDO0lBQ3hDLElBQUksZ0JBQThCLENBQUM7SUFDbkMsSUFBSSxnQkFB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Q0FBQzt3QkFDN0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNqQixDQUFDO29CQUNELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDdEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztvQkFDaEIsQ0FBQztvQkFDRCxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO29CQUN6RCxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFZLENBQUMsQ0FBQztnQkFDOUUsQ0FBQztZQUNMLENBQUM7WUFDRCxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUM1QixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDeEIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBbUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTdELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0Tm9kZSwgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBSZXNpemVSZWYsIFJlc2l6ZVN0YXRlLCBXaXRoUmVzaXplT3B0aW9ucywgc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZEFycm93TGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZiwgTGluZVJlc2l6ZUhhbmRsZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2xpbmUnO1xuaW1wb3J0IHsgQXJyb3dMaW5lSGFuZGxlLCBBcnJvd0xpbmVTaGFwZSwgUGxhaXRBcnJvd0xpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRFbGJvd1BvaW50cywgZ2V0TmV4dFJlbmRlclBvaW50cywgaXNVc2VEZWZhdWx0T3J0aG9nb25hbFJvdXRlIH0gZnJvbSAnLi4vdXRpbHMvYXJyb3ctbGluZS9lbGJvdyc7XG5pbXBvcnQge1xuICAgIGFsaWduRWxib3dTZWdtZW50LFxuICAgIGFsaWduUG9pbnRzLFxuICAgIGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50LFxuICAgIGdldFJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludCxcbiAgICBoYXNJbGxlZ2FsRWxib3dQb2ludFxufSBmcm9tICcuLi91dGlscy9hcnJvdy1saW5lL2Fycm93LWxpbmUtcmVzaXplJztcbmltcG9ydCB7IGdldEhpdENvbm5lY3Rpb24sIGdldEFycm93TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL2Fycm93LWxpbmUvYXJyb3ctbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9hcnJvdy1saW5lJztcbmltcG9ydCB7IGdldFNuYXBwaW5nU2hhcGUgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoQXJyb3dMaW5lUmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IGVsYm93TGluZUluZGV4OiBudW1iZXIgfCBudWxsO1xuICAgIGxldCBlbGJvd0xpbmVEZWxldGVDb3VudDogbnVtYmVyIHwgbnVsbDtcbiAgICBsZXQgZWxib3dTb3VyY2VQb2ludDogUG9pbnQgfCBudWxsO1xuICAgIGxldCBlbGJvd1RhcmdldFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGVsYm93TmV4dFJlbmRlclBvaW50czogUG9pbnRbXSB8IG51bGw7XG5cbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdEFycm93TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctbGluZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTGluZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRBcnJvd0xpbmVFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkTGluZUVsZW1lbnRzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVSZWYgPSBnZXRIaXRMaW5lUmVzaXplSGFuZGxlUmVmKGJvYXJkLCB2YWx1ZSwgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlOiBoYW5kbGVSZWYuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4OiBoYW5kbGVSZWYuaGFuZGxlSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZVJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0QXJyb3dMaW5lLCBMaW5lUmVzaXplSGFuZGxlPikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBBcnJvd0xpbmVTaGFwZS5lbGJvdyAmJlxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5oYW5kbGUgIT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlICYmXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLmhhbmRsZSAhPT0gTGluZVJlc2l6ZUhhbmRsZS50YXJnZXRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpc1VzZURlZmF1bHRPcnRob2dvbmFsUm91dGUocmVzaXplUmVmLmVsZW1lbnQsIHBhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHM6IFBvaW50W10gPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IHJlc2l6ZVJlZi5oYW5kbGVJbmRleCE7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzT25FbGJvdyA9IGdldEVsYm93UG9pbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZWxib3dTb3VyY2VQb2ludCA9IHBvaW50c09uRWxib3dbMF07XG4gICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCA9IHBvaW50c09uRWxib3dbcG9pbnRzT25FbGJvdy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBlbGJvd05leHRSZW5kZXJQb2ludHMgPSBnZXROZXh0UmVuZGVyUG9pbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgcG9pbnRzT25FbGJvdyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50KGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgWy4uLnBvaW50c10sIGVsYm93TmV4dFJlbmRlclBvaW50cywgaGFuZGxlSW5kZXgpO1xuICAgICAgICAgICAgICAgIGVsYm93TGluZUluZGV4ID0gdmFsdWUuaW5kZXg7XG4gICAgICAgICAgICAgICAgZWxib3dMaW5lRGVsZXRlQ291bnQgPSB2YWx1ZS5kZWxldGVDb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEFycm93TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHBvaW50czogUG9pbnRbXSA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5wb2ludHNdO1xuICAgICAgICAgICAgbGV0IHNvdXJjZTogQXJyb3dMaW5lSGFuZGxlID0geyAuLi5yZXNpemVSZWYuZWxlbWVudC5zb3VyY2UgfTtcbiAgICAgICAgICAgIGxldCB0YXJnZXQ6IEFycm93TGluZUhhbmRsZSA9IHsgLi4ucmVzaXplUmVmLmVsZW1lbnQudGFyZ2V0IH07XG4gICAgICAgICAgICBsZXQgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldFNuYXBwaW5nU2hhcGUoYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50KTtcbiAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSB8fCByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlID8gc291cmNlIDogdGFyZ2V0O1xuICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuY29ubmVjdGlvbiA9IGdldEhpdENvbm5lY3Rpb24oYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBoaXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSBoaXRFbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuYm91bmRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuZWxlbWVudC5zaGFwZSA9PT0gQXJyb3dMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsYm93TmV4dFJlbmRlclBvaW50cyAmJiBlbGJvd1NvdXJjZVBvaW50ICYmIGVsYm93VGFyZ2V0UG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludCA9IGdldFJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGJvd05leHRSZW5kZXJQb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dTb3VyY2VQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGJvd1RhcmdldFBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRLZXlQb2ludCA9IGVsYm93TmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRLZXlQb2ludCA9IGVsYm93TmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgW25ld1N0YXJ0UG9pbnQsIG5ld0VuZFBvaW50XSA9IGFsaWduRWxib3dTZWdtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0S2V5UG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kS2V5UG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pZERhdGFQb2ludHM6IFBvaW50W10gPSBbLi4ucG9pbnRzXS5zbGljZSgxLCBwb2ludHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxib3dMaW5lSW5kZXggIT09IG51bGwgJiYgZWxib3dMaW5lRGVsZXRlQ291bnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSWxsZWdhbEVsYm93UG9pbnQobWlkRGF0YVBvaW50cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlkRGF0YVBvaW50cyA9IFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlkRGF0YVBvaW50cy5zcGxpY2UoZWxib3dMaW5lSW5kZXgsIGVsYm93TGluZURlbGV0ZUNvdW50LCBuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtlbGJvd1NvdXJjZVBvaW50LCAuLi5taWREYXRhUG9pbnRzLCBlbGJvd1RhcmdldFBvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZShoYW5kbGVJbmRleCArIDEsIDAsIHJlc2l6ZVN0YXRlLmVuZFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSA/IGhhbmRsZUluZGV4ICsgMSA6IGhhbmRsZUluZGV4O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRyYXdQb2ludHMgPSBnZXRBcnJvd0xpbmVQb2ludHMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQb2ludHMgPSBbLi4ucG9pbnRzXTtcbiAgICAgICAgICAgICAgICBuZXdQb2ludHNbMF0gPSBkcmF3UG9pbnRzWzBdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1tuZXdQb2ludHMubGVuZ3RoIC0gMV0gPSBkcmF3UG9pbnRzW2RyYXdQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByZXNpemVSZWYuZWxlbWVudC5zaGFwZSAhPT0gQXJyb3dMaW5lU2hhcGUuZWxib3cgfHxcbiAgICAgICAgICAgICAgICAgICAgKHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBBcnJvd0xpbmVTaGFwZS5lbGJvdyAmJiBuZXdQb2ludHMubGVuZ3RoID09PSAyKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBuZXdQb2ludHMuZm9yRWFjaCgocG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGhhbmRsZUluZGV4KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzW2hhbmRsZUluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSBhbGlnblBvaW50cyhwb2ludCwgcG9pbnRzW2hhbmRsZUluZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUFycm93TGluZShib2FyZCwgeyBwb2ludHMsIHNvdXJjZSwgdGFyZ2V0IH0sIHJlc2l6ZVJlZi5wYXRoIGFzIFBhdGgpO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0QXJyb3dMaW5lLCBMaW5lUmVzaXplSGFuZGxlPikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBBcnJvd0xpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnRzID0gZWxlbWVudCAmJiBbLi4uZWxlbWVudC5wb2ludHMhXTtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIgJiYgZWxib3dOZXh0UmVuZGVyUG9pbnRzICYmIGVsYm93U291cmNlUG9pbnQgJiYgZWxib3dUYXJnZXRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0U291cmNlUG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRUYXJnZXRQb2ludCA9IGVsYm93TmV4dFJlbmRlclBvaW50c1tlbGJvd05leHRSZW5kZXJQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoMCwgMSwgbmV4dFNvdXJjZVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZSgtMSwgMSwgbmV4dFRhcmdldFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKHBvaW50cyEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNFcXVhbHMocG9pbnRzWzBdLCBuZXh0U291cmNlUG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChQb2ludC5pc0VxdWFscyhwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBuZXh0VGFyZ2V0UG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtlbGJvd1NvdXJjZVBvaW50LCAuLi5wb2ludHMsIGVsYm93VGFyZ2V0UG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVBcnJvd0xpbmUoYm9hcmQsIHsgcG9pbnRzIH0sIHJlc2l6ZVJlZi5wYXRoIGFzIFBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsYm93TGluZUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93TGluZURlbGV0ZUNvdW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd05leHRSZW5kZXJQb2ludHMgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHdpdGhSZXNpemU8UGxhaXRBcnJvd0xpbmUsIExpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -13,7 +13,8 @@ export const withDrawFragment = (baseBoard) => {
|
|
|
13
13
|
const drawElements = getSelectedDrawElements(board);
|
|
14
14
|
if (drawElements.length) {
|
|
15
15
|
const geometryElements = drawElements.filter(value => PlaitDrawElement.isGeometry(value));
|
|
16
|
-
const
|
|
16
|
+
const arrowLineElements = drawElements.filter(value => PlaitDrawElement.isArrowLine(value));
|
|
17
|
+
const vectorLineElements = drawElements.filter(value => PlaitDrawElement.isVectorLine(value));
|
|
17
18
|
const imageElements = drawElements.filter(value => PlaitDrawElement.isImage(value));
|
|
18
19
|
const tableElements = drawElements.filter(value => PlaitDrawElement.isTable(value));
|
|
19
20
|
const swimlaneElements = drawElements.filter(value => PlaitDrawElement.isSwimlane(value));
|
|
@@ -22,14 +23,15 @@ export const withDrawFragment = (baseBoard) => {
|
|
|
22
23
|
...getBoundedArrowLineElements(board, imageElements),
|
|
23
24
|
...getBoundedArrowLineElements(board, tableElements),
|
|
24
25
|
...getBoundedArrowLineElements(board, swimlaneElements)
|
|
25
|
-
].filter(line => !
|
|
26
|
+
].filter(line => !arrowLineElements.includes(line));
|
|
26
27
|
data.push(...[
|
|
27
28
|
...geometryElements,
|
|
28
|
-
...
|
|
29
|
+
...arrowLineElements,
|
|
30
|
+
...vectorLineElements,
|
|
29
31
|
...imageElements,
|
|
30
32
|
...tableElements,
|
|
31
33
|
...swimlaneElements,
|
|
32
|
-
...boundLineElements.filter(line => !
|
|
34
|
+
...boundLineElements.filter(line => !arrowLineElements.includes(line))
|
|
33
35
|
]);
|
|
34
36
|
}
|
|
35
37
|
return getDeletedFragment(data);
|
|
@@ -97,4 +99,4 @@ export const getBoundedArrowLineElements = (board, plaitShapes) => {
|
|
|
97
99
|
const lines = getArrowLines(board);
|
|
98
100
|
return lines.filter(line => plaitShapes.find(shape => PlaitArrowLine.isBoundElementOfSource(line, shape) || PlaitArrowLine.isBoundElementOfTarget(line, shape)));
|
|
99
101
|
};
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LWZyYWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXctZnJhZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQU9ILDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDdEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixjQUFjLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUduRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFNBQXFCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLEtBQUssR0FBRyxTQUF1QixDQUFDO0lBQ3RDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRXBFLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQW9CLEVBQUUsRUFBRTtRQUNoRCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixN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LENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0MsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO29CQUNuQixjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsRSxPQUFPO2dCQUNYLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELGNBQWMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBaUIsRUFBRSxXQUFnQyxFQUFFLEVBQUU7SUFDL0YsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN2QixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3RJLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENsaXBib2FyZERhdGEsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFdyaXRhYmxlQ2xpcGJvYXJkQ29udGV4dCxcbiAgICBXcml0YWJsZUNsaXBib2FyZE9wZXJhdGlvblR5cGUsXG4gICAgV3JpdGFibGVDbGlwYm9hcmRUeXBlLFxuICAgIGFkZENsaXBib2FyZENvbnRleHQsXG4gICAgY3JlYXRlQ2xpcGJvYXJkQ29udGV4dCxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRHZW9tZXRyeSwgUGxhaXRBcnJvd0xpbmUsIFBsYWl0U2hhcGVFbGVtZW50LCBQbGFpdFN3aW1sYW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBidWlsZENsaXBib2FyZERhdGEsIGluc2VydENsaXBib2FyZERhdGEgfSBmcm9tICcuLi91dGlscy9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGdldEFycm93TGluZXMgfSBmcm9tICcuLi91dGlscy9hcnJvdy1saW5lL2Fycm93LWxpbmUtYmFzaWMnO1xuaW1wb3J0IHsgUGxhaXRJbWFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW1hZ2UnO1xuaW1wb3J0IHsgYWNjZXB0SW1hZ2VUeXBlcywgYnVpbGRJbWFnZSwgZ2V0RWxlbWVudE9mRm9jdXNlZEltYWdlLCBnZXRFbGVtZW50c1RleHQgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IERFRkFVTFRfSU1BR0VfV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRUYWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuXG5leHBvcnQgY29uc3Qgd2l0aERyYXdGcmFnbWVudCA9IChiYXNlQm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBib2FyZCA9IGJhc2VCb2FyZCBhcyBQbGFpdEJvYXJkO1xuICAgIGNvbnN0IHsgZ2V0RGVsZXRlZEZyYWdtZW50LCBidWlsZEZyYWdtZW50LCBpbnNlcnRGcmFnbWVudCB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5nZXREZWxldGVkRnJhZ21lbnQgPSAoZGF0YTogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICAgICAgY29uc3QgZHJhd0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBpZiAoZHJhd0VsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnlFbGVtZW50cyA9IGRyYXdFbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHZhbHVlKSkgYXMgUGxhaXRHZW9tZXRyeVtdO1xuICAgICAgICAgICAgY29uc3QgbGluZUVsZW1lbnRzID0gZHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKHZhbHVlKSkgYXMgUGxhaXRBcnJvd0xpbmVbXTtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZSh2YWx1ZSkpIGFzIFBsYWl0SW1hZ2VbXTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNUYWJsZSh2YWx1ZSkpIGFzIFBsYWl0VGFibGVbXTtcbiAgICAgICAgICAgIGNvbnN0IHN3aW1sYW5lRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNTd2ltbGFuZSh2YWx1ZSkpIGFzIFBsYWl0U3dpbWxhbmVbXTtcblxuICAgICAgICAgICAgY29uc3QgYm91bmRMaW5lRWxlbWVudHMgPSBbXG4gICAgICAgICAgICAgICAgLi4uZ2V0Qm91bmRlZEFycm93TGluZUVsZW1lbnRzKGJvYXJkLCBnZW9tZXRyeUVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgICAuLi5nZXRCb3VuZGVkQXJyb3dMaW5lRWxlbWVudHMoYm9hcmQsIGltYWdlRWxlbWVudHMpLFxuICAgICAgICAgICAgICAgIC4uLmdldEJvdW5kZWRBcnJvd0xpbmVFbGVtZW50cyhib2FyZCwgdGFibGVFbGVtZW50cyksXG4gICAgICAgICAgICAgICAgLi4uZ2V0Qm91bmRlZEFycm93TGluZUVsZW1lbnRzKGJvYXJkLCBzd2ltbGFuZUVsZW1lbnRzKVxuICAgICAgICAgICAgXS5maWx0ZXIobGluZSA9PiAhbGluZUVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpKTtcbiAgICAgICAgICAgIGRhdGEucHVzaChcbiAgICAgICAgICAgICAgICAuLi5bXG4gICAgICAgICAgICAgICAgICAgIC4uLmdlb21ldHJ5RWxlbWVudHMsXG4gICAgICAgICAgICAgICAgICAgIC4uLmxpbmVFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4uaW1hZ2VFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4uc3dpbWxhbmVFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4uYm91bmRMaW5lRWxlbWVudHMuZmlsdGVyKGxpbmUgPT4gIWxpbmVFbGVtZW50cy5pbmNsdWRlcyhsaW5lKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXREZWxldGVkRnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmJ1aWxkRnJhZ21lbnQgPSAoXG4gICAgICAgIGNsaXBib2FyZENvbnRleHQ6IFdyaXRhYmxlQ2xpcGJvYXJkQ29udGV4dCB8IG51bGwsXG4gICAgICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50IHwgbnVsbCxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogV3JpdGFibGVDbGlwYm9hcmRPcGVyYXRpb25UeXBlLFxuICAgICAgICBvcmlnaW5EYXRhPzogUGxhaXRFbGVtZW50W11cbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RHJhd0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMoYm9hcmQsIG9yaWdpbkRhdGEpO1xuICAgICAgICBsZXQgYm91bmRMaW5lRWxlbWVudHM6IFBsYWl0QXJyb3dMaW5lW10gPSBbXTtcbiAgICAgICAgaWYgKHRhcmdldERyYXdFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChvcGVyYXRpb25UeXBlID09PSBXcml0YWJsZUNsaXBib2FyZE9wZXJhdGlvblR5cGUuY3V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnlFbGVtZW50cyA9IHRhcmdldERyYXdFbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHZhbHVlKSkgYXMgUGxhaXRHZW9tZXRyeVtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVFbGVtZW50cyA9IHRhcmdldERyYXdFbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZSh2YWx1ZSkpIGFzIFBsYWl0QXJyb3dMaW5lW107XG4gICAgICAgICAgICAgICAgYm91bmRMaW5lRWxlbWVudHMgPSBnZXRCb3VuZGVkQXJyb3dMaW5lRWxlbWVudHMoYm9hcmQsIGdlb21ldHJ5RWxlbWVudHMpLmZpbHRlcihsaW5lID0+ICFsaW5lRWxlbWVudHMuaW5jbHVkZXMobGluZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IFsuLi50YXJnZXREcmF3RWxlbWVudHMsIC4uLmJvdW5kTGluZUVsZW1lbnRzXTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gYnVpbGRDbGlwYm9hcmREYXRhKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzLCByZWN0YW5nbGUgPyBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55XSA6IFswLCAwXSk7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gZ2V0RWxlbWVudHNUZXh0KHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgaWYgKCFjbGlwYm9hcmRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgY2xpcGJvYXJkQ29udGV4dCA9IGNyZWF0ZUNsaXBib2FyZENvbnRleHQoV3JpdGFibGVDbGlwYm9hcmRUeXBlLmVsZW1lbnRzLCBlbGVtZW50cywgdGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNsaXBib2FyZENvbnRleHQgPSBhZGRDbGlwYm9hcmRDb250ZXh0KGNsaXBib2FyZENvbnRleHQsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogV3JpdGFibGVDbGlwYm9hcmRUeXBlLmVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidWlsZEZyYWdtZW50KGNsaXBib2FyZENvbnRleHQsIHJlY3RhbmdsZSwgb3BlcmF0aW9uVHlwZSwgb3JpZ2luRGF0YSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmluc2VydEZyYWdtZW50ID0gKGNsaXBib2FyZERhdGE6IENsaXBib2FyZERhdGEgfCBudWxsLCB0YXJnZXRQb2ludDogUG9pbnQsIG9wZXJhdGlvblR5cGU/OiBXcml0YWJsZUNsaXBib2FyZE9wZXJhdGlvblR5cGUpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YT8uZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgYWNjZXB0SW1hZ2VBcnJheSA9IGFjY2VwdEltYWdlVHlwZXMubWFwKHR5cGUgPT4gJ2ltYWdlLycgKyB0eXBlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbkluc2VydGlvbkltYWdlID1cbiAgICAgICAgICAgICAgICAhZ2V0RWxlbWVudE9mRm9jdXNlZEltYWdlKGJvYXJkKSAmJiAhKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIGJvYXJkLmlzSW1hZ2VCaW5kaW5nQWxsb3dlZChzZWxlY3RlZEVsZW1lbnRzWzBdKSk7XG4gICAgICAgICAgICBpZiAoYWNjZXB0SW1hZ2VBcnJheS5pbmNsdWRlcyhjbGlwYm9hcmREYXRhLmZpbGVzWzBdLnR5cGUpICYmIGNhbkluc2VydGlvbkltYWdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VGaWxlID0gY2xpcGJvYXJkRGF0YS5maWxlc1swXTtcbiAgICAgICAgICAgICAgICBidWlsZEltYWdlKGJvYXJkLCBpbWFnZUZpbGUsIERFRkFVTFRfSU1BR0VfV0lEVEgsIGltYWdlSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLmluc2VydEltYWdlKGJvYXJkLCBpbWFnZUl0ZW0sIHRhcmdldFBvaW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YT8uZWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZHJhd0VsZW1lbnRzID0gY2xpcGJvYXJkRGF0YS5lbGVtZW50cz8uZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNEcmF3RWxlbWVudCh2YWx1ZSkpIGFzIFBsYWl0RHJhd0VsZW1lbnRbXTtcbiAgICAgICAgICAgIGlmIChjbGlwYm9hcmREYXRhLmVsZW1lbnRzICYmIGNsaXBib2FyZERhdGEuZWxlbWVudHMubGVuZ3RoID4gMCAmJiBkcmF3RWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGluc2VydENsaXBib2FyZERhdGEoYm9hcmQsIGRyYXdFbGVtZW50cywgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsaXBib2FyZERhdGE/LnRleHQpIHtcbiAgICAgICAgICAgIGlmICghY2xpcGJvYXJkRGF0YS5lbGVtZW50cyB8fCBjbGlwYm9hcmREYXRhLmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vICgq77+j77i277+jKVxuICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydEFzQ2hpbGRyZW4gPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBzZWxlY3RlZEVsZW1lbnRzWzBdLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydEFzRnJlZVRleHQgPSAhaW5zZXJ0QXNDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0QXNGcmVlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5pbnNlcnRUZXh0KGJvYXJkLCB0YXJnZXRQb2ludCwgY2xpcGJvYXJkRGF0YS50ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGluc2VydEZyYWdtZW50KGNsaXBib2FyZERhdGEsIHRhcmdldFBvaW50LCBvcGVyYXRpb25UeXBlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJvdW5kZWRBcnJvd0xpbmVFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgcGxhaXRTaGFwZXM6IFBsYWl0U2hhcGVFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBsaW5lcyA9IGdldEFycm93TGluZXMoYm9hcmQpO1xuICAgIHJldHVybiBsaW5lcy5maWx0ZXIobGluZSA9PlxuICAgICAgICBwbGFpdFNoYXBlcy5maW5kKHNoYXBlID0+IFBsYWl0QXJyb3dMaW5lLmlzQm91bmRFbGVtZW50T2ZTb3VyY2UobGluZSwgc2hhcGUpIHx8IFBsYWl0QXJyb3dMaW5lLmlzQm91bmRFbGVtZW50T2ZUYXJnZXQobGluZSwgc2hhcGUpKVxuICAgICk7XG59O1xuIl19
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LWZyYWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXctZnJhZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQU9ILDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDdEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixjQUFjLEVBQXFELE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUduRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFNBQXFCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLEtBQUssR0FBRyxTQUF1QixDQUFDO0lBQ3RDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRXBFLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQW9CLEVBQUUsRUFBRTtRQUNoRCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixN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SSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLFNBQVM7Z0JBQ1QsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDdkYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUMzQyxJQUFJLGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xFLE9BQU87Z0JBQ1gsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsY0FBYyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQWdDLEVBQUUsRUFBRTtJQUMvRixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3ZCLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDdEksQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2xpcGJvYXJkRGF0YSxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0LFxuICAgIFdyaXRhYmxlQ2xpcGJvYXJkT3BlcmF0aW9uVHlwZSxcbiAgICBXcml0YWJsZUNsaXBib2FyZFR5cGUsXG4gICAgYWRkQ2xpcGJvYXJkQ29udGV4dCxcbiAgICBjcmVhdGVDbGlwYm9hcmRDb250ZXh0LFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZCc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5LCBQbGFpdEFycm93TGluZSwgUGxhaXRTaGFwZUVsZW1lbnQsIFBsYWl0U3dpbWxhbmUsIFBsYWl0VmVjdG9yTGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVpbGRDbGlwYm9hcmREYXRhLCBpbnNlcnRDbGlwYm9hcmREYXRhIH0gZnJvbSAnLi4vdXRpbHMvY2xpcGJvYXJkJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRBcnJvd0xpbmVzIH0gZnJvbSAnLi4vdXRpbHMvYXJyb3ctbGluZS9hcnJvdy1saW5lLWJhc2ljJztcbmltcG9ydCB7IFBsYWl0SW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ltYWdlJztcbmltcG9ydCB7IGFjY2VwdEltYWdlVHlwZXMsIGJ1aWxkSW1hZ2UsIGdldEVsZW1lbnRPZkZvY3VzZWRJbWFnZSwgZ2V0RWxlbWVudHNUZXh0IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBERUZBVUxUX0lNQUdFX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBsYWl0VGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcblxuZXhwb3J0IGNvbnN0IHdpdGhEcmF3RnJhZ21lbnQgPSAoYmFzZUJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgYm9hcmQgPSBiYXNlQm9hcmQgYXMgUGxhaXRCb2FyZDtcbiAgICBjb25zdCB7IGdldERlbGV0ZWRGcmFnbWVudCwgYnVpbGRGcmFnbWVudCwgaW5zZXJ0RnJhZ21lbnQgfSA9IGJvYXJkO1xuXG4gICAgYm9hcmQuZ2V0RGVsZXRlZEZyYWdtZW50ID0gKGRhdGE6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRyYXdFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgaWYgKGRyYXdFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5RWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeSh2YWx1ZSkpIGFzIFBsYWl0R2VvbWV0cnlbXTtcbiAgICAgICAgICAgIGNvbnN0IGFycm93TGluZUVsZW1lbnRzID0gZHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKHZhbHVlKSkgYXMgUGxhaXRBcnJvd0xpbmVbXTtcbiAgICAgICAgICAgIGNvbnN0IHZlY3RvckxpbmVFbGVtZW50cyA9IGRyYXdFbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc1ZlY3RvckxpbmUodmFsdWUpKSBhcyBQbGFpdFZlY3RvckxpbmVbXTtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZSh2YWx1ZSkpIGFzIFBsYWl0SW1hZ2VbXTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNUYWJsZSh2YWx1ZSkpIGFzIFBsYWl0VGFibGVbXTtcbiAgICAgICAgICAgIGNvbnN0IHN3aW1sYW5lRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNTd2ltbGFuZSh2YWx1ZSkpIGFzIFBsYWl0U3dpbWxhbmVbXTtcblxuICAgICAgICAgICAgY29uc3QgYm91bmRMaW5lRWxlbWVudHMgPSBbXG4gICAgICAgICAgICAgICAgLi4uZ2V0Qm91bmRlZEFycm93TGluZUVsZW1lbnRzKGJvYXJkLCBnZW9tZXRyeUVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgICAuLi5nZXRCb3VuZGVkQXJyb3dMaW5lRWxlbWVudHMoYm9hcmQsIGltYWdlRWxlbWVudHMpLFxuICAgICAgICAgICAgICAgIC4uLmdldEJvdW5kZWRBcnJvd0xpbmVFbGVtZW50cyhib2FyZCwgdGFibGVFbGVtZW50cyksXG4gICAgICAgICAgICAgICAgLi4uZ2V0Qm91bmRlZEFycm93TGluZUVsZW1lbnRzKGJvYXJkLCBzd2ltbGFuZUVsZW1lbnRzKVxuICAgICAgICAgICAgXS5maWx0ZXIobGluZSA9PiAhYXJyb3dMaW5lRWxlbWVudHMuaW5jbHVkZXMobGluZSkpO1xuICAgICAgICAgICAgZGF0YS5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLltcbiAgICAgICAgICAgICAgICAgICAgLi4uZ2VvbWV0cnlFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4uYXJyb3dMaW5lRWxlbWVudHMsXG4gICAgICAgICAgICAgICAgICAgIC4uLnZlY3RvckxpbmVFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4uaW1hZ2VFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4uc3dpbWxhbmVFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4uYm91bmRMaW5lRWxlbWVudHMuZmlsdGVyKGxpbmUgPT4gIWFycm93TGluZUVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldERlbGV0ZWRGcmFnbWVudChkYXRhKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuYnVpbGRGcmFnbWVudCA9IChcbiAgICAgICAgY2xpcGJvYXJkQ29udGV4dDogV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0IHwgbnVsbCxcbiAgICAgICAgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgfCBudWxsLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBXcml0YWJsZUNsaXBib2FyZE9wZXJhdGlvblR5cGUsXG4gICAgICAgIG9yaWdpbkRhdGE/OiBQbGFpdEVsZW1lbnRbXVxuICAgICkgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREcmF3RWxlbWVudHMgPSBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyhib2FyZCwgb3JpZ2luRGF0YSk7XG4gICAgICAgIGxldCBib3VuZExpbmVFbGVtZW50czogUGxhaXRBcnJvd0xpbmVbXSA9IFtdO1xuICAgICAgICBpZiAodGFyZ2V0RHJhd0VsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG9wZXJhdGlvblR5cGUgPT09IFdyaXRhYmxlQ2xpcGJvYXJkT3BlcmF0aW9uVHlwZS5jdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeUVsZW1lbnRzID0gdGFyZ2V0RHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodmFsdWUpKSBhcyBQbGFpdEdlb21ldHJ5W107XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZUVsZW1lbnRzID0gdGFyZ2V0RHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKHZhbHVlKSkgYXMgUGxhaXRBcnJvd0xpbmVbXTtcbiAgICAgICAgICAgICAgICBib3VuZExpbmVFbGVtZW50cyA9IGdldEJvdW5kZWRBcnJvd0xpbmVFbGVtZW50cyhib2FyZCwgZ2VvbWV0cnlFbGVtZW50cykuZmlsdGVyKGxpbmUgPT4gIWxpbmVFbGVtZW50cy5pbmNsdWRlcyhsaW5lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gWy4uLnRhcmdldERyYXdFbGVtZW50cywgLi4uYm91bmRMaW5lRWxlbWVudHNdO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBidWlsZENsaXBib2FyZERhdGEoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMsIHJlY3RhbmdsZSA/IFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnldIDogWzAsIDBdKTtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBnZXRFbGVtZW50c1RleHQoc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICBpZiAoIWNsaXBib2FyZENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBjbGlwYm9hcmRDb250ZXh0ID0gY3JlYXRlQ2xpcGJvYXJkQ29udGV4dChXcml0YWJsZUNsaXBib2FyZFR5cGUuZWxlbWVudHMsIGVsZW1lbnRzLCB0ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xpcGJvYXJkQ29udGV4dCA9IGFkZENsaXBib2FyZENvbnRleHQoY2xpcGJvYXJkQ29udGV4dCwge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBXcml0YWJsZUNsaXBib2FyZFR5cGUuZWxlbWVudHMsXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1aWxkRnJhZ21lbnQoY2xpcGJvYXJkQ29udGV4dCwgcmVjdGFuZ2xlLCBvcGVyYXRpb25UeXBlLCBvcmlnaW5EYXRhKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaW5zZXJ0RnJhZ21lbnQgPSAoY2xpcGJvYXJkRGF0YTogQ2xpcGJvYXJkRGF0YSB8IG51bGwsIHRhcmdldFBvaW50OiBQb2ludCwgb3BlcmF0aW9uVHlwZT86IFdyaXRhYmxlQ2xpcGJvYXJkT3BlcmF0aW9uVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGlmIChjbGlwYm9hcmREYXRhPy5maWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBhY2NlcHRJbWFnZUFycmF5ID0gYWNjZXB0SW1hZ2VUeXBlcy5tYXAodHlwZSA9PiAnaW1hZ2UvJyArIHR5cGUpO1xuICAgICAgICAgICAgY29uc3QgY2FuSW5zZXJ0aW9uSW1hZ2UgPVxuICAgICAgICAgICAgICAgICFnZXRFbGVtZW50T2ZGb2N1c2VkSW1hZ2UoYm9hcmQpICYmICEoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgYm9hcmQuaXNJbWFnZUJpbmRpbmdBbGxvd2VkKHNlbGVjdGVkRWxlbWVudHNbMF0pKTtcbiAgICAgICAgICAgIGlmIChhY2NlcHRJbWFnZUFycmF5LmluY2x1ZGVzKGNsaXBib2FyZERhdGEuZmlsZXNbMF0udHlwZSkgJiYgY2FuSW5zZXJ0aW9uSW1hZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZUZpbGUgPSBjbGlwYm9hcmREYXRhLmZpbGVzWzBdO1xuICAgICAgICAgICAgICAgIGJ1aWxkSW1hZ2UoYm9hcmQsIGltYWdlRmlsZSwgREVGQVVMVF9JTUFHRV9XSURUSCwgaW1hZ2VJdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuaW5zZXJ0SW1hZ2UoYm9hcmQsIGltYWdlSXRlbSwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbGlwYm9hcmREYXRhPy5lbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBkcmF3RWxlbWVudHMgPSBjbGlwYm9hcmREYXRhLmVsZW1lbnRzPy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0RyYXdFbGVtZW50KHZhbHVlKSkgYXMgUGxhaXREcmF3RWxlbWVudFtdO1xuICAgICAgICAgICAgaWYgKGNsaXBib2FyZERhdGEuZWxlbWVudHMgJiYgY2xpcGJvYXJkRGF0YS5lbGVtZW50cy5sZW5ndGggPiAwICYmIGRyYXdFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaW5zZXJ0Q2xpcGJvYXJkRGF0YShib2FyZCwgZHJhd0VsZW1lbnRzLCB0YXJnZXRQb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YT8udGV4dCkge1xuICAgICAgICAgICAgaWYgKCFjbGlwYm9hcmREYXRhLmVsZW1lbnRzIHx8IGNsaXBib2FyZERhdGEuZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gKCrvv6PvuLbvv6MpXG4gICAgICAgICAgICAgICAgY29uc3QgaW5zZXJ0QXNDaGlsZHJlbiA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIHNlbGVjdGVkRWxlbWVudHNbMF0uY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zZXJ0QXNGcmVlVGV4dCA9ICFpbnNlcnRBc0NoaWxkcmVuO1xuICAgICAgICAgICAgICAgIGlmIChpbnNlcnRBc0ZyZWVUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLmluc2VydFRleHQoYm9hcmQsIHRhcmdldFBvaW50LCBjbGlwYm9hcmREYXRhLnRleHQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5zZXJ0RnJhZ21lbnQoY2xpcGJvYXJkRGF0YSwgdGFyZ2V0UG9pbnQsIG9wZXJhdGlvblR5cGUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Qm91bmRlZEFycm93TGluZUVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwbGFpdFNoYXBlczogUGxhaXRTaGFwZUVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGxpbmVzID0gZ2V0QXJyb3dMaW5lcyhib2FyZCk7XG4gICAgcmV0dXJuIGxpbmVzLmZpbHRlcihsaW5lID0+XG4gICAgICAgIHBsYWl0U2hhcGVzLmZpbmQoc2hhcGUgPT4gUGxhaXRBcnJvd0xpbmUuaXNCb3VuZEVsZW1lbnRPZlNvdXJjZShsaW5lLCBzaGFwZSkgfHwgUGxhaXRBcnJvd0xpbmUuaXNCb3VuZEVsZW1lbnRPZlRhcmdldChsaW5lLCBzaGFwZSkpXG4gICAgKTtcbn07XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RectangleClient, getSelectedElements } from '@plait/core';
|
|
2
2
|
import { GeometryComponent } from '../geometry.component';
|
|
3
3
|
import { ArrowLineComponent } from '../arrow-line.component';
|
|
4
|
+
import { VectorLineComponent } from '../vector-line.component';
|
|
4
5
|
import { PlaitDrawElement } from '../interfaces';
|
|
5
6
|
import { withDrawHotkey } from './with-draw-hotkey';
|
|
6
7
|
import { withGeometryCreateByDrawing, withGeometryCreateByDrag } from './with-geometry-create';
|
|
@@ -20,6 +21,9 @@ import { getArrowLinePoints, getArrowLineTextRectangle } from '../utils/arrow-li
|
|
|
20
21
|
import { withDrawRotate } from './with-draw-rotate';
|
|
21
22
|
import { withTable } from './with-table';
|
|
22
23
|
import { withSwimlane } from './with-swimlane';
|
|
24
|
+
import { withVectorPenCreateByDraw } from './with-vector-pen-create';
|
|
25
|
+
import { getVectorLinePoints } from '../utils/vector-line';
|
|
26
|
+
import { withVectorLineResize } from './with-vector-line-resize';
|
|
23
27
|
export const withDraw = (board) => {
|
|
24
28
|
const { drawElement, getRectangle, isRectangleHit, isHit, isInsidePoint, isMovable, isAlign, getRelatedFragment, getHitElement } = board;
|
|
25
29
|
board.drawElement = (context) => {
|
|
@@ -32,6 +36,9 @@ export const withDraw = (board) => {
|
|
|
32
36
|
else if (PlaitDrawElement.isArrowLine(context.element)) {
|
|
33
37
|
return ArrowLineComponent;
|
|
34
38
|
}
|
|
39
|
+
else if (PlaitDrawElement.isVectorLine(context.element)) {
|
|
40
|
+
return VectorLineComponent;
|
|
41
|
+
}
|
|
35
42
|
else if (PlaitDrawElement.isImage(context.element)) {
|
|
36
43
|
return ImageComponent;
|
|
37
44
|
}
|
|
@@ -50,6 +57,11 @@ export const withDraw = (board) => {
|
|
|
50
57
|
const linePointsRectangle = RectangleClient.getRectangleByPoints(points);
|
|
51
58
|
return RectangleClient.getBoundingRectangle([linePointsRectangle, ...lineTextRectangles]);
|
|
52
59
|
}
|
|
60
|
+
if (PlaitDrawElement.isVectorLine(element)) {
|
|
61
|
+
const points = getVectorLinePoints(board, element);
|
|
62
|
+
const linePointsRectangle = RectangleClient.getRectangleByPoints(points);
|
|
63
|
+
return RectangleClient.getBoundingRectangle([linePointsRectangle]);
|
|
64
|
+
}
|
|
53
65
|
if (PlaitDrawElement.isImage(element)) {
|
|
54
66
|
return RectangleClient.getRectangleByPoints(element.points);
|
|
55
67
|
}
|
|
@@ -90,6 +102,9 @@ export const withDraw = (board) => {
|
|
|
90
102
|
if (PlaitDrawElement.isImage(element)) {
|
|
91
103
|
return true;
|
|
92
104
|
}
|
|
105
|
+
if (PlaitDrawElement.isVectorLine(element)) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
93
108
|
if (PlaitDrawElement.isArrowLine(element)) {
|
|
94
109
|
const selectedElements = getSelectedElements(board);
|
|
95
110
|
const isSelected = (boundId) => {
|
|
@@ -125,6 +140,6 @@ export const withDraw = (board) => {
|
|
|
125
140
|
});
|
|
126
141
|
return getRelatedFragment([...elements, ...activeLines], originData);
|
|
127
142
|
};
|
|
128
|
-
return withSwimlane(withTable(withDrawResize(withArrowLineAutoCompleteReaction(withArrowLineBoundReaction(withArrowLineResize(withArrowLineTextMove(withArrowLineText(withGeometryResize(withDrawRotate(withArrowLineCreateByDraw(withArrowLineAutoComplete(withGeometryCreateByDrag(withGeometryCreateByDrawing(withDrawFragment(withDrawHotkey(board))))))))))))))));
|
|
143
|
+
return withSwimlane(withTable(withDrawResize(withVectorPenCreateByDraw(withArrowLineAutoCompleteReaction(withArrowLineBoundReaction(withVectorLineResize(withArrowLineResize(withArrowLineTextMove(withArrowLineText(withGeometryResize(withDrawRotate(withArrowLineCreateByDraw(withArrowLineAutoComplete(withGeometryCreateByDrag(withGeometryCreateByDrawing(withDrawFragment(withDrawHotkey(board))))))))))))))))));
|
|
129
144
|
};
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4RCxlQUFlLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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QUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsT0FBTyxNQUFNLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDO0lBRUYsT0FBTyxZQUFZLENBQ2YsU0FBUyxDQUNMLGNBQWMsQ0FDVixpQ0FBaUMsQ0FDN0IsMEJBQTBCLENBQ3RCLG1CQUFtQixDQUNmLHFCQUFxQixDQUNqQixpQkFBaUIsQ0FDYixrQkFBa0IsQ0FDZCxjQUFjLENBQ1YseUJBQXlCLENBQ3JCLHlCQUF5QixDQUNyQix3QkFBd0IsQ0FDcEIsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDdkUsQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgU2VsZWN0aW9uLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlDb21wb25lbnQgfSBmcm9tICcuLi9nZW9tZXRyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXJyb3dMaW5lQ29tcG9uZW50IH0gZnJvbSAnLi4vYXJyb3ctbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgd2l0aERyYXdIb3RrZXkgfSBmcm9tICcuL3dpdGgtZHJhdy1ob3RrZXknO1xuaW1wb3J0IHsgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmF3aW5nLCB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYWcgfSBmcm9tICcuL3dpdGgtZ2VvbWV0cnktY3JlYXRlJztcbmltcG9ydCB7IHdpdGhEcmF3RnJhZ21lbnQgfSBmcm9tICcuL3dpdGgtZHJhdy1mcmFnbWVudCc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQ3JlYXRlQnlEcmF3IH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtY3JlYXRlJztcbmltcG9ydCB7IHdpdGhHZW9tZXRyeVJlc2l6ZSB9IGZyb20gJy4vd2l0aC1nZW9tZXRyeS1yZXNpemUnO1xuaW1wb3J0IHsgd2l0aEFycm93TGluZVJlc2l6ZSB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQm91bmRSZWFjdGlvbiB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLWJvdW5kLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVUZXh0IH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtdGV4dCc7XG5pbXBvcnQgeyBJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVBdXRvQ29tcGxldGUgfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVUZXh0TW92ZSB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLXRleHQtbW92ZSc7XG5pbXBvcnQgeyB3aXRoRHJhd1Jlc2l6ZSB9IGZyb20gJy4vd2l0aC1kcmF3LXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXREcmF3SGl0RWxlbWVudCwgaXNIaXREcmF3RWxlbWVudCwgaXNIaXRFbGVtZW50SW5zaWRlLCBpc1JlY3RhbmdsZUhpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvaGl0JztcbmltcG9ydCB7IGdldEFycm93TGluZVBvaW50cywgZ2V0QXJyb3dMaW5lVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL2Fycm93LWxpbmUvYXJyb3ctbGluZS1iYXNpYyc7XG5pbXBvcnQgeyB3aXRoRHJhd1JvdGF0ZSB9IGZyb20gJy4vd2l0aC1kcmF3LXJvdGF0ZSc7XG5pbXBvcnQgeyB3aXRoVGFibGUgfSBmcm9tICcuL3dpdGgtdGFibGUnO1xuaW1wb3J0IHsgd2l0aFN3aW1sYW5lIH0gZnJvbSAnLi93aXRoLXN3aW1sYW5lJztcblxuZXhwb3J0IGNvbnN0IHdpdGhEcmF3ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBkcmF3RWxlbWVudCxcbiAgICAgICAgZ2V0UmVjdGFuZ2xlLFxuICAgICAgICBpc1JlY3RhbmdsZUhpdCxcbiAgICAgICAgaXNIaXQsXG4gICAgICAgIGlzSW5zaWRlUG9pbnQsXG4gICAgICAgIGlzTW92YWJsZSxcbiAgICAgICAgaXNBbGlnbixcbiAgICAgICAgZ2V0UmVsYXRlZEZyYWdtZW50LFxuICAgICAgICBnZXRIaXRFbGVtZW50XG4gICAgfSA9IGJvYXJkO1xuXG4gICAgYm9hcmQuZHJhd0VsZW1lbnQgPSAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVU1MKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gR2VvbWV0cnlDb21wb25lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gR2VvbWV0cnlDb21wb25lbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyb3dMaW5lQ29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRyYXdFbGVtZW50KGNvbnRleHQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nZXRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRBcnJvd0xpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbGluZVRleHRSZWN0YW5nbGVzID0gZWxlbWVudC50ZXh0cy5tYXAoKHRleHQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0QXJyb3dMaW5lVGV4dFJlY3RhbmdsZShib2FyZCwgZWxlbWVudCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWN0YW5nbGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVQb2ludHNSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoW2xpbmVQb2ludHNSZWN0YW5nbGUsIC4uLmxpbmVUZXh0UmVjdGFuZ2xlc10pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzUmVjdGFuZ2xlSGl0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXQoZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNIaXQgPSAoZWxlbWVudCwgcG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdChlbGVtZW50LCBwb2ludCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdldEhpdEVsZW1lbnQgPSBlbGVtZW50cyA9PiB7XG4gICAgICAgIGNvbnN0IGlzRHJhd0VsZW1lbnRzID0gZWxlbWVudHMuZXZlcnkoaXRlbSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoaXRlbSkpO1xuICAgICAgICBpZiAoaXNEcmF3RWxlbWVudHMpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXREcmF3SGl0RWxlbWVudChib2FyZCwgZWxlbWVudHMgYXMgUGxhaXREcmF3RWxlbWVudFtdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0SGl0RWxlbWVudChlbGVtZW50cyk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzSW5zaWRlUG9pbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNIaXRFbGVtZW50SW5zaWRlKGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSW5zaWRlUG9pbnQoZWxlbWVudCwgcG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc01vdmFibGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gKGJvdW5kSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIXNlbGVjdGVkRWxlbWVudHMuZmluZCh2YWx1ZSA9PiB2YWx1ZS5pZCA9PT0gYm91bmRJZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50LnNvdXJjZS5ib3VuZElkICYmICFlbGVtZW50LnRhcmdldC5ib3VuZElkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5zb3VyY2UuYm91bmRJZCAmJiBpc1NlbGVjdGVkKGVsZW1lbnQuc291cmNlLmJvdW5kSWQpICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnRhcmdldC5ib3VuZElkICYmIGlzU2VsZWN0ZWQoZWxlbWVudC50YXJnZXQuYm91bmRJZCkgJiYgc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc01vdmFibGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzQWxpZ24gPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkgfHwgUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBbGlnbihlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVsYXRlZEZyYWdtZW50ID0gKGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSwgb3JpZ2luRGF0YT86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBvcmlnaW5EYXRhPy5sZW5ndGggPyBvcmlnaW5EYXRhIDogZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGxpbmVFbGVtZW50cyA9IGJvYXJkLmNoaWxkcmVuLmZpbHRlcihlbGVtZW50ID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoZWxlbWVudCkpO1xuICAgICAgICBjb25zdCBhY3RpdmVMaW5lcyA9IGxpbmVFbGVtZW50cy5maWx0ZXIobGluZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBzZWxlY3RlZEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmlkID09PSBsaW5lLnNvdXJjZS5ib3VuZElkKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNlbGVjdGVkRWxlbWVudHMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGxpbmUudGFyZ2V0LmJvdW5kSWQpO1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMobGluZSk7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlICYmIHRhcmdldCAmJiAhaXNTZWxlY3RlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBnZXRSZWxhdGVkRnJhZ21lbnQoWy4uLmVsZW1lbnRzLCAuLi5hY3RpdmVMaW5lc10sIG9yaWdpbkRhdGEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gd2l0aFN3aW1sYW5lKFxuICAgICAgICB3aXRoVGFibGUoXG4gICAgICAgICAgICB3aXRoRHJhd1Jlc2l6ZShcbiAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVCb3VuZFJlYWN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZVJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lVGV4dE1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVUZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEdlb21ldHJ5UmVzaXplKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEcmF3Um90YXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lQ3JlYXRlQnlEcmF3KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZUF1dG9Db21wbGV0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhd2luZyh3aXRoRHJhd0ZyYWdtZW50KHdpdGhEcmF3SG90a2V5KGJvYXJkKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcbn07XG4iXX0=
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4RCxlQUFlLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFF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Q1YseUJBQXlCLENBQ3JCLGlDQUFpQyxDQUM3QiwwQkFBMEIsQ0FDdEIsb0JBQW9CLENBQ2hCLG1CQUFtQixDQUNmLHFCQUFxQixDQUNqQixpQkFBaUIsQ0FDYixrQkFBa0IsQ0FDZCxjQUFjLENBQ1YseUJBQXlCLENBQ3JCLHlCQUF5QixDQUNyQix3QkFBd0IsQ0FDcEIsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDdkUsQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIFNlbGVjdGlvbiwgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvbWV0cnkuY29tcG9uZW50JztcbmltcG9ydCB7IEFycm93TGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2Fycm93LWxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFZlY3RvckxpbmVDb21wb25lbnQgfSBmcm9tICcuLi92ZWN0b3ItbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgd2l0aERyYXdIb3RrZXkgfSBmcm9tICcuL3dpdGgtZHJhdy1ob3RrZXknO1xuaW1wb3J0IHsgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmF3aW5nLCB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYWcgfSBmcm9tICcuL3dpdGgtZ2VvbWV0cnktY3JlYXRlJztcbmltcG9ydCB7IHdpdGhEcmF3RnJhZ21lbnQgfSBmcm9tICcuL3dpdGgtZHJhdy1mcmFnbWVudCc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQ3JlYXRlQnlEcmF3IH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtY3JlYXRlJztcbmltcG9ydCB7IHdpdGhHZW9tZXRyeVJlc2l6ZSB9IGZyb20gJy4vd2l0aC1nZW9tZXRyeS1yZXNpemUnO1xuaW1wb3J0IHsgd2l0aEFycm93TGluZVJlc2l6ZSB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQm91bmRSZWFjdGlvbiB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLWJvdW5kLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVUZXh0IH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtdGV4dCc7XG5pbXBvcnQgeyBJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVBdXRvQ29tcGxldGUgfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVUZXh0TW92ZSB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLXRleHQtbW92ZSc7XG5pbXBvcnQgeyB3aXRoRHJhd1Jlc2l6ZSB9IGZyb20gJy4vd2l0aC1kcmF3LXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXREcmF3SGl0RWxlbWVudCwgaXNIaXREcmF3RWxlbWVudCwgaXNIaXRFbGVtZW50SW5zaWRlLCBpc1JlY3RhbmdsZUhpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvaGl0JztcbmltcG9ydCB7IGdldEFycm93TGluZVBvaW50cywgZ2V0QXJyb3dMaW5lVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL2Fycm93LWxpbmUvYXJyb3ctbGluZS1iYXNpYyc7XG5pbXBvcnQgeyB3aXRoRHJhd1JvdGF0ZSB9IGZyb20gJy4vd2l0aC1kcmF3LXJvdGF0ZSc7XG5pbXBvcnQgeyB3aXRoVGFibGUgfSBmcm9tICcuL3dpdGgtdGFibGUnO1xuaW1wb3J0IHsgd2l0aFN3aW1sYW5lIH0gZnJvbSAnLi93aXRoLXN3aW1sYW5lJztcbmltcG9ydCB7IHdpdGhWZWN0b3JQZW5DcmVhdGVCeURyYXcgfSBmcm9tICcuL3dpdGgtdmVjdG9yLXBlbi1jcmVhdGUnO1xuaW1wb3J0IHsgZ2V0VmVjdG9yTGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL3ZlY3Rvci1saW5lJztcbmltcG9ydCB7IHdpdGhWZWN0b3JMaW5lUmVzaXplIH0gZnJvbSAnLi93aXRoLXZlY3Rvci1saW5lLXJlc2l6ZSc7XG5cbmV4cG9ydCBjb25zdCB3aXRoRHJhdyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgZHJhd0VsZW1lbnQsXG4gICAgICAgIGdldFJlY3RhbmdsZSxcbiAgICAgICAgaXNSZWN0YW5nbGVIaXQsXG4gICAgICAgIGlzSGl0LFxuICAgICAgICBpc0luc2lkZVBvaW50LFxuICAgICAgICBpc01vdmFibGUsXG4gICAgICAgIGlzQWxpZ24sXG4gICAgICAgIGdldFJlbGF0ZWRGcmFnbWVudCxcbiAgICAgICAgZ2V0SGl0RWxlbWVudFxuICAgIH0gPSBib2FyZDtcblxuICAgIGJvYXJkLmRyYXdFbGVtZW50ID0gKGNvbnRleHQ6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1VNTChjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEFycm93TGluZUNvbXBvbmVudDtcbiAgICAgICAgfSBlbHNlIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVmVjdG9yTGluZUNvbXBvbmVudDtcbiAgICAgICAgfSBlbHNlIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEltYWdlQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkcmF3RWxlbWVudChjb250ZXh0KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVjdGFuZ2xlID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVUZXh0UmVjdGFuZ2xlcyA9IGVsZW1lbnQudGV4dHMubWFwKCh0ZXh0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldEFycm93TGluZVRleHRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBsaW5lUG9pbnRzUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEJvdW5kaW5nUmVjdGFuZ2xlKFtsaW5lUG9pbnRzUmVjdGFuZ2xlLCAuLi5saW5lVGV4dFJlY3RhbmdsZXNdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1ZlY3RvckxpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldFZlY3RvckxpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbGluZVBvaW50c1JlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMhKTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoW2xpbmVQb2ludHNSZWN0YW5nbGVdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc1JlY3RhbmdsZUhpdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHNlbGVjdGlvbjogU2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUmVjdGFuZ2xlSGl0RHJhd0VsZW1lbnQoYm9hcmQsIGVsZW1lbnQsIHNlbGVjdGlvbik7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzUmVjdGFuZ2xlSGl0KGVsZW1lbnQsIHNlbGVjdGlvbik7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzSGl0ID0gKGVsZW1lbnQsIHBvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGlzSGl0RHJhd0VsZW1lbnQoYm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQoZWxlbWVudCwgcG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nZXRIaXRFbGVtZW50ID0gZWxlbWVudHMgPT4ge1xuICAgICAgICBjb25zdCBpc0RyYXdFbGVtZW50cyA9IGVsZW1lbnRzLmV2ZXJ5KGl0ZW0gPT4gUGxhaXREcmF3RWxlbWVudC5pc0RyYXdFbGVtZW50KGl0ZW0pKTtcbiAgICAgICAgaWYgKGlzRHJhd0VsZW1lbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RHJhd0hpdEVsZW1lbnQoYm9hcmQsIGVsZW1lbnRzIGFzIFBsYWl0RHJhd0VsZW1lbnRbXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEhpdEVsZW1lbnQoZWxlbWVudHMpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc0luc2lkZVBvaW50ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGlzSGl0RWxlbWVudEluc2lkZShib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0luc2lkZVBvaW50KGVsZW1lbnQsIHBvaW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNNb3ZhYmxlID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1ZlY3RvckxpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gKGJvdW5kSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIXNlbGVjdGVkRWxlbWVudHMuZmluZCh2YWx1ZSA9PiB2YWx1ZS5pZCA9PT0gYm91bmRJZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50LnNvdXJjZS5ib3VuZElkICYmICFlbGVtZW50LnRhcmdldC5ib3VuZElkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5zb3VyY2UuYm91bmRJZCAmJiBpc1NlbGVjdGVkKGVsZW1lbnQuc291cmNlLmJvdW5kSWQpICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnRhcmdldC5ib3VuZElkICYmIGlzU2VsZWN0ZWQoZWxlbWVudC50YXJnZXQuYm91bmRJZCkgJiYgc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc01vdmFibGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzQWxpZ24gPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkgfHwgUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBbGlnbihlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVsYXRlZEZyYWdtZW50ID0gKGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSwgb3JpZ2luRGF0YT86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBvcmlnaW5EYXRhPy5sZW5ndGggPyBvcmlnaW5EYXRhIDogZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGxpbmVFbGVtZW50cyA9IGJvYXJkLmNoaWxkcmVuLmZpbHRlcihlbGVtZW50ID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoZWxlbWVudCkpO1xuICAgICAgICBjb25zdCBhY3RpdmVMaW5lcyA9IGxpbmVFbGVtZW50cy5maWx0ZXIobGluZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBzZWxlY3RlZEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmlkID09PSBsaW5lLnNvdXJjZS5ib3VuZElkKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNlbGVjdGVkRWxlbWVudHMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGxpbmUudGFyZ2V0LmJvdW5kSWQpO1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMobGluZSk7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlICYmIHRhcmdldCAmJiAhaXNTZWxlY3RlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBnZXRSZWxhdGVkRnJhZ21lbnQoWy4uLmVsZW1lbnRzLCAuLi5hY3RpdmVMaW5lc10sIG9yaWdpbkRhdGEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gd2l0aFN3aW1sYW5lKFxuICAgICAgICB3aXRoVGFibGUoXG4gICAgICAgICAgICB3aXRoRHJhd1Jlc2l6ZShcbiAgICAgICAgICAgICAgICB3aXRoVmVjdG9yUGVuQ3JlYXRlQnlEcmF3KFxuICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lQm91bmRSZWFjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoVmVjdG9yTGluZVJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZVJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVUZXh0TW92ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lVGV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEdlb21ldHJ5UmVzaXplKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERyYXdSb3RhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZUNyZWF0ZUJ5RHJhdyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZUF1dG9Db21wbGV0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYXdpbmcod2l0aERyYXdGcmFnbWVudCh3aXRoRHJhd0hvdGtleShib2FyZCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { isClosedVectorLine } from './../utils/vector-line';
|
|
2
|
+
import { Transforms, distanceBetweenPointAndPoint } from '@plait/core';
|
|
3
|
+
import { withResize } from '@plait/common';
|
|
4
|
+
import { getSelectedVectorLineElements } from '../utils/selected';
|
|
5
|
+
import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
|
|
6
|
+
import { LINE_HIT_GEOMETRY_BUFFER } from '../constants';
|
|
7
|
+
export const withVectorLineResize = (board) => {
|
|
8
|
+
const options = {
|
|
9
|
+
key: 'draw-vector-line',
|
|
10
|
+
canResize: () => {
|
|
11
|
+
return true;
|
|
12
|
+
},
|
|
13
|
+
hitTest: (point) => {
|
|
14
|
+
const selectedVectorLineElements = getSelectedVectorLineElements(board);
|
|
15
|
+
if (selectedVectorLineElements.length > 0) {
|
|
16
|
+
let result = null;
|
|
17
|
+
selectedVectorLineElements.forEach(value => {
|
|
18
|
+
const handleRef = getHitLineResizeHandleRef(board, value, point);
|
|
19
|
+
if (handleRef) {
|
|
20
|
+
result = {
|
|
21
|
+
element: value,
|
|
22
|
+
handle: handleRef.handle,
|
|
23
|
+
handleIndex: handleRef.handleIndex
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
},
|
|
31
|
+
onResize: (resizeRef, resizeState) => {
|
|
32
|
+
let points = [...resizeRef.element.points];
|
|
33
|
+
let handleIndex = resizeRef.handleIndex;
|
|
34
|
+
if (resizeRef.handle === LineResizeHandle.source || resizeRef.handle === LineResizeHandle.target) {
|
|
35
|
+
points[handleIndex] = resizeState.endPoint;
|
|
36
|
+
if (isClosedVectorLine(resizeRef.element)) {
|
|
37
|
+
points[points.length - 1] = resizeState.endPoint;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const targetPoint = resizeRef.handle === LineResizeHandle.source ? points[points.length - 1] : points[0];
|
|
41
|
+
const distance = distanceBetweenPointAndPoint(...resizeState.endPoint, ...targetPoint);
|
|
42
|
+
if (distance <= LINE_HIT_GEOMETRY_BUFFER) {
|
|
43
|
+
points[handleIndex] = targetPoint;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (resizeRef.handle === LineResizeHandle.addHandle) {
|
|
49
|
+
points.splice(handleIndex + 1, 0, resizeState.endPoint);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
points[handleIndex] = resizeState.endPoint;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
Transforms.setNode(board, { points }, resizeRef.path);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
withResize(board, options);
|
|
59
|
+
return board;
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12ZWN0b3ItbGluZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdmVjdG9yLWxpbmUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBMkIsVUFBVSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBNkMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV4RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLE9BQU8sR0FBeUQ7UUFDbEUsR0FBRyxFQUFFLGtCQUFrQjtRQUN2QixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3RCLE1BQU0sMEJBQTBCLEdBQUcsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEUsSUFBSSwwQkFBMEIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbEIsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN2QyxNQUFNLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNqRSxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNaLE1BQU0sR0FBRzs0QkFDTCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07NEJBQ3hCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVzt5QkFDckMsQ0FBQztvQkFDTixDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsUUFBUSxFQUFFLENBQUMsU0FBdUQsRUFBRSxXQUF3QixFQUFFLEVBQUU7WUFDNUYsSUFBSSxNQUFNLEdBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVksQ0FBQztZQUN6QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQy9GLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUMzQyxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUNyRCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pHLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO29CQUN2RixJQUFJLFFBQVEsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO3dCQUN2QyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDO29CQUN0QyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUMvQyxDQUFDO1lBQ0wsQ0FBQztZQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO1FBQ2xFLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUFvQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFOUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNDbG9zZWRWZWN0b3JMaW5lIH0gZnJvbSAnLi8uLi91dGlscy92ZWN0b3ItbGluZSc7XG5pbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQb2ludCwgVHJhbnNmb3JtcywgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYsIExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IFBsYWl0VmVjdG9yTGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTElORV9ISVRfR0VPTUVUUllfQlVGRkVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhWZWN0b3JMaW5lUmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXRWZWN0b3JMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiA9IHtcbiAgICAgICAga2V5OiAnZHJhdy12ZWN0b3ItbGluZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRWZWN0b3JMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZlY3RvckxpbmVFbGVtZW50cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmID0gZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgdmFsdWUsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleDogaGFuZGxlUmVmLmhhbmRsZUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRWZWN0b3JMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBsZXQgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlIHx8IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgIGlmIChpc0Nsb3NlZFZlY3RvckxpbmUocmVzaXplUmVmLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlID8gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSA6IHBvaW50c1swXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnJlc2l6ZVN0YXRlLmVuZFBvaW50LCAuLi50YXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8PSBMSU5FX0hJVF9HRU9NRVRSWV9CVUZGRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSB0YXJnZXRQb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoaGFuZGxlSW5kZXggKyAxLCAwLCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0VmVjdG9yTGluZSwgTGluZVJlc2l6ZUhhbmRsZT4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|