@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,17 +1,7 @@
|
|
|
1
|
-
import { Point, RectangleClient } from '@plait/core';
|
|
1
|
+
import { Point, RectangleClient, SVGArcCommand } from '@plait/core';
|
|
2
2
|
import { ShapeEngine } from '../../interfaces';
|
|
3
|
-
interface CloudArcPoint {
|
|
4
|
-
rx: number;
|
|
5
|
-
ry: number;
|
|
6
|
-
xAxisRotation: number;
|
|
7
|
-
largeArcFlag: 0 | 1;
|
|
8
|
-
sweepFlag: 0 | 1;
|
|
9
|
-
endX: number;
|
|
10
|
-
endY: number;
|
|
11
|
-
}
|
|
12
3
|
export declare function generateCloudPath(rectangle: RectangleClient): {
|
|
13
4
|
startPoint: Point;
|
|
14
|
-
|
|
5
|
+
arcCommands: SVGArcCommand[];
|
|
15
6
|
};
|
|
16
7
|
export declare const CloudEngine: ShapeEngine;
|
|
17
|
-
export {};
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
import { Point, RectangleClient } from '@plait/core';
|
|
2
1
|
import { ShapeEngine } from '../../interfaces';
|
|
3
|
-
export declare const getStartPoint: (rectangle: RectangleClient) => Point;
|
|
4
|
-
export declare const getEndPoint: (rectangle: RectangleClient) => Point;
|
|
5
|
-
export declare const arcPercentage: number;
|
|
6
|
-
export declare const getArcCenter: (rectangle: RectangleClient) => Point;
|
|
7
2
|
export declare const ProvidedInterfaceEngine: ShapeEngine;
|
|
@@ -9,7 +9,7 @@ export function generateCloudPath(rectangle) {
|
|
|
9
9
|
const xRadius = divisionWidth / 8.5;
|
|
10
10
|
const yRadius = divisionHeight / 20;
|
|
11
11
|
const startPoint = [rectangle.x + divisionWidth, rectangle.y + divisionHeight];
|
|
12
|
-
const
|
|
12
|
+
const arcCommands = [
|
|
13
13
|
{
|
|
14
14
|
rx: xRadius,
|
|
15
15
|
ry: yRadius * 1.2,
|
|
@@ -83,15 +83,15 @@ export function generateCloudPath(rectangle) {
|
|
|
83
83
|
endY: rectangle.y + divisionHeight
|
|
84
84
|
}
|
|
85
85
|
];
|
|
86
|
-
return { startPoint,
|
|
86
|
+
return { startPoint, arcCommands };
|
|
87
87
|
}
|
|
88
88
|
export const CloudEngine = {
|
|
89
89
|
draw(board, rectangle, options) {
|
|
90
90
|
const rs = PlaitBoard.getRoughSVG(board);
|
|
91
|
-
const { startPoint,
|
|
91
|
+
const { startPoint, arcCommands } = generateCloudPath(rectangle);
|
|
92
92
|
const pathData = `M ${startPoint[0]} ${startPoint[1]} ` +
|
|
93
|
-
|
|
94
|
-
.map((
|
|
93
|
+
arcCommands
|
|
94
|
+
.map((command) => `A ${command.rx} ${command.ry} ${command.xAxisRotation} ${command.largeArcFlag} ${command.sweepFlag} ${command.endX} ${command.endY}`)
|
|
95
95
|
.join('\n') +
|
|
96
96
|
' Z';
|
|
97
97
|
const svgElement = rs.path(pathData, { ...options, fillStyle: 'solid' });
|
|
@@ -106,19 +106,18 @@ export const CloudEngine = {
|
|
|
106
106
|
return RectangleClient.getCornerPoints(rectangle);
|
|
107
107
|
},
|
|
108
108
|
getNearestPoint(rectangle, point) {
|
|
109
|
-
const { startPoint,
|
|
109
|
+
const { startPoint, arcCommands } = generateCloudPath(rectangle);
|
|
110
110
|
let minDistance = Infinity;
|
|
111
111
|
let nearestPoint = point;
|
|
112
|
-
// 检查每个弧段
|
|
113
112
|
let currentStart = startPoint;
|
|
114
|
-
for (const
|
|
115
|
-
const arcNearestPoint = getNearestPointBetweenPointAndArc(point, currentStart,
|
|
113
|
+
for (const arcCommand of arcCommands) {
|
|
114
|
+
const arcNearestPoint = getNearestPointBetweenPointAndArc(point, currentStart, arcCommand);
|
|
116
115
|
const distance = distanceBetweenPointAndPoint(point[0], point[1], arcNearestPoint[0], arcNearestPoint[1]);
|
|
117
116
|
if (distance < minDistance) {
|
|
118
117
|
minDistance = distance;
|
|
119
118
|
nearestPoint = arcNearestPoint;
|
|
120
119
|
}
|
|
121
|
-
currentStart = [
|
|
120
|
+
currentStart = [arcCommand.endX, arcCommand.endY];
|
|
122
121
|
}
|
|
123
122
|
return nearestPoint;
|
|
124
123
|
},
|
|
@@ -144,4 +143,4 @@ export const CloudEngine = {
|
|
|
144
143
|
};
|
|
145
144
|
}
|
|
146
145
|
};
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL2Jhc2ljLXNoYXBlcy9jbG91ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEyQixlQUFlLEVBQUUsNEJBQTRCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkksT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVloRSxNQUFNLFVBQVUsaUJBQWlCLENBQUMsU0FBMEI7SUFDeEQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDMUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDOUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUNwQyxNQUFNLE9BQU8sR0FBRyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBRXBDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQVUsQ0FBQztJQUV4RixNQUFNLElBQUksR0FBb0I7UUFDMUI7WUFDSSxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxPQUFPLEdBQUcsR0FBRztZQUNqQixhQUFhLEVBQUUsQ0FBQztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxHQUFHLENBQUM7WUFDckMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFHLENBQUM7U0FDekM7UUFDRDtZQUNJLEVBQUUsRUFBRSxPQUFPO1lBQ1gsRUFBRSxFQUFFLE9BQU87WUFDWCxhQUFhLEVBQUUsQ0FBQztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxHQUFHLEdBQUc7WUFDdkMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFHLEdBQUc7U0FDM0M7UUFDRDtZQUNJLEVBQUUsRUFBRSxPQUFPO1lBQ1gsRUFBRSxFQUFFLE9BQU87WUFDWCxhQUFhLEVBQUUsQ0FBQztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxHQUFHLEdBQUc7WUFDdkMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsY0FBYztTQUNyQztRQUNEO1lBQ0ksRUFBRSxFQUFFLE9BQU87WUFDWCxFQUFFLEVBQUUsT0FBTyxHQUFHLEdBQUc7WUFDakIsYUFBYSxFQUFFLENBQUM7WUFDaEIsWUFBWSxFQUFFLENBQUM7WUFDZixTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLGFBQWEsR0FBRyxDQUFDO1lBQ3JDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBRyxHQUFHO1NBQzNDO1FBQ0Q7WUFDSSxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxPQUFPLEdBQUcsR0FBRztZQUNqQixhQUFhLEVBQUUsQ0FBQztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxHQUFHLENBQUM7WUFDckMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFHLEdBQUc7U0FDM0M7UUFDRDtZQUNJLEVBQUUsRUFBRSxPQUFPO1lBQ1gsRUFBRSxFQUFFLE9BQU8sR0FBRyxHQUFHO1lBQ2pCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLENBQUM7WUFDWixJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxhQUFhLEdBQUcsR0FBRztZQUN2QyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsR0FBRztTQUMzQztRQUNEO1lBQ0ksRUFBRSxFQUFFLE9BQU87WUFDWCxFQUFFLEVBQUUsT0FBTztZQUNYLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLENBQUM7WUFDWixJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxhQUFhO1lBQ2pDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBRyxHQUFHO1NBQzNDO1FBQ0Q7WUFDSSxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSTtZQUNsQixhQUFhLEVBQUUsQ0FBQztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYTtZQUNqQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxjQUFjO1NBQ3JDO0tBQ0osQ0FBQztJQUVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBZ0I7SUFDcEMsSUFBSSxDQUFDLEtBQWlCLEVBQUUsU0FBMEIsRUFBRSxPQUFnQjtRQUNoRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUQsTUFBTSxRQUFRLEdBQ1YsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ3RDLElBQUk7aUJBQ0MsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDdkgsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNmLElBQUksQ0FBQztRQUVULE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekUsb0JBQW9CLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxhQUFhLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ2xELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQjtRQUN0QyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDM0IsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXpCLFNBQVM7UUFDVCxJQUFJLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLGVBQWUsR0FBRyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BGLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFHLElBQUksUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUN6QixXQUFXLEdBQUcsUUFBUSxDQUFDO2dCQUN2QixZQUFZLEdBQUcsZUFBZSxDQUFDO1lBQ25DLENBQUM7WUFFRCxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNELHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sK0JBQStCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsT0FBc0I7UUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFXLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sS0FBSyxHQUFHLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDaEMsT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxHQUFHLFdBQVcsR0FBRyxDQUFDO1lBQzFGLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQ3pHLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBQb2ludE9mUmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQsIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsIHNldFBhdGhTdHJva2VMaW5lY2FwIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi8uLi91dGlscy9wb2x5Z29uJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5pbnRlcmZhY2UgQ2xvdWRBcmNQb2ludCB7XG4gICAgcng6IG51bWJlcjtcbiAgICByeTogbnVtYmVyO1xuICAgIHhBeGlzUm90YXRpb246IG51bWJlcjtcbiAgICBsYXJnZUFyY0ZsYWc6IDAgfCAxO1xuICAgIHN3ZWVwRmxhZzogMCB8IDE7XG4gICAgZW5kWDogbnVtYmVyO1xuICAgIGVuZFk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ2xvdWRQYXRoKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KTogeyBzdGFydFBvaW50OiBQb2ludDsgYXJjczogQ2xvdWRBcmNQb2ludFtdIH0ge1xuICAgIGNvbnN0IGRpdmlzaW9uV2lkdGggPSByZWN0YW5nbGUud2lkdGggLyA3O1xuICAgIGNvbnN0IGRpdmlzaW9uSGVpZ2h0ID0gcmVjdGFuZ2xlLmhlaWdodCAvIDMuMjtcbiAgICBjb25zdCB4UmFkaXVzID0gZGl2aXNpb25XaWR0aCAvIDguNTtcbiAgICBjb25zdCB5UmFkaXVzID0gZGl2aXNpb25IZWlnaHQgLyAyMDtcblxuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBbcmVjdGFuZ2xlLnggKyBkaXZpc2lvbldpZHRoLCByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0XSBhcyBQb2ludDtcblxuICAgIGNvbnN0IGFyY3M6IENsb3VkQXJjUG9pbnRbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcng6IHhSYWRpdXMsXG4gICAgICAgICAgICByeTogeVJhZGl1cyAqIDEuMixcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGggKiAyLFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnkgKyBkaXZpc2lvbkhlaWdodCAvIDJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcng6IHhSYWRpdXMsXG4gICAgICAgICAgICByeTogeVJhZGl1cyxcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGggKiA0LjIsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0IC8gMi4yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJ4OiB4UmFkaXVzLFxuICAgICAgICAgICAgcnk6IHlSYWRpdXMsXG4gICAgICAgICAgICB4QXhpc1JvdGF0aW9uOiAwLFxuICAgICAgICAgICAgbGFyZ2VBcmNGbGFnOiAxLFxuICAgICAgICAgICAgc3dlZXBGbGFnOiAxLFxuICAgICAgICAgICAgZW5kWDogcmVjdGFuZ2xlLnggKyBkaXZpc2lvbldpZHRoICogNS44LFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnkgKyBkaXZpc2lvbkhlaWdodFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICByeDogeFJhZGl1cyxcbiAgICAgICAgICAgIHJ5OiB5UmFkaXVzICogMS4zLFxuICAgICAgICAgICAgeEF4aXNSb3RhdGlvbjogMCxcbiAgICAgICAgICAgIGxhcmdlQXJjRmxhZzogMSxcbiAgICAgICAgICAgIHN3ZWVwRmxhZzogMSxcbiAgICAgICAgICAgIGVuZFg6IHJlY3RhbmdsZS54ICsgZGl2aXNpb25XaWR0aCAqIDYsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0ICogMi4yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJ4OiB4UmFkaXVzLFxuICAgICAgICAgICAgcnk6IHlSYWRpdXMgKiAxLjIsXG4gICAgICAgICAgICB4QXhpc1JvdGF0aW9uOiAwLFxuICAgICAgICAgICAgbGFyZ2VBcmNGbGFnOiAxLFxuICAgICAgICAgICAgc3dlZXBGbGFnOiAxLFxuICAgICAgICAgICAgZW5kWDogcmVjdGFuZ2xlLnggKyBkaXZpc2lvbldpZHRoICogNSxcbiAgICAgICAgICAgIGVuZFk6IHJlY3RhbmdsZS55ICsgZGl2aXNpb25IZWlnaHQgKiAyLjhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcng6IHhSYWRpdXMsXG4gICAgICAgICAgICByeTogeVJhZGl1cyAvIDEuMixcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGggKiAyLjgsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0ICogMi44XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJ4OiB4UmFkaXVzLFxuICAgICAgICAgICAgcnk6IHlSYWRpdXMsXG4gICAgICAgICAgICB4QXhpc1JvdGF0aW9uOiAwLFxuICAgICAgICAgICAgbGFyZ2VBcmNGbGFnOiAxLFxuICAgICAgICAgICAgc3dlZXBGbGFnOiAxLFxuICAgICAgICAgICAgZW5kWDogcmVjdGFuZ2xlLnggKyBkaXZpc2lvbldpZHRoLFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnkgKyBkaXZpc2lvbkhlaWdodCAqIDIuMlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICByeDogeFJhZGl1cyxcbiAgICAgICAgICAgIHJ5OiB5UmFkaXVzICogMS40MixcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGgsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0XG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHsgc3RhcnRQb2ludCwgYXJjcyB9O1xufVxuXG5leHBvcnQgY29uc3QgQ2xvdWRFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IHsgc3RhcnRQb2ludCwgYXJjcyB9ID0gZ2VuZXJhdGVDbG91ZFBhdGgocmVjdGFuZ2xlKTtcblxuICAgICAgICBjb25zdCBwYXRoRGF0YSA9XG4gICAgICAgICAgICBgTSAke3N0YXJ0UG9pbnRbMF19ICR7c3RhcnRQb2ludFsxXX0gYCArXG4gICAgICAgICAgICBhcmNzXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJjKSA9PiBgQSAke2FyYy5yeH0gJHthcmMucnl9ICR7YXJjLnhBeGlzUm90YXRpb259ICR7YXJjLmxhcmdlQXJjRmxhZ30gJHthcmMuc3dlZXBGbGFnfSAke2FyYy5lbmRYfSAke2FyYy5lbmRZfWApXG4gICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpICtcbiAgICAgICAgICAgICcgWic7XG5cbiAgICAgICAgY29uc3Qgc3ZnRWxlbWVudCA9IHJzLnBhdGgocGF0aERhdGEsIHsgLi4ub3B0aW9ucywgZmlsbFN0eWxlOiAnc29saWQnIH0pO1xuICAgICAgICBzZXRQYXRoU3Ryb2tlTGluZWNhcChzdmdFbGVtZW50LCAncm91bmQnKTtcbiAgICAgICAgcmV0dXJuIHN2Z0VsZW1lbnQ7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCB7IHN0YXJ0UG9pbnQsIGFyY3MgfSA9IGdlbmVyYXRlQ2xvdWRQYXRoKHJlY3RhbmdsZSk7XG4gICAgICAgIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICAgICAgICBsZXQgbmVhcmVzdFBvaW50ID0gcG9pbnQ7XG5cbiAgICAgICAgLy8g5qOA5p+l5q+P5Liq5byn5q61XG4gICAgICAgIGxldCBjdXJyZW50U3RhcnQgPSBzdGFydFBvaW50O1xuICAgICAgICBmb3IgKGNvbnN0IGFyYyBvZiBhcmNzKSB7XG4gICAgICAgICAgICBjb25zdCBhcmNOZWFyZXN0UG9pbnQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRBcmMocG9pbnQsIGN1cnJlbnRTdGFydCwgYXJjKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChwb2ludFswXSwgcG9pbnRbMV0sIGFyY05lYXJlc3RQb2ludFswXSwgYXJjTmVhcmVzdFBvaW50WzFdKTtcblxuICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICAgICAgICAgIG5lYXJlc3RQb2ludCA9IGFyY05lYXJlc3RQb2ludDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3VycmVudFN0YXJ0ID0gW2FyYy5lbmRYLCBhcmMuZW5kWV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICAgIH0sXG4gICAgZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKTogW1BvaW50LCBQb2ludF0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29ybmVycyA9IENsb3VkRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQoY29ybmVycywgcG9pbnQpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0VGV4dFJlY3RhbmdsZShlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgb3JpZ2luV2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gb3JpZ2luV2lkdGggLyAxLjU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoICsgb3JpZ2luV2lkdGggLyA2LFxuICAgICAgICAgICAgeTogZWxlbWVudFJlY3RhbmdsZS55ICsgZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQgLyA2ICsgKChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAqIDQpIC8gNiAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL2Jhc2ljLXNoYXBlcy9jbG91ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEyQixlQUFlLEVBQWlCLDRCQUE0QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RKLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHaEUsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFNBQTBCO0lBQ3hELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQzlDLE1BQU0sT0FBTyxHQUFHLGFBQWEsR0FBRyxHQUFHLENBQUM7SUFDcEMsTUFBTSxPQUFPLEdBQUcsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUVwQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFVLENBQUM7SUFFeEYsTUFBTSxXQUFXLEdBQW9CO1FBQ2pDO1lBQ0ksRUFBRSxFQUFFLE9BQU87WUFDWCxFQUFFLEVBQUUsT0FBTyxHQUFHLEdBQUc7WUFDakIsYUFBYSxFQUFFLENBQUM7WUFDaEIsWUFBWSxFQUFFLENBQUM7WUFDZixTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLGFBQWEsR0FBRyxDQUFDO1lB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O1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFXLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sS0FBSyxHQUFHLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDaEMsT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxHQUFHLFdBQVcsR0FBRyxDQUFDO1lBQzFGLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQ3pHLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBQb2ludE9mUmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQsIFNWR0FyY0NvbW1hbmQsIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsIHNldFBhdGhTdHJva2VMaW5lY2FwIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi8uLi91dGlscy9wb2x5Z29uJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNsb3VkUGF0aChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IHsgc3RhcnRQb2ludDogUG9pbnQ7IGFyY0NvbW1hbmRzOiBTVkdBcmNDb21tYW5kW10gfSB7XG4gICAgY29uc3QgZGl2aXNpb25XaWR0aCA9IHJlY3RhbmdsZS53aWR0aCAvIDc7XG4gICAgY29uc3QgZGl2aXNpb25IZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0IC8gMy4yO1xuICAgIGNvbnN0IHhSYWRpdXMgPSBkaXZpc2lvbldpZHRoIC8gOC41O1xuICAgIGNvbnN0IHlSYWRpdXMgPSBkaXZpc2lvbkhlaWdodCAvIDIwO1xuXG4gICAgY29uc3Qgc3RhcnRQb2ludCA9IFtyZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGgsIHJlY3RhbmdsZS55ICsgZGl2aXNpb25IZWlnaHRdIGFzIFBvaW50O1xuXG4gICAgY29uc3QgYXJjQ29tbWFuZHM6IFNWR0FyY0NvbW1hbmRbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcng6IHhSYWRpdXMsXG4gICAgICAgICAgICByeTogeVJhZGl1cyAqIDEuMixcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGggKiAyLFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnkgKyBkaXZpc2lvbkhlaWdodCAvIDJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcng6IHhSYWRpdXMsXG4gICAgICAgICAgICByeTogeVJhZGl1cyxcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGggKiA0LjIsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0IC8gMi4yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJ4OiB4UmFkaXVzLFxuICAgICAgICAgICAgcnk6IHlSYWRpdXMsXG4gICAgICAgICAgICB4QXhpc1JvdGF0aW9uOiAwLFxuICAgICAgICAgICAgbGFyZ2VBcmNGbGFnOiAxLFxuICAgICAgICAgICAgc3dlZXBGbGFnOiAxLFxuICAgICAgICAgICAgZW5kWDogcmVjdGFuZ2xlLnggKyBkaXZpc2lvbldpZHRoICogNS44LFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnkgKyBkaXZpc2lvbkhlaWdodFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICByeDogeFJhZGl1cyxcbiAgICAgICAgICAgIHJ5OiB5UmFkaXVzICogMS4zLFxuICAgICAgICAgICAgeEF4aXNSb3RhdGlvbjogMCxcbiAgICAgICAgICAgIGxhcmdlQXJjRmxhZzogMSxcbiAgICAgICAgICAgIHN3ZWVwRmxhZzogMSxcbiAgICAgICAgICAgIGVuZFg6IHJlY3RhbmdsZS54ICsgZGl2aXNpb25XaWR0aCAqIDYsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0ICogMi4yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJ4OiB4UmFkaXVzLFxuICAgICAgICAgICAgcnk6IHlSYWRpdXMgKiAxLjIsXG4gICAgICAgICAgICB4QXhpc1JvdGF0aW9uOiAwLFxuICAgICAgICAgICAgbGFyZ2VBcmNGbGFnOiAxLFxuICAgICAgICAgICAgc3dlZXBGbGFnOiAxLFxuICAgICAgICAgICAgZW5kWDogcmVjdGFuZ2xlLnggKyBkaXZpc2lvbldpZHRoICogNSxcbiAgICAgICAgICAgIGVuZFk6IHJlY3RhbmdsZS55ICsgZGl2aXNpb25IZWlnaHQgKiAyLjhcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcng6IHhSYWRpdXMsXG4gICAgICAgICAgICByeTogeVJhZGl1cyAvIDEuMixcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGggKiAyLjgsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0ICogMi44XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJ4OiB4UmFkaXVzLFxuICAgICAgICAgICAgcnk6IHlSYWRpdXMsXG4gICAgICAgICAgICB4QXhpc1JvdGF0aW9uOiAwLFxuICAgICAgICAgICAgbGFyZ2VBcmNGbGFnOiAxLFxuICAgICAgICAgICAgc3dlZXBGbGFnOiAxLFxuICAgICAgICAgICAgZW5kWDogcmVjdGFuZ2xlLnggKyBkaXZpc2lvbldpZHRoLFxuICAgICAgICAgICAgZW5kWTogcmVjdGFuZ2xlLnkgKyBkaXZpc2lvbkhlaWdodCAqIDIuMlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICByeDogeFJhZGl1cyxcbiAgICAgICAgICAgIHJ5OiB5UmFkaXVzICogMS40MixcbiAgICAgICAgICAgIHhBeGlzUm90YXRpb246IDAsXG4gICAgICAgICAgICBsYXJnZUFyY0ZsYWc6IDEsXG4gICAgICAgICAgICBzd2VlcEZsYWc6IDEsXG4gICAgICAgICAgICBlbmRYOiByZWN0YW5nbGUueCArIGRpdmlzaW9uV2lkdGgsXG4gICAgICAgICAgICBlbmRZOiByZWN0YW5nbGUueSArIGRpdmlzaW9uSGVpZ2h0XG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcmV0dXJuIHsgc3RhcnRQb2ludCwgYXJjQ29tbWFuZHMgfTtcbn1cblxuZXhwb3J0IGNvbnN0IENsb3VkRW5naW5lOiBTaGFwZUVuZ2luZSA9IHtcbiAgICBkcmF3KGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykge1xuICAgICAgICBjb25zdCBycyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgICAgICBjb25zdCB7IHN0YXJ0UG9pbnQsIGFyY0NvbW1hbmRzIH0gPSBnZW5lcmF0ZUNsb3VkUGF0aChyZWN0YW5nbGUpO1xuXG4gICAgICAgIGNvbnN0IHBhdGhEYXRhID1cbiAgICAgICAgICAgIGBNICR7c3RhcnRQb2ludFswXX0gJHtzdGFydFBvaW50WzFdfSBgICtcbiAgICAgICAgICAgIGFyY0NvbW1hbmRzXG4gICAgICAgICAgICAgICAgLm1hcCgoY29tbWFuZCkgPT4gYEEgJHtjb21tYW5kLnJ4fSAke2NvbW1hbmQucnl9ICR7Y29tbWFuZC54QXhpc1JvdGF0aW9ufSAke2NvbW1hbmQubGFyZ2VBcmNGbGFnfSAke2NvbW1hbmQuc3dlZXBGbGFnfSAke2NvbW1hbmQuZW5kWH0gJHtjb21tYW5kLmVuZFl9YClcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJykgK1xuICAgICAgICAgICAgJyBaJztcblxuICAgICAgICBjb25zdCBzdmdFbGVtZW50ID0gcnMucGF0aChwYXRoRGF0YSwgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSk7XG4gICAgICAgIHNldFBhdGhTdHJva2VMaW5lY2FwKHN2Z0VsZW1lbnQsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc3ZnRWxlbWVudDtcbiAgICB9LFxuICAgIGlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhcnRQb2ludCwgYXJjQ29tbWFuZHMgfSA9IGdlbmVyYXRlQ2xvdWRQYXRoKHJlY3RhbmdsZSk7XG4gICAgICAgIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICAgICAgICBsZXQgbmVhcmVzdFBvaW50ID0gcG9pbnQ7XG5cbiAgICAgICAgbGV0IGN1cnJlbnRTdGFydCA9IHN0YXJ0UG9pbnQ7XG4gICAgICAgIGZvciAoY29uc3QgYXJjQ29tbWFuZCBvZiBhcmNDb21tYW5kcykge1xuICAgICAgICAgICAgY29uc3QgYXJjTmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kQXJjKHBvaW50LCBjdXJyZW50U3RhcnQsIGFyY0NvbW1hbmQpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHBvaW50WzBdLCBwb2ludFsxXSwgYXJjTmVhcmVzdFBvaW50WzBdLCBhcmNOZWFyZXN0UG9pbnRbMV0pO1xuXG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgbmVhcmVzdFBvaW50ID0gYXJjTmVhcmVzdFBvaW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50U3RhcnQgPSBbYXJjQ29tbWFuZC5lbmRYLCBhcmNDb21tYW5kLmVuZFldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludDtcbiAgICB9LFxuICAgIGdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSk6IFtQb2ludCwgUG9pbnRdIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNvcm5lcnMgPSBDbG91ZEVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgcG9pbnRPZlJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBnZXRQb2x5Z29uRWRnZUJ5Q29ubmVjdGlvblBvaW50KGNvcm5lcnMsIHBvaW50KTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldFRleHRSZWN0YW5nbGUoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkge1xuICAgICAgICBjb25zdCBlbGVtZW50UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQudGV4dEhlaWdodCE7XG4gICAgICAgIGNvbnN0IG9yaWdpbldpZHRoID0gZWxlbWVudFJlY3RhbmdsZS53aWR0aCAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgICAgICBjb25zdCB3aWR0aCA9IG9yaWdpbldpZHRoIC8gMS41O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCArIG9yaWdpbldpZHRoIC8gNixcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIGVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0IC8gNiArICgoZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQgKiA0KSAvIDYgLSBoZWlnaHQpIC8gMlxuICAgICAgICB9O1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,21 +1,60 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient,
|
|
1
|
+
import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, setStrokeLinecap } from '@plait/core';
|
|
2
2
|
import { ShapeDefaultSpace } from '../../constants';
|
|
3
3
|
import { RectangleEngine } from '../basic-shapes/rectangle';
|
|
4
4
|
import { getPolygonEdgeByConnectionPoint } from '../../utils/polygon';
|
|
5
5
|
import { getStrokeWidthByElement } from '../../utils';
|
|
6
|
+
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
7
|
+
function generateNoteCurlyLeftPath(rectangle) {
|
|
8
|
+
const curlyWidth = rectangle.width * 0.09;
|
|
9
|
+
const rightX = rectangle.x + rectangle.width;
|
|
10
|
+
const centerY = rectangle.y + rectangle.height / 2;
|
|
11
|
+
return {
|
|
12
|
+
startPoint: [rightX, rectangle.y],
|
|
13
|
+
upperCurve: {
|
|
14
|
+
controlPoint1: [rightX - curlyWidth, rectangle.y],
|
|
15
|
+
controlPoint2: [rightX, centerY],
|
|
16
|
+
endPoint: [rightX - curlyWidth, centerY]
|
|
17
|
+
},
|
|
18
|
+
lowerCurve: {
|
|
19
|
+
controlPoint1: [rightX, centerY],
|
|
20
|
+
controlPoint2: [rightX - curlyWidth, rectangle.y + rectangle.height],
|
|
21
|
+
endPoint: [rightX, rectangle.y + rectangle.height]
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
6
25
|
export const NoteCurlyLeftEngine = {
|
|
7
26
|
draw(board, rectangle, options) {
|
|
8
27
|
const rs = PlaitBoard.getRoughSVG(board);
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
${
|
|
12
|
-
${
|
|
13
|
-
|
|
14
|
-
${
|
|
15
|
-
${
|
|
28
|
+
const { startPoint, upperCurve, lowerCurve } = generateNoteCurlyLeftPath(rectangle);
|
|
29
|
+
const pathData = [
|
|
30
|
+
`M${startPoint[0]} ${startPoint[1]}`,
|
|
31
|
+
`C${upperCurve.controlPoint1[0]} ${upperCurve.controlPoint1[1]},
|
|
32
|
+
${upperCurve.controlPoint2[0]} ${upperCurve.controlPoint2[1]},
|
|
33
|
+
${upperCurve.endPoint[0]} ${upperCurve.endPoint[1]}`,
|
|
34
|
+
`C${lowerCurve.controlPoint1[0]} ${lowerCurve.controlPoint1[1]},
|
|
35
|
+
${lowerCurve.controlPoint2[0]} ${lowerCurve.controlPoint2[1]},
|
|
36
|
+
${lowerCurve.endPoint[0]} ${lowerCurve.endPoint[1]}`
|
|
37
|
+
].join(' ');
|
|
38
|
+
const shape = rs.path(pathData, { ...options, fillStyle: 'solid', fill: 'transparent' });
|
|
16
39
|
setStrokeLinecap(shape, 'round');
|
|
17
40
|
return shape;
|
|
18
41
|
},
|
|
42
|
+
getNearestPoint(rectangle, point) {
|
|
43
|
+
const { startPoint, upperCurve, lowerCurve } = generateNoteCurlyLeftPath(rectangle);
|
|
44
|
+
const upperBezierPoints = pointsOnBezierCurves([startPoint, upperCurve.controlPoint1, upperCurve.controlPoint2, upperCurve.endPoint], 0.001);
|
|
45
|
+
const lowerBezierPoints = pointsOnBezierCurves([upperCurve.endPoint, lowerCurve.controlPoint1, lowerCurve.controlPoint2, lowerCurve.endPoint], 0.001);
|
|
46
|
+
const allPoints = [...upperBezierPoints, ...lowerBezierPoints];
|
|
47
|
+
let minDistance = Infinity;
|
|
48
|
+
let nearestPoint = point;
|
|
49
|
+
for (const curvePoint of allPoints) {
|
|
50
|
+
const distance = distanceBetweenPointAndPoint(point[0], point[1], curvePoint[0], curvePoint[1]);
|
|
51
|
+
if (distance < minDistance) {
|
|
52
|
+
minDistance = distance;
|
|
53
|
+
nearestPoint = [...curvePoint];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return nearestPoint;
|
|
57
|
+
},
|
|
19
58
|
isInsidePoint(rectangle, point) {
|
|
20
59
|
const rangeRectangle = RectangleClient.getRectangleByPoints([point, point]);
|
|
21
60
|
return RectangleClient.isHit(rectangle, rangeRectangle);
|
|
@@ -23,9 +62,6 @@ export const NoteCurlyLeftEngine = {
|
|
|
23
62
|
getCornerPoints(rectangle) {
|
|
24
63
|
return RectangleClient.getCornerPoints(rectangle);
|
|
25
64
|
},
|
|
26
|
-
getNearestPoint(rectangle, point) {
|
|
27
|
-
return getNearestPointBetweenPointAndSegments(point, RectangleEngine.getCornerPoints(rectangle));
|
|
28
|
-
},
|
|
29
65
|
getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
|
|
30
66
|
const corners = RectangleEngine.getCornerPoints(rectangle);
|
|
31
67
|
const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
|
|
@@ -47,4 +83,4 @@ export const NoteCurlyLeftEngine = {
|
|
|
47
83
|
};
|
|
48
84
|
}
|
|
49
85
|
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS1jdXJseS1sZWZ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy9mbG93Y2hhcnQvbm90ZS1jdXJseS1sZWZ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLHNDQUFzQyxFQUN0QyxnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBZ0I7SUFDNUMsSUFBSSxDQUFDLEtBQWlCLEVBQUUsU0FBMEIsRUFBRSxPQUFnQjtRQUNoRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQ2pCLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO2VBQzdDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQztjQUN0RSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7Y0FDbkUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO2VBQzNGLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztjQUNwRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTTtjQUN4RixTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQ25FLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQzFELENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELGFBQWEsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDbEQsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCO1FBQ3RDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNwRCxPQUFPLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNELHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sK0JBQStCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFzQixFQUFFLEVBQUU7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFXLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEksT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVztZQUN4RSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakUsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSwgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNoYXBlRGVmYXVsdFNwYWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZUVuZ2luZSB9IGZyb20gJy4uL2Jhc2ljLXNoYXBlcy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludCB9IGZyb20gJy4uLy4uL3V0aWxzL3BvbHlnb24nO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBOb3RlQ3VybHlMZWZ0RW5naW5lOiBTaGFwZUVuZ2luZSA9IHtcbiAgICBkcmF3KGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykge1xuICAgICAgICBjb25zdCBycyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IHJzLnBhdGgoXG4gICAgICAgICAgICBgTSR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGh9ICR7cmVjdGFuZ2xlLnl9IFxuICAgICAgICAgICAgQyR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLSByZWN0YW5nbGUud2lkdGggKiAwLjA5fSAke3JlY3RhbmdsZS55fSwgXG4gICAgICAgICAgICAke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRofSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJ9LCBcbiAgICAgICAgICAgICR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLSByZWN0YW5nbGUud2lkdGggKiAwLjA5fSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJ9XG4gICAgICAgICAgICBDJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aH0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyfSwgXG4gICAgICAgICAgICAke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC0gcmVjdGFuZ2xlLndpZHRoICogMC4wOX0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHR9LCBcbiAgICAgICAgICAgICR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGh9ICR7cmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0fWAsXG4gICAgICAgICAgICB7IC4uLm9wdGlvbnMsIGZpbGxTdHlsZTogJ3NvbGlkJywgZmlsbDogJ3RyYW5zcGFyZW50JyB9XG4gICAgICAgICk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKSk7XG4gICAgfSxcbiAgICBnZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpOiBbUG9pbnQsIFBvaW50XSB8IG51bGwge1xuICAgICAgICBjb25zdCBjb3JuZXJzID0gUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQoY29ybmVycywgcG9pbnQpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0VGV4dFJlY3RhbmdsZTogKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgICAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LnRleHRIZWlnaHQhO1xuICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoICogMC4wOSAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS1jdXJseS1sZWZ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy9mbG93Y2hhcnQvbm90ZS1jdXJseS1sZWZ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLDRCQUE0QixFQUU1QixnQkFBZ0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWdCdkQsU0FBUyx5QkFBeUIsQ0FBQyxTQUEwQjtJQUN6RCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDN0MsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVuRCxPQUFPO1FBQ0gsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDakMsVUFBVSxFQUFFO1lBQ1IsYUFBYSxFQUFFLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2pELGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7WUFDaEMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxPQUFPLENB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QUFDLE1BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFXLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEksT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVztZQUN4RSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDakUsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgc2V0U3Ryb2tlTGluZWNhcFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEdlb21ldHJ5LCBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRQb2x5Z29uRWRnZUJ5Q29ubmVjdGlvblBvaW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9seWdvbic7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IHBvaW50c09uQmV6aWVyQ3VydmVzIH0gZnJvbSAncG9pbnRzLW9uLWN1cnZlJztcblxuaW50ZXJmYWNlIE5vdGVDdXJseUxlZnRQYXRoRGF0YSB7XG4gICAgc3RhcnRQb2ludDogUG9pbnQ7XG4gICAgdXBwZXJDdXJ2ZToge1xuICAgICAgICBjb250cm9sUG9pbnQxOiBQb2ludDtcbiAgICAgICAgY29udHJvbFBvaW50MjogUG9pbnQ7XG4gICAgICAgIGVuZFBvaW50OiBQb2ludDtcbiAgICB9O1xuICAgIGxvd2VyQ3VydmU6IHtcbiAgICAgICAgY29udHJvbFBvaW50MTogUG9pbnQ7XG4gICAgICAgIGNvbnRyb2xQb2ludDI6IFBvaW50O1xuICAgICAgICBlbmRQb2ludDogUG9pbnQ7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVOb3RlQ3VybHlMZWZ0UGF0aChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCk6IE5vdGVDdXJseUxlZnRQYXRoRGF0YSB7XG4gICAgY29uc3QgY3VybHlXaWR0aCA9IHJlY3RhbmdsZS53aWR0aCAqIDAuMDk7XG4gICAgY29uc3QgcmlnaHRYID0gcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGg7XG4gICAgY29uc3QgY2VudGVyWSA9IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFydFBvaW50OiBbcmlnaHRYLCByZWN0YW5nbGUueV0sXG4gICAgICAgIHVwcGVyQ3VydmU6IHtcbiAgICAgICAgICAgIGNvbnRyb2xQb2ludDE6IFtyaWdodFggLSBjdXJseVdpZHRoLCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBjb250cm9sUG9pbnQyOiBbcmlnaHRYLCBjZW50ZXJZXSxcbiAgICAgICAgICAgIGVuZFBvaW50OiBbcmlnaHRYIC0gY3VybHlXaWR0aCwgY2VudGVyWV1cbiAgICAgICAgfSxcbiAgICAgICAgbG93ZXJDdXJ2ZToge1xuICAgICAgICAgICAgY29udHJvbFBvaW50MTogW3JpZ2h0WCwgY2VudGVyWV0sXG4gICAgICAgICAgICBjb250cm9sUG9pbnQyOiBbcmlnaHRYIC0gY3VybHlXaWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XSxcbiAgICAgICAgICAgIGVuZFBvaW50OiBbcmlnaHRYLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdXG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgTm90ZUN1cmx5TGVmdEVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3QgeyBzdGFydFBvaW50LCB1cHBlckN1cnZlLCBsb3dlckN1cnZlIH0gPSBnZW5lcmF0ZU5vdGVDdXJseUxlZnRQYXRoKHJlY3RhbmdsZSk7XG5cbiAgICAgICAgY29uc3QgcGF0aERhdGEgPSBbXG4gICAgICAgICAgICBgTSR7c3RhcnRQb2ludFswXX0gJHtzdGFydFBvaW50WzFdfWAsXG4gICAgICAgICAgICBgQyR7dXBwZXJDdXJ2ZS5jb250cm9sUG9pbnQxWzBdfSAke3VwcGVyQ3VydmUuY29udHJvbFBvaW50MVsxXX0sXG4gICAgICAgICAgICAke3VwcGVyQ3VydmUuY29udHJvbFBvaW50MlswXX0gJHt1cHBlckN1cnZlLmNvbnRyb2xQb2ludDJbMV19LFxuICAgICAgICAgICAgJHt1cHBlckN1cnZlLmVuZFBvaW50WzBdfSAke3VwcGVyQ3VydmUuZW5kUG9pbnRbMV19YCxcbiAgICAgICAgICAgIGBDJHtsb3dlckN1cnZlLmNvbnRyb2xQb2ludDFbMF19ICR7bG93ZXJDdXJ2ZS5jb250cm9sUG9pbnQxWzFdfSxcbiAgICAgICAgICAgICR7bG93ZXJDdXJ2ZS5jb250cm9sUG9pbnQyWzBdfSAke2xvd2VyQ3VydmUuY29udHJvbFBvaW50MlsxXX0sXG4gICAgICAgICAgICAke2xvd2VyQ3VydmUuZW5kUG9pbnRbMF19ICR7bG93ZXJDdXJ2ZS5lbmRQb2ludFsxXX1gXG4gICAgICAgIF0uam9pbignICcpO1xuXG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChwYXRoRGF0YSwgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcsIGZpbGw6ICd0cmFuc3BhcmVudCcgfSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcblxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhcnRQb2ludCwgdXBwZXJDdXJ2ZSwgbG93ZXJDdXJ2ZSB9ID0gZ2VuZXJhdGVOb3RlQ3VybHlMZWZ0UGF0aChyZWN0YW5nbGUpO1xuXG4gICAgICAgIGNvbnN0IHVwcGVyQmV6aWVyUG9pbnRzID0gcG9pbnRzT25CZXppZXJDdXJ2ZXMoXG4gICAgICAgICAgICBbc3RhcnRQb2ludCwgdXBwZXJDdXJ2ZS5jb250cm9sUG9pbnQxLCB1cHBlckN1cnZlLmNvbnRyb2xQb2ludDIsIHVwcGVyQ3VydmUuZW5kUG9pbnRdLFxuICAgICAgICAgICAgMC4wMDFcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBsb3dlckJlemllclBvaW50cyA9IHBvaW50c09uQmV6aWVyQ3VydmVzKFxuICAgICAgICAgICAgW3VwcGVyQ3VydmUuZW5kUG9pbnQsIGxvd2VyQ3VydmUuY29udHJvbFBvaW50MSwgbG93ZXJDdXJ2ZS5jb250cm9sUG9pbnQyLCBsb3dlckN1cnZlLmVuZFBvaW50XSxcbiAgICAgICAgICAgIDAuMDAxXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgYWxsUG9pbnRzID0gWy4uLnVwcGVyQmV6aWVyUG9pbnRzLCAuLi5sb3dlckJlemllclBvaW50c107XG5cbiAgICAgICAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgICAgIGxldCBuZWFyZXN0UG9pbnQgPSBwb2ludDtcblxuICAgICAgICBmb3IgKGNvbnN0IGN1cnZlUG9pbnQgb2YgYWxsUG9pbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRbMF0sIHBvaW50WzFdLCBjdXJ2ZVBvaW50WzBdLCBjdXJ2ZVBvaW50WzFdKTtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgICAgICAgICAgICBuZWFyZXN0UG9pbnQgPSBbLi4uY3VydmVQb2ludF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICAgIH0sXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKTogW1BvaW50LCBQb2ludF0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29ybmVycyA9IFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgcG9pbnRPZlJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBnZXRQb2x5Z29uRWRnZUJ5Q29ubmVjdGlvblBvaW50KGNvcm5lcnMsIHBvaW50KTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldFRleHRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gZWxlbWVudFJlY3RhbmdsZS53aWR0aCAqIDAuMDkgLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyAoZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQgLSBoZWlnaHQpIC8gMlxuICAgICAgICB9O1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,18 +1,40 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient,
|
|
1
|
+
import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, setStrokeLinecap } from '@plait/core';
|
|
2
2
|
import { ShapeDefaultSpace } from '../../constants';
|
|
3
3
|
import { RectangleEngine } from '../basic-shapes/rectangle';
|
|
4
4
|
import { getPolygonEdgeByConnectionPoint } from '../../utils/polygon';
|
|
5
5
|
import { getStrokeWidthByElement } from '../../utils';
|
|
6
|
+
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
7
|
+
function generateNoteCurlyRightPath(rectangle) {
|
|
8
|
+
const curlyWidth = rectangle.width * 0.09;
|
|
9
|
+
const centerY = rectangle.y + rectangle.height / 2;
|
|
10
|
+
return {
|
|
11
|
+
startPoint: [rectangle.x, rectangle.y],
|
|
12
|
+
upperCurve: {
|
|
13
|
+
controlPoint1: [rectangle.x + curlyWidth, rectangle.y],
|
|
14
|
+
controlPoint2: [rectangle.x, centerY],
|
|
15
|
+
endPoint: [rectangle.x + curlyWidth, centerY]
|
|
16
|
+
},
|
|
17
|
+
lowerCurve: {
|
|
18
|
+
controlPoint1: [rectangle.x, centerY],
|
|
19
|
+
controlPoint2: [rectangle.x + curlyWidth, rectangle.y + rectangle.height],
|
|
20
|
+
endPoint: [rectangle.x, rectangle.y + rectangle.height]
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
6
24
|
export const NoteCurlyRightEngine = {
|
|
7
25
|
draw(board, rectangle, options) {
|
|
8
26
|
const rs = PlaitBoard.getRoughSVG(board);
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
${
|
|
12
|
-
${
|
|
13
|
-
|
|
14
|
-
${
|
|
15
|
-
${
|
|
27
|
+
const { startPoint, upperCurve, lowerCurve } = generateNoteCurlyRightPath(rectangle);
|
|
28
|
+
const pathData = [
|
|
29
|
+
`M${startPoint[0]} ${startPoint[1]}`,
|
|
30
|
+
`C${upperCurve.controlPoint1[0]} ${upperCurve.controlPoint1[1]},
|
|
31
|
+
${upperCurve.controlPoint2[0]} ${upperCurve.controlPoint2[1]},
|
|
32
|
+
${upperCurve.endPoint[0]} ${upperCurve.endPoint[1]}`,
|
|
33
|
+
`C${lowerCurve.controlPoint1[0]} ${lowerCurve.controlPoint1[1]},
|
|
34
|
+
${lowerCurve.controlPoint2[0]} ${lowerCurve.controlPoint2[1]},
|
|
35
|
+
${lowerCurve.endPoint[0]} ${lowerCurve.endPoint[1]}`
|
|
36
|
+
].join(' ');
|
|
37
|
+
const shape = rs.path(pathData, { ...options, fillStyle: 'solid', fill: 'transparent' });
|
|
16
38
|
setStrokeLinecap(shape, 'round');
|
|
17
39
|
return shape;
|
|
18
40
|
},
|
|
@@ -24,7 +46,24 @@ export const NoteCurlyRightEngine = {
|
|
|
24
46
|
return RectangleClient.getCornerPoints(rectangle);
|
|
25
47
|
},
|
|
26
48
|
getNearestPoint(rectangle, point) {
|
|
27
|
-
|
|
49
|
+
const { startPoint, upperCurve, lowerCurve } = generateNoteCurlyRightPath(rectangle);
|
|
50
|
+
// 生成上部贝塞尔曲线的点
|
|
51
|
+
const upperBezierPoints = pointsOnBezierCurves([startPoint, upperCurve.controlPoint1, upperCurve.controlPoint2, upperCurve.endPoint], 0.001);
|
|
52
|
+
// 生成下部贝塞尔曲线的点
|
|
53
|
+
const lowerBezierPoints = pointsOnBezierCurves([upperCurve.endPoint, lowerCurve.controlPoint1, lowerCurve.controlPoint2, lowerCurve.endPoint], 0.001);
|
|
54
|
+
// 合并所有点
|
|
55
|
+
const allPoints = [...upperBezierPoints, ...lowerBezierPoints];
|
|
56
|
+
// 找到最近的点
|
|
57
|
+
let minDistance = Infinity;
|
|
58
|
+
let nearestPoint = [...point];
|
|
59
|
+
for (const curvePoint of allPoints) {
|
|
60
|
+
const distance = distanceBetweenPointAndPoint(point[0], point[1], curvePoint[0], curvePoint[1]);
|
|
61
|
+
if (distance < minDistance) {
|
|
62
|
+
minDistance = distance;
|
|
63
|
+
nearestPoint = [...curvePoint];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return nearestPoint;
|
|
28
67
|
},
|
|
29
68
|
getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
|
|
30
69
|
const corners = RectangleEngine.getCornerPoints(rectangle);
|
|
@@ -47,4 +86,4 @@ export const NoteCurlyRightEngine = {
|
|
|
47
86
|
};
|
|
48
87
|
}
|
|
49
88
|
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS1jdXJseS1yaWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2VuZ2luZXMvZmxvd2NoYXJ0L25vdGUtY3VybHktcmlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBQ2Ysc0NBQXNDLEVBQ3RDLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFnQjtJQUM3QyxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FDakIsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO2VBQzNCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUM7Y0FDcEQsU0FBUyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztjQUNqRCxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO2VBQ3pFLFNBQVMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7Y0FDbEQsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNO2NBQ3RFLFNBQVMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQ2pELEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQzFELENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELGFBQWEsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDbEQsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCO1FBQ3RDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNwRCxPQUFPLHNDQUFzQyxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNELHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsZ0JBQWtDO1FBQ25GLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sK0JBQStCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFzQixFQUFFLEVBQUU7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFXLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEksT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXO1lBQ3hHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNqRSxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgc2V0U3Ryb2tlTGluZWNhcFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEdlb21ldHJ5LCBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRQb2x5Z29uRWRnZUJ5Q29ubmVjdGlvblBvaW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9seWdvbic7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IE5vdGVDdXJseVJpZ2h0RW5naW5lOiBTaGFwZUVuZ2luZSA9IHtcbiAgICBkcmF3KGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykge1xuICAgICAgICBjb25zdCBycyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IHJzLnBhdGgoXG4gICAgICAgICAgICBgTSR7cmVjdGFuZ2xlLnh9ICR7cmVjdGFuZ2xlLnl9XG4gICAgICAgICAgICBDJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAqIDAuMDl9ICR7cmVjdGFuZ2xlLnl9LFxuICAgICAgICAgICAgJHtyZWN0YW5nbGUueH0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyfSxcbiAgICAgICAgICAgICR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjA5fSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJ9XG4gICAgICAgICAgICBDJHtyZWN0YW5nbGUueH0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyfSxcbiAgICAgICAgICAgICR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjA5fSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodH0sXG4gICAgICAgICAgICAke3JlY3RhbmdsZS54fSAke3JlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodH1gLFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcsIGZpbGw6ICd0cmFuc3BhcmVudCcgfVxuICAgICAgICApO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0sXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBSZWN0YW5nbGVFbmdpbmUuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSkpO1xuICAgIH0sXG4gICAgZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKTogW1BvaW50LCBQb2ludF0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29ybmVycyA9IFJlY3RhbmdsZUVuZ2luZS5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgcG9pbnRPZlJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBnZXRQb2x5Z29uRWRnZUJ5Q29ubmVjdGlvblBvaW50KGNvcm5lcnMsIHBvaW50KTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldFRleHRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0ITtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gZWxlbWVudFJlY3RhbmdsZS53aWR0aCAqIDAuMDkgLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA+IDAgPyB3aWR0aCA6IDAsXG4gICAgICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBlbGVtZW50UmVjdGFuZ2xlLndpZHRoICogMC4wOSArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgfVxufTtcbiJdfQ==
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS1jdXJseS1yaWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2VuZ2luZXMvZmxvd2NoYXJ0L25vdGUtY3VybHktcmlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBQ2YsNEJBQTRCLEVBRTVCLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZ0J2RCxTQUFTLDBCQUEwQixDQUFDLFNBQTBCO0lBQzFELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFbkQsT0FBTztRQUNILFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0QyxVQUFVLEVBQUU7WUFDUixhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3RELGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO1lBQ3JDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQztTQUNoRDtRQUNELFVBQVUs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QUFzQixFQUFFLEVBQUU7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFXLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEksT0FBTztZQUNILE1BQU07WUFDTixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXO1lBQ3hHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNqRSxDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyxcbiAgICBzZXRTdHJva2VMaW5lY2FwXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnksIFNoYXBlRW5naW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBSZWN0YW5nbGVFbmdpbmUgfSBmcm9tICcuLi9iYXNpYy1zaGFwZXMvcmVjdGFuZ2xlJztcbmltcG9ydCB7IGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi8uLi91dGlscy9wb2x5Z29uJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgcG9pbnRzT25CZXppZXJDdXJ2ZXMgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuXG5pbnRlcmZhY2UgTm90ZUN1cmx5UmlnaHRQYXRoRGF0YSB7XG4gICAgc3RhcnRQb2ludDogUG9pbnQ7XG4gICAgdXBwZXJDdXJ2ZToge1xuICAgICAgICBjb250cm9sUG9pbnQxOiBQb2ludDtcbiAgICAgICAgY29udHJvbFBvaW50MjogUG9pbnQ7XG4gICAgICAgIGVuZFBvaW50OiBQb2ludDtcbiAgICB9O1xuICAgIGxvd2VyQ3VydmU6IHtcbiAgICAgICAgY29udHJvbFBvaW50MTogUG9pbnQ7XG4gICAgICAgIGNvbnRyb2xQb2ludDI6IFBvaW50O1xuICAgICAgICBlbmRQb2ludDogUG9pbnQ7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVOb3RlQ3VybHlSaWdodFBhdGgocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpOiBOb3RlQ3VybHlSaWdodFBhdGhEYXRhIHtcbiAgICBjb25zdCBjdXJseVdpZHRoID0gcmVjdGFuZ2xlLndpZHRoICogMC4wOTtcbiAgICBjb25zdCBjZW50ZXJZID0gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0UG9pbnQ6IFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnldLFxuICAgICAgICB1cHBlckN1cnZlOiB7XG4gICAgICAgICAgICBjb250cm9sUG9pbnQxOiBbcmVjdGFuZ2xlLnggKyBjdXJseVdpZHRoLCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBjb250cm9sUG9pbnQyOiBbcmVjdGFuZ2xlLngsIGNlbnRlclldLFxuICAgICAgICAgICAgZW5kUG9pbnQ6IFtyZWN0YW5nbGUueCArIGN1cmx5V2lkdGgsIGNlbnRlclldXG4gICAgICAgIH0sXG4gICAgICAgIGxvd2VyQ3VydmU6IHtcbiAgICAgICAgICAgIGNvbnRyb2xQb2ludDE6IFtyZWN0YW5nbGUueCwgY2VudGVyWV0sXG4gICAgICAgICAgICBjb250cm9sUG9pbnQyOiBbcmVjdGFuZ2xlLnggKyBjdXJseVdpZHRoLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHRdLFxuICAgICAgICAgICAgZW5kUG9pbnQ6IFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XVxuICAgICAgICB9XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IE5vdGVDdXJseVJpZ2h0RW5naW5lOiBTaGFwZUVuZ2luZSA9IHtcbiAgICBkcmF3KGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykge1xuICAgICAgICBjb25zdCBycyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpO1xuICAgICAgICBjb25zdCB7IHN0YXJ0UG9pbnQsIHVwcGVyQ3VydmUsIGxvd2VyQ3VydmUgfSA9IGdlbmVyYXRlTm90ZUN1cmx5UmlnaHRQYXRoKHJlY3RhbmdsZSk7XG5cbiAgICAgICAgY29uc3QgcGF0aERhdGEgPSBbXG4gICAgICAgICAgICBgTSR7c3RhcnRQb2ludFswXX0gJHtzdGFydFBvaW50WzFdfWAsXG4gICAgICAgICAgICBgQyR7dXBwZXJDdXJ2ZS5jb250cm9sUG9pbnQxWzBdfSAke3VwcGVyQ3VydmUuY29udHJvbFBvaW50MVsxXX0sXG4gICAgICAgICAgICAke3VwcGVyQ3VydmUuY29udHJvbFBvaW50MlswXX0gJHt1cHBlckN1cnZlLmNvbnRyb2xQb2ludDJbMV19LFxuICAgICAgICAgICAgJHt1cHBlckN1cnZlLmVuZFBvaW50WzBdfSAke3VwcGVyQ3VydmUuZW5kUG9pbnRbMV19YCxcbiAgICAgICAgICAgIGBDJHtsb3dlckN1cnZlLmNvbnRyb2xQb2ludDFbMF19ICR7bG93ZXJDdXJ2ZS5jb250cm9sUG9pbnQxWzFdfSxcbiAgICAgICAgICAgICR7bG93ZXJDdXJ2ZS5jb250cm9sUG9pbnQyWzBdfSAke2xvd2VyQ3VydmUuY29udHJvbFBvaW50MlsxXX0sXG4gICAgICAgICAgICAke2xvd2VyQ3VydmUuZW5kUG9pbnRbMF19ICR7bG93ZXJDdXJ2ZS5lbmRQb2ludFsxXX1gXG4gICAgICAgIF0uam9pbignICcpO1xuXG4gICAgICAgIGNvbnN0IHNoYXBlID0gcnMucGF0aChwYXRoRGF0YSwgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcsIGZpbGw6ICd0cmFuc3BhcmVudCcgfSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfSxcbiAgICBpc0luc2lkZVBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgcmFuZ2VSZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCB7IHN0YXJ0UG9pbnQsIHVwcGVyQ3VydmUsIGxvd2VyQ3VydmUgfSA9IGdlbmVyYXRlTm90ZUN1cmx5UmlnaHRQYXRoKHJlY3RhbmdsZSk7XG5cbiAgICAgICAgLy8g55Sf5oiQ5LiK6YOo6LSd5aGe5bCU5puy57q/55qE54K5XG4gICAgICAgIGNvbnN0IHVwcGVyQmV6aWVyUG9pbnRzID0gcG9pbnRzT25CZXppZXJDdXJ2ZXMoXG4gICAgICAgICAgICBbc3RhcnRQb2ludCwgdXBwZXJDdXJ2ZS5jb250cm9sUG9pbnQxLCB1cHBlckN1cnZlLmNvbnRyb2xQb2ludDIsIHVwcGVyQ3VydmUuZW5kUG9pbnRdLFxuICAgICAgICAgICAgMC4wMDFcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDnlJ/miJDkuIvpg6jotJ3loZ7lsJTmm7Lnur/nmoTngrlcbiAgICAgICAgY29uc3QgbG93ZXJCZXppZXJQb2ludHMgPSBwb2ludHNPbkJlemllckN1cnZlcyhcbiAgICAgICAgICAgIFt1cHBlckN1cnZlLmVuZFBvaW50LCBsb3dlckN1cnZlLmNvbnRyb2xQb2ludDEsIGxvd2VyQ3VydmUuY29udHJvbFBvaW50MiwgbG93ZXJDdXJ2ZS5lbmRQb2ludF0sXG4gICAgICAgICAgICAwLjAwMVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIOWQiOW5tuaJgOacieeCuVxuICAgICAgICBjb25zdCBhbGxQb2ludHMgPSBbLi4udXBwZXJCZXppZXJQb2ludHMsIC4uLmxvd2VyQmV6aWVyUG9pbnRzXTtcblxuICAgICAgICAvLyDmib7liLDmnIDov5HnmoTngrlcbiAgICAgICAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgICAgIGxldCBuZWFyZXN0UG9pbnQgPSBbLi4ucG9pbnRdIGFzIFBvaW50O1xuXG4gICAgICAgIGZvciAoY29uc3QgY3VydmVQb2ludCBvZiBhbGxQb2ludHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChwb2ludFswXSwgcG9pbnRbMV0sIGN1cnZlUG9pbnRbMF0sIGN1cnZlUG9pbnRbMV0pO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICAgICAgICAgIG5lYXJlc3RQb2ludCA9IFsuLi5jdXJ2ZVBvaW50XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQ7XG4gICAgfSxcbiAgICBnZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpOiBbUG9pbnQsIFBvaW50XSB8IG51bGwge1xuICAgICAgICBjb25zdCBjb3JuZXJzID0gUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldFBvbHlnb25FZGdlQnlDb25uZWN0aW9uUG9pbnQoY29ybmVycywgcG9pbnQpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0VGV4dFJlY3RhbmdsZTogKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgICAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LnRleHRIZWlnaHQhO1xuICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRSZWN0YW5nbGUud2lkdGggLSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoICogMC4wOSAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgICAgIHg6IGVsZW1lbnRSZWN0YW5nbGUueCArIGVsZW1lbnRSZWN0YW5nbGUud2lkdGggKiAwLjA5ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgeTogZWxlbWVudFJlY3RhbmdsZS55ICsgKGVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0IC0gaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19
|