@plait/draw 0.56.2 → 0.58.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/constants/draw.d.ts +1 -0
- package/constants/geometry.d.ts +82 -2
- package/constants/index.d.ts +1 -0
- package/constants/pointer.d.ts +4 -2
- package/engines/flowchart/display.d.ts +4 -0
- package/engines/index.d.ts +3 -3
- package/engines/table/table.d.ts +16 -0
- package/engines/uml/actor.d.ts +2 -0
- package/engines/uml/combined-fragment.d.ts +3 -0
- package/engines/uml/container.d.ts +2 -0
- package/engines/uml/package.d.ts +3 -0
- package/esm2022/constants/draw.mjs +2 -0
- package/esm2022/constants/geometry.mjs +71 -5
- package/esm2022/constants/index.mjs +2 -1
- package/esm2022/constants/pointer.mjs +9 -3
- package/esm2022/engines/basic-shapes/cloud.mjs +1 -1
- package/esm2022/engines/basic-shapes/comment.mjs +1 -1
- package/esm2022/engines/basic-shapes/diamond.mjs +2 -2
- package/esm2022/engines/basic-shapes/parallelogram.mjs +2 -2
- package/esm2022/engines/basic-shapes/pentagon.mjs +1 -1
- package/esm2022/engines/basic-shapes/round-comment.mjs +2 -2
- package/esm2022/engines/basic-shapes/star.mjs +1 -1
- package/esm2022/engines/basic-shapes/trapezoid.mjs +2 -2
- package/esm2022/engines/basic-shapes/triangle.mjs +2 -2
- package/esm2022/engines/flowchart/database.mjs +2 -2
- package/esm2022/engines/flowchart/display.mjs +74 -0
- package/esm2022/engines/flowchart/document.mjs +1 -1
- package/esm2022/engines/flowchart/hard-disk.mjs +2 -2
- package/esm2022/engines/flowchart/internal-storage.mjs +2 -2
- package/esm2022/engines/flowchart/manual-input.mjs +2 -2
- package/esm2022/engines/flowchart/manual-loop.mjs +2 -2
- package/esm2022/engines/flowchart/merge.mjs +1 -1
- package/esm2022/engines/flowchart/multi-document.mjs +1 -1
- package/esm2022/engines/flowchart/note-curly-left.mjs +2 -2
- package/esm2022/engines/flowchart/note-curly-right.mjs +2 -2
- package/esm2022/engines/flowchart/note-square.mjs +1 -1
- package/esm2022/engines/flowchart/off-page.mjs +2 -2
- package/esm2022/engines/flowchart/or.mjs +1 -8
- package/esm2022/engines/flowchart/predefined-process.mjs +1 -1
- package/esm2022/engines/flowchart/summing-junction.mjs +1 -8
- package/esm2022/engines/index.mjs +20 -5
- package/esm2022/engines/table/table.mjs +72 -0
- package/esm2022/engines/uml/actor.mjs +102 -0
- package/esm2022/engines/uml/combined-fragment.mjs +66 -0
- package/esm2022/engines/uml/container.mjs +44 -0
- package/esm2022/engines/uml/package.mjs +75 -0
- package/esm2022/generators/geometry-shape.generator.mjs +3 -3
- package/esm2022/generators/index.mjs +7 -0
- package/esm2022/generators/line-active.generator.mjs +3 -3
- package/esm2022/generators/line-auto-complete.generator.mjs +1 -1
- package/esm2022/generators/single-text.generator.mjs +16 -0
- package/esm2022/generators/table.generator.mjs +20 -0
- package/esm2022/generators/text.generator.mjs +134 -0
- package/esm2022/geometry.component.mjs +64 -77
- package/esm2022/image.component.mjs +11 -28
- package/esm2022/interfaces/element.mjs +2 -1
- package/esm2022/interfaces/engine.mjs +2 -0
- package/esm2022/interfaces/geometry.mjs +24 -1
- package/esm2022/interfaces/image.mjs +1 -1
- package/esm2022/interfaces/index.mjs +27 -4
- package/esm2022/interfaces/line.mjs +1 -1
- package/esm2022/interfaces/table.mjs +9 -0
- package/esm2022/line.component.mjs +9 -26
- package/esm2022/plugins/with-draw-fragment.mjs +3 -1
- package/esm2022/plugins/with-draw-hotkey.mjs +12 -3
- package/esm2022/plugins/with-draw-resize.mjs +1 -1
- package/esm2022/plugins/with-draw.mjs +7 -2
- package/esm2022/plugins/with-geometry-create.mjs +2 -1
- package/esm2022/plugins/with-geometry-resize.mjs +1 -1
- package/esm2022/plugins/with-line-auto-complete-reaction.mjs +2 -2
- package/esm2022/plugins/with-line-bound-reaction.mjs +3 -4
- package/esm2022/plugins/with-line-create.mjs +3 -3
- package/esm2022/plugins/with-line-resize.mjs +3 -3
- package/esm2022/plugins/with-swimlane-create.mjs +132 -0
- package/esm2022/plugins/with-swimlane.mjs +21 -0
- package/esm2022/plugins/with-table-resize.mjs +130 -0
- package/esm2022/plugins/with-table.mjs +60 -0
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/table.component.mjs +136 -0
- package/esm2022/transforms/geometry-text.mjs +6 -3
- package/esm2022/transforms/geometry.mjs +3 -2
- package/esm2022/transforms/index.mjs +11 -2
- package/esm2022/transforms/multi-text-geometry-text.mjs +15 -0
- package/esm2022/transforms/swimlane.mjs +97 -0
- package/esm2022/transforms/table-text.mjs +44 -0
- package/esm2022/utils/clipboard.mjs +15 -2
- package/esm2022/utils/common.mjs +130 -0
- package/esm2022/utils/geometry.mjs +49 -63
- package/esm2022/utils/hit.mjs +47 -18
- package/esm2022/utils/index.mjs +4 -1
- package/esm2022/utils/line/elbow.mjs +2 -2
- package/esm2022/utils/line/line-arrow.mjs +2 -2
- package/esm2022/utils/line/line-basic.mjs +4 -4
- package/esm2022/utils/line/line-common.mjs +2 -2
- package/esm2022/utils/memorize.mjs +7 -1
- package/esm2022/utils/multi-text-geometry.mjs +61 -0
- package/esm2022/utils/position/geometry.mjs +2 -40
- package/esm2022/utils/selected.mjs +14 -1
- package/esm2022/utils/shape.mjs +5 -2
- package/esm2022/utils/snap-resizing.mjs +7 -7
- package/esm2022/utils/style/stroke.mjs +4 -10
- package/esm2022/utils/swimlane.mjs +120 -0
- package/esm2022/utils/table.mjs +124 -0
- package/fesm2022/plait-draw.mjs +4556 -2877
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/index.d.ts +6 -0
- package/generators/line-auto-complete.generator.d.ts +2 -2
- package/generators/single-text.generator.d.ts +11 -0
- package/generators/table.generator.d.ts +9 -0
- package/generators/text.generator.d.ts +43 -0
- package/geometry.component.d.ts +12 -17
- package/image.component.d.ts +6 -11
- package/interfaces/element.d.ts +2 -1
- package/interfaces/engine.d.ts +16 -0
- package/interfaces/geometry.d.ts +42 -18
- package/interfaces/image.d.ts +4 -2
- package/interfaces/index.d.ts +12 -3
- package/interfaces/line.d.ts +4 -5
- package/interfaces/table.d.ts +40 -0
- package/line.component.d.ts +5 -10
- package/package.json +1 -1
- package/plugins/with-swimlane-create.d.ts +8 -0
- package/plugins/with-swimlane.d.ts +2 -0
- package/plugins/with-table-resize.d.ts +2 -0
- package/plugins/with-table.d.ts +6 -0
- package/public-api.d.ts +1 -0
- package/table.component.d.ts +21 -0
- package/transforms/geometry.d.ts +2 -2
- package/transforms/index.d.ts +8 -2
- package/transforms/multi-text-geometry-text.d.ts +4 -0
- package/transforms/swimlane.d.ts +6 -0
- package/transforms/table-text.d.ts +4 -0
- package/utils/clipboard.d.ts +2 -0
- package/utils/common.d.ts +27 -0
- package/utils/geometry.d.ts +34 -15
- package/utils/hit.d.ts +4 -2
- package/utils/index.d.ts +3 -0
- package/utils/line/line-common.d.ts +3 -3
- package/utils/memorize.d.ts +3 -1
- package/utils/multi-text-geometry.d.ts +14 -0
- package/utils/position/geometry.d.ts +8 -21
- package/utils/selected.d.ts +4 -0
- package/utils/shape.d.ts +2 -2
- package/utils/style/stroke.d.ts +4 -5
- package/utils/swimlane.d.ts +52 -0
- package/utils/table.d.ts +26 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './geometry-shape.generator';
|
|
2
|
+
export * from './line-active.generator';
|
|
3
|
+
export * from './line-auto-complete.generator';
|
|
4
|
+
export * from './single-text.generator';
|
|
5
|
+
export * from './text.generator';
|
|
6
|
+
export * from './table.generator';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZW9tZXRyeS1zaGFwZS5nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLWFjdGl2ZS5nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLWF1dG8tY29tcGxldGUuZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc2luZ2xlLXRleHQuZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dC5nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5nZW5lcmF0b3InO1xuIl19
|
|
@@ -2,10 +2,10 @@ import { PlaitBoard, createG, drawRectangle, getSelectedElements } from '@plait/
|
|
|
2
2
|
import { LineShape, PlaitLine } from '../interfaces';
|
|
3
3
|
import { Generator, PRIMARY_COLOR, drawFillPrimaryHandle, drawPrimaryHandle } from '@plait/common';
|
|
4
4
|
import { getMiddlePoints } from '../utils/line/line-basic';
|
|
5
|
-
import { DefaultGeometryActiveStyle } from '../constants';
|
|
6
5
|
import { getNextRenderPoints } from '../utils/line/elbow';
|
|
7
6
|
import { isUpdatedHandleIndex } from '../utils/line';
|
|
8
7
|
import { getHitPointIndex } from '../utils/position/line';
|
|
8
|
+
import { DefaultDrawActiveStyle } from '../constants';
|
|
9
9
|
export class LineActiveGenerator extends Generator {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments);
|
|
@@ -64,7 +64,7 @@ export class LineActiveGenerator extends Generator {
|
|
|
64
64
|
}
|
|
65
65
|
const strokeG = drawRectangle(this.board, activeRectangle, {
|
|
66
66
|
stroke: PRIMARY_COLOR,
|
|
67
|
-
strokeWidth:
|
|
67
|
+
strokeWidth: DefaultDrawActiveStyle.selectionStrokeWidth
|
|
68
68
|
});
|
|
69
69
|
strokeG.style.opacity = opacity;
|
|
70
70
|
activeG.appendChild(strokeG);
|
|
@@ -78,4 +78,4 @@ export class LineActiveGenerator extends Generator {
|
|
|
78
78
|
return onlySelectedCurrentLine !== this.onlySelectedCurrentLine;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9saW5lLWFjdGl2ZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBT3RELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxTQUFnQztJQUF6RTs7UUFDSSw0QkFBdUIsR0FBRyxLQUFLLENBQUM7SUEwRXBDLENBQUM7SUF4RUcsT0FBTyxDQUFDLE9BQWtCLEVBQUUsSUFBZ0I7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFrQixFQUFFLElBQWdCO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sZ0JBQWdC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QUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGVBQWUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzlELE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLENBQUM7Z0JBQ0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFO29CQUN2RCxNQUFNLEVBQUUsYUFBYTtvQkFDckIsV0FBVyxFQUFFLHNCQUFzQixDQUFDLG9CQUFvQjtpQkFDM0QsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztnQkFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVO1FBQ04sTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsTUFBTSx1QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQzlELE9BQU8sdUJBQXVCLEtBQUssSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3BFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBjcmVhdGVHLCBkcmF3UmVjdGFuZ2xlLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlbmVyYXRvciwgUFJJTUFSWV9DT0xPUiwgZHJhd0ZpbGxQcmltYXJ5SGFuZGxlLCBkcmF3UHJpbWFyeUhhbmRsZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0TWlkZGxlUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldE5leHRSZW5kZXJQb2ludHMgfSBmcm9tICcuLi91dGlscy9saW5lL2VsYm93JztcbmltcG9ydCB7IGlzVXBkYXRlZEhhbmRsZUluZGV4IH0gZnJvbSAnLi4vdXRpbHMvbGluZSc7XG5pbXBvcnQgeyBnZXRIaXRQb2ludEluZGV4IH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vbGluZSc7XG5pbXBvcnQgeyBEZWZhdWx0RHJhd0FjdGl2ZVN0eWxlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVEYXRhIHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBsaW5lUG9pbnRzOiBQb2ludFtdO1xufVxuXG5leHBvcnQgY2xhc3MgTGluZUFjdGl2ZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIEFjdGl2ZURhdGE+IHtcbiAgICBvbmx5U2VsZWN0ZWRDdXJyZW50TGluZSA9IGZhbHNlO1xuXG4gICAgY2FuRHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBTVkdHRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLm9ubHlTZWxlY3RlZEN1cnJlbnRMaW5lID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDE7XG4gICAgICAgIGlmICh0aGlzLm9ubHlTZWxlY3RlZEN1cnJlbnRMaW5lKSB7XG4gICAgICAgICAgICBhY3RpdmVHLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgYWN0aXZlRy5jbGFzc0xpc3QuYWRkKCdsaW5lLWhhbmRsZScpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGxldCB1cGRhdGVQb2ludHMgPSBbLi4ucG9pbnRzXTtcbiAgICAgICAgICAgIGxldCBlbGJvd05leHRSZW5kZXJQb2ludHM6IFBvaW50W10gPSBbXTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb2ludHMgPSBwb2ludHMuc2xpY2UoMCwgMSkuY29uY2F0KHBvaW50cy5zbGljZSgtMSkpO1xuICAgICAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyA9IGdldE5leHRSZW5kZXJQb2ludHModGhpcy5ib2FyZCwgZWxlbWVudCwgZGF0YS5saW5lUG9pbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVIYW5kbGUgPSBkcmF3UHJpbWFyeUhhbmRsZSh0aGlzLmJvYXJkLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZCh1cGRhdGVIYW5kbGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBtaWRkbGVQb2ludHMgPSBnZXRNaWRkbGVQb2ludHModGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaWRkbGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBtaWRkbGVQb2ludHNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cgJiYgZWxib3dOZXh0UmVuZGVyUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSBnZXRIaXRQb2ludEluZGV4KG1pZGRsZVBvaW50cywgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNVcGRhdGVIYW5kbGVJbmRleCA9IGlzVXBkYXRlZEhhbmRsZUluZGV4KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLi4ucG9pbnRzXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGJvd05leHRSZW5kZXJQb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNVcGRhdGVIYW5kbGVJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZUhhbmRsZSA9IGRyYXdQcmltYXJ5SGFuZGxlKHRoaXMuYm9hcmQsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKHVwZGF0ZUhhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2lyY2xlID0gZHJhd0ZpbGxQcmltYXJ5SGFuZGxlKHRoaXMuYm9hcmQsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IHRoaXMuYm9hcmQuZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZVJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgIGxldCBvcGFjaXR5ID0gJzAuNSc7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVJlY3RhbmdsZS5oZWlnaHQgPT09IDAgfHwgYWN0aXZlUmVjdGFuZ2xlLndpZHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSAnMC44JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc3Ryb2tlRyA9IGRyYXdSZWN0YW5nbGUodGhpcy5ib2FyZCwgYWN0aXZlUmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHREcmF3QWN0aXZlU3R5bGUuc2VsZWN0aW9uU3Ryb2tlV2lkdGhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdHJva2VHLnN0eWxlLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgICAgICAgICAgICAgIGFjdGl2ZUcuYXBwZW5kQ2hpbGQoc3Ryb2tlRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGl2ZUc7XG4gICAgfVxuXG4gICAgbmVlZFVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgIGNvbnN0IG9ubHlTZWxlY3RlZEN1cnJlbnRMaW5lID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDE7XG4gICAgICAgIHJldHVybiBvbmx5U2VsZWN0ZWRDdXJyZW50TGluZSAhPT0gdGhpcy5vbmx5U2VsZWN0ZWRDdXJyZW50TGluZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -43,4 +43,4 @@ export class LineAutoCompleteGenerator extends Generator {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hdXRvLWNvbXBsZXRlLmdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2dlbmVyYXRvcnMvbGluZS1hdXRvLWNvbXBsZXRlLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWpILE9BQU8sRUFBNEIsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUYsTUFBTSxPQUFPLHlCQUF1RSxTQUFRLFNBQXNDO2FBQ3ZILFFBQUcsR0FBRyw4QkFBOEIsQUFBakMsQ0FBa0M7SUFLNUMsWUFBbUIsS0FBaUI7UUFDaEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBREUsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUZwQyxpQkFBWSxHQUF1QixJQUFJLENBQUM7SUFJeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUEwQixFQUFFLElBQThCO1FBQzlELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkYsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFVLEVBQUUsSUFBOEI7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUMvQixNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUU7Z0JBQzlGLE1BQU0sRUFBRSxNQUFNO2dCQUNkLElBQUksRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLDBCQUEwQixDQUFDO2dCQUMxRCxTQUFTLEVBQUUsT0FBTzthQUNyQixDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHVCQUF1QixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxZQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDbkQsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUmdiYVRvSEVYLCBjcmVhdGVHLCBkcmF3Q2lyY2xlLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBpc1NlbGVjdGlvbk1vdmluZyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnksIFBsYWl0U2hhcGVFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBY3RpdmVHZW5lcmF0b3JFeHRyYURhdGEsIEdlbmVyYXRvciwgUFJJTUFSWV9DT0xPUiB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0QXV0b0NvbXBsZXRlUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTElORV9BVVRPX0NPTVBMRVRFX0RJQU1FVEVSLCBMSU5FX0FVVE9fQ09NUExFVEVfT1BBQ0lUWSB9IGZyb20gJy4uL2NvbnN0YW50cy9saW5lJztcblxuZXhwb3J0IGNsYXNzIExpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3I8VCBleHRlbmRzIFBsYWl0U2hhcGVFbGVtZW50ID0gUGxhaXRHZW9tZXRyeT4gZXh0ZW5kcyBHZW5lcmF0b3I8VCwgQWN0aXZlR2VuZXJhdG9yRXh0cmFEYXRhPiB7XG4gICAgc3RhdGljIGtleSA9ICdsaW5lLWF1dG8tY29tcGxldGUtZ2VuZXJhdG9yJztcblxuICAgIGF1dG9Db21wbGV0ZUchOiBTVkdHRWxlbWVudDtcbiAgICBob3ZlckVsZW1lbnQ6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgc3VwZXIoYm9hcmQpO1xuICAgIH1cblxuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQsIGRhdGE6IEFjdGl2ZUdlbmVyYXRvckV4dHJhRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgaWYgKGRhdGEuc2VsZWN0ZWQgJiYgc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgIWlzU2VsZWN0aW9uTW92aW5nKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXcoZWxlbWVudDogVCwgZGF0YTogQWN0aXZlR2VuZXJhdG9yRXh0cmFEYXRhKTogU1ZHR0VsZW1lbnQge1xuICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IG1pZGRsZVBvaW50cyA9IGdldEF1dG9Db21wbGV0ZVBvaW50cyhlbGVtZW50KTtcbiAgICAgICAgbWlkZGxlUG9pbnRzLmZvckVhY2goKHBvaW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2lyY2xlID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLCBwb2ludCwgTElORV9BVVRPX0NPTVBMRVRFX0RJQU1FVEVSLCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgZmlsbDogUmdiYVRvSEVYKFBSSU1BUllfQ09MT1IsIExJTkVfQVVUT19DT01QTEVURV9PUEFDSVRZKSxcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2lyY2xlLmNsYXNzTGlzdC5hZGQoYGxpbmUtYXV0by1jb21wbGV0ZS0ke2luZGV4fWApO1xuICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVHLmFwcGVuZENoaWxkKGNpcmNsZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGVHO1xuICAgIH1cblxuICAgIHJlbW92ZUF1dG9Db21wbGV0ZUcoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmhvdmVyRWxlbWVudCA9IHRoaXMuYXV0b0NvbXBsZXRlRy5xdWVyeVNlbGVjdG9yKGAubGluZS1hdXRvLWNvbXBsZXRlLSR7aW5kZXh9YCk7XG4gICAgICAgIHRoaXMuaG92ZXJFbGVtZW50IS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgfVxuXG4gICAgcmVjb3ZlckF1dG9Db21wbGV0ZUcoKSB7XG4gICAgICAgIGlmICh0aGlzLmhvdmVyRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5ob3ZlckVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgIHRoaXMuaG92ZXJFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TextGenerator } from './text.generator';
|
|
2
|
+
import { isMultipleTextGeometry } from '../utils';
|
|
3
|
+
export class SingleTextGenerator extends TextGenerator {
|
|
4
|
+
get textManage() {
|
|
5
|
+
return this.textManages[0];
|
|
6
|
+
}
|
|
7
|
+
constructor(board, element, text, viewContainerRef, options) {
|
|
8
|
+
super(board, element, [{ key: element.id, text: text, textHeight: element.textHeight }], viewContainerRef, options);
|
|
9
|
+
}
|
|
10
|
+
update(element, previousText, currentText, elementG) {
|
|
11
|
+
if (!isMultipleTextGeometry(element)) {
|
|
12
|
+
super.update(element, [{ text: previousText, key: element.id, textHeight: element.textHeight }], [{ text: currentText, key: element.id, textHeight: element.textHeight }], elementG);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXRleHQuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9zaW5nbGUtdGV4dC5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFzQixhQUFhLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxELE1BQU0sT0FBTyxtQkFBNEQsU0FBUSxhQUFnQjtJQUM3RixJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQ0ksS0FBaUIsRUFDakIsT0FBVSxFQUNWLElBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxPQUFnQztRQUVoQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEgsQ0FBQztJQVNELE1BQU0sQ0FDRixPQUFVLEVBQ1YsWUFBcUQsRUFDckQsV0FBb0QsRUFDcEQsUUFBb0I7UUFFcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFFLE9BQTBDLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLEtBQUssQ0FBQyxNQUFNLENBQ1IsT0FBTyxFQUNQLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBZ0MsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQzdGLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBK0IsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQzVGLFFBQVEsQ0FDWCxDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBhcmFncmFwaEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBQbGFpdENvbW1vbkdlb21ldHJ5LCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdTaGFwZVRleHQsIFRleHRHZW5lcmF0b3IsIFRleHRHZW5lcmF0b3JPcHRpb25zIH0gZnJvbSAnLi90ZXh0LmdlbmVyYXRvcic7XG5pbXBvcnQgeyBpc011bHRpcGxlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgU2luZ2xlVGV4dEdlbmVyYXRvcjxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRHZW9tZXRyeT4gZXh0ZW5kcyBUZXh0R2VuZXJhdG9yPFQ+IHtcbiAgICBnZXQgdGV4dE1hbmFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dE1hbmFnZXNbMF07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgICAgICBlbGVtZW50OiBULFxuICAgICAgICB0ZXh0OiBQYXJhZ3JhcGhFbGVtZW50LFxuICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBvcHRpb25zOiBUZXh0R2VuZXJhdG9yT3B0aW9uczxUPlxuICAgICkge1xuICAgICAgICBzdXBlcihib2FyZCwgZWxlbWVudCwgW3sga2V5OiBlbGVtZW50LmlkLCB0ZXh0OiB0ZXh0LCB0ZXh0SGVpZ2h0OiBlbGVtZW50LnRleHRIZWlnaHQgfV0sIHZpZXdDb250YWluZXJSZWYsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHVwZGF0ZShcbiAgICAgICAgZWxlbWVudDogVCxcbiAgICAgICAgcHJldmlvdXNEcmF3U2hhcGVUZXh0czogUGxhaXREcmF3U2hhcGVUZXh0W10sXG4gICAgICAgIGN1cnJlbnREcmF3U2hhcGVUZXh0czogUGxhaXREcmF3U2hhcGVUZXh0W10sXG4gICAgICAgIGVsZW1lbnRHOiBTVkdFbGVtZW50XG4gICAgKTogdm9pZDtcbiAgICB1cGRhdGUoZWxlbWVudDogVCwgcHJldmlvdXNUZXh0OiBQYXJhZ3JhcGhFbGVtZW50LCBjdXJyZW50VGV4dDogUGFyYWdyYXBoRWxlbWVudCwgZWxlbWVudEc6IFNWR0VsZW1lbnQpOiB2b2lkO1xuICAgIHVwZGF0ZShcbiAgICAgICAgZWxlbWVudDogVCxcbiAgICAgICAgcHJldmlvdXNUZXh0OiBQYXJhZ3JhcGhFbGVtZW50IHwgUGxhaXREcmF3U2hhcGVUZXh0W10sXG4gICAgICAgIGN1cnJlbnRUZXh0OiBQYXJhZ3JhcGhFbGVtZW50IHwgUGxhaXREcmF3U2hhcGVUZXh0W10sXG4gICAgICAgIGVsZW1lbnRHOiBTVkdFbGVtZW50XG4gICAgKSB7XG4gICAgICAgIGlmICghaXNNdWx0aXBsZVRleHRHZW9tZXRyeSgoZWxlbWVudCBhcyB1bmtub3duKSBhcyBQbGFpdENvbW1vbkdlb21ldHJ5KSkge1xuICAgICAgICAgICAgc3VwZXIudXBkYXRlKFxuICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgW3sgdGV4dDogcHJldmlvdXNUZXh0IGFzIFBhcmFncmFwaEVsZW1lbnQsIGtleTogZWxlbWVudC5pZCwgdGV4dEhlaWdodDogZWxlbWVudC50ZXh0SGVpZ2h0IH1dLFxuICAgICAgICAgICAgICAgIFt7IHRleHQ6IGN1cnJlbnRUZXh0IGFzIFBhcmFncmFwaEVsZW1lbnQsIGtleTogZWxlbWVudC5pZCwgdGV4dEhlaWdodDogZWxlbWVudC50ZXh0SGVpZ2h0IH1dLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRHXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TableSymbols } from '../interfaces';
|
|
2
|
+
import { Generator } from '@plait/common';
|
|
3
|
+
import { RectangleClient } from '@plait/core';
|
|
4
|
+
import { getEngine } from '../engines';
|
|
5
|
+
import { getDrawDefaultStrokeColor } from '../utils';
|
|
6
|
+
export class TableGenerator extends Generator {
|
|
7
|
+
canDraw(element, data) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
draw(element, data) {
|
|
11
|
+
const rectangle = RectangleClient.getRectangleByPoints(element.points);
|
|
12
|
+
return getEngine(TableSymbols.table).draw(this.board, rectangle, {
|
|
13
|
+
strokeWidth: 2,
|
|
14
|
+
stroke: getDrawDefaultStrokeColor(this.board.theme.themeColorMode),
|
|
15
|
+
}, {
|
|
16
|
+
element: element
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy90YWJsZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXJELE1BQU0sT0FBTyxjQUFvRCxTQUFRLFNBQXVCO0lBQzVGLE9BQU8sQ0FBQyxPQUFVLEVBQUUsSUFBZTtRQUMvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQVUsRUFBRSxJQUFlO1FBQzVCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTyxDQUFDLENBQUM7UUFDeEUsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDckMsSUFBSSxDQUFDLEtBQUssRUFDVixTQUFTLEVBQ1Q7WUFDSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7U0FDckUsRUFDRDtZQUNJLE9BQU8sRUFBRSxPQUFPO1NBQ25CLENBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlU3ltYm9scyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0VGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZURhdGEge31cblxuZXhwb3J0IGNsYXNzIFRhYmxlR2VuZXJhdG9yPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdFRhYmxlPiBleHRlbmRzIEdlbmVyYXRvcjxULCBUYWJsZURhdGE+IHtcbiAgICBjYW5EcmF3KGVsZW1lbnQ6IFQsIGRhdGE6IFRhYmxlRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IFQsIGRhdGE6IFRhYmxlRGF0YSkge1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICAgICAgcmV0dXJuIGdldEVuZ2luZShUYWJsZVN5bWJvbHMudGFibGUpLmRyYXcoXG4gICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgcmVjdGFuZ2xlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAgIHN0cm9rZTogZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvcih0aGlzLmJvYXJkLnRoZW1lLnRoZW1lQ29sb3JNb2RlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { ELEMENT_TO_TEXT_MANAGES, WithTextPluginKey } from '@plait/common';
|
|
2
|
+
import { RectangleClient } from '@plait/core';
|
|
3
|
+
import { TextManage } from '@plait/text';
|
|
4
|
+
import { getEngine } from '../engines';
|
|
5
|
+
import { getTextRectangle, isMultipleTextGeometry } from '../utils';
|
|
6
|
+
export const KEY_TO_TEXT_MANAGE = new Map();
|
|
7
|
+
export const setTextManage = (key, textManage) => {
|
|
8
|
+
return KEY_TO_TEXT_MANAGE.set(key, textManage);
|
|
9
|
+
};
|
|
10
|
+
export const getTextManage = (key) => {
|
|
11
|
+
return KEY_TO_TEXT_MANAGE.get(key);
|
|
12
|
+
};
|
|
13
|
+
export const deleteTextManage = (key) => {
|
|
14
|
+
return KEY_TO_TEXT_MANAGE.delete(key);
|
|
15
|
+
};
|
|
16
|
+
export class TextGenerator {
|
|
17
|
+
get shape() {
|
|
18
|
+
return this.element.shape || this.element.type;
|
|
19
|
+
}
|
|
20
|
+
constructor(board, element, texts, viewContainerRef, options) {
|
|
21
|
+
this.board = board;
|
|
22
|
+
this.texts = texts;
|
|
23
|
+
this.element = element;
|
|
24
|
+
this.viewContainerRef = viewContainerRef;
|
|
25
|
+
this.options = options;
|
|
26
|
+
}
|
|
27
|
+
initialize() {
|
|
28
|
+
const textPlugins = (this.board.getPluginOptions(WithTextPluginKey) || {}).textPlugins;
|
|
29
|
+
this.textManages = this.texts.map(text => {
|
|
30
|
+
const textManage = this.createTextManage(text, textPlugins);
|
|
31
|
+
setTextManage(this.getTextKey(text), textManage);
|
|
32
|
+
return textManage;
|
|
33
|
+
});
|
|
34
|
+
ELEMENT_TO_TEXT_MANAGES.set(this.element, this.textManages);
|
|
35
|
+
}
|
|
36
|
+
getTextKey(text) {
|
|
37
|
+
if (isMultipleTextGeometry(this.element)) {
|
|
38
|
+
return `${this.element.id}-${text.key}`;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return text.key;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
draw(elementG) {
|
|
45
|
+
const centerPoint = RectangleClient.getCenterPoint(this.board.getRectangle(this.element));
|
|
46
|
+
this.texts.forEach(drawShapeText => {
|
|
47
|
+
const textManage = getTextManage(this.getTextKey(drawShapeText));
|
|
48
|
+
if (drawShapeText.text && textManage) {
|
|
49
|
+
textManage.draw(drawShapeText.text);
|
|
50
|
+
elementG.append(textManage.g);
|
|
51
|
+
(this.element.angle || this.element.angle === 0) && textManage.updateAngle(centerPoint, this.element.angle);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
update(element, previousDrawShapeTexts, currentDrawShapeTexts, elementG) {
|
|
56
|
+
this.element = element;
|
|
57
|
+
ELEMENT_TO_TEXT_MANAGES.set(this.element, this.textManages);
|
|
58
|
+
const centerPoint = RectangleClient.getCenterPoint(this.board.getRectangle(this.element));
|
|
59
|
+
const textPlugins = (this.board.getPluginOptions(WithTextPluginKey) || {}).textPlugins;
|
|
60
|
+
const removedTexts = previousDrawShapeTexts.filter(value => {
|
|
61
|
+
return !currentDrawShapeTexts.find(item => item.key === value.key);
|
|
62
|
+
});
|
|
63
|
+
if (removedTexts.length) {
|
|
64
|
+
removedTexts.forEach(item => {
|
|
65
|
+
const textManage = getTextManage(item.key);
|
|
66
|
+
const index = this.textManages.findIndex(value => value === textManage);
|
|
67
|
+
if (index > -1 && item.text && item.textHeight) {
|
|
68
|
+
this.textManages.splice(index, 1);
|
|
69
|
+
}
|
|
70
|
+
textManage?.destroy();
|
|
71
|
+
deleteTextManage(item.key);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
currentDrawShapeTexts.forEach(drawShapeText => {
|
|
75
|
+
if (drawShapeText.text) {
|
|
76
|
+
let textManage = getTextManage(this.getTextKey(drawShapeText));
|
|
77
|
+
if (!textManage) {
|
|
78
|
+
textManage = this.createTextManage(drawShapeText, textPlugins);
|
|
79
|
+
setTextManage(drawShapeText.key, textManage);
|
|
80
|
+
textManage.draw(drawShapeText.text);
|
|
81
|
+
elementG.append(textManage.g);
|
|
82
|
+
this.textManages.push(textManage);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
textManage.updateText(drawShapeText.text);
|
|
86
|
+
textManage.updateRectangle();
|
|
87
|
+
}
|
|
88
|
+
(this.element.angle || this.element.angle === 0) && textManage.updateAngle(centerPoint, this.element.angle);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
createTextManage(text, textPlugins) {
|
|
93
|
+
const textManage = new TextManage(this.board, this.viewContainerRef, {
|
|
94
|
+
getRectangle: () => {
|
|
95
|
+
return this.getRectangle(text);
|
|
96
|
+
},
|
|
97
|
+
onValueChangeHandle: (textManageRef) => {
|
|
98
|
+
return this.onValueChangeHandle(textManageRef, text);
|
|
99
|
+
},
|
|
100
|
+
getMaxWidth: () => {
|
|
101
|
+
return this.getMaxWidth(text);
|
|
102
|
+
},
|
|
103
|
+
getRenderRectangle: () => {
|
|
104
|
+
return this.options.getRenderRectangle ? this.options.getRenderRectangle(this.element, text) : this.getRectangle(text);
|
|
105
|
+
},
|
|
106
|
+
textPlugins
|
|
107
|
+
});
|
|
108
|
+
return textManage;
|
|
109
|
+
}
|
|
110
|
+
getRectangle(text) {
|
|
111
|
+
const getRectangle = getEngine(this.shape).getTextRectangle;
|
|
112
|
+
if (getRectangle) {
|
|
113
|
+
return getRectangle(this.element, text);
|
|
114
|
+
}
|
|
115
|
+
return getTextRectangle(this.element);
|
|
116
|
+
}
|
|
117
|
+
onValueChangeHandle(textManageRef, text) {
|
|
118
|
+
return this.options.onValueChangeHandle(this.element, textManageRef, text);
|
|
119
|
+
}
|
|
120
|
+
getMaxWidth(text) {
|
|
121
|
+
return this.options.getMaxWidth ? this.options.getMaxWidth() : this.getRectangle(text).width;
|
|
122
|
+
}
|
|
123
|
+
destroy() {
|
|
124
|
+
this.textManages.forEach(manage => {
|
|
125
|
+
manage.destroy();
|
|
126
|
+
});
|
|
127
|
+
this.textManages = [];
|
|
128
|
+
ELEMENT_TO_TEXT_MANAGES.delete(this.element);
|
|
129
|
+
this.texts.forEach(item => {
|
|
130
|
+
deleteTextManage(item.key);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUErQyxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0YsT0FBTyxFQUE2QixVQUFVLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBZ0JwRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBc0IsRUFBRSxFQUFFO0lBQ2pFLE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUN6QyxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQzVDLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxhQUFhO0lBYXRCLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDbkQsQ0FBQztJQUVELFlBQ0ksS0FBaUIsRUFDakIsT0FBVSxFQUNWLEtBQTJCLEVBQzNCLGdCQUFrQyxFQUNsQyxPQUFnQztRQUVoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVU7UUFDTixNQUFNLFdBQVcsR0FBRyxDQUFFLElBQUksQ0FBQyxLQUEyQixDQUFDLGdCQUFnQixDQUFrQixpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUMvSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDNUQsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDakQsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSCx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUF3QjtRQUMvQixJQUFJLHNCQUFzQixDQUFFLElBQUksQ0FBQyxPQUEwQyxDQUFDLEVBQUUsQ0FBQztZQUMzRSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3BCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQW9CO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDL0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNqRSxJQUFJLGFBQWEsQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ25DLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hILENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBVSxFQUFFLHNCQUE0QyxFQUFFLHFCQUEyQyxFQUFFLFFBQW9CO1FBQzlILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUUsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sV0FBVyxHQUFHLENBQUUsSUFBSSxDQUFDLEtBQTJCLENBQUMsZ0JBQWdCLENBQWtCLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQy9ILE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztnQkFDRCxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDZCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDL0QsYUFBYSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQzdDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7cUJBQU0sQ0FBQztvQkFDSixVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDMUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNqQyxDQUFDO2dCQUNELENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoSCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBd0IsRUFBRSxXQUFxQztRQUNwRixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNqRSxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsQ0FBQyxhQUE0QixFQUFFLEVBQUU7Z0JBQ2xELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELGtCQUFrQixFQUFFLEdBQUcsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0gsQ0FBQztZQUNELFdBQVc7U0FDZCxDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXdCO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFDL0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNmLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUE0QixFQUFFLElBQXdCO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXdCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsdUJBQXVCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTEVNRU5UX1RPX1RFWFRfTUFOQUdFUywgV2l0aFRleHRPcHRpb25zLCBXaXRoVGV4dFBsdWdpbktleSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQbGFpdE9wdGlvbnNCb2FyZCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgVGV4dFBsdWdpbiwgVGV4dE1hbmFnZVJlZiwgVGV4dE1hbmFnZSwgUGFyYWdyYXBoRWxlbWVudCB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgRHJhd1NoYXBlcywgRW5naW5lRXh0cmFEYXRhLCBQbGFpdENvbW1vbkdlb21ldHJ5LCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRUZXh0UmVjdGFuZ2xlLCBpc011bHRpcGxlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0RHJhd1NoYXBlVGV4dCBleHRlbmRzIEVuZ2luZUV4dHJhRGF0YSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdGV4dDogUGFyYWdyYXBoRWxlbWVudDtcbiAgICB0ZXh0SGVpZ2h0OiBudW1iZXI7XG4gICAgYm9hcmQ/OiBQbGFpdEJvYXJkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRHZW5lcmF0b3JPcHRpb25zPFQ+IHtcbiAgICBvblZhbHVlQ2hhbmdlSGFuZGxlOiAoZWxlbWVudDogVCwgdGV4dENoYW5nZVJlZjogVGV4dE1hbmFnZVJlZiwgdGV4dDogUGxhaXREcmF3U2hhcGVUZXh0KSA9PiB2b2lkO1xuICAgIGdldFJlbmRlclJlY3RhbmdsZT86IChlbGVtZW50OiBULCB0ZXh0OiBQbGFpdERyYXdTaGFwZVRleHQpID0+IFJlY3RhbmdsZUNsaWVudDtcbiAgICBnZXRNYXhXaWR0aD86ICgpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IEtFWV9UT19URVhUX01BTkFHRTogTWFwPHN0cmluZywgVGV4dE1hbmFnZT4gPSBuZXcgTWFwKCk7XG5cbmV4cG9ydCBjb25zdCBzZXRUZXh0TWFuYWdlID0gKGtleTogc3RyaW5nLCB0ZXh0TWFuYWdlOiBUZXh0TWFuYWdlKSA9PiB7XG4gICAgcmV0dXJuIEtFWV9UT19URVhUX01BTkFHRS5zZXQoa2V5LCB0ZXh0TWFuYWdlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0TWFuYWdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIEtFWV9UT19URVhUX01BTkFHRS5nZXQoa2V5KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVUZXh0TWFuYWdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIEtFWV9UT19URVhUX01BTkFHRS5kZWxldGUoa2V5KTtcbn07XG5cbmV4cG9ydCBjbGFzcyBUZXh0R2VuZXJhdG9yPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEdlb21ldHJ5PiB7XG4gICAgcHJvdGVjdGVkIGJvYXJkOiBQbGFpdEJvYXJkO1xuXG4gICAgcHJvdGVjdGVkIGVsZW1lbnQ6IFQ7XG5cbiAgICBwcm90ZWN0ZWQgdGV4dHM6IFBsYWl0RHJhd1NoYXBlVGV4dFtdO1xuXG4gICAgcHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBwcm90ZWN0ZWQgb3B0aW9uczogVGV4dEdlbmVyYXRvck9wdGlvbnM8VD47XG5cbiAgICBwdWJsaWMgdGV4dE1hbmFnZXMhOiBUZXh0TWFuYWdlW107XG5cbiAgICBnZXQgc2hhcGUoKTogRHJhd1NoYXBlcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuc2hhcGUgfHwgdGhpcy5lbGVtZW50LnR5cGU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgICAgICBlbGVtZW50OiBULFxuICAgICAgICB0ZXh0czogUGxhaXREcmF3U2hhcGVUZXh0W10sXG4gICAgICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIG9wdGlvbnM6IFRleHRHZW5lcmF0b3JPcHRpb25zPFQ+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuYm9hcmQgPSBib2FyZDtcbiAgICAgICAgdGhpcy50ZXh0cyA9IHRleHRzO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYgPSB2aWV3Q29udGFpbmVyUmVmO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIGNvbnN0IHRleHRQbHVnaW5zID0gKCh0aGlzLmJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhUZXh0T3B0aW9ucz4oV2l0aFRleHRQbHVnaW5LZXkpIHx8IHt9KS50ZXh0UGx1Z2lucztcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlcyA9IHRoaXMudGV4dHMubWFwKHRleHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGV4dE1hbmFnZSA9IHRoaXMuY3JlYXRlVGV4dE1hbmFnZSh0ZXh0LCB0ZXh0UGx1Z2lucyk7XG4gICAgICAgICAgICBzZXRUZXh0TWFuYWdlKHRoaXMuZ2V0VGV4dEtleSh0ZXh0KSwgdGV4dE1hbmFnZSk7XG4gICAgICAgICAgICByZXR1cm4gdGV4dE1hbmFnZTtcbiAgICAgICAgfSk7XG4gICAgICAgIEVMRU1FTlRfVE9fVEVYVF9NQU5BR0VTLnNldCh0aGlzLmVsZW1lbnQsIHRoaXMudGV4dE1hbmFnZXMpO1xuICAgIH1cblxuICAgIGdldFRleHRLZXkodGV4dDogUGxhaXREcmF3U2hhcGVUZXh0KSB7XG4gICAgICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KCh0aGlzLmVsZW1lbnQgYXMgdW5rbm93bikgYXMgUGxhaXRDb21tb25HZW9tZXRyeSkpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnQuaWR9LSR7dGV4dC5rZXl9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0LmtleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXcoZWxlbWVudEc6IFNWR0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQodGhpcy5ib2FyZC5nZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50KSEpO1xuICAgICAgICB0aGlzLnRleHRzLmZvckVhY2goZHJhd1NoYXBlVGV4dCA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZSh0aGlzLmdldFRleHRLZXkoZHJhd1NoYXBlVGV4dCkpO1xuICAgICAgICAgICAgaWYgKGRyYXdTaGFwZVRleHQudGV4dCAmJiB0ZXh0TWFuYWdlKSB7XG4gICAgICAgICAgICAgICAgdGV4dE1hbmFnZS5kcmF3KGRyYXdTaGFwZVRleHQudGV4dCk7XG4gICAgICAgICAgICAgICAgZWxlbWVudEcuYXBwZW5kKHRleHRNYW5hZ2UuZyk7XG4gICAgICAgICAgICAgICAgKHRoaXMuZWxlbWVudC5hbmdsZSB8fCB0aGlzLmVsZW1lbnQuYW5nbGUgPT09IDApICYmIHRleHRNYW5hZ2UudXBkYXRlQW5nbGUoY2VudGVyUG9pbnQsIHRoaXMuZWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZShlbGVtZW50OiBULCBwcmV2aW91c0RyYXdTaGFwZVRleHRzOiBQbGFpdERyYXdTaGFwZVRleHRbXSwgY3VycmVudERyYXdTaGFwZVRleHRzOiBQbGFpdERyYXdTaGFwZVRleHRbXSwgZWxlbWVudEc6IFNWR0VsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgRUxFTUVOVF9UT19URVhUX01BTkFHRVMuc2V0KHRoaXMuZWxlbWVudCwgdGhpcy50ZXh0TWFuYWdlcyk7XG4gICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHRoaXMuYm9hcmQuZ2V0UmVjdGFuZ2xlKHRoaXMuZWxlbWVudCkhKTtcbiAgICAgICAgY29uc3QgdGV4dFBsdWdpbnMgPSAoKHRoaXMuYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFRleHRPcHRpb25zPihXaXRoVGV4dFBsdWdpbktleSkgfHwge30pLnRleHRQbHVnaW5zO1xuICAgICAgICBjb25zdCByZW1vdmVkVGV4dHMgPSBwcmV2aW91c0RyYXdTaGFwZVRleHRzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWN1cnJlbnREcmF3U2hhcGVUZXh0cy5maW5kKGl0ZW0gPT4gaXRlbS5rZXkgPT09IHZhbHVlLmtleSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocmVtb3ZlZFRleHRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3ZlZFRleHRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dE1hbmFnZSA9IGdldFRleHRNYW5hZ2UoaXRlbS5rZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy50ZXh0TWFuYWdlcy5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUgPT09IHRleHRNYW5hZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xICYmIGl0ZW0udGV4dCAmJiBpdGVtLnRleHRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0TWFuYWdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlPy5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlVGV4dE1hbmFnZShpdGVtLmtleSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50RHJhd1NoYXBlVGV4dHMuZm9yRWFjaChkcmF3U2hhcGVUZXh0ID0+IHtcbiAgICAgICAgICAgIGlmIChkcmF3U2hhcGVUZXh0LnRleHQpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE1hbmFnZSA9IGdldFRleHRNYW5hZ2UodGhpcy5nZXRUZXh0S2V5KGRyYXdTaGFwZVRleHQpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRleHRNYW5hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZSA9IHRoaXMuY3JlYXRlVGV4dE1hbmFnZShkcmF3U2hhcGVUZXh0LCB0ZXh0UGx1Z2lucyk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRleHRNYW5hZ2UoZHJhd1NoYXBlVGV4dC5rZXksIHRleHRNYW5hZ2UpO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlLmRyYXcoZHJhd1NoYXBlVGV4dC50ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEcuYXBwZW5kKHRleHRNYW5hZ2UuZyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dE1hbmFnZXMucHVzaCh0ZXh0TWFuYWdlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlLnVwZGF0ZVRleHQoZHJhd1NoYXBlVGV4dC50ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZS51cGRhdGVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKHRoaXMuZWxlbWVudC5hbmdsZSB8fCB0aGlzLmVsZW1lbnQuYW5nbGUgPT09IDApICYmIHRleHRNYW5hZ2UudXBkYXRlQW5nbGUoY2VudGVyUG9pbnQsIHRoaXMuZWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVGV4dE1hbmFnZSh0ZXh0OiBQbGFpdERyYXdTaGFwZVRleHQsIHRleHRQbHVnaW5zOiBUZXh0UGx1Z2luW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dE1hbmFnZSA9IG5ldyBUZXh0TWFuYWdlKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZiwge1xuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVjdGFuZ2xlKHRleHQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2VIYW5kbGU6ICh0ZXh0TWFuYWdlUmVmOiBUZXh0TWFuYWdlUmVmKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25WYWx1ZUNoYW5nZUhhbmRsZSh0ZXh0TWFuYWdlUmVmLCB0ZXh0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRNYXhXaWR0aDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1heFdpZHRoKHRleHQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlbmRlclJlY3RhbmdsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0UmVuZGVyUmVjdGFuZ2xlID8gdGhpcy5vcHRpb25zLmdldFJlbmRlclJlY3RhbmdsZSh0aGlzLmVsZW1lbnQsIHRleHQpIDogdGhpcy5nZXRSZWN0YW5nbGUodGV4dCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dFBsdWdpbnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0ZXh0TWFuYWdlO1xuICAgIH1cblxuICAgIGdldFJlY3RhbmdsZSh0ZXh0OiBQbGFpdERyYXdTaGFwZVRleHQpIHtcbiAgICAgICAgY29uc3QgZ2V0UmVjdGFuZ2xlID0gZ2V0RW5naW5lPFQ+KHRoaXMuc2hhcGUpLmdldFRleHRSZWN0YW5nbGU7XG4gICAgICAgIGlmIChnZXRSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50LCB0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGV4dFJlY3RhbmdsZSh0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2VIYW5kbGUodGV4dE1hbmFnZVJlZjogVGV4dE1hbmFnZVJlZiwgdGV4dDogUGxhaXREcmF3U2hhcGVUZXh0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMub25WYWx1ZUNoYW5nZUhhbmRsZSh0aGlzLmVsZW1lbnQsIHRleHRNYW5hZ2VSZWYsIHRleHQpO1xuICAgIH1cblxuICAgIGdldE1heFdpZHRoKHRleHQ6IFBsYWl0RHJhd1NoYXBlVGV4dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldE1heFdpZHRoID8gdGhpcy5vcHRpb25zLmdldE1heFdpZHRoKCkgOiB0aGlzLmdldFJlY3RhbmdsZSh0ZXh0KS53aWR0aDtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2VzLmZvckVhY2gobWFuYWdlID0+IHtcbiAgICAgICAgICAgIG1hbmFnZS5kZXN0cm95KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2VzID0gW107XG4gICAgICAgIEVMRU1FTlRfVE9fVEVYVF9NQU5BR0VTLmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRleHRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBkZWxldGVUZXh0TWFuYWdlKGl0ZW0ua2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,23 +1,16 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
1
|
import { PlaitBoard, isSelectionMoving, getSelectedElements, ACTIVE_STROKE_WIDTH, RectangleClient } from '@plait/core';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
2
|
import { GeometryShapeGenerator } from './generators/geometry-shape.generator';
|
|
5
|
-
import { TextManage } from '@plait/text';
|
|
6
3
|
import { DrawTransforms } from './transforms';
|
|
7
|
-
import {
|
|
8
|
-
import { ActiveGenerator, WithTextPluginKey, CommonPluginElement, canResize } from '@plait/common';
|
|
9
|
-
import { GeometryThreshold } from './constants/geometry';
|
|
10
|
-
import { getEngine } from './engines';
|
|
4
|
+
import { ActiveGenerator, CommonElementFlavour, canResize } from '@plait/common';
|
|
11
5
|
import { LineAutoCompleteGenerator } from './generators/line-auto-complete.generator';
|
|
12
|
-
import { memorizeLatestText } from './utils';
|
|
13
|
-
import
|
|
14
|
-
|
|
6
|
+
import { getTextRectangle, isGeometryIncludeText, isMultipleTextGeometry, memorizeLatestText } from './utils';
|
|
7
|
+
import { TextGenerator } from './generators/text.generator';
|
|
8
|
+
import { SingleTextGenerator } from './generators/single-text.generator';
|
|
9
|
+
import { GeometryThreshold } from './constants';
|
|
10
|
+
import { getEngine } from './engines';
|
|
11
|
+
export class GeometryComponent extends CommonElementFlavour {
|
|
15
12
|
constructor() {
|
|
16
|
-
super(
|
|
17
|
-
this.destroy$ = new Subject();
|
|
18
|
-
}
|
|
19
|
-
get textManage() {
|
|
20
|
-
return this.getTextManages()[0];
|
|
13
|
+
super();
|
|
21
14
|
}
|
|
22
15
|
initializeGenerator() {
|
|
23
16
|
this.activeGenerator = new ActiveGenerator(this.board, {
|
|
@@ -48,22 +41,25 @@ export class GeometryComponent extends CommonPluginElement {
|
|
|
48
41
|
});
|
|
49
42
|
this.lineAutoCompleteGenerator = new LineAutoCompleteGenerator(this.board);
|
|
50
43
|
this.shapeGenerator = new GeometryShapeGenerator(this.board);
|
|
51
|
-
this.
|
|
44
|
+
if (isGeometryIncludeText(this.element)) {
|
|
45
|
+
this.initializeTextManage();
|
|
46
|
+
}
|
|
52
47
|
this.getRef().addGenerator(LineAutoCompleteGenerator.key, this.lineAutoCompleteGenerator);
|
|
53
48
|
this.getRef().addGenerator(ActiveGenerator.key, this.activeGenerator);
|
|
54
49
|
}
|
|
55
|
-
|
|
56
|
-
super.
|
|
50
|
+
initialize() {
|
|
51
|
+
super.initialize();
|
|
57
52
|
this.initializeGenerator();
|
|
58
53
|
this.shapeGenerator.processDrawing(this.element, this.getElementG());
|
|
59
|
-
this.activeGenerator.processDrawing(this.element, PlaitBoard.getElementActiveHost(this.board), {
|
|
54
|
+
this.activeGenerator.processDrawing(this.element, PlaitBoard.getElementActiveHost(this.board), {
|
|
55
|
+
selected: this.selected
|
|
56
|
+
});
|
|
60
57
|
this.lineAutoCompleteGenerator.processDrawing(this.element, PlaitBoard.getElementActiveHost(this.board), {
|
|
61
58
|
selected: this.selected
|
|
62
59
|
});
|
|
63
|
-
this.
|
|
60
|
+
this.textGenerator && this.textGenerator.draw(this.getElementG());
|
|
64
61
|
}
|
|
65
62
|
onContextChanged(value, previous) {
|
|
66
|
-
this.initializeWeakMap();
|
|
67
63
|
const isChangeTheme = this.board.operations.find(op => op.type === 'set_theme');
|
|
68
64
|
if (value.element !== previous.element || isChangeTheme) {
|
|
69
65
|
this.shapeGenerator.processDrawing(this.element, this.getElementG());
|
|
@@ -71,7 +67,7 @@ export class GeometryComponent extends CommonPluginElement {
|
|
|
71
67
|
this.lineAutoCompleteGenerator.processDrawing(this.element, PlaitBoard.getElementActiveHost(this.board), {
|
|
72
68
|
selected: this.selected
|
|
73
69
|
});
|
|
74
|
-
this.updateText();
|
|
70
|
+
this.textGenerator && this.updateText(previous.element, value.element);
|
|
75
71
|
}
|
|
76
72
|
else {
|
|
77
73
|
const hasSameSelected = value.selected === previous.selected;
|
|
@@ -84,69 +80,60 @@ export class GeometryComponent extends CommonPluginElement {
|
|
|
84
80
|
}
|
|
85
81
|
}
|
|
86
82
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.textManage.updateText(this.element.text);
|
|
95
|
-
this.textManage.updateRectangle();
|
|
96
|
-
const centerPoint = RectangleClient.getCenterPoint(this.board.getRectangle(this.element));
|
|
97
|
-
this.textManage.updateAngle(centerPoint, this.element.angle);
|
|
83
|
+
updateText(previousElement, currentElement) {
|
|
84
|
+
if (isMultipleTextGeometry(this.element)) {
|
|
85
|
+
this.textGenerator.update(this.element, previousElement.texts, currentElement.texts, this.getElementG());
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.textGenerator.update(this.element, previousElement.text, currentElement.text, this.getElementG());
|
|
89
|
+
}
|
|
98
90
|
}
|
|
99
91
|
initializeTextManage() {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const height = textManageRef.height / this.board.viewport.zoom;
|
|
111
|
-
const width = textManageRef.width / this.board.viewport.zoom;
|
|
112
|
-
if (textManageRef.newValue) {
|
|
113
|
-
DrawTransforms.setText(this.board, this.element, textManageRef.newValue, width, height);
|
|
92
|
+
const onTextValueChangeHandle = (element, textManageRef, text) => {
|
|
93
|
+
const height = textManageRef.height / this.board.viewport.zoom;
|
|
94
|
+
const width = textManageRef.width / this.board.viewport.zoom;
|
|
95
|
+
if (textManageRef.newValue) {
|
|
96
|
+
if (isMultipleTextGeometry(element)) {
|
|
97
|
+
DrawTransforms.setDrawShapeText(this.board, element, {
|
|
98
|
+
key: text.key,
|
|
99
|
+
text: textManageRef.newValue,
|
|
100
|
+
textHeight: height
|
|
101
|
+
});
|
|
114
102
|
}
|
|
115
103
|
else {
|
|
116
|
-
DrawTransforms.
|
|
104
|
+
DrawTransforms.setText(this.board, element, textManageRef.newValue, width, height);
|
|
117
105
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
DrawTransforms.setTextSize(this.board, element, width, height);
|
|
109
|
+
}
|
|
110
|
+
textManageRef.operations && memorizeLatestText(element, textManageRef.operations);
|
|
111
|
+
};
|
|
112
|
+
if (isMultipleTextGeometry(this.element)) {
|
|
113
|
+
this.textGenerator = new TextGenerator(this.board, this.element, this.element.texts, PlaitBoard.getViewContainerRef(this.board), {
|
|
114
|
+
onValueChangeHandle: onTextValueChangeHandle
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.textGenerator = new SingleTextGenerator(this.board, this.element, this.element.text, PlaitBoard.getViewContainerRef(this.board), {
|
|
119
|
+
onValueChangeHandle: onTextValueChangeHandle,
|
|
120
|
+
getMaxWidth: () => {
|
|
121
|
+
let width = getTextRectangle(this.element).width;
|
|
122
|
+
const getRectangle = getEngine(this.element.shape).getTextRectangle;
|
|
123
|
+
if (getRectangle) {
|
|
124
|
+
width = getRectangle(this.element).width;
|
|
125
|
+
}
|
|
126
|
+
return this.element?.autoSize ? GeometryThreshold.defaultTextMaxWidth : width;
|
|
125
127
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
});
|
|
130
|
-
this.initializeTextManages([manage]);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
this.textGenerator.initialize();
|
|
131
131
|
}
|
|
132
|
-
|
|
133
|
-
super.
|
|
134
|
-
this.destroy$.next();
|
|
135
|
-
this.destroy$.complete();
|
|
132
|
+
destroy() {
|
|
133
|
+
super.destroy();
|
|
136
134
|
this.activeGenerator.destroy();
|
|
137
135
|
this.lineAutoCompleteGenerator.destroy();
|
|
138
|
-
this.
|
|
136
|
+
this.textGenerator?.destroy();
|
|
139
137
|
}
|
|
140
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: GeometryComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
141
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: GeometryComponent, isStandalone: true, selector: "plait-draw-geometry", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
142
138
|
}
|
|
143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: GeometryComponent, decorators: [{
|
|
144
|
-
type: Component,
|
|
145
|
-
args: [{
|
|
146
|
-
selector: 'plait-draw-geometry',
|
|
147
|
-
template: ``,
|
|
148
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
149
|
-
standalone: true
|
|
150
|
-
}]
|
|
151
|
-
}] });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VvbWV0cnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFDSCxVQUFVLEVBR1YsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUVuQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBbUIsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQVE3QyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQThDO0lBTnJGOztRQVFJLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBd0lsQztJQWhJRyxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNsRSxjQUFjLEVBQUUsR0FBRyxFQUFFO2dCQUNqQixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekQsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2xFLE9BQU8sbUJBQW1CLENBQUM7Z0JBQy9CLENBQUM7cUJBQU0sQ0FBQztvQkFDSixPQUFPLG1CQUFtQixDQUFDO2dCQUMvQixDQUFDO1lBQ0wsQ0FBQztZQUNELGdCQUFnQixFQUFFLEdBQUcsRUFBRTtnQkFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNsRSxPQUFPLENBQUMsQ0FBQztnQkFDYixDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxHQUFHLENBQUM7Z0JBQ2YsQ0FBQztZQUNMLENBQUM7WUFDRCxZQUFZLEVBQUUsQ0FBQyxPQUFzQixFQUFFLEVBQUU7Z0JBQ3JDLE9BQU8sZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBQ0QsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUgsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckcsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0JBQWdCLENBQ1osS0FBMkQsRUFDM0QsUUFBOEQ7UUFFOUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztRQUNoRixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM1SCxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDckcsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQzFCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUM3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO1lBQ25ILElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzVILElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNyRyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7aUJBQzFCLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxDQUFFLElBQUksQ0FBQyxLQUEyQixDQUFDLGdCQUFnQixDQUFrQixpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUUzSCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM3RCxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUNmLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDO2dCQUNwRSxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNmLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztnQkFDRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsQ0FBQyxhQUE0QixFQUFFLEVBQUU7Z0JBQ2xELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUMvRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDN0QsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3pCLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RixDQUFDO3FCQUFNLENBQUM7b0JBQ0osY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RSxDQUFDO2dCQUNELGFBQWEsQ0FBQyxVQUFVLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0YsQ0FBQztZQUNELFdBQVcsRUFBRSxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDakQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3BFLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2YsS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUM3QyxDQUFDO2dCQUNELE9BQVEsSUFBSSxDQUFDLE9BQXFCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2pHLENBQUM7WUFDRCxXQUFXLEVBQUUsT0FBTztTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQXpJUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixzR0FKaEIsRUFBRTs7MkZBSUgsaUJBQWlCO2tCQU43QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgUmVjdGFuZ2xlQ2xpZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9nZW9tZXRyeS1zaGFwZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgVGV4dE1hbmFnZSwgVGV4dE1hbmFnZVJlZiB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGdldFRleHRSZWN0YW5nbGUgfSBmcm9tICcuL3V0aWxzL2dlb21ldHJ5JztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvciwgV2l0aFRleHRQbHVnaW5LZXksIFdpdGhUZXh0T3B0aW9ucywgQ29tbW9uUGx1Z2luRWxlbWVudCwgY2FuUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBHZW9tZXRyeVRocmVzaG9sZCB9IGZyb20gJy4vY29uc3RhbnRzL2dlb21ldHJ5JztcbmltcG9ydCB7IFBsYWl0VGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuL2VuZ2luZXMnO1xuaW1wb3J0IHsgTGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9saW5lLWF1dG8tY29tcGxldGUuZ2VuZXJhdG9yJztcbmltcG9ydCB7IG1lbW9yaXplTGF0ZXN0VGV4dCB9IGZyb20gJy4vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LWRyYXctZ2VvbWV0cnknLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5Q29tcG9uZW50IGV4dGVuZHMgQ29tbW9uUGx1Z2luRWxlbWVudDxQbGFpdEdlb21ldHJ5LCBQbGFpdEJvYXJkPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ29udGV4dENoYW5nZWQ8UGxhaXRHZW9tZXRyeSwgUGxhaXRCb2FyZD4ge1xuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGFjdGl2ZUdlbmVyYXRvciE6IEFjdGl2ZUdlbmVyYXRvcjxQbGFpdEdlb21ldHJ5PjtcblxuICAgIGxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IhOiBMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yO1xuXG4gICAgc2hhcGVHZW5lcmF0b3IhOiBHZW9tZXRyeVNoYXBlR2VuZXJhdG9yO1xuXG4gICAgZ2V0IHRleHRNYW5hZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRleHRNYW5hZ2VzKClbMF07XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUdlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IgPSBuZXcgQWN0aXZlR2VuZXJhdG9yPFBsYWl0R2VvbWV0cnk+KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGdldFN0cm9rZVdpZHRoOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUNUSVZFX1NUUk9LRV9XSURUSDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUNUSVZFX1NUUk9LRV9XSURUSDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U3Ryb2tlT3BhY2l0eTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYW5SZXNpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciA9IG5ldyBMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yID0gbmV3IEdlb21ldHJ5U2hhcGVHZW5lcmF0b3IodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKTtcbiAgICAgICAgdGhpcy5nZXRSZWYoKS5hZGRHZW5lcmF0b3IoTGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5rZXksIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcik7XG4gICAgICAgIHRoaXMuZ2V0UmVmKCkuYWRkR2VuZXJhdG9yKEFjdGl2ZUdlbmVyYXRvci5rZXksIHRoaXMuYWN0aXZlR2VuZXJhdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplR2VuZXJhdG9yKCk7XG4gICAgICAgIHRoaXMuc2hhcGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYXdUZXh0KCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlZChcbiAgICAgICAgdmFsdWU6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRHZW9tZXRyeSwgUGxhaXRCb2FyZD4sXG4gICAgICAgIHByZXZpb3VzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQ+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVdlYWtNYXAoKTtcbiAgICAgICAgY29uc3QgaXNDaGFuZ2VUaGVtZSA9IHRoaXMuYm9hcmQub3BlcmF0aW9ucy5maW5kKG9wID0+IG9wLnR5cGUgPT09ICdzZXRfdGhlbWUnKTtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgaXNDaGFuZ2VUaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIHRoaXMuZ2V0RWxlbWVudEcoKSk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lSGFuZGxlU3RhdGUgPSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5vcHRpb25zLmhhc1Jlc2l6ZUhhbmRsZSgpID09PSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5oYXNSZXNpemVIYW5kbGU7XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVTZWxlY3RlZCB8fCAhaGFzU2FtZUhhbmRsZVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdUZXh0KCkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UuZHJhdyh0aGlzLmVsZW1lbnQudGV4dCk7XG4gICAgICAgIHRoaXMuZ2V0RWxlbWVudEcoKS5hcHBlbmQodGhpcy50ZXh0TWFuYWdlLmcpO1xuICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludCh0aGlzLmJvYXJkLmdldFJlY3RhbmdsZSh0aGlzLmVsZW1lbnQpISk7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS51cGRhdGVBbmdsZShjZW50ZXJQb2ludCwgdGhpcy5lbGVtZW50LmFuZ2xlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUZXh0KCkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UudXBkYXRlVGV4dCh0aGlzLmVsZW1lbnQudGV4dCk7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS51cGRhdGVSZWN0YW5nbGUoKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQodGhpcy5ib2FyZC5nZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50KSEpO1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UudXBkYXRlQW5nbGUoY2VudGVyUG9pbnQsIHRoaXMuZWxlbWVudC5hbmdsZSk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpbnMgPSAoKHRoaXMuYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFRleHRPcHRpb25zPihXaXRoVGV4dFBsdWdpbktleSkgfHwge30pLnRleHRQbHVnaW5zO1xuXG4gICAgICAgIGNvbnN0IG1hbmFnZSA9IG5ldyBUZXh0TWFuYWdlKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZiwge1xuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0UmVjdGFuZ2xlID0gZ2V0RW5naW5lKHRoaXMuZWxlbWVudC5zaGFwZSkuZ2V0VGV4dFJlY3RhbmdsZTtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFRleHRSZWN0YW5nbGUodGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblZhbHVlQ2hhbmdlSGFuZGxlOiAodGV4dE1hbmFnZVJlZjogVGV4dE1hbmFnZVJlZikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IHRleHRNYW5hZ2VSZWYuaGVpZ2h0IC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGV4dE1hbmFnZVJlZi53aWR0aCAvIHRoaXMuYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICAgICAgICAgICAgICBpZiAodGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRUZXh0KHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCwgdGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0VGV4dFNpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGV4dE1hbmFnZVJlZi5vcGVyYXRpb25zICYmIG1lbW9yaXplTGF0ZXN0VGV4dCh0aGlzLmVsZW1lbnQsIHRleHRNYW5hZ2VSZWYub3BlcmF0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0TWF4V2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSBnZXRUZXh0UmVjdGFuZ2xlKHRoaXMuZWxlbWVudCkud2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0UmVjdGFuZ2xlID0gZ2V0RW5naW5lKHRoaXMuZWxlbWVudC5zaGFwZSkuZ2V0VGV4dFJlY3RhbmdsZTtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZ2V0UmVjdGFuZ2xlKHRoaXMuZWxlbWVudCkud2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5lbGVtZW50IGFzIFBsYWl0VGV4dCk/LmF1dG9TaXplID8gR2VvbWV0cnlUaHJlc2hvbGQuZGVmYXVsdFRleHRNYXhXaWR0aCA6IHdpZHRoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRQbHVnaW5zOiBwbHVnaW5zXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVUZXh0TWFuYWdlcyhbbWFuYWdlXSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VGV4dE1hbmFnZXMoKTtcbiAgICB9XG59XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VvbWV0cnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5RyxPQUFPLEVBQXNCLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxvQkFBcUQ7SUFVeEY7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hFLGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtB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QUFPLENBQUMsSUFBSSxFQUNqQixVQUFVLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUMxQztnQkFDSSxtQkFBbUIsRUFBRSx1QkFBdUI7Z0JBQzVDLFdBQVcsRUFBRSxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDakQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7b0JBQ3BFLElBQUksWUFBWSxFQUFFLENBQUM7d0JBQ2YsS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBd0IsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDOUQsQ0FBQztvQkFDRCxPQUFRLElBQUksQ0FBQyxPQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDakcsQ0FBQzthQUNKLENBQ0osQ0FBQztRQUNOLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgUmVjdGFuZ2xlQ2xpZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBsYWl0Q29tbW9uR2VvbWV0cnksIFBsYWl0R2VvbWV0cnksIFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnkgfSBmcm9tICcuL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9nZW9tZXRyeS1zaGFwZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgVGV4dE1hbmFnZVJlZiB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvciwgQ29tbW9uRWxlbWVudEZsYXZvdXIsIGNhblJlc2l6ZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgTGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9saW5lLWF1dG8tY29tcGxldGUuZ2VuZXJhdG9yJztcbmltcG9ydCB7IGdldFRleHRSZWN0YW5nbGUsIGlzR2VvbWV0cnlJbmNsdWRlVGV4dCwgaXNNdWx0aXBsZVRleHRHZW9tZXRyeSwgbWVtb3JpemVMYXRlc3RUZXh0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBQbGFpdERyYXdTaGFwZVRleHQsIFRleHRHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvdGV4dC5nZW5lcmF0b3InO1xuaW1wb3J0IHsgU2luZ2xlVGV4dEdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9zaW5nbGUtdGV4dC5nZW5lcmF0b3InO1xuaW1wb3J0IHsgUGxhaXRUZXh0IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlb21ldHJ5VGhyZXNob2xkIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9lbmdpbmVzJztcblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5Q29tcG9uZW50IGV4dGVuZHMgQ29tbW9uRWxlbWVudEZsYXZvdXI8UGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXRCb2FyZD5cbiAgICBpbXBsZW1lbnRzIE9uQ29udGV4dENoYW5nZWQ8UGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXRCb2FyZD4ge1xuICAgIGFjdGl2ZUdlbmVyYXRvciE6IEFjdGl2ZUdlbmVyYXRvcjxQbGFpdENvbW1vbkdlb21ldHJ5PjtcblxuICAgIGxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IhOiBMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yO1xuXG4gICAgc2hhcGVHZW5lcmF0b3IhOiBHZW9tZXRyeVNoYXBlR2VuZXJhdG9yO1xuXG4gICAgdGV4dEdlbmVyYXRvciE6IFRleHRHZW5lcmF0b3I8UGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeT4gfCBTaW5nbGVUZXh0R2VuZXJhdG9yO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUdlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IgPSBuZXcgQWN0aXZlR2VuZXJhdG9yPFBsYWl0Q29tbW9uR2VvbWV0cnk+KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGdldFN0cm9rZVdpZHRoOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUNUSVZFX1NUUk9LRV9XSURUSDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUNUSVZFX1NUUk9LRV9XSURUSDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U3Ryb2tlT3BhY2l0eTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogUGxhaXRDb21tb25HZW9tZXRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYW5SZXNpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciA9IG5ldyBMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yID0gbmV3IEdlb21ldHJ5U2hhcGVHZW5lcmF0b3IodGhpcy5ib2FyZCk7XG4gICAgICAgIGlmIChpc0dlb21ldHJ5SW5jbHVkZVRleHQodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGV4dE1hbmFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0UmVmKCkuYWRkR2VuZXJhdG9yKExpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3Iua2V5LCB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IpO1xuICAgICAgICB0aGlzLmdldFJlZigpLmFkZEdlbmVyYXRvcihBY3RpdmVHZW5lcmF0b3Iua2V5LCB0aGlzLmFjdGl2ZUdlbmVyYXRvcik7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVHZW5lcmF0b3IoKTtcbiAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yICYmIHRoaXMudGV4dEdlbmVyYXRvci5kcmF3KHRoaXMuZ2V0RWxlbWVudEcoKSk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlZChcbiAgICAgICAgdmFsdWU6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXRCb2FyZD4sXG4gICAgICAgIHByZXZpb3VzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFBsYWl0Q29tbW9uR2VvbWV0cnksIFBsYWl0Qm9hcmQ+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGlzQ2hhbmdlVGhlbWUgPSB0aGlzLmJvYXJkLm9wZXJhdGlvbnMuZmluZChvcCA9PiBvcC50eXBlID09PSAnc2V0X3RoZW1lJyk7XG4gICAgICAgIGlmICh2YWx1ZS5lbGVtZW50ICE9PSBwcmV2aW91cy5lbGVtZW50IHx8IGlzQ2hhbmdlVGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIHRoaXMuZ2V0RWxlbWVudEcoKSk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgJiYgdGhpcy51cGRhdGVUZXh0KHByZXZpb3VzLmVsZW1lbnQsIHZhbHVlLmVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZVNlbGVjdGVkID0gdmFsdWUuc2VsZWN0ZWQgPT09IHByZXZpb3VzLnNlbGVjdGVkO1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZUhhbmRsZVN0YXRlID0gdGhpcy5hY3RpdmVHZW5lcmF0b3Iub3B0aW9ucy5oYXNSZXNpemVIYW5kbGUoKSA9PT0gdGhpcy5hY3RpdmVHZW5lcmF0b3IuaGFzUmVzaXplSGFuZGxlO1xuICAgICAgICAgICAgaWYgKCFoYXNTYW1lU2VsZWN0ZWQgfHwgIWhhc1NhbWVIYW5kbGVTdGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVRleHQocHJldmlvdXNFbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5LCBjdXJyZW50RWxlbWVudDogUGxhaXRDb21tb25HZW9tZXRyeSkge1xuICAgICAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeSh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAodGhpcy50ZXh0R2VuZXJhdG9yIGFzIFRleHRHZW5lcmF0b3I8UGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeT4pLnVwZGF0ZShcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNFbGVtZW50LnRleHRzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnRleHRzLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWxlbWVudEcoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICh0aGlzLnRleHRHZW5lcmF0b3IgYXMgU2luZ2xlVGV4dEdlbmVyYXRvcikudXBkYXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LFxuICAgICAgICAgICAgICAgIHByZXZpb3VzRWxlbWVudC50ZXh0LFxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnRleHQsXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50RygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKSB7XG4gICAgICAgIGNvbnN0IG9uVGV4dFZhbHVlQ2hhbmdlSGFuZGxlID0gKGVsZW1lbnQ6IFBsYWl0Q29tbW9uR2VvbWV0cnksIHRleHRNYW5hZ2VSZWY6IFRleHRNYW5hZ2VSZWYsIHRleHQ6IFBsYWl0RHJhd1NoYXBlVGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGV4dE1hbmFnZVJlZi5oZWlnaHQgLyB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRleHRNYW5hZ2VSZWYud2lkdGggLyB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgICAgICAgICBpZiAodGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnNldERyYXdTaGFwZVRleHQodGhpcy5ib2FyZCwgZWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB0ZXh0LmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHRleHRNYW5hZ2VSZWYubmV3VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0SGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0VGV4dCh0aGlzLmJvYXJkLCBlbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIHRleHRNYW5hZ2VSZWYubmV3VmFsdWUsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0VGV4dFNpemUodGhpcy5ib2FyZCwgZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRleHRNYW5hZ2VSZWYub3BlcmF0aW9ucyAmJiBtZW1vcml6ZUxhdGVzdFRleHQoZWxlbWVudCwgdGV4dE1hbmFnZVJlZi5vcGVyYXRpb25zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeSh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgPSBuZXcgVGV4dEdlbmVyYXRvcjxQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5PihcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCBhcyBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0cyEsXG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRWaWV3Q29udGFpbmVyUmVmKHRoaXMuYm9hcmQpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZUhhbmRsZTogb25UZXh0VmFsdWVDaGFuZ2VIYW5kbGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yID0gbmV3IFNpbmdsZVRleHRHZW5lcmF0b3IoXG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZCxcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSxcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudGV4dCxcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldFZpZXdDb250YWluZXJSZWYodGhpcy5ib2FyZCksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlSGFuZGxlOiBvblRleHRWYWx1ZUNoYW5nZUhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0TWF4V2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGdldFRleHRSZWN0YW5nbGUodGhpcy5lbGVtZW50KS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdldFJlY3RhbmdsZSA9IGdldEVuZ2luZSh0aGlzLmVsZW1lbnQuc2hhcGUpLmdldFRleHRSZWN0YW5nbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBnZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnkpLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmVsZW1lbnQgYXMgUGxhaXRUZXh0KT8uYXV0b1NpemUgPyBHZW9tZXRyeVRocmVzaG9sZC5kZWZhdWx0VGV4dE1heFdpZHRoIDogd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvcj8uZGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|