@plait/draw 0.75.0-next.9 → 0.75.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/engines/basic-shapes/cloud.d.ts +2 -12
- package/engines/uml/provided-interface.d.ts +0 -5
- package/esm2022/engines/basic-shapes/cloud.mjs +10 -11
- package/esm2022/engines/flowchart/note-curly-left.mjs +48 -12
- package/esm2022/engines/flowchart/note-curly-right.mjs +49 -10
- package/esm2022/engines/uml/actor.mjs +61 -44
- package/esm2022/engines/uml/assembly.mjs +72 -23
- package/esm2022/engines/uml/component.mjs +78 -33
- package/esm2022/engines/uml/deletion.mjs +28 -6
- package/esm2022/engines/uml/package.mjs +51 -21
- package/esm2022/engines/uml/provided-interface.mjs +53 -26
- package/esm2022/engines/uml/required-interface.mjs +51 -7
- package/esm2022/plugins/with-arrow-line-text-move.mjs +2 -2
- package/esm2022/plugins/with-table.mjs +3 -2
- package/esm2022/utils/hit.mjs +5 -5
- package/fesm2022/plait-draw.mjs +489 -178
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,24 +1,70 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient, getEllipseTangentSlope,
|
|
2
|
-
import { RectangleEngine } from '../basic-shapes/rectangle';
|
|
1
|
+
import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, getEllipseTangentSlope, getNearestPointBetweenPointAndDiscreteSegments, getNearestPointBetweenPointAndEllipse, getVectorFromPointAndSlope, setStrokeLinecap } from '@plait/core';
|
|
3
2
|
import { getUnitVectorByPointAndPoint, rotateVector } from '@plait/common';
|
|
3
|
+
function generateActorPath(rectangle) {
|
|
4
|
+
const centerX = rectangle.x + rectangle.width / 2;
|
|
5
|
+
const headRadius = { width: rectangle.width / 3 / 2, height: rectangle.height / 4 / 2 };
|
|
6
|
+
const centerY = rectangle.y + rectangle.height / 4 / 2;
|
|
7
|
+
return {
|
|
8
|
+
headArcCommand: {
|
|
9
|
+
rx: headRadius.width,
|
|
10
|
+
ry: headRadius.height,
|
|
11
|
+
xAxisRotation: 0,
|
|
12
|
+
largeArcFlag: 0,
|
|
13
|
+
sweepFlag: 1,
|
|
14
|
+
endX: centerX,
|
|
15
|
+
endY: rectangle.y
|
|
16
|
+
},
|
|
17
|
+
bodyLine: [
|
|
18
|
+
[centerX, rectangle.y + rectangle.height / 4],
|
|
19
|
+
[centerX, rectangle.y + (rectangle.height / 4) * 3]
|
|
20
|
+
],
|
|
21
|
+
armsLine: [
|
|
22
|
+
[rectangle.x, rectangle.y + rectangle.height / 2],
|
|
23
|
+
[rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2]
|
|
24
|
+
],
|
|
25
|
+
leftLegLine: [
|
|
26
|
+
[centerX, rectangle.y + (rectangle.height / 4) * 3],
|
|
27
|
+
[rectangle.x + rectangle.width / 12, rectangle.y + rectangle.height]
|
|
28
|
+
],
|
|
29
|
+
rightLegLine: [
|
|
30
|
+
[centerX, rectangle.y + (rectangle.height / 4) * 3],
|
|
31
|
+
[rectangle.x + (rectangle.width / 12) * 11, rectangle.y + rectangle.height]
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
}
|
|
4
35
|
export const ActorEngine = {
|
|
5
36
|
draw(board, rectangle, options) {
|
|
6
37
|
const rs = PlaitBoard.getRoughSVG(board);
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
M${
|
|
17
|
-
|
|
18
|
-
|
|
38
|
+
const { headArcCommand, bodyLine, armsLine, leftLegLine, rightLegLine } = generateActorPath(rectangle);
|
|
39
|
+
const pathData = [
|
|
40
|
+
// 头部(从中间开始画)
|
|
41
|
+
`M${bodyLine[0][0]} ${bodyLine[0][1]}`,
|
|
42
|
+
`A${headArcCommand.rx} ${headArcCommand.ry} ${headArcCommand.xAxisRotation} ${headArcCommand.largeArcFlag} ${headArcCommand.sweepFlag} ${headArcCommand.endX} ${headArcCommand.endY}`,
|
|
43
|
+
`A${headArcCommand.rx} ${headArcCommand.ry} ${headArcCommand.xAxisRotation} ${headArcCommand.largeArcFlag} ${headArcCommand.sweepFlag} ${bodyLine[0][0]} ${bodyLine[0][1]}`,
|
|
44
|
+
// 身体
|
|
45
|
+
`V${bodyLine[1][1]}`,
|
|
46
|
+
// 手臂
|
|
47
|
+
`M${armsLine[0][0]} ${armsLine[0][1]} H${armsLine[1][0]}`,
|
|
48
|
+
// 腿
|
|
49
|
+
`M${leftLegLine[0][0]} ${leftLegLine[0][1]} L${leftLegLine[1][0]} ${leftLegLine[1][1]}`,
|
|
50
|
+
`M${rightLegLine[0][0]} ${rightLegLine[0][1]} L${rightLegLine[1][0]} ${rightLegLine[1][1]}`
|
|
51
|
+
].join(' ');
|
|
52
|
+
const shape = rs.path(pathData, { ...options, fillStyle: 'solid' });
|
|
19
53
|
setStrokeLinecap(shape, 'round');
|
|
20
54
|
return shape;
|
|
21
55
|
},
|
|
56
|
+
getNearestPoint(rectangle, point) {
|
|
57
|
+
const { headArcCommand, bodyLine, armsLine, leftLegLine, rightLegLine } = generateActorPath(rectangle);
|
|
58
|
+
// 检查头部椭圆
|
|
59
|
+
const headCenter = [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 4 / 2];
|
|
60
|
+
const nearestPointForHead = getNearestPointBetweenPointAndEllipse(point, headCenter, headArcCommand.rx, headArcCommand.ry);
|
|
61
|
+
const distanceForHead = distanceBetweenPointAndPoint(...point, ...nearestPointForHead);
|
|
62
|
+
// 检查所有线段
|
|
63
|
+
const allSegments = [bodyLine, armsLine, leftLegLine, rightLegLine];
|
|
64
|
+
const nearestPointForLines = getNearestPointBetweenPointAndDiscreteSegments(point, allSegments);
|
|
65
|
+
const distanceForLines = distanceBetweenPointAndPoint(...point, ...nearestPointForLines);
|
|
66
|
+
return distanceForHead < distanceForLines ? nearestPointForHead : nearestPointForLines;
|
|
67
|
+
},
|
|
22
68
|
isInsidePoint(rectangle, point) {
|
|
23
69
|
const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
|
|
24
70
|
return RectangleClient.isHit(rectangle, rangeRectangle);
|
|
@@ -26,35 +72,6 @@ export const ActorEngine = {
|
|
|
26
72
|
getCornerPoints(rectangle) {
|
|
27
73
|
return RectangleClient.getCornerPoints(rectangle);
|
|
28
74
|
},
|
|
29
|
-
getNearestPoint(rectangle, point) {
|
|
30
|
-
let nearestPoint = getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
|
|
31
|
-
if (nearestPoint[1] >= rectangle.y && nearestPoint[1] <= rectangle.y + rectangle.height / 4) {
|
|
32
|
-
const centerPoint = [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 4 / 2];
|
|
33
|
-
nearestPoint = getNearestPointBetweenPointAndEllipse(point, centerPoint, rectangle.width / 3 / 2, rectangle.height / 4 / 2);
|
|
34
|
-
return nearestPoint;
|
|
35
|
-
}
|
|
36
|
-
if (nearestPoint[1] >= rectangle.y + rectangle.height / 4 && nearestPoint[1] < rectangle.y + (rectangle.height / 4) * 3) {
|
|
37
|
-
if (nearestPoint[1] === rectangle.x + rectangle.width / 2) {
|
|
38
|
-
nearestPoint = getNearestPointBetweenPointAndSegments(point, [
|
|
39
|
-
[rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 4],
|
|
40
|
-
[rectangle.x + rectangle.width / 2, rectangle.y + (rectangle.height / 4) * 3]
|
|
41
|
-
]);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
nearestPoint = getNearestPointBetweenPointAndSegments(point, [
|
|
45
|
-
[rectangle.x, rectangle.y + rectangle.height / 2],
|
|
46
|
-
[rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2]
|
|
47
|
-
]);
|
|
48
|
-
}
|
|
49
|
-
return nearestPoint;
|
|
50
|
-
}
|
|
51
|
-
nearestPoint = getNearestPointBetweenPointAndSegments(point, [
|
|
52
|
-
[rectangle.x + rectangle.width / 12, rectangle.y + rectangle.height],
|
|
53
|
-
[rectangle.x + rectangle.width / 2, rectangle.y + (rectangle.height / 4) * 3],
|
|
54
|
-
[rectangle.x + (rectangle.width / 12) * 11, rectangle.y + rectangle.height]
|
|
55
|
-
]);
|
|
56
|
-
return nearestPoint;
|
|
57
|
-
},
|
|
58
75
|
getConnectorPoints(rectangle) {
|
|
59
76
|
return RectangleClient.getEdgeCenterPoints(rectangle);
|
|
60
77
|
},
|
|
@@ -99,4 +116,4 @@ export const ActorEngine = {
|
|
|
99
116
|
};
|
|
100
117
|
}
|
|
101
118
|
};
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9hY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFFZixzQkFBc0IsRUFDdEIscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN0QywwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBZ0I7SUFDcEMsSUFBSSxDQUFDLEtBQWlCLEVBQUUsU0FBMEIsRUFBRSxPQUFnQjtRQUNoRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQ2pCLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztlQUN4RSxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUM7ZUFDakgsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ2hILFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztlQUNyQixTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO2VBQ3hDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztlQUN2RixTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSztlQUN6RyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7ZUFDN0UsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNO2VBQ3BFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztlQUM3RSxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTTthQUM3RSxFQUNELEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUNyQyxDQUFDO1FBQ0Ys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LE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUNELGdCQUFnQixFQUFFLENBQUMsT0FBc0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFPLENBQUMsQ0FBQztRQUMvRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVyxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDMUMsT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUMxQixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO1NBQ3RELENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBXLFxuICAgIGdldEVsbGlwc2VUYW5nZW50U2xvcGUsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZSxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBnZXRWZWN0b3JGcm9tUG9pbnRBbmRTbG9wZSxcbiAgICBzZXRTdHJva2VMaW5lY2FwXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnksIFNoYXBlRW5naW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBnZXRQb2x5Z29uRWRnZUJ5Q29ubmVjdGlvblBvaW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9seWdvbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVFbmdpbmUgfSBmcm9tICcuLi9iYXNpYy1zaGFwZXMvcmVjdGFuZ2xlJztcbmltcG9ydCB7IGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQsIHJvdGF0ZVZlY3RvciB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgQWN0b3JFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChcbiAgICAgICAgICAgIGBNJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDJ9ICR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gNH0gIFxuICAgICAgICAgICAgQSR7cmVjdGFuZ2xlLndpZHRoIC8gMyAvIDJ9ICR7cmVjdGFuZ2xlLmhlaWdodCAvIDQgLyAyfSwgMCwgMCwgMSwgJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDJ9ICR7cmVjdGFuZ2xlLnl9IFxuICAgICAgICAgICAgQSR7cmVjdGFuZ2xlLndpZHRoIC8gMyAvIDJ9ICR7cmVjdGFuZ2xlLmhlaWdodCAvIDQgLyAyfSwgMCwgMCwgMSwgJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDJ9ICR7cmVjdGFuZ2xlLnkgK1xuICAgICAgICAgICAgICAgIHJlY3RhbmdsZS5oZWlnaHQgLyA0fVxuICAgICAgICAgICAgViR7cmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogM31cbiAgICAgICAgICAgIE0ke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMn0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyfSBIJHtyZWN0YW5nbGUueH1cbiAgICAgICAgICAgIE0ke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMn0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyfSBIJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aH1cbiAgICAgICAgICAgIE0ke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMn0gJHtyZWN0YW5nbGUueSArIChyZWN0YW5nbGUuaGVpZ2h0IC8gNCkgKiAzfVxuICAgICAgICAgICAgTCR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAxMn0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHR9XG4gICAgICAgICAgICBNJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDJ9ICR7cmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogM31cbiAgICAgICAgICAgIEwke3JlY3RhbmdsZS54ICsgKHJlY3RhbmdsZS53aWR0aCAvIDEyKSAqIDExfSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodH1cbiAgICAgICAgICAgIGAsXG4gICAgICAgICAgICB7IC4uLm9wdGlvbnMsIGZpbGxTdHlsZTogJ3NvbGlkJyB9XG4gICAgICAgICk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBsZXQgbmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKSk7XG5cbiAgICAgICAgaWYgKG5lYXJlc3RQb2ludFsxXSA+PSByZWN0YW5nbGUueSAmJiBuZWFyZXN0UG9pbnRbMV0gPD0gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gNCkge1xuICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQ6IFBvaW50ID0gW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gNCAvIDJdO1xuICAgICAgICAgICAgbmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZShwb2ludCwgY2VudGVyUG9pbnQsIHJlY3RhbmdsZS53aWR0aCAvIDMgLyAyLCByZWN0YW5nbGUuaGVpZ2h0IC8gNCAvIDIpO1xuICAgICAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVhcmVzdFBvaW50WzFdID49IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDQgJiYgbmVhcmVzdFBvaW50WzFdIDwgcmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogMykge1xuICAgICAgICAgICAgaWYgKG5lYXJlc3RQb2ludFsxXSA9PT0gcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyKSB7XG4gICAgICAgICAgICAgICAgbmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFtcbiAgICAgICAgICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gNF0sXG4gICAgICAgICAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDIsIHJlY3RhbmdsZS55ICsgKHJlY3RhbmdsZS5oZWlnaHQgLyA0KSAqIDNdXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5lYXJlc3RQb2ludCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBbXG4gICAgICAgICAgICAgICAgICAgIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0sXG4gICAgICAgICAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl1cbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQ7XG4gICAgICAgIH1cbiAgICAgICAgbmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFtcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDEyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogM10sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyAocmVjdGFuZ2xlLndpZHRoIC8gMTIpICogMTEsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF1cbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQ7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcblxuICAgIGdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgcG9pbnRPZlJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMV0gPj0gcmVjdGFuZ2xlLnkgJiYgY29ubmVjdGlvblBvaW50WzFdIDw9IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclBvaW50OiBQb2ludCA9IFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDIsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDQgLyAyXTtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gW2Nvbm5lY3Rpb25Qb2ludFswXSAtIGNlbnRlclBvaW50WzBdLCAtKGNvbm5lY3Rpb25Qb2ludFsxXSAtIGNlbnRlclBvaW50WzFdKV07XG4gICAgICAgICAgICBjb25zdCBhID0gcmVjdGFuZ2xlLndpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGIgPSByZWN0YW5nbGUuaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGNvbnN0IHNsb3BlID0gZ2V0RWxsaXBzZVRhbmdlbnRTbG9wZShwb2ludFswXSwgcG9pbnRbMV0sIGEsIGIpIGFzIGFueTtcbiAgICAgICAgICAgIGNvbnN0IHZlY3RvciA9IGdldFZlY3RvckZyb21Qb2ludEFuZFNsb3BlKHBvaW50WzBdLCBwb2ludFsxXSwgc2xvcGUpO1xuICAgICAgICAgICAgcmV0dXJuIHZlY3RvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMV0gPj0gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gNCAmJiBjb25uZWN0aW9uUG9pbnRbMV0gPCByZWN0YW5nbGUueSArIChyZWN0YW5nbGUuaGVpZ2h0IC8gNCkgKiAzKSB7XG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzBdIDwgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdGF0ZVZlY3RvcihcbiAgICAgICAgICAgICAgICAgICAgZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdLCBjb25uZWN0aW9uUG9pbnQpLFxuICAgICAgICAgICAgICAgICAgICAtKE1hdGguUEkgLyAyKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSwgY29ubmVjdGlvblBvaW50KSxcbiAgICAgICAgICAgICAgICAgICAgLShNYXRoLlBJIC8gMilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFsxXSA+PSByZWN0YW5nbGUueSArIChyZWN0YW5nbGUuaGVpZ2h0IC8gNCkgKiAzKSB7XG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzBdIDwgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoY29ubmVjdGlvblBvaW50LCBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAxMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KFxuICAgICAgICAgICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyAocmVjdGFuZ2xlLndpZHRoIC8gMTIpICogMTEsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF0sXG4gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25Qb2ludFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChjb25uZWN0aW9uUG9pbnQsIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDQsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF0pO1xuICAgIH0sXG4gICAgZ2V0VGV4dFJlY3RhbmdsZTogKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LnRleHRIZWlnaHQhO1xuICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggKyA0MDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggLSAyMCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIGVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0ICsgNFxuICAgICAgICB9O1xuICAgIH1cbn07XG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9hY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFHZiw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3RCLDhDQUE4QyxFQUM5QyxxQ0FBcUMsRUFHckMsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUtyQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNFLFNBQVMsaUJBQWlCLENBQUMsU0FBMEI7SUFDakQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNsRCxNQUFNLFVBQVUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3hGLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZELE9BQU87UUFDSCxjQUFjLEVBQUU7WUFDWixFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUs7WUFDcEIsRUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQ3JCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLENBQUM7WUFDWixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNwQjtRQUNELFFBQVEsRUFBRTtZQUNOLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFD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LGVBQWUsQ0FDbEIsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUNELGdCQUFnQixFQUFFLENBQUMsT0FBc0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFPLENBQUMsQ0FBQztRQUMvRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVyxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDMUMsT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUMxQixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO1NBQ3RELENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTVkdBcmNDb21tYW5kLFxuICAgIFcsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBnZXRFbGxpcHNlVGFuZ2VudFNsb3BlLFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZERpc2NyZXRlU2VnbWVudHMsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZSxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIGdldFZlY3RvckZyb21Qb2ludEFuZFNsb3BlLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi8uLi91dGlscy9wb2x5Z29uJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludCwgcm90YXRlVmVjdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmludGVyZmFjZSBBY3RvclBhdGhEYXRhIHtcbiAgICBoZWFkQXJjQ29tbWFuZDogU1ZHQXJjQ29tbWFuZDtcbiAgICBib2R5TGluZTogW1BvaW50LCBQb2ludF07XG4gICAgYXJtc0xpbmU6IFtQb2ludCwgUG9pbnRdO1xuICAgIGxlZnRMZWdMaW5lOiBbUG9pbnQsIFBvaW50XTtcbiAgICByaWdodExlZ0xpbmU6IFtQb2ludCwgUG9pbnRdO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUFjdG9yUGF0aChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IEFjdG9yUGF0aERhdGEge1xuICAgIGNvbnN0IGNlbnRlclggPSByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDI7XG4gICAgY29uc3QgaGVhZFJhZGl1cyA9IHsgd2lkdGg6IHJlY3RhbmdsZS53aWR0aCAvIDMgLyAyLCBoZWlnaHQ6IHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMiB9O1xuICAgIGNvbnN0IGNlbnRlclkgPSByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGhlYWRBcmNDb21tYW5kOiB7XG4gICAgICAgICAgICByeDogaGVhZFJhZGl1cy53aWR0aCxcbiAgICAgICAgICAgIHJ5OiBoZWFkUmFkaXVzLmhlaWdodCxcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDAsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiBjZW50ZXJYLFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnlcbiAgICAgICAgfSxcbiAgICAgICAgYm9keUxpbmU6IFtcbiAgICAgICAgICAgIFtjZW50ZXJYLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0XSxcbiAgICAgICAgICAgIFtjZW50ZXJYLCByZWN0YW5nbGUueSArIChyZWN0YW5nbGUuaGVpZ2h0IC8gNCkgKiAzXVxuICAgICAgICBdLFxuICAgICAgICBhcm1zTGluZTogW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl1cbiAgICAgICAgXSxcbiAgICAgICAgbGVmdExlZ0xpbmU6IFtcbiAgICAgICAgICAgIFtjZW50ZXJYLCByZWN0YW5nbGUueSArIChyZWN0YW5nbGUuaGVpZ2h0IC8gNCkgKiAzXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDEyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0TGVnTGluZTogW1xuICAgICAgICAgICAgW2NlbnRlclgsIHJlY3RhbmdsZS55ICsgKHJlY3RhbmdsZS5oZWlnaHQgLyA0KSAqIDNdLFxuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgKHJlY3RhbmdsZS53aWR0aCAvIDEyKSAqIDExLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdXG4gICAgICAgIF1cbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgQWN0b3JFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IHsgaGVhZEFyY0NvbW1hbmQsIGJvZHlMaW5lLCBhcm1zTGluZSwgbGVmdExlZ0xpbmUsIHJpZ2h0TGVnTGluZSB9ID0gZ2VuZXJhdGVBY3RvclBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICBjb25zdCBwYXRoRGF0YSA9IFtcbiAgICAgICAgICAgIC8vIOWktOmDqO+8iOS7juS4remXtOW8gOWni+eUu++8iVxuICAgICAgICAgICAgYE0ke2JvZHlMaW5lWzBdWzBdfSAke2JvZHlMaW5lWzBdWzFdfWAsXG4gICAgICAgICAgICBgQSR7aGVhZEFyY0NvbW1hbmQucnh9ICR7aGVhZEFyY0NvbW1hbmQucnl9ICR7aGVhZEFyY0NvbW1hbmQueEF4aXNSb3RhdGlvbn0gJHtoZWFkQXJjQ29tbWFuZC5sYXJnZUFyY0ZsYWd9ICR7aGVhZEFyY0NvbW1hbmQuc3dlZXBGbGFnfSAke2hlYWRBcmNDb21tYW5kLmVuZFh9ICR7aGVhZEFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgYEEke2hlYWRBcmNDb21tYW5kLnJ4fSAke2hlYWRBcmNDb21tYW5kLnJ5fSAke2hlYWRBcmNDb21tYW5kLnhBeGlzUm90YXRpb259ICR7aGVhZEFyY0NvbW1hbmQubGFyZ2VBcmNGbGFnfSAke2hlYWRBcmNDb21tYW5kLnN3ZWVwRmxhZ30gJHtib2R5TGluZVswXVswXX0gJHtib2R5TGluZVswXVsxXX1gLFxuICAgICAgICAgICAgLy8g6Lqr5L2TXG4gICAgICAgICAgICBgViR7Ym9keUxpbmVbMV1bMV19YCxcbiAgICAgICAgICAgIC8vIOaJi+iHglxuICAgICAgICAgICAgYE0ke2FybXNMaW5lWzBdWzBdfSAke2FybXNMaW5lWzBdWzFdfSBIJHthcm1zTGluZVsxXVswXX1gLFxuICAgICAgICAgICAgLy8g6IW/XG4gICAgICAgICAgICBgTSR7bGVmdExlZ0xpbmVbMF1bMF19ICR7bGVmdExlZ0xpbmVbMF1bMV19IEwke2xlZnRMZWdMaW5lWzFdWzBdfSAke2xlZnRMZWdMaW5lWzFdWzFdfWAsXG4gICAgICAgICAgICBgTSR7cmlnaHRMZWdMaW5lWzBdWzBdfSAke3JpZ2h0TGVnTGluZVswXVsxXX0gTCR7cmlnaHRMZWdMaW5lWzFdWzBdfSAke3JpZ2h0TGVnTGluZVsxXVsxXX1gXG4gICAgICAgIF0uam9pbignICcpO1xuXG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChwYXRoRGF0YSwgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcblxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHsgaGVhZEFyY0NvbW1hbmQsIGJvZHlMaW5lLCBhcm1zTGluZSwgbGVmdExlZ0xpbmUsIHJpZ2h0TGVnTGluZSB9ID0gZ2VuZXJhdGVBY3RvclBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICAvLyDmo4Dmn6XlpLTpg6jmpK3lnIZcbiAgICAgICAgY29uc3QgaGVhZENlbnRlcjogUG9pbnQgPSBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMl07XG4gICAgICAgIGNvbnN0IG5lYXJlc3RQb2ludEZvckhlYWQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlKHBvaW50LCBoZWFkQ2VudGVyLCBoZWFkQXJjQ29tbWFuZC5yeCwgaGVhZEFyY0NvbW1hbmQucnkpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZvckhlYWQgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50LCAuLi5uZWFyZXN0UG9pbnRGb3JIZWFkKTtcblxuICAgICAgICAvLyDmo4Dmn6XmiYDmnInnur/mrrVcbiAgICAgICAgY29uc3QgYWxsU2VnbWVudHMgPSBbYm9keUxpbmUsIGFybXNMaW5lLCBsZWZ0TGVnTGluZSwgcmlnaHRMZWdMaW5lXTtcbiAgICAgICAgY29uc3QgbmVhcmVzdFBvaW50Rm9yTGluZXMgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmREaXNjcmV0ZVNlZ21lbnRzKHBvaW50LCBhbGxTZWdtZW50cyk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRm9yTGluZXMgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50LCAuLi5uZWFyZXN0UG9pbnRGb3JMaW5lcyk7XG5cbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlRm9ySGVhZCA8IGRpc3RhbmNlRm9yTGluZXMgPyBuZWFyZXN0UG9pbnRGb3JIZWFkIDogbmVhcmVzdFBvaW50Rm9yTGluZXM7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzFdID49IHJlY3RhbmdsZS55ICYmIGNvbm5lY3Rpb25Qb2ludFsxXSA8PSByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0KSB7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJQb2ludDogUG9pbnQgPSBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyA0IC8gMl07XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IFtjb25uZWN0aW9uUG9pbnRbMF0gLSBjZW50ZXJQb2ludFswXSwgLShjb25uZWN0aW9uUG9pbnRbMV0gLSBjZW50ZXJQb2ludFsxXSldO1xuICAgICAgICAgICAgY29uc3QgYSA9IHJlY3RhbmdsZS53aWR0aCAvIDI7XG4gICAgICAgICAgICBjb25zdCBiID0gcmVjdGFuZ2xlLmhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBzbG9wZSA9IGdldEVsbGlwc2VUYW5nZW50U2xvcGUocG9pbnRbMF0sIHBvaW50WzFdLCBhLCBiKSBhcyBhbnk7XG4gICAgICAgICAgICBjb25zdCB2ZWN0b3IgPSBnZXRWZWN0b3JGcm9tUG9pbnRBbmRTbG9wZShwb2ludFswXSwgcG9pbnRbMV0sIHNsb3BlKTtcbiAgICAgICAgICAgIHJldHVybiB2ZWN0b3I7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzFdID49IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDQgJiYgY29ubmVjdGlvblBvaW50WzFdIDwgcmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogMykge1xuICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFswXSA8IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSwgY29ubmVjdGlvblBvaW50KSxcbiAgICAgICAgICAgICAgICAgICAgLShNYXRoLlBJIC8gMilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yKFxuICAgICAgICAgICAgICAgICAgICBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0sIGNvbm5lY3Rpb25Qb2ludCksXG4gICAgICAgICAgICAgICAgICAgIC0oTWF0aC5QSSAvIDIpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMV0gPj0gcmVjdGFuZ2xlLnkgKyAocmVjdGFuZ2xlLmhlaWdodCAvIDQpICogMykge1xuICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFswXSA8IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KGNvbm5lY3Rpb25Qb2ludCwgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMTIsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChcbiAgICAgICAgICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgKHJlY3RhbmdsZS53aWR0aCAvIDEyKSAqIDExLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uUG9pbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoY29ubmVjdGlvblBvaW50LCBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyA0LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdKTtcbiAgICB9LFxuICAgIGdldFRleHRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoICsgNDA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54IC0gMjAsXG4gICAgICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyBlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCArIDRcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19
|
|
@@ -1,24 +1,59 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndEllipse, getNearestPointBetweenPointAndSegments, setStrokeLinecap } from '@plait/core';
|
|
2
|
-
import { RectangleEngine } from '../basic-shapes/rectangle';
|
|
1
|
+
import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, getNearestPointBetweenPointAndArc, getNearestPointBetweenPointAndEllipse, getNearestPointBetweenPointAndSegments, setStrokeLinecap } from '@plait/core';
|
|
3
2
|
import { getUnitVectorByPointAndPoint, rotateVector } from '@plait/common';
|
|
3
|
+
function generateAssemblyPath(rectangle) {
|
|
4
|
+
const centerY = rectangle.y + rectangle.height / 2;
|
|
5
|
+
const firstLineEndX = rectangle.x + rectangle.width * 0.3;
|
|
6
|
+
const circleWidth = rectangle.width * 0.13;
|
|
7
|
+
const circleHeight = rectangle.height * 0.285;
|
|
8
|
+
const verticalX = firstLineEndX + circleWidth;
|
|
9
|
+
const verticalRadius = rectangle.width * 0.233;
|
|
10
|
+
return {
|
|
11
|
+
startPoint: [rectangle.x, centerY],
|
|
12
|
+
line1: [
|
|
13
|
+
[rectangle.x, centerY],
|
|
14
|
+
[firstLineEndX, centerY]
|
|
15
|
+
],
|
|
16
|
+
circleArcCommand: {
|
|
17
|
+
rx: circleWidth,
|
|
18
|
+
ry: circleHeight,
|
|
19
|
+
xAxisRotation: 0,
|
|
20
|
+
largeArcFlag: 1,
|
|
21
|
+
sweepFlag: 1,
|
|
22
|
+
endX: firstLineEndX,
|
|
23
|
+
endY: centerY
|
|
24
|
+
},
|
|
25
|
+
verticalArcCommand: {
|
|
26
|
+
rx: verticalRadius,
|
|
27
|
+
ry: rectangle.height / 2,
|
|
28
|
+
xAxisRotation: 0,
|
|
29
|
+
largeArcFlag: 0,
|
|
30
|
+
sweepFlag: 1,
|
|
31
|
+
endX: verticalX,
|
|
32
|
+
endY: rectangle.y + rectangle.height
|
|
33
|
+
},
|
|
34
|
+
line2: [
|
|
35
|
+
[verticalX + verticalRadius, centerY],
|
|
36
|
+
[rectangle.x + rectangle.width, centerY]
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
}
|
|
4
40
|
export const AssemblyEngine = {
|
|
5
41
|
draw(board, rectangle, options) {
|
|
6
42
|
const rs = PlaitBoard.getRoughSVG(board);
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`, {
|
|
43
|
+
const { startPoint, line1, circleArcCommand, verticalArcCommand, line2 } = generateAssemblyPath(rectangle);
|
|
44
|
+
const pathData = [
|
|
45
|
+
`M${startPoint[0]} ${startPoint[1]}`,
|
|
46
|
+
`H${line1[1][0]}`,
|
|
47
|
+
// 画完整的圆形:先画一个半圆,再画另一个半圆
|
|
48
|
+
`A${circleArcCommand.rx} ${circleArcCommand.ry} ${circleArcCommand.xAxisRotation} ${circleArcCommand.largeArcFlag} ${circleArcCommand.sweepFlag} ${line1[1][0] + circleArcCommand.rx * 2} ${circleArcCommand.endY}`,
|
|
49
|
+
`A${circleArcCommand.rx} ${circleArcCommand.ry} ${circleArcCommand.xAxisRotation} ${circleArcCommand.largeArcFlag} ${circleArcCommand.sweepFlag} ${circleArcCommand.endX} ${circleArcCommand.endY}`,
|
|
50
|
+
// 垂直椭圆
|
|
51
|
+
`M${verticalArcCommand.endX} ${rectangle.y}`,
|
|
52
|
+
`A${verticalArcCommand.rx} ${verticalArcCommand.ry} ${verticalArcCommand.xAxisRotation} ${verticalArcCommand.largeArcFlag} ${verticalArcCommand.sweepFlag} ${verticalArcCommand.endX} ${verticalArcCommand.endY}`,
|
|
53
|
+
// 最后一条线
|
|
54
|
+
`M${line2[0][0]} ${line2[0][1]} H${line2[1][0]}`
|
|
55
|
+
].join(' ');
|
|
56
|
+
const shape = rs.path(pathData, {
|
|
22
57
|
...options,
|
|
23
58
|
fillStyle: 'solid'
|
|
24
59
|
});
|
|
@@ -36,11 +71,25 @@ export const AssemblyEngine = {
|
|
|
36
71
|
return RectangleClient.getEdgeCenterPoints(rectangle);
|
|
37
72
|
},
|
|
38
73
|
getNearestPoint(rectangle, point) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
74
|
+
const { line1, line2, circleArcCommand, verticalArcCommand } = generateAssemblyPath(rectangle);
|
|
75
|
+
// 检查直线段
|
|
76
|
+
const nearestPointForLines = getNearestPointBetweenPointAndSegments(point, [...line1, ...line2]);
|
|
77
|
+
const distanceForLines = distanceBetweenPointAndPoint(...point, ...nearestPointForLines);
|
|
78
|
+
// 检查中间圆形
|
|
79
|
+
const circleCenter = [line1[1][0] + circleArcCommand.rx, line1[1][1]];
|
|
80
|
+
const nearestPointForCircle = getNearestPointBetweenPointAndEllipse(point, circleCenter, circleArcCommand.rx, circleArcCommand.ry);
|
|
81
|
+
const distanceForCircle = distanceBetweenPointAndPoint(...point, ...nearestPointForCircle);
|
|
82
|
+
// 检查垂直椭圆(使用 getNearestPointBetweenPointAndArc 处理半圆弧)
|
|
83
|
+
const arcStartPoint = [verticalArcCommand.endX, rectangle.y];
|
|
84
|
+
const nearestPointForEllipse = getNearestPointBetweenPointAndArc(point, arcStartPoint, verticalArcCommand);
|
|
85
|
+
const distanceForEllipse = distanceBetweenPointAndPoint(...point, ...nearestPointForEllipse);
|
|
86
|
+
// 返回最近的点
|
|
87
|
+
const minDistance = Math.min(distanceForLines, distanceForCircle, distanceForEllipse);
|
|
88
|
+
if (minDistance === distanceForLines)
|
|
89
|
+
return nearestPointForLines;
|
|
90
|
+
if (minDistance === distanceForCircle)
|
|
91
|
+
return nearestPointForCircle;
|
|
92
|
+
return nearestPointForEllipse;
|
|
44
93
|
},
|
|
45
94
|
getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
|
|
46
95
|
const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
|
|
@@ -53,4 +102,4 @@ export const AssemblyEngine = {
|
|
|
53
102
|
return getUnitVectorByPointAndPoint(connectionPoint, [rectangle.x, rectangle.y + rectangle.height / 2]);
|
|
54
103
|
}
|
|
55
104
|
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9hc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWdCO0lBQ3ZDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNqQjtXQUNELFNBQVMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7V0FDakQsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUc7V0FDbkMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLGFBQWEsU0FBUyxDQUFDLENBQUM7WUFDckUsU0FBUyxDQUFDLEtBQUssR0FBRyxHQUFHO1lBQ3JCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1dBQ2pFLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxhQUFhLFNBQVMsQ0FBQyxDQUFDLEdB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QUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BJLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkgsT0FBTyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFDRCxPQUFPLDRCQUE0QixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZSxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBzZXRTdHJva2VMaW5lY2FwXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFNoYXBlRW5naW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBSZWN0YW5nbGVFbmdpbmUgfSBmcm9tICcuLi9iYXNpYy1zaGFwZXMvcmVjdGFuZ2xlJztcbmltcG9ydCB7IGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQsIHJvdGF0ZVZlY3RvciB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgQXNzZW1ibHlFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChcbiAgICAgICAgICAgIGBcbiAgICAgICAgTSR7cmVjdGFuZ2xlLnh9ICR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMn0gXG4gICAgICAgIEgke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC4zfVxuICAgICAgICBBJHtyZWN0YW5nbGUud2lkdGggKiAwLjEzfSAke3JlY3RhbmdsZS5oZWlnaHQgKiAwLjI4NX0sIDAsIDEsIDEgJHtyZWN0YW5nbGUueCArXG4gICAgICAgICAgICAgICAgcmVjdGFuZ2xlLndpZHRoICogMC4zICtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUud2lkdGggKiAwLjI2fSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJ9XG4gICAgICAgIEEke3JlY3RhbmdsZS53aWR0aCAqIDAuMTN9ICR7cmVjdGFuZ2xlLmhlaWdodCAqIDAuMjg1fSwgMCwgMSwgMSAke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC4zfSAke3JlY3RhbmdsZS55ICtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUuaGVpZ2h0IC8gMn1cbiAgICAgICAgTSR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjMgKyByZWN0YW5nbGUud2lkdGggKiAwLjEzfSAke3JlY3RhbmdsZS55fVxuICAgICAgICBBJHtyZWN0YW5nbGUud2lkdGggKiAwLjIzM30gJHtyZWN0YW5nbGUuaGVpZ2h0IC8gMn0sIDAsIDAsIDEgJHtyZWN0YW5nbGUueCArXG4gICAgICAgICAgICAgICAgcmVjdGFuZ2xlLndpZHRoICogMC4zICtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUud2lkdGggKiAwLjEzfSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodH1cbiAgICAgICAgTSR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjMgKyByZWN0YW5nbGUud2lkdGggKiAwLjEzICsgcmVjdGFuZ2xlLndpZHRoICogMC4yMzN9ICR7cmVjdGFuZ2xlLnkgK1xuICAgICAgICAgICAgICAgIHJlY3RhbmdsZS5oZWlnaHQgLyAyfSBIJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aH1cbiAgICAgICAgYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcblxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCBuZWFyZXN0UG9pbnQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludCwgUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpKTtcbiAgICAgICAgaWYgKG5lYXJlc3RQb2ludFswXSA9PT0gcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZShcbiAgICAgICAgICAgICAgICBwb2ludCxcbiAgICAgICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjQzLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSxcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUud2lkdGggKiAwLjIyMyxcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUuaGVpZ2h0IC8gMlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICAgIH0sXG4gICAgZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Qb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFswXSA+IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC40MyAmJiBjb25uZWN0aW9uUG9pbnRbMV0gPCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyKSB7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yKGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoY29ubmVjdGlvblBvaW50LCBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdKSwgLU1hdGguUEkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMF0gPiByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAqIDAuNDMgJiYgY29ubmVjdGlvblBvaW50WzFdID4gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMikge1xuICAgICAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoY29ubmVjdGlvblBvaW50LCBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChjb25uZWN0aW9uUG9pbnQsIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0pO1xuICAgIH1cbn07XG4iXX0=
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL3VtbC9hc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFFZiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHFDQUFxQyxFQUNyQyxzQ0FBc0MsRUFDdEMsZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVM0UsU0FBUyxvQkFBb0IsQ0FBQyxTQUEwQjtJQUNwRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDMUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDOUMsTUFBTSxTQUFTLEdBQUcsYUFBYSxHQUFHLFdBQVcsQ0FBQztJQUM5QyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUUvQyxPQUFPO1FBQ0gsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDbEMsS0FBSyxFQUFFO1lBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztZQUN0QixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7U0FDM0I7UUFDRCxnQkFBZ0IsRUFBRTtZQUNkLEVBQUUsRUFBRSxXQUFXO1lBQ2YsRUFBRSxFQUFFLFlBQVk7WUFDaEIsYUFBYSxFQUFFLENBQUM7WUFDaEIsWUFBWSxFQUFFLENBQUM7WUFDZixTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxPQUFPO1NBQ2hCO1FBQ0Qsa0JBQWtCLEVBQUU7WUFDaEIsRUFBRSxFQUFFLGNBQWM7WUFDbEIsRUFBRSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUN4QixhQUFhLEVBQUUsQ0FBQztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTTtTQUN2QztRQUNELEtBQUssRUFBRTtZQUNILENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxPQUFPLENBQUM7WUFDckMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1NBQzNDO0tBQ0osQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWdCO0lBQ3ZDLElBQUksQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsT0FBZ0I7UUFDaEUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRyxNQUFNLFFBQVEsR0FBRztZQUNiLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQix3QkFBd0I7WUFDeEIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksZ0JBQWdCLENBQUMsRUFBRSxJQUFJLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUNuTixJQUFJLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksZ0JBQWdCLENBQUMsYUFBYSxJQUFJLGdCQUFnQixDQUFDLFlBQVksSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLElBQUksZ0JBQWdCLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUNuTSxPQUFPO1lBQ1AsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsRUFBRTtZQUM1QyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksa0JBQWtCLENBQUMsYUFBYSxJQUFJLGtCQUFrQixDQUFDLFlBQVksSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLElBQUksa0JBQWtCLENBQUMsSUFBSSxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRTtZQUNqTixRQUFRO1lBQ1IsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNuRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVaLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLEdBQUcsT0FBTztZQUNWLFNBQVMsRUFBRSxPQUFPO1NBQ3JCLENBQUMsQ0FBQztRQUNILGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsYUFBYSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNsRCxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEI7UUFDdEMsT0FBTyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNwRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9GLFFBQVE7UUFDUixNQUFNLG9CQUFvQixHQUFHLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRyxNQUFNLGdCQUFnQixHQUFHLDRCQUE0QixDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztRQUV6RixTQUFTO1FBQ1QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBVSxDQUFDO1FBQy9FLE1BQU0scUJBQXFCLEdBQUcscUNBQXFDLENBQy9ELEtBQUssRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLENBQUMsRUFBRSxFQUNuQixnQkFBZ0IsQ0FBQyxFQUFFLENBQ3RCLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLDRCQUE0QixDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcscUJBQXFCLENBQUMsQ0FBQztRQUUzRixxREFBcUQ7UUFDckQsTUFBTSxhQUFhLEdBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sc0JBQXNCLEdBQUcsaUNBQWlDLENBQzVELEtBQUssRUFDTCxhQUFhLEVBQ2Isa0JBQWtCLENBQ3JCLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLDRCQUE0QixDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztRQUU3RixTQUFTO1FBQ1QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RGLElBQUksV0FBVyxLQUFLLGdCQUFnQjtZQUFFLE9BQU8sb0JBQW9CLENBQUM7UUFDbEUsSUFBSSxXQUFXLEtBQUssaUJBQWlCO1lBQUUsT0FBTyxxQkFBcUIsQ0FBQztRQUNwRSxPQUFPLHNCQUFzQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxpQ0FBaUMsQ0FBQyxTQUEwQixFQUFFLGdCQUFrQztRQUM1RixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDeEYsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZILE9BQU8sWUFBWSxDQUFDLDRCQUE0QixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEksQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2SCxPQUFPLDRCQUE0QixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUNELE9BQU8sNEJBQTRCLENBQUMsZUFBZSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTVkdBcmNDb21tYW5kLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjLFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgc2V0U3Ryb2tlTGluZWNhcFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50LCByb3RhdGVWZWN0b3IgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcblxuaW50ZXJmYWNlIEFzc2VtYmx5UGF0aERhdGEge1xuICAgIHN0YXJ0UG9pbnQ6IFBvaW50O1xuICAgIGxpbmUxOiBbUG9pbnQsIFBvaW50XTtcbiAgICBjaXJjbGVBcmNDb21tYW5kOiBTVkdBcmNDb21tYW5kO1xuICAgIHZlcnRpY2FsQXJjQ29tbWFuZDogU1ZHQXJjQ29tbWFuZDtcbiAgICBsaW5lMjogW1BvaW50LCBQb2ludF07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQXNzZW1ibHlQYXRoKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KTogQXNzZW1ibHlQYXRoRGF0YSB7XG4gICAgY29uc3QgY2VudGVyWSA9IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDI7XG4gICAgY29uc3QgZmlyc3RMaW5lRW5kWCA9IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC4zO1xuICAgIGNvbnN0IGNpcmNsZVdpZHRoID0gcmVjdGFuZ2xlLndpZHRoICogMC4xMztcbiAgICBjb25zdCBjaXJjbGVIZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0ICogMC4yODU7XG4gICAgY29uc3QgdmVydGljYWxYID0gZmlyc3RMaW5lRW5kWCArIGNpcmNsZVdpZHRoO1xuICAgIGNvbnN0IHZlcnRpY2FsUmFkaXVzID0gcmVjdGFuZ2xlLndpZHRoICogMC4yMzM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFydFBvaW50OiBbcmVjdGFuZ2xlLngsIGNlbnRlclldLFxuICAgICAgICBsaW5lMTogW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCBjZW50ZXJZXSxcbiAgICAgICAgICAgIFtmaXJzdExpbmVFbmRYLCBjZW50ZXJZXVxuICAgICAgICBdLFxuICAgICAgICBjaXJjbGVBcmNDb21tYW5kOiB7XG4gICAgICAgICAgICByeDogY2lyY2xlV2lkdGgsXG4gICAgICAgICAgICByeTogY2lyY2xlSGVpZ2h0LFxuICAgICAgICAgICAgeEF4aXNSb3RhdGlvbjogMCxcbiAgICAgICAgICAgIGxhcmdlQXJjRmxhZzogMSxcbiAgICAgICAgICAgIHN3ZWVwRmxhZzogMSxcbiAgICAgICAgICAgIGVuZFg6IGZpcnN0TGluZUVuZFgsXG4gICAgICAgICAgICBlbmRZOiBjZW50ZXJZXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnRpY2FsQXJjQ29tbWFuZDoge1xuICAgICAgICAgICAgcng6IHZlcnRpY2FsUmFkaXVzLFxuICAgICAgICAgICAgcnk6IHJlY3RhbmdsZS5oZWlnaHQgLyAyLFxuICAgICAgICAgICAgeEF4aXNSb3RhdGlvbjogMCxcbiAgICAgICAgICAgIGxhcmdlQXJjRmxhZzogMCxcbiAgICAgICAgICAgIHN3ZWVwRmxhZzogMSxcbiAgICAgICAgICAgIGVuZFg6IHZlcnRpY2FsWCxcbiAgICAgICAgICAgIGVuZFk6IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodFxuICAgICAgICB9LFxuICAgICAgICBsaW5lMjogW1xuICAgICAgICAgICAgW3ZlcnRpY2FsWCArIHZlcnRpY2FsUmFkaXVzLCBjZW50ZXJZXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgY2VudGVyWV1cbiAgICAgICAgXVxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBBc3NlbWJseUVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3QgeyBzdGFydFBvaW50LCBsaW5lMSwgY2lyY2xlQXJjQ29tbWFuZCwgdmVydGljYWxBcmNDb21tYW5kLCBsaW5lMiB9ID0gZ2VuZXJhdGVBc3NlbWJseVBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICBjb25zdCBwYXRoRGF0YSA9IFtcbiAgICAgICAgICAgIGBNJHtzdGFydFBvaW50WzBdfSAke3N0YXJ0UG9pbnRbMV19YCxcbiAgICAgICAgICAgIGBIJHtsaW5lMVsxXVswXX1gLFxuICAgICAgICAgICAgLy8g55S75a6M5pW055qE5ZyG5b2i77ya5YWI55S75LiA5Liq5Y2K5ZyG77yM5YaN55S75Y+m5LiA5Liq5Y2K5ZyGXG4gICAgICAgICAgICBgQSR7Y2lyY2xlQXJjQ29tbWFuZC5yeH0gJHtjaXJjbGVBcmNDb21tYW5kLnJ5fSAke2NpcmNsZUFyY0NvbW1hbmQueEF4aXNSb3RhdGlvbn0gJHtjaXJjbGVBcmNDb21tYW5kLmxhcmdlQXJjRmxhZ30gJHtjaXJjbGVBcmNDb21tYW5kLnN3ZWVwRmxhZ30gJHtsaW5lMVsxXVswXSArIGNpcmNsZUFyY0NvbW1hbmQucnggKiAyfSAke2NpcmNsZUFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgYEEke2NpcmNsZUFyY0NvbW1hbmQucnh9ICR7Y2lyY2xlQXJjQ29tbWFuZC5yeX0gJHtjaXJjbGVBcmNDb21tYW5kLnhBeGlzUm90YXRpb259ICR7Y2lyY2xlQXJjQ29tbWFuZC5sYXJnZUFyY0ZsYWd9ICR7Y2lyY2xlQXJjQ29tbWFuZC5zd2VlcEZsYWd9ICR7Y2lyY2xlQXJjQ29tbWFuZC5lbmRYfSAke2NpcmNsZUFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgLy8g5Z6C55u05qSt5ZyGXG4gICAgICAgICAgICBgTSR7dmVydGljYWxBcmNDb21tYW5kLmVuZFh9ICR7cmVjdGFuZ2xlLnl9YCxcbiAgICAgICAgICAgIGBBJHt2ZXJ0aWNhbEFyY0NvbW1hbmQucnh9ICR7dmVydGljYWxBcmNDb21tYW5kLnJ5fSAke3ZlcnRpY2FsQXJjQ29tbWFuZC54QXhpc1JvdGF0aW9ufSAke3ZlcnRpY2FsQXJjQ29tbWFuZC5sYXJnZUFyY0ZsYWd9ICR7dmVydGljYWxBcmNDb21tYW5kLnN3ZWVwRmxhZ30gJHt2ZXJ0aWNhbEFyY0NvbW1hbmQuZW5kWH0gJHt2ZXJ0aWNhbEFyY0NvbW1hbmQuZW5kWX1gLFxuICAgICAgICAgICAgLy8g5pyA5ZCO5LiA5p2h57q/XG4gICAgICAgICAgICBgTSR7bGluZTJbMF1bMF19ICR7bGluZTJbMF1bMV19IEgke2xpbmUyWzFdWzBdfWBcbiAgICAgICAgXS5qb2luKCcgJyk7XG5cbiAgICAgICAgY29uc3Qgc2hhcGUgPSBycy5wYXRoKHBhdGhEYXRhLCB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0sXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgeyBsaW5lMSwgbGluZTIsIGNpcmNsZUFyY0NvbW1hbmQsIHZlcnRpY2FsQXJjQ29tbWFuZCB9ID0gZ2VuZXJhdGVBc3NlbWJseVBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICAvLyDmo4Dmn6Xnm7Tnur/mrrVcbiAgICAgICAgY29uc3QgbmVhcmVzdFBvaW50Rm9yTGluZXMgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludCwgWy4uLmxpbmUxLCAuLi5saW5lMl0pO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZvckxpbmVzID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5wb2ludCwgLi4ubmVhcmVzdFBvaW50Rm9yTGluZXMpO1xuXG4gICAgICAgIC8vIOajgOafpeS4remXtOWchuW9olxuICAgICAgICBjb25zdCBjaXJjbGVDZW50ZXIgPSBbbGluZTFbMV1bMF0gKyBjaXJjbGVBcmNDb21tYW5kLnJ4LCBsaW5lMVsxXVsxXV0gYXMgUG9pbnQ7XG4gICAgICAgIGNvbnN0IG5lYXJlc3RQb2ludEZvckNpcmNsZSA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UoXG4gICAgICAgICAgICBwb2ludCxcbiAgICAgICAgICAgIGNpcmNsZUNlbnRlcixcbiAgICAgICAgICAgIGNpcmNsZUFyY0NvbW1hbmQucngsXG4gICAgICAgICAgICBjaXJjbGVBcmNDb21tYW5kLnJ5XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRm9yQ2lyY2xlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5wb2ludCwgLi4ubmVhcmVzdFBvaW50Rm9yQ2lyY2xlKTtcblxuICAgICAgICAvLyDmo4Dmn6XlnoLnm7TmpK3lnIbvvIjkvb/nlKggZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjIOWkhOeQhuWNiuWchuW8p++8iVxuICAgICAgICBjb25zdCBhcmNTdGFydFBvaW50OiBQb2ludCA9IFt2ZXJ0aWNhbEFyY0NvbW1hbmQuZW5kWCwgcmVjdGFuZ2xlLnldO1xuICAgICAgICBjb25zdCBuZWFyZXN0UG9pbnRGb3JFbGxpcHNlID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjKFxuICAgICAgICAgICAgcG9pbnQsXG4gICAgICAgICAgICBhcmNTdGFydFBvaW50LFxuICAgICAgICAgICAgdmVydGljYWxBcmNDb21tYW5kXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRm9yRWxsaXBzZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4ucG9pbnQsIC4uLm5lYXJlc3RQb2ludEZvckVsbGlwc2UpO1xuXG4gICAgICAgIC8vIOi/lOWbnuacgOi/keeahOeCuVxuICAgICAgICBjb25zdCBtaW5EaXN0YW5jZSA9IE1hdGgubWluKGRpc3RhbmNlRm9yTGluZXMsIGRpc3RhbmNlRm9yQ2lyY2xlLCBkaXN0YW5jZUZvckVsbGlwc2UpO1xuICAgICAgICBpZiAobWluRGlzdGFuY2UgPT09IGRpc3RhbmNlRm9yTGluZXMpIHJldHVybiBuZWFyZXN0UG9pbnRGb3JMaW5lcztcbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlID09PSBkaXN0YW5jZUZvckNpcmNsZSkgcmV0dXJuIG5lYXJlc3RQb2ludEZvckNpcmNsZTtcbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludEZvckVsbGlwc2U7XG4gICAgfSxcbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICBpZiAoY29ubmVjdGlvblBvaW50WzBdID4gcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjQzICYmIGNvbm5lY3Rpb25Qb2ludFsxXSA8IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDIpIHtcbiAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3IoZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChjb25uZWN0aW9uUG9pbnQsIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0pLCAtTWF0aC5QSSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb2ludFswXSA+IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogMC40MyAmJiBjb25uZWN0aW9uUG9pbnRbMV0gPiByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChjb25uZWN0aW9uUG9pbnQsIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KGNvbm5lY3Rpb25Qb2ludCwgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSk7XG4gICAgfVxufTtcbiJdfQ==
|
|
@@ -1,32 +1,85 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient,
|
|
2
|
-
import { RectangleEngine } from '../basic-shapes/rectangle';
|
|
1
|
+
import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndDiscreteSegments, setStrokeLinecap } from '@plait/core';
|
|
3
2
|
import { getStrokeWidthByElement } from '../../utils';
|
|
4
3
|
import { ShapeDefaultSpace } from '../../constants';
|
|
5
4
|
import { getUnitVectorByPointAndPoint } from '@plait/common';
|
|
5
|
+
function generateComponentPath(rectangle) {
|
|
6
|
+
const mainLineX = rectangle.x + 12;
|
|
7
|
+
const boxWidth = rectangle.width > 70 ? 24 : rectangle.width * 0.2;
|
|
8
|
+
const boxHeight = rectangle.height - 28 - rectangle.height * 0.35 > 1 ? 14 : rectangle.height * 0.175;
|
|
9
|
+
const topBoxY = rectangle.y + rectangle.height * 0.175;
|
|
10
|
+
const bottomBoxY = rectangle.y + rectangle.height - rectangle.height * 0.175 - boxHeight;
|
|
11
|
+
return {
|
|
12
|
+
boxSize: {
|
|
13
|
+
width: boxWidth,
|
|
14
|
+
height: boxHeight
|
|
15
|
+
},
|
|
16
|
+
points: {
|
|
17
|
+
mainStart: [mainLineX, rectangle.y],
|
|
18
|
+
topBoxStart: [mainLineX, topBoxY],
|
|
19
|
+
topBoxEnd: [mainLineX, topBoxY + boxHeight],
|
|
20
|
+
bottomBoxStart: [mainLineX, bottomBoxY],
|
|
21
|
+
bottomBoxEnd: [mainLineX, bottomBoxY + boxHeight],
|
|
22
|
+
mainEnd: [mainLineX, rectangle.y + rectangle.height],
|
|
23
|
+
rightTop: [rectangle.x + rectangle.width, rectangle.y],
|
|
24
|
+
rightBottom: [rectangle.x + rectangle.width, rectangle.y + rectangle.height]
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
6
28
|
export const ComponentEngine = {
|
|
7
29
|
draw(board, rectangle, options) {
|
|
8
30
|
const rs = PlaitBoard.getRoughSVG(board);
|
|
9
|
-
const boxSize =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
M${
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
31
|
+
const { boxSize, points } = generateComponentPath(rectangle);
|
|
32
|
+
const pathData = [
|
|
33
|
+
// 主矩形轮廓
|
|
34
|
+
`M${points.mainStart[0]} ${points.mainStart[1]}`,
|
|
35
|
+
`H${points.rightTop[0]}`,
|
|
36
|
+
`V${points.rightBottom[1]}`,
|
|
37
|
+
`H${points.mainEnd[0]}`,
|
|
38
|
+
// 上方小矩形
|
|
39
|
+
`M${points.topBoxStart[0]} ${points.topBoxStart[1]}`,
|
|
40
|
+
`h${boxSize.width / 2} v${boxSize.height} h${-boxSize.width} v${-boxSize.height} h${boxSize.width / 2}`,
|
|
41
|
+
// 下方小矩形
|
|
42
|
+
`M${points.bottomBoxStart[0]} ${points.bottomBoxStart[1]}`,
|
|
43
|
+
`h${boxSize.width / 2} v${boxSize.height} h${-boxSize.width} v${-boxSize.height} h${boxSize.width / 2}`,
|
|
44
|
+
// 连接线
|
|
45
|
+
`M${points.mainStart[0]} ${points.mainStart[1]}`,
|
|
46
|
+
`V${points.topBoxStart[1]}`,
|
|
47
|
+
`M${points.topBoxEnd[0]} ${points.topBoxEnd[1]}`,
|
|
48
|
+
`V${points.bottomBoxStart[1]}`,
|
|
49
|
+
`M${points.bottomBoxEnd[0]} ${points.bottomBoxEnd[1]}`,
|
|
50
|
+
`V${points.mainEnd[1]}`
|
|
51
|
+
].join(' ');
|
|
52
|
+
const shape = rs.path(pathData, { ...options, fillStyle: 'solid' });
|
|
27
53
|
setStrokeLinecap(shape, 'round');
|
|
28
54
|
return shape;
|
|
29
55
|
},
|
|
56
|
+
getNearestPoint(rectangle, point) {
|
|
57
|
+
const { boxSize, points } = generateComponentPath(rectangle);
|
|
58
|
+
const segments = [
|
|
59
|
+
// 主矩形轮廓
|
|
60
|
+
[points.mainStart, [points.rightTop[0], points.mainStart[1]]],
|
|
61
|
+
[[points.rightTop[0], points.mainStart[1]], points.rightBottom],
|
|
62
|
+
[points.rightBottom, [points.mainEnd[0], points.rightBottom[1]]],
|
|
63
|
+
[[points.mainEnd[0], points.rightBottom[1]], points.mainStart],
|
|
64
|
+
// 上方小矩形
|
|
65
|
+
[points.topBoxStart, [points.topBoxStart[0] + boxSize.width / 2, points.topBoxStart[1]]],
|
|
66
|
+
[[points.topBoxStart[0] + boxSize.width / 2, points.topBoxStart[1]], [points.topBoxStart[0] + boxSize.width / 2, points.topBoxEnd[1]]],
|
|
67
|
+
[[points.topBoxStart[0] + boxSize.width / 2, points.topBoxEnd[1]], [points.topBoxStart[0] - boxSize.width / 2, points.topBoxEnd[1]]],
|
|
68
|
+
[[points.topBoxStart[0] - boxSize.width / 2, points.topBoxEnd[1]], [points.topBoxStart[0] - boxSize.width / 2, points.topBoxStart[1]]],
|
|
69
|
+
[[points.topBoxStart[0] - boxSize.width / 2, points.topBoxStart[1]], points.topBoxStart],
|
|
70
|
+
// 下方小矩形
|
|
71
|
+
[points.bottomBoxStart, [points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxStart[1]]],
|
|
72
|
+
[[points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxStart[1]], [points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxEnd[1]]],
|
|
73
|
+
[[points.bottomBoxStart[0] + boxSize.width / 2, points.bottomBoxEnd[1]], [points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxEnd[1]]],
|
|
74
|
+
[[points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxEnd[1]], [points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxStart[1]]],
|
|
75
|
+
[[points.bottomBoxStart[0] - boxSize.width / 2, points.bottomBoxStart[1]], points.bottomBoxStart],
|
|
76
|
+
// 连接线
|
|
77
|
+
[points.mainStart, points.topBoxStart],
|
|
78
|
+
[points.topBoxEnd, points.bottomBoxStart],
|
|
79
|
+
[points.bottomBoxEnd, points.mainEnd]
|
|
80
|
+
];
|
|
81
|
+
return getNearestPointBetweenPointAndDiscreteSegments(point, segments);
|
|
82
|
+
},
|
|
30
83
|
isInsidePoint(rectangle, point) {
|
|
31
84
|
const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
|
|
32
85
|
return RectangleClient.isHit(rectangle, rangeRectangle);
|
|
@@ -34,26 +87,18 @@ export const ComponentEngine = {
|
|
|
34
87
|
getCornerPoints(rectangle) {
|
|
35
88
|
return RectangleClient.getCornerPoints(rectangle);
|
|
36
89
|
},
|
|
37
|
-
getNearestPoint(rectangle, point) {
|
|
38
|
-
let nearestPoint = getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
|
|
39
|
-
if (nearestPoint[1] === rectangle.y + rectangle.height / 2) {
|
|
40
|
-
nearestPoint = getNearestPointBetweenPointAndSegments(point, [
|
|
41
|
-
[rectangle.x + 12, rectangle.y + rectangle.height * 0.175 + 14],
|
|
42
|
-
[rectangle.x + 12, rectangle.y + rectangle.height - rectangle.height * 0.175 - 14]
|
|
43
|
-
], false);
|
|
44
|
-
}
|
|
45
|
-
return nearestPoint;
|
|
46
|
-
},
|
|
47
90
|
getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
|
|
91
|
+
const { points } = generateComponentPath(rectangle);
|
|
48
92
|
const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
|
|
49
|
-
return getUnitVectorByPointAndPoint(
|
|
93
|
+
return getUnitVectorByPointAndPoint(points.mainStart, connectionPoint);
|
|
50
94
|
},
|
|
51
95
|
getConnectorPoints(rectangle) {
|
|
96
|
+
const { points } = generateComponentPath(rectangle);
|
|
52
97
|
return [
|
|
53
98
|
[rectangle.x + rectangle.width / 2, rectangle.y],
|
|
54
99
|
[rectangle.x + rectangle.width, rectangle.y + rectangle.height / 2],
|
|
55
100
|
[rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height],
|
|
56
|
-
[
|
|
101
|
+
[points.mainStart[0], rectangle.y + rectangle.height / 2]
|
|
57
102
|
];
|
|
58
103
|
},
|
|
59
104
|
getTextRectangle(element) {
|
|
@@ -69,4 +114,4 @@ export const ComponentEngine = {
|
|
|
69
114
|
};
|
|
70
115
|
}
|
|
71
116
|
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy91bWwvY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLHNDQUFzQyxFQUN0QyxnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFnQjtJQUN4QyxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUc7WUFDWixJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxHQUFHO1lBQ3ZELE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLO1NBQzlGLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNqQixJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDO2VBQ2hDLFNB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QUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVztZQUM3RSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakUsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBDb21wb25lbnRFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGJveFNpemUgPSB7XG4gICAgICAgICAgICB3aXRoOiByZWN0YW5nbGUud2lkdGggPiA3MCA/IDI0IDogcmVjdGFuZ2xlLndpZHRoICogMC4yLFxuICAgICAgICAgICAgaGVpZ2h0OiByZWN0YW5nbGUuaGVpZ2h0IC0gMjggLSByZWN0YW5nbGUuaGVpZ2h0ICogMC4zNSA+IDEgPyAxNCA6IHJlY3RhbmdsZS5oZWlnaHQgKiAwLjE3NVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzaGFwZSA9IHJzLnBhdGgoXG4gICAgICAgICAgICBgTSR7cmVjdGFuZ2xlLnggKyAxMn0gJHtyZWN0YW5nbGUueX0gXG4gICAgICAgICAgICB2JHtyZWN0YW5nbGUuaGVpZ2h0ICogMC4xNzV9IFxuICAgICAgICAgICAgaCR7Ym94U2l6ZS53aXRoIC8gMn0gdiR7Ym94U2l6ZS5oZWlnaHR9IGgkey1ib3hTaXplLndpdGh9IHYkey1ib3hTaXplLmhlaWdodH0gaCR7Ym94U2l6ZS53aXRoIC8gMn1cblxuICAgICAgICAgICAgTSR7cmVjdGFuZ2xlLnggKyAxMn0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgKiAwLjE3NSArIGJveFNpemUuaGVpZ2h0fSBcblxuICAgICAgICAgICAgdiR7cmVjdGFuZ2xlLmhlaWdodCAtIHJlY3RhbmdsZS5oZWlnaHQgKiAwLjM1IC0gYm94U2l6ZS5oZWlnaHQgKiAyfVxuICAgICAgICAgICAgaCR7Ym94U2l6ZS53aXRoIC8gMn0gdiR7Ym94U2l6ZS5oZWlnaHR9IGgkey1ib3hTaXplLndpdGh9IHYkey1ib3hTaXplLmhlaWdodH0gaCR7Ym94U2l6ZS53aXRoIC8gMn1cbiAgICAgICAgICAgIE0ke3JlY3RhbmdsZS54ICsgMTJ9ICR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC0gcmVjdGFuZ2xlLmhlaWdodCAqIDAuMTc1fSBcbiAgICAgICAgICAgIFYke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodH1cbiAgICAgICAgICAgIEgke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRofVxuICAgICAgICAgICAgdiR7LXJlY3RhbmdsZS5oZWlnaHR9XG4gICAgICAgICAgICBoJHstKHJlY3RhbmdsZS53aWR0aCAtIDEyKX1cbiAgICAgICAgICAgICBgLFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfVxuICAgICAgICApO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcblxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBsZXQgbmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKSk7XG4gICAgICAgIGlmIChuZWFyZXN0UG9pbnRbMV0gPT09IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDIpIHtcbiAgICAgICAgICAgIG5lYXJlc3RQb2ludCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKFxuICAgICAgICAgICAgICAgIHBvaW50LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgMTIsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAqIDAuMTc1ICsgMTRdLFxuICAgICAgICAgICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyAxMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC0gcmVjdGFuZ2xlLmhlaWdodCAqIDAuMTc1IC0gMTRdXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICAgIH0sXG5cbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIHBvaW50T2ZSZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIDEyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLSByZWN0YW5nbGUuaGVpZ2h0ICogMC4xNzUgLSAxNF0sXG4gICAgICAgICAgICBjb25uZWN0aW9uUG9pbnRcbiAgICAgICAgKTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLnldLFxuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDIsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyAxMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl1cbiAgICAgICAgXSBhcyBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdO1xuICAgIH0sXG4gICAgZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gMjQgLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyAyNCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy91bWwvY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLDhDQUE4QyxFQUM5QyxnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQW1CN0QsU0FBUyxxQkFBcUIsQ0FBQyxTQUEwQjtJQUNyRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuRSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEcsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2RCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDO0lBRXpGLE9BQU87UUFDSCxPQUFPLEVBQUU7WUFDTCxL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QUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFFdEYsUUFBUTtZQUNSLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9GLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlJLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVJLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlJLENBQUMsQ0FB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Q0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQ2pFLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmREaXNjcmV0ZVNlZ21lbnRzLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmludGVyZmFjZSBDb21wb25lbnRQYXRoRGF0YSB7XG4gICAgYm94U2l6ZToge1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9O1xuICAgIHBvaW50czoge1xuICAgICAgICBtYWluU3RhcnQ6IFBvaW50O1xuICAgICAgICB0b3BCb3hTdGFydDogUG9pbnQ7XG4gICAgICAgIHRvcEJveEVuZDogUG9pbnQ7XG4gICAgICAgIGJvdHRvbUJveFN0YXJ0OiBQb2ludDtcbiAgICAgICAgYm90dG9tQm94RW5kOiBQb2ludDtcbiAgICAgICAgbWFpbkVuZDogUG9pbnQ7XG4gICAgICAgIHJpZ2h0VG9wOiBQb2ludDtcbiAgICAgICAgcmlnaHRCb3R0b206IFBvaW50O1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ29tcG9uZW50UGF0aChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IENvbXBvbmVudFBhdGhEYXRhIHtcbiAgICBjb25zdCBtYWluTGluZVggPSByZWN0YW5nbGUueCArIDEyO1xuICAgIGNvbnN0IGJveFdpZHRoID0gcmVjdGFuZ2xlLndpZHRoID4gNzAgPyAyNCA6IHJlY3RhbmdsZS53aWR0aCAqIDAuMjtcbiAgICBjb25zdCBib3hIZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0IC0gMjggLSByZWN0YW5nbGUuaGVpZ2h0ICogMC4zNSA+IDEgPyAxNCA6IHJlY3RhbmdsZS5oZWlnaHQgKiAwLjE3NTtcbiAgICBjb25zdCB0b3BCb3hZID0gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0ICogMC4xNzU7XG4gICAgY29uc3QgYm90dG9tQm94WSA9IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAtIHJlY3RhbmdsZS5oZWlnaHQgKiAwLjE3NSAtIGJveEhlaWdodDtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgICBib3hTaXplOiB7XG4gICAgICAgICAgICB3aWR0aDogYm94V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGJveEhlaWdodFxuICAgICAgICB9LFxuICAgICAgICBwb2ludHM6IHtcbiAgICAgICAgICAgIG1haW5TdGFydDogW21haW5MaW5lWCwgcmVjdGFuZ2xlLnldLFxuICAgICAgICAgICAgdG9wQm94U3RhcnQ6IFttYWluTGluZVgsIHRvcEJveFldLFxuICAgICAgICAgICAgdG9wQm94RW5kOiBbbWFpbkxpbmVYLCB0b3BCb3hZICsgYm94SGVpZ2h0XSxcbiAgICAgICAgICAgIGJvdHRvbUJveFN0YXJ0OiBbbWFpbkxpbmVYLCBib3R0b21Cb3hZXSxcbiAgICAgICAgICAgIGJvdHRvbUJveEVuZDogW21haW5MaW5lWCwgYm90dG9tQm94WSArIGJveEhlaWdodF0sXG4gICAgICAgICAgICBtYWluRW5kOiBbbWFpbkxpbmVYLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgcmlnaHRUb3A6IFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnldLFxuICAgICAgICAgICAgcmlnaHRCb3R0b206IFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XVxuICAgICAgICB9XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IENvbXBvbmVudEVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3QgeyBib3hTaXplLCBwb2ludHMgfSA9IGdlbmVyYXRlQ29tcG9uZW50UGF0aChyZWN0YW5nbGUpO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgcGF0aERhdGEgPSBbXG4gICAgICAgICAgICAvLyDkuLvnn6nlvaLova7lu5NcbiAgICAgICAgICAgIGBNJHtwb2ludHMubWFpblN0YXJ0WzBdfSAke3BvaW50cy5tYWluU3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBIJHtwb2ludHMucmlnaHRUb3BbMF19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMucmlnaHRCb3R0b21bMV19YCxcbiAgICAgICAgICAgIGBIJHtwb2ludHMubWFpbkVuZFswXX1gLFxuXG4gICAgICAgICAgICAvLyDkuIrmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIGBNJHtwb2ludHMudG9wQm94U3RhcnRbMF19ICR7cG9pbnRzLnRvcEJveFN0YXJ0WzFdfWAsXG4gICAgICAgICAgICBgaCR7Ym94U2l6ZS53aWR0aCAvIDJ9IHYke2JveFNpemUuaGVpZ2h0fSBoJHstYm94U2l6ZS53aWR0aH0gdiR7LWJveFNpemUuaGVpZ2h0fSBoJHtib3hTaXplLndpZHRoIC8gMn1gLFxuXG4gICAgICAgICAgICAvLyDkuIvmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIGBNJHtwb2ludHMuYm90dG9tQm94U3RhcnRbMF19ICR7cG9pbnRzLmJvdHRvbUJveFN0YXJ0WzFdfWAsXG4gICAgICAgICAgICBgaCR7Ym94U2l6ZS53aWR0aCAvIDJ9IHYke2JveFNpemUuaGVpZ2h0fSBoJHstYm94U2l6ZS53aWR0aH0gdiR7LWJveFNpemUuaGVpZ2h0fSBoJHtib3hTaXplLndpZHRoIC8gMn1gLFxuXG4gICAgICAgICAgICAvLyDov57mjqXnur9cbiAgICAgICAgICAgIGBNJHtwb2ludHMubWFpblN0YXJ0WzBdfSAke3BvaW50cy5tYWluU3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMudG9wQm94U3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBNJHtwb2ludHMudG9wQm94RW5kWzBdfSAke3BvaW50cy50b3BCb3hFbmRbMV19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMuYm90dG9tQm94U3RhcnRbMV19YCxcbiAgICAgICAgICAgIGBNJHtwb2ludHMuYm90dG9tQm94RW5kWzBdfSAke3BvaW50cy5ib3R0b21Cb3hFbmRbMV19YCxcbiAgICAgICAgICAgIGBWJHtwb2ludHMubWFpbkVuZFsxXX1gXG4gICAgICAgIF0uam9pbignICcpO1xuXG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChwYXRoRGF0YSwgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcblxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHsgYm94U2l6ZSwgcG9pbnRzIH0gPSBnZW5lcmF0ZUNvbXBvbmVudFBhdGgocmVjdGFuZ2xlKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHNlZ21lbnRzOiBbUG9pbnQsIFBvaW50XVtdID0gW1xuICAgICAgICAgICAgLy8g5Li755+p5b2i6L2u5buTXG4gICAgICAgICAgICBbcG9pbnRzLm1haW5TdGFydCwgW3BvaW50cy5yaWdodFRvcFswXSwgcG9pbnRzLm1haW5TdGFydFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMucmlnaHRUb3BbMF0sIHBvaW50cy5tYWluU3RhcnRbMV1dLCBwb2ludHMucmlnaHRCb3R0b21dLFxuICAgICAgICAgICAgW3BvaW50cy5yaWdodEJvdHRvbSwgW3BvaW50cy5tYWluRW5kWzBdLCBwb2ludHMucmlnaHRCb3R0b21bMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLm1haW5FbmRbMF0sIHBvaW50cy5yaWdodEJvdHRvbVsxXV0sIHBvaW50cy5tYWluU3RhcnRdLFxuXG4gICAgICAgICAgICAvLyDkuIrmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIFtwb2ludHMudG9wQm94U3RhcnQsIFtwb2ludHMudG9wQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hTdGFydFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMudG9wQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hTdGFydFsxXV0sIFtwb2ludHMudG9wQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hFbmRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLnRvcEJveFN0YXJ0WzBdICsgYm94U2l6ZS53aWR0aC8yLCBwb2ludHMudG9wQm94RW5kWzFdXSwgW3BvaW50cy50b3BCb3hTdGFydFswXSAtIGJveFNpemUud2lkdGgvMiwgcG9pbnRzLnRvcEJveEVuZFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMudG9wQm94U3RhcnRbMF0gLSBib3hTaXplLndpZHRoLzIsIHBvaW50cy50b3BCb3hFbmRbMV1dLCBbcG9pbnRzLnRvcEJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMudG9wQm94U3RhcnRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLnRvcEJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMudG9wQm94U3RhcnRbMV1dLCBwb2ludHMudG9wQm94U3RhcnRdLFxuXG4gICAgICAgICAgICAvLyDkuIvmlrnlsI/nn6nlvaJcbiAgICAgICAgICAgIFtwb2ludHMuYm90dG9tQm94U3RhcnQsIFtwb2ludHMuYm90dG9tQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hTdGFydFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMuYm90dG9tQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hTdGFydFsxXV0sIFtwb2ludHMuYm90dG9tQm94U3RhcnRbMF0gKyBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hFbmRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLmJvdHRvbUJveFN0YXJ0WzBdICsgYm94U2l6ZS53aWR0aC8yLCBwb2ludHMuYm90dG9tQm94RW5kWzFdXSwgW3BvaW50cy5ib3R0b21Cb3hTdGFydFswXSAtIGJveFNpemUud2lkdGgvMiwgcG9pbnRzLmJvdHRvbUJveEVuZFsxXV1dLFxuICAgICAgICAgICAgW1twb2ludHMuYm90dG9tQm94U3RhcnRbMF0gLSBib3hTaXplLndpZHRoLzIsIHBvaW50cy5ib3R0b21Cb3hFbmRbMV1dLCBbcG9pbnRzLmJvdHRvbUJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMuYm90dG9tQm94U3RhcnRbMV1dXSxcbiAgICAgICAgICAgIFtbcG9pbnRzLmJvdHRvbUJveFN0YXJ0WzBdIC0gYm94U2l6ZS53aWR0aC8yLCBwb2ludHMuYm90dG9tQm94U3RhcnRbMV1dLCBwb2ludHMuYm90dG9tQm94U3RhcnRdLFxuXG4gICAgICAgICAgICAvLyDov57mjqXnur9cbiAgICAgICAgICAgIFtwb2ludHMubWFpblN0YXJ0LCBwb2ludHMudG9wQm94U3RhcnRdLFxuICAgICAgICAgICAgW3BvaW50cy50b3BCb3hFbmQsIHBvaW50cy5ib3R0b21Cb3hTdGFydF0sXG4gICAgICAgICAgICBbcG9pbnRzLmJvdHRvbUJveEVuZCwgcG9pbnRzLm1haW5FbmRdXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZERpc2NyZXRlU2VnbWVudHMocG9pbnQsIHNlZ21lbnRzKTtcbiAgICB9LFxuXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcblxuICAgIGdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSkge1xuICAgICAgICBjb25zdCB7IHBvaW50cyB9ID0gZ2VuZXJhdGVDb21wb25lbnRQYXRoKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Qb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQocG9pbnRzLm1haW5TdGFydCwgY29ubmVjdGlvblBvaW50KTtcbiAgICB9LFxuXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIGNvbnN0IHsgcG9pbnRzIH0gPSBnZW5lcmF0ZUNvbXBvbmVudFBhdGgocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDIsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgW3BvaW50cy5tYWluU3RhcnRbMF0sIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdXG4gICAgICAgIF0gYXMgW1BvaW50LCBQb2ludCwgUG9pbnQsIFBvaW50XTtcbiAgICB9LFxuXG4gICAgZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gMjQgLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyAyNCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
|