@foblex/flow 18.2.0 → 18.3.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/README.md +11 -1
- package/domain/f-connection/create-connection-markers/create-connection-markers.d.ts +3 -2
- package/domain/f-connection/redraw-connections/redraw-connections.d.ts +2 -0
- package/esm2022/domain/f-connection/create-connection-markers/create-connection-markers.mjs +33 -6
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections.mjs +46 -3
- package/esm2022/f-connection/f-connection/f-connection.component.mjs +6 -6
- package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +6 -7
- package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +6 -7
- package/esm2022/f-connection/providers.mjs +8 -4
- package/esm2022/f-connection-v2/components/connection-gradient/components/index.mjs +2 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer.mjs +17 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/index.mjs +3 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/models/f-connection-gradient-renderer-base.mjs +81 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/models/index.mjs +2 -0
- package/esm2022/f-connection-v2/components/connection-gradient/f-connection-gradient.mjs +14 -46
- package/esm2022/f-connection-v2/components/connection-gradient/index.mjs +2 -1
- package/esm2022/f-connection-v2/components/connection-gradient/models/f-connection-gradient-base.mjs +2 -3
- package/esm2022/f-connection-v2/components/connection-path/f-connection-path.mjs +11 -7
- package/esm2022/f-connection-v2/components/f-connection-base.mjs +13 -9
- package/esm2022/f-connection-v2/models/f-connection-components-parent.mjs +1 -1
- package/esm2022/f-connection-v2/utils/create-gradient-dom-identifier.mjs +3 -3
- package/esm2022/f-connection-v2/utils/create-gradient-dom-url.mjs +3 -3
- package/esm2022/f-connection-worker/features/ensure-connection-worker/ensure-connection-worker.mjs +11 -4
- package/esm2022/f-connection-worker/features/is-connection-worker-enabled/is-connection-worker-enabled.mjs +3 -2
- package/esm2022/f-connection-worker/model/f-connection-worker.mjs +5 -1
- package/esm2022/f-connection-worker/worker/connection-worker-runtime.mjs +235 -0
- package/esm2022/f-flow/f-flow.component.mjs +8 -5
- package/esm2022/f-flow.module.mjs +37 -36
- package/esm2022/f-storage/f-components-store.mjs +17 -1
- package/esm2022/f-virtual/f-virtual-for.mjs +33 -3
- package/f-connection/f-connection/f-connection.component.d.ts +1 -1
- package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +1 -1
- package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +1 -1
- package/f-connection/providers.d.ts +3 -3
- package/f-connection-v2/components/connection-gradient/components/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer.d.ts +8 -0
- package/f-connection-v2/components/connection-gradient/components/render/index.d.ts +2 -0
- package/f-connection-v2/components/connection-gradient/components/render/models/f-connection-gradient-renderer-base.d.ts +25 -0
- package/f-connection-v2/components/connection-gradient/components/render/models/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/f-connection-gradient.d.ts +3 -11
- package/f-connection-v2/components/connection-gradient/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/models/f-connection-gradient-base.d.ts +3 -5
- package/f-connection-v2/components/connection-path/f-connection-path.d.ts +3 -2
- package/f-connection-v2/components/f-connection-base.d.ts +7 -4
- package/f-connection-v2/models/f-connection-components-parent.d.ts +0 -2
- package/f-connection-v2/utils/create-gradient-dom-identifier.d.ts +1 -1
- package/f-connection-v2/utils/create-gradient-dom-url.d.ts +1 -1
- package/f-connection-worker/model/f-connection-worker.d.ts +1 -0
- package/f-connection-worker/worker/connection-worker-runtime.d.ts +11 -0
- package/f-flow/f-flow.component.d.ts +1 -0
- package/f-flow.module.d.ts +38 -37
- package/f-storage/f-components-store.d.ts +5 -0
- package/f-virtual/f-virtual-for.d.ts +8 -2
- package/fesm2022/foblex-flow.mjs +509 -75
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,14 +19,18 @@
|
|
|
19
19
|
<strong>Angular-native node-based UI library for building node editors, workflow builders, and interactive graph interfaces.</strong>
|
|
20
20
|
</p>
|
|
21
21
|
|
|
22
|
-
Foblex Flow gives Angular teams
|
|
22
|
+
Foblex Flow gives Angular teams a simple way to start building graph-based products without adopting a React-first mental model. Begin with `f-flow`, `f-canvas`, nodes, and connections, then add richer editor features only when your product needs them.
|
|
23
|
+
|
|
24
|
+
Use it to create workflow builders, AI low-code tools, call-flow editors, UML diagrams, internal back-office tools, and other node-based interfaces while keeping your own state, validation, persistence, and domain logic.
|
|
23
25
|
|
|
24
26
|
It works with Angular 15+, SSR, standalone components, and zoneless-friendly application setups.
|
|
25
27
|
|
|
26
28
|
## Why Foblex Flow
|
|
27
29
|
|
|
30
|
+
- Easy starting path: most editors begin with `f-flow`, `f-canvas`, nodes, connectors, and connections.
|
|
28
31
|
- Angular-first API that fits Angular apps instead of wrapping a React-style state model.
|
|
29
32
|
- Built for real editor interactions: drag to connect, drag to reassign, selection, zoom, minimap, snapping, alignment helpers, and waypoints.
|
|
33
|
+
- Advanced modules are optional: caching, virtualization, and the connection worker are scaling tools, not day-one requirements.
|
|
30
34
|
- Custom nodes, connectors, and connections for domain-specific graph UIs.
|
|
31
35
|
- Your app stays in control of graph state, validation rules, permissions, and persistence.
|
|
32
36
|
- Suitable for both lightweight diagrams and full workflow-builder products.
|
|
@@ -91,6 +95,12 @@ npm install @foblex/flow
|
|
|
91
95
|
</f-flow>
|
|
92
96
|
```
|
|
93
97
|
|
|
98
|
+
## Quick FAQ
|
|
99
|
+
|
|
100
|
+
- **Is Foblex Flow hard to use?** No. The core setup is small and Angular-native.
|
|
101
|
+
- **Do I need caching, virtualization, or the connection worker?** No. Most editors do not need them on day one. They are optional scaling tools for larger scenes.
|
|
102
|
+
- **Who is it for?** Angular teams building node editors, workflow builders, interactive diagrams, and other graph-based product UIs.
|
|
103
|
+
|
|
94
104
|
## Resources
|
|
95
105
|
|
|
96
106
|
- [Get Started](https://flow.foblex.com/docs/get-started)
|
|
@@ -5,10 +5,11 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
/**
|
|
6
6
|
* Execution that creates connection markers for a given connection.
|
|
7
7
|
*/
|
|
8
|
-
export declare class CreateConnectionMarkers implements IExecution<CreateConnectionMarkersRequest,
|
|
8
|
+
export declare class CreateConnectionMarkers implements IExecution<CreateConnectionMarkersRequest, boolean> {
|
|
9
9
|
private readonly _browser;
|
|
10
10
|
private readonly _store;
|
|
11
|
-
|
|
11
|
+
private readonly _markerCache;
|
|
12
|
+
handle({ connection }: CreateConnectionMarkersRequest): boolean;
|
|
12
13
|
_findConnectionMarkers(connection: FConnectionBase): FConnectionMarkerBase[];
|
|
13
14
|
private _makeSafariCompatible;
|
|
14
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<CreateConnectionMarkers, never>;
|
|
@@ -13,6 +13,7 @@ export declare class RedrawConnections implements IExecution<RedrawConnectionsRe
|
|
|
13
13
|
private readonly _browser;
|
|
14
14
|
private _renderTicket;
|
|
15
15
|
private readonly _connectedInPreviousRender;
|
|
16
|
+
private readonly _connectionRenderCache;
|
|
16
17
|
handle(_request: RedrawConnectionsRequest): void;
|
|
17
18
|
private _resetConnectedConnectors;
|
|
18
19
|
private _setupConnection;
|
|
@@ -21,6 +22,7 @@ export declare class RedrawConnections implements IExecution<RedrawConnectionsRe
|
|
|
21
22
|
private _resolveConnectionConnectors;
|
|
22
23
|
private _resolveConnectionContext;
|
|
23
24
|
private _createMarkers;
|
|
25
|
+
private _shouldRedrawConnection;
|
|
24
26
|
private _setupConnectionsUsingWorker;
|
|
25
27
|
private _applyWorkerResultsChunked;
|
|
26
28
|
private _alignWorkerResultsToConnectionIndexes;
|
|
@@ -12,9 +12,20 @@ import * as i0 from "@angular/core";
|
|
|
12
12
|
let CreateConnectionMarkers = class CreateConnectionMarkers {
|
|
13
13
|
_browser = inject(BrowserService);
|
|
14
14
|
_store = inject(FComponentsStore);
|
|
15
|
+
_markerCache = new WeakMap();
|
|
15
16
|
handle({ connection }) {
|
|
17
|
+
const markers = this._findConnectionMarkers(connection);
|
|
18
|
+
const defs = connection.fDefs();
|
|
19
|
+
if (!defs) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const signature = createConnectionMarkersSignature(markers);
|
|
23
|
+
const cached = this._markerCache.get(connection);
|
|
24
|
+
if (cached?.signature === signature && cached.defsElement === defs.nativeElement) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
16
27
|
const element = createSVGElement('defs', this._browser);
|
|
17
|
-
|
|
28
|
+
markers.forEach((marker) => {
|
|
18
29
|
const markerElement = createMarkerElement(marker, connection.fId(), this._browser);
|
|
19
30
|
const clone = marker.hostElement.cloneNode(true);
|
|
20
31
|
clone.setAttribute('height', `${marker.height}`);
|
|
@@ -24,11 +35,13 @@ let CreateConnectionMarkers = class CreateConnectionMarkers {
|
|
|
24
35
|
markerElement.append(clone);
|
|
25
36
|
element.append(markerElement);
|
|
26
37
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
defs.nativeElement.innerHTML = element.innerHTML;
|
|
39
|
+
this._markerCache.set(connection, {
|
|
40
|
+
signature,
|
|
41
|
+
defsElement: defs.nativeElement,
|
|
42
|
+
});
|
|
31
43
|
this._makeSafariCompatible(connection);
|
|
44
|
+
return true;
|
|
32
45
|
}
|
|
33
46
|
_findConnectionMarkers(connection) {
|
|
34
47
|
return this._store.connectionMarkers
|
|
@@ -49,6 +62,20 @@ export { CreateConnectionMarkers };
|
|
|
49
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CreateConnectionMarkers, decorators: [{
|
|
50
63
|
type: Injectable
|
|
51
64
|
}] });
|
|
65
|
+
function createConnectionMarkersSignature(markers) {
|
|
66
|
+
return markers
|
|
67
|
+
.map((marker) => [
|
|
68
|
+
marker.type,
|
|
69
|
+
marker.width,
|
|
70
|
+
marker.height,
|
|
71
|
+
marker.refX,
|
|
72
|
+
marker.refY,
|
|
73
|
+
marker.orient,
|
|
74
|
+
marker.markerUnits,
|
|
75
|
+
marker.hostElement.outerHTML,
|
|
76
|
+
].join('|'))
|
|
77
|
+
.join('||');
|
|
78
|
+
}
|
|
52
79
|
function createMarkerElement(marker, connectionId, browser) {
|
|
53
80
|
const markerElement = createSVGElement('marker', browser);
|
|
54
81
|
markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + connectionId));
|
|
@@ -63,4 +90,4 @@ function createMarkerElement(marker, connectionId, browser) {
|
|
|
63
90
|
function createSVGElement(tag, fBrowser) {
|
|
64
91
|
return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
|
|
65
92
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbm5lY3Rpb24tbWFya2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2YtY29ubmVjdGlvbi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR3REOztHQUVHO0FBR0ksSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUFDakIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFNUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFrQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6RCxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuRixNQUFNLEtB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OUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0IH0gZnJvbSAnLi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzLXJlcXVlc3QnO1xuaW1wb3J0IHsgRkV4ZWN1dGlvblJlZ2lzdGVyLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHsgbm9ybWFsaXplRG9tRWxlbWVudElkIH0gZnJvbSAnQGZvYmxleC91dGlscyc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZDb25uZWN0aW9uQmFzZSwgRkNvbm5lY3Rpb25NYXJrZXJCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0aW9uLXYyJztcblxuLyoqXG4gKiBFeGVjdXRpb24gdGhhdCBjcmVhdGVzIGNvbm5lY3Rpb24gbWFya2VycyBmb3IgYSBnaXZlbiBjb25uZWN0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKENyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBDcmVhdGVDb25uZWN0aW9uTWFya2VycyBpbXBsZW1lbnRzIElFeGVjdXRpb248Q3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0LCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jyb3dzZXIgPSBpbmplY3QoQnJvd3NlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcblxuICBwdWJsaWMgaGFuZGxlKHsgY29ubmVjdGlvbiB9OiBDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnZGVmcycsIHRoaXMuX2Jyb3dzZXIpO1xuXG4gICAgdGhpcy5fZmluZENvbm5lY3Rpb25NYXJrZXJzKGNvbm5lY3Rpb24pLmZvckVhY2goKG1hcmtlcikgPT4ge1xuICAgICAgY29uc3QgbWFya2VyRWxlbWVudCA9IGNyZWF0ZU1hcmtlckVsZW1lbnQobWFya2VyLCBjb25uZWN0aW9uLmZJZCgpLCB0aGlzLl9icm93c2VyKTtcblxuICAgICAgY29uc3QgY2xvbmUgPSBtYXJrZXIuaG9zdEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHttYXJrZXIuaGVpZ2h0fWApO1xuICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke21hcmtlci53aWR0aH1gKTtcbiAgICAgIGNsb25lLnJlbW92ZUF0dHJpYnV0ZSgnbWFya2VyVW5pdHMnKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnO1xuICAgICAgbWFya2VyRWxlbWVudC5hcHBlbmQoY2xvbmUpO1xuXG4gICAgICBlbGVtZW50LmFwcGVuZChtYXJrZXJFbGVtZW50KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlZnMgPSBjb25uZWN0aW9uLmZEZWZzKCk7XG4gICAgaWYgKGRlZnMpIHtcbiAgICAgIGRlZnMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBlbGVtZW50LmlubmVySFRNTDtcbiAgICB9XG5cbiAgICB0aGlzLl9tYWtlU2FmYXJpQ29tcGF0aWJsZShjb25uZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBfZmluZENvbm5lY3Rpb25NYXJrZXJzKGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSk6IEZDb25uZWN0aW9uTWFya2VyQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuY29ubmVjdGlvbk1hcmtlcnNcbiAgICAgIC5nZXRBbGwoKVxuICAgICAgLmZpbHRlcigoeCkgPT4gY29ubmVjdGlvbi5ob3N0RWxlbWVudC5jb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cblxuICAvLyBTYWZhcmkgZG9lcyBub3Qgc3VwcG9ydCBtYXJrZXJzIG9uIHBhdGggZWxlbWVudHMgaWYgbWFya2VycyBhcmUgZGVmaW5lZCBhZnRlciB0aGUgcGF0aCBlbGVtZW50XG4gIHByaXZhdGUgX21ha2VTYWZhcmlDb21wYXRpYmxlKGZDb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UpOiB2b2lkIHtcbiAgICBmQ29ubmVjdGlvbi5mUGF0aCgpLmhvc3RFbGVtZW50LnJlcGxhY2VXaXRoKGZDb25uZWN0aW9uLmZQYXRoKCkuaG9zdEVsZW1lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1hcmtlckVsZW1lbnQoXG4gIG1hcmtlcjogRkNvbm5lY3Rpb25NYXJrZXJCYXNlLFxuICBjb25uZWN0aW9uSWQ6IHN0cmluZyxcbiAgYnJvd3NlcjogQnJvd3NlclNlcnZpY2UsXG4pOiBTVkdFbGVtZW50IHtcbiAgY29uc3QgbWFya2VyRWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ21hcmtlcicsIGJyb3dzZXIpO1xuXG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIG5vcm1hbGl6ZURvbUVsZW1lbnRJZChtYXJrZXIudHlwZSArICctJyArIGNvbm5lY3Rpb25JZCkpO1xuICBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnbWFya2VySGVpZ2h0JywgYCR7bWFya2VyLmhlaWdodH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21hcmtlcldpZHRoJywgYCR7bWFya2VyLndpZHRofWApO1xuICBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnb3JpZW50JywgYCR7bWFya2VyLm9yaWVudH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlZlgnLCBgJHttYXJrZXIucmVmWH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlZlknLCBgJHttYXJrZXIucmVmWX1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21hcmtlclVuaXRzJywgYCR7bWFya2VyLm1hcmtlclVuaXRzfWApO1xuXG4gIHJldHVybiBtYXJrZXJFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTVkdFbGVtZW50PEsgZXh0ZW5kcyBrZXlvZiBTVkdFbGVtZW50VGFnTmFtZU1hcD4oXG4gIHRhZzogSyxcbiAgZkJyb3dzZXI6IEJyb3dzZXJTZXJ2aWNlLFxuKTogU1ZHRWxlbWVudFRhZ05hbWVNYXBbS10ge1xuICByZXR1cm4gZkJyb3dzZXIuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHRhZyk7XG59XG4iXX0=
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbm5lY3Rpb24tbWFya2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2YtY29ubmVjdGlvbi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR3REOztHQUVHO0FBR0ksSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUFHakIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEMsWUFBWSxHQUFHLElBQUksT0FBTyxFQUd4QyxDQUFDO0lBRUcsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFrQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFD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QUVELFNBQVMsbUJBQW1CLENBQzFCLE1BQTZCLEVBQzdCLFlBQW9CLEVBQ3BCLE9BQXVCO0lBRXZCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUxRCxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzFGLGFBQWEsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0QsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RCxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckQsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxhQUFhLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUN2QixHQUFNLEVBQ04sUUFBd0I7SUFFeEIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QgfSBmcm9tICcuL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMtcmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIElFeGVjdXRpb24gfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBub3JtYWxpemVEb21FbGVtZW50SWQgfSBmcm9tICdAZm9ibGV4L3V0aWxzJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgRkNvbm5lY3Rpb25CYXNlLCBGQ29ubmVjdGlvbk1hcmtlckJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLWNvbm5lY3Rpb24tdjInO1xuXG4vKipcbiAqIEV4ZWN1dGlvbiB0aGF0IGNyZWF0ZXMgY29ubmVjdGlvbiBtYXJrZXJzIGZvciBhIGdpdmVuIGNvbm5lY3Rpb24uXG4gKi9cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIENyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QsIGJvb2xlYW4+XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jyb3dzZXIgPSBpbmplY3QoQnJvd3NlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFya2VyQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgICBGQ29ubmVjdGlvbkJhc2UsXG4gICAgeyBzaWduYXR1cmU6IHN0cmluZzsgZGVmc0VsZW1lbnQ6IFNWR0RlZnNFbGVtZW50IH1cbiAgPigpO1xuXG4gIHB1YmxpYyBoYW5kbGUoeyBjb25uZWN0aW9uIH06IENyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzUmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSB0aGlzLl9maW5kQ29ubmVjdGlvbk1hcmtlcnMoY29ubmVjdGlvbik7XG4gICAgY29uc3QgZGVmcyA9IGNvbm5lY3Rpb24uZkRlZnMoKTtcbiAgICBpZiAoIWRlZnMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSBjcmVhdGVDb25uZWN0aW9uTWFya2Vyc1NpZ25hdHVyZShtYXJrZXJzKTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLl9tYXJrZXJDYWNoZS5nZXQoY29ubmVjdGlvbik7XG4gICAgaWYgKGNhY2hlZD8uc2lnbmF0dXJlID09PSBzaWduYXR1cmUgJiYgY2FjaGVkLmRlZnNFbGVtZW50ID09PSBkZWZzLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnZGVmcycsIHRoaXMuX2Jyb3dzZXIpO1xuXG4gICAgbWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtlckVsZW1lbnQgPSBjcmVhdGVNYXJrZXJFbGVtZW50KG1hcmtlciwgY29ubmVjdGlvbi5mSWQoKSwgdGhpcy5fYnJvd3Nlcik7XG5cbiAgICAgIGNvbnN0IGNsb25lID0gbWFya2VyLmhvc3RFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7bWFya2VyLmhlaWdodH1gKTtcbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHttYXJrZXIud2lkdGh9YCk7XG4gICAgICBjbG9uZS5yZW1vdmVBdHRyaWJ1dGUoJ21hcmtlclVuaXRzJyk7XG4gICAgICBjbG9uZS5zdHlsZS5kaXNwbGF5ID0gJ3Vuc2V0JztcbiAgICAgIG1hcmtlckVsZW1lbnQuYXBwZW5kKGNsb25lKTtcblxuICAgICAgZWxlbWVudC5hcHBlbmQobWFya2VyRWxlbWVudCk7XG4gICAgfSk7XG5cbiAgICBkZWZzLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gZWxlbWVudC5pbm5lckhUTUw7XG4gICAgdGhpcy5fbWFya2VyQ2FjaGUuc2V0KGNvbm5lY3Rpb24sIHtcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGRlZnNFbGVtZW50OiBkZWZzLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gICAgdGhpcy5fbWFrZVNhZmFyaUNvbXBhdGlibGUoY29ubmVjdGlvbik7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBfZmluZENvbm5lY3Rpb25NYXJrZXJzKGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSk6IEZDb25uZWN0aW9uTWFya2VyQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuY29ubmVjdGlvbk1hcmtlcnNcbiAgICAgIC5nZXRBbGwoKVxuICAgICAgLmZpbHRlcigoeCkgPT4gY29ubmVjdGlvbi5ob3N0RWxlbWVudC5jb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cblxuICAvLyBTYWZhcmkgZG9lcyBub3Qgc3VwcG9ydCBtYXJrZXJzIG9uIHBhdGggZWxlbWVudHMgaWYgbWFya2VycyBhcmUgZGVmaW5lZCBhZnRlciB0aGUgcGF0aCBlbGVtZW50XG4gIHByaXZhdGUgX21ha2VTYWZhcmlDb21wYXRpYmxlKGZDb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UpOiB2b2lkIHtcbiAgICBmQ29ubmVjdGlvbi5mUGF0aCgpLmhvc3RFbGVtZW50LnJlcGxhY2VXaXRoKGZDb25uZWN0aW9uLmZQYXRoKCkuaG9zdEVsZW1lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzU2lnbmF0dXJlKG1hcmtlcnM6IHJlYWRvbmx5IEZDb25uZWN0aW9uTWFya2VyQmFzZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIG1hcmtlcnNcbiAgICAubWFwKChtYXJrZXIpID0+XG4gICAgICBbXG4gICAgICAgIG1hcmtlci50eXBlLFxuICAgICAgICBtYXJrZXIud2lkdGgsXG4gICAgICAgIG1hcmtlci5oZWlnaHQsXG4gICAgICAgIG1hcmtlci5yZWZYLFxuICAgICAgICBtYXJrZXIucmVmWSxcbiAgICAgICAgbWFya2VyLm9yaWVudCxcbiAgICAgICAgbWFya2VyLm1hcmtlclVuaXRzLFxuICAgICAgICBtYXJrZXIuaG9zdEVsZW1lbnQub3V0ZXJIVE1MLFxuICAgICAgXS5qb2luKCd8JyksXG4gICAgKVxuICAgIC5qb2luKCd8fCcpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZXJFbGVtZW50KFxuICBtYXJrZXI6IEZDb25uZWN0aW9uTWFya2VyQmFzZSxcbiAgY29ubmVjdGlvbklkOiBzdHJpbmcsXG4gIGJyb3dzZXI6IEJyb3dzZXJTZXJ2aWNlLFxuKTogU1ZHRWxlbWVudCB7XG4gIGNvbnN0IG1hcmtlckVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCdtYXJrZXInLCBicm93c2VyKTtcblxuICBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCBub3JtYWxpemVEb21FbGVtZW50SWQobWFya2VyLnR5cGUgKyAnLScgKyBjb25uZWN0aW9uSWQpKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21hcmtlckhlaWdodCcsIGAke21hcmtlci5oZWlnaHR9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdtYXJrZXJXaWR0aCcsIGAke21hcmtlci53aWR0aH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ29yaWVudCcsIGAke21hcmtlci5vcmllbnR9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWZYJywgYCR7bWFya2VyLnJlZlh9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWZZJywgYCR7bWFya2VyLnJlZll9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdtYXJrZXJVbml0cycsIGAke21hcmtlci5tYXJrZXJVbml0c31gKTtcblxuICByZXR1cm4gbWFya2VyRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU1ZHRWxlbWVudDxLIGV4dGVuZHMga2V5b2YgU1ZHRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0YWc6IEssXG4gIGZCcm93c2VyOiBCcm93c2VyU2VydmljZSxcbik6IFNWR0VsZW1lbnRUYWdOYW1lTWFwW0tdIHtcbiAgcmV0dXJuIGZCcm93c2VyLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCB0YWcpO1xufVxuIl19
|
|
@@ -22,6 +22,7 @@ let RedrawConnections = class RedrawConnections {
|
|
|
22
22
|
_browser = inject(BrowserService);
|
|
23
23
|
_renderTicket = 0;
|
|
24
24
|
_connectedInPreviousRender = new Set();
|
|
25
|
+
_connectionRenderCache = new WeakMap();
|
|
25
26
|
handle(_request) {
|
|
26
27
|
const renderTicket = ++this._renderTicket;
|
|
27
28
|
const nodesRevision = this._store.nodesRevision;
|
|
@@ -64,7 +65,10 @@ let RedrawConnections = class RedrawConnections {
|
|
|
64
65
|
target.setConnected(source);
|
|
65
66
|
this._connectedInPreviousRender.add(source);
|
|
66
67
|
this._connectedInPreviousRender.add(target);
|
|
67
|
-
this._createMarkers(connection);
|
|
68
|
+
const markersChanged = this._createMarkers(connection);
|
|
69
|
+
if (!markersChanged && !this._shouldRedrawConnection(connection, line)) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
68
72
|
connection.setLine(line);
|
|
69
73
|
connection.initialize();
|
|
70
74
|
connection.isSelected() ? connection.markAsSelected() : null;
|
|
@@ -79,7 +83,17 @@ let RedrawConnections = class RedrawConnections {
|
|
|
79
83
|
return this._mediator.execute(new ResolveConnectionWorkerContextRequest(connection, cache));
|
|
80
84
|
}
|
|
81
85
|
_createMarkers(connection) {
|
|
82
|
-
this._mediator.execute(new CreateConnectionMarkersRequest(connection));
|
|
86
|
+
return this._mediator.execute(new CreateConnectionMarkersRequest(connection));
|
|
87
|
+
}
|
|
88
|
+
_shouldRedrawConnection(connection, line) {
|
|
89
|
+
const pathElement = connection.fPath().hostElement;
|
|
90
|
+
const signature = createConnectionRenderSignature(connection, line);
|
|
91
|
+
const cached = this._connectionRenderCache.get(connection);
|
|
92
|
+
if (cached?.signature === signature && cached.pathElement === pathElement) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
this._connectionRenderCache.set(connection, { signature, pathElement });
|
|
96
|
+
return true;
|
|
83
97
|
}
|
|
84
98
|
_setupConnectionsUsingWorker(connections, connectorRectCache, renderTicket, nodesRevision) {
|
|
85
99
|
this._mediator
|
|
@@ -219,4 +233,33 @@ export { RedrawConnections };
|
|
|
219
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnections, decorators: [{
|
|
220
234
|
type: Injectable
|
|
221
235
|
}] });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcmF3LWNvbm5lY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1jb25uZWN0aW9uL3JlZHJhdy1jb25uZWN0aW9ucy9yZWRyYXctY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGlDQUFpQyxHQUdsQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZ0RBQWdELEVBSWhELHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEdBQ2pDLE1BQU0sOEJBQThCLENBQUM7O0FBRXRDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQjs7OztHQUlHO0FBR0ksSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFDWCxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMxRCxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FB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b0IsRUFBRSxhQUFxQjtRQUN6RSxPQUFPLFlBQVksS0FBSyxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUM1RixDQUFDO0lBRU8sc0JBQXNCLENBQUMsUUFBb0I7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxDQUFDO1lBRVgsT0FBTztRQUNULENBQUM7UUFFRCxTQUFTLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLElBQUk7UUFDVixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO1FBRXZFLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsVUFBa0I7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxVQUFVLEdBQUcsZUFBZSxDQUFDO0lBQ3BELENBQUM7d0dBcldVLGlCQUFpQjs0R0FBakIsaUJBQWlCOztBQUFqQixpQkFBaUI7SUFEN0Isa0JBQWtCLENBQUMsd0JBQXdCLENBQUM7R0FDaEMsaUJBQWlCLENBc1c3Qjs7NEZBdFdZLGlCQUFpQjtrQkFGN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMaW5lLCBJUm91bmRlZFJlY3QgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0IH0gZnJvbSAnLi9yZWRyYXctY29ubmVjdGlvbnMtcmVxdWVzdCc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZDb25uZWN0b3JCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0b3JzJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QgfSBmcm9tICcuLi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzJztcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyLFxuICBDb25uZWN0aW9uQmVoYXZpb3VyQnVpbGRlclJlcXVlc3QsXG4gIEVGQ29ubmVjdGFibGVTaWRlLFxuICBGQ29ubmVjdGlvbkJhc2UsXG59IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdGlvbi12Mic7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgQ2FsY3VsYXRlQ29ubmVjdGlvbnNVc2luZ0Nvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0LFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzLFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0LFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJSZXN1bHRJdGVtLFxuICBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbm5lY3RvcnNSZXF1ZXN0LFxuICBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbnRleHRSZXF1ZXN0LFxuICBTaG91bGRVc2VDb25uZWN0aW9uV29ya2VyUmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0aW9uLXdvcmtlcic7XG5cbmNvbnN0IENPTk5FQ1RJT05TX1BFUl9TTElDRV9MSU1JVCA9IDUwMDtcbmNvbnN0IFNMSUNFX0JVREdFVF9NUyA9IDY7XG5cbi8qKlxuICogRXhlY3V0aW9uIHRoYXQgcmVkcmF3cyBjb25uZWN0aW9ucyBpbiB0aGUgRkNvbXBvbmVudHNTdG9yZS5cbiAqIEl0IHJlc2V0cyBjb25uZWN0b3JzLCBzZXRzIG1hcmtlcnMgZm9yIHRlbXBvcmFyeSBhbmQgc25hcCBjb25uZWN0aW9ucyxcbiAqIGFuZCBzZXRzIHVwIGNvbm5lY3Rpb25zIGJhc2VkIG9uIHRoZSBzdG9yZWQgb3V0cHV0cyBhbmQgaW5wdXRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBSZWRyYXdDb25uZWN0aW9ucyBpbXBsZW1lbnRzIElFeGVjdXRpb248UmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0LCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25uZWN0aW9uQmVoYXZpb3VyID0gaW5qZWN0KENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJvd3NlciA9IGluamVjdChCcm93c2VyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVGlja2V0ID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlciA9IG5ldyBTZXQ8RkNvbm5lY3RvckJhc2U+KCk7XG5cbiAgcHVibGljIGhhbmRsZShfcmVxdWVzdDogUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc3QgcmVuZGVyVGlja2V0ID0gKyt0aGlzLl9yZW5kZXJUaWNrZXQ7XG4gICAgY29uc3Qgbm9kZXNSZXZpc2lvbiA9IHRoaXMuX3N0b3JlLm5vZGVzUmV2aXNpb247XG4gICAgdGhpcy5fcmVzZXRDb25uZWN0ZWRDb25uZWN0b3JzKCk7XG5cbiAgICBjb25zdCBpbnN0YW5jZUZvckNyZWF0ZSA9IHRoaXMuX3N0b3JlLmNvbm5lY3Rpb25zLmdldEZvckNyZWF0ZSgpO1xuICAgIGlmIChpbnN0YW5jZUZvckNyZWF0ZSkge1xuICAgICAgdGhpcy5fY3JlYXRlTWFya2VycyhpbnN0YW5jZUZvckNyZWF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VGb3JTbmFwID0gdGhpcy5fc3RvcmUuY29ubmVjdGlvbnMuZ2V0Rm9yU25hcCgpO1xuICAgIGlmIChpbnN0YW5jZUZvclNuYXApIHtcbiAgICAgIHRoaXMuX2NyZWF0ZU1hcmtlcnMoaW5zdGFuY2VGb3JTbmFwKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25uZWN0aW9ucyA9IFsuLi50aGlzLl9zdG9yZS5jb25uZWN0aW9ucy5nZXRBbGwoKV07XG4gICAgY29uc3QgY29ubmVjdG9yUmVjdENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4oKTtcblxuICAgIGlmICh0aGlzLl9zaG91bGRVc2VXb3JrZXIoY29ubmVjdGlvbnMubGVuZ3RoKSkge1xuICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uc1VzaW5nV29ya2VyKFxuICAgICAgICBjb25uZWN0aW9ucyxcbiAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICByZW5kZXJUaWNrZXQsXG4gICAgICAgIG5vZGVzUmV2aXNpb24sXG4gICAgICApO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKGNvbm5lY3Rpb25zLCBjb25uZWN0b3JSZWN0Q2FjaGUsIDAsIHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbik7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldENvbm5lY3RlZENvbm5lY3RvcnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyLnNpemUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3RvciBvZiB0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyKSB7XG4gICAgICBjb25uZWN0b3IucmVzZXRDb25uZWN0ZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbm5lY3Rpb24oY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLCBjYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0Pik6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9yZXNvbHZlQ29ubmVjdGlvbkNvbnRleHQoY29ubmVjdGlvbiwgY2FjaGUpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmUgPSB0aGlzLl9jYWxjdWxhdGVDb25uZWN0aW9uTGluZShjb25uZWN0aW9uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbldpdGhMaW5lKGNvbm5lY3Rpb24sIGNvbnRleHQuc291cmNlLCBjb250ZXh0LnRhcmdldCwgbGluZSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbm5lY3Rpb25XaXRoTGluZShcbiAgICBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICAgc291cmNlOiBGQ29ubmVjdG9yQmFzZSxcbiAgICB0YXJnZXQ6IEZDb25uZWN0b3JCYXNlLFxuICAgIGxpbmU6IElMaW5lLFxuICApOiB2b2lkIHtcbiAgICBzb3VyY2Uuc2V0Q29ubmVjdGVkKHRhcmdldCk7XG4gICAgdGFyZ2V0LnNldENvbm5lY3RlZChzb3VyY2UpO1xuICAgIHRoaXMuX2Nvbm5lY3RlZEluUHJldmlvdXNSZW5kZXIuYWRkKHNvdXJjZSk7XG4gICAgdGhpcy5fY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlci5hZGQodGFyZ2V0KTtcblxuICAgIHRoaXMuX2NyZWF0ZU1hcmtlcnMoY29ubmVjdGlvbik7XG4gICAgY29ubmVjdGlvbi5zZXRMaW5lKGxpbmUpO1xuICAgIGNvbm5lY3Rpb24uaW5pdGlhbGl6ZSgpO1xuICAgIGNvbm5lY3Rpb24uaXNTZWxlY3RlZCgpID8gY29ubmVjdGlvbi5tYXJrQXNTZWxlY3RlZCgpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUNvbm5lY3Rpb25MaW5lKFxuICAgIGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSxcbiAgICBjb250ZXh0OiBJRkNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0LFxuICApOiBJTGluZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25CZWhhdmlvdXIuaGFuZGxlKFxuICAgICAgbmV3IENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyUmVxdWVzdChcbiAgICAgICAgY29udGV4dC5zb3VyY2VSZWN0LFxuICAgICAgICBjb250ZXh0LnRhcmdldFJlY3QsXG4gICAgICAgIGNvbm5lY3Rpb24sXG4gICAgICAgIGNvbnRleHQuc291cmNlLmZDb25uZWN0YWJsZVNpZGUsXG4gICAgICAgIGNvbnRleHQudGFyZ2V0LmZDb25uZWN0YWJsZVNpZGUsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNvbHZlQ29ubmVjdGlvbkNvbm5lY3RvcnMoXG4gICAgY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLFxuICApOiBJRkNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8SUZDb25uZWN0aW9uV29ya2VyQ29ubmVjdG9ycyB8IG51bGw+KFxuICAgICAgbmV3IFJlc29sdmVDb25uZWN0aW9uV29ya2VyQ29ubmVjdG9yc1JlcXVlc3QoY29ubmVjdGlvbiksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc29sdmVDb25uZWN0aW9uQ29udGV4dChcbiAgICBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICAgY2FjaGU6IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4sXG4gICk6IElGQ29ubmVjdGlvbldvcmtlckNvbnRleHQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTxJRkNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0IHwgbnVsbD4oXG4gICAgICBuZXcgUmVzb2x2ZUNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0UmVxdWVzdChjb25uZWN0aW9uLCBjYWNoZSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU1hcmtlcnMoY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0KGNvbm5lY3Rpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29ubmVjdGlvbnNVc2luZ1dvcmtlcihcbiAgICBjb25uZWN0aW9uczogcmVhZG9ubHkgRkNvbm5lY3Rpb25CYXNlW10sXG4gICAgY29ubmVjdG9yUmVjdENhY2hlOiBNYXA8c3RyaW5nLCBJUm91bmRlZFJlY3Q+LFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3JcbiAgICAgIC5leGVjdXRlPFByb21pc2U8cmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdIHwgbnVsbD4+KFxuICAgICAgICBuZXcgQ2FsY3VsYXRlQ29ubmVjdGlvbnNVc2luZ0Nvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25zLCBjb25uZWN0b3JSZWN0Q2FjaGUpLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcbiAgICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb25zQ2h1bmtlZChcbiAgICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICAgIG5vZGVzUmV2aXNpb24sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvcmtlclJlc3VsdHMgPSB0aGlzLl9hbGlnbldvcmtlclJlc3VsdHNUb0Nvbm5lY3Rpb25JbmRleGVzKFxuICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgY29ubmVjdGlvbnMubGVuZ3RoLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2FwcGx5V29ya2VyUmVzdWx0c0NodW5rZWQoXG4gICAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgICAgd29ya2VyUmVzdWx0cyxcbiAgICAgICAgICBjb25uZWN0b3JSZWN0Q2FjaGUsXG4gICAgICAgICAgMCxcbiAgICAgICAgICByZW5kZXJUaWNrZXQsXG4gICAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVdvcmtlclJlc3VsdHNDaHVua2VkKFxuICAgIGNvbm5lY3Rpb25zOiByZWFkb25seSBGQ29ubmVjdGlvbkJhc2VbXSxcbiAgICB3b3JrZXJSZXN1bHRzOiByZWFkb25seSAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSxcbiAgICBjb25uZWN0b3JSZWN0Q2FjaGU6IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4sXG4gICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzbGljZVN0YXJ0ID0gdGhpcy5fbm93KCk7XG4gICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleDtcbiAgICBsZXQgcHJvY2Vzc2VkID0gMDtcblxuICAgIHdoaWxlIChcbiAgICAgIGVuZEluZGV4IDwgY29ubmVjdGlvbnMubGVuZ3RoICYmXG4gICAgICBwcm9jZXNzZWQgPCBDT05ORUNUSU9OU19QRVJfU0xJQ0VfTElNSVQgJiZcbiAgICAgIHRoaXMuX2lzV2l0aGluU2xpY2VCdWRnZXQoc2xpY2VTdGFydClcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uc1tlbmRJbmRleF07XG4gICAgICBjb25zdCByZXN1bHQgPSB3b3JrZXJSZXN1bHRzW2VuZEluZGV4XTtcblxuICAgICAgaWYgKHRoaXMuX2lzV29ya2VyUmVzdWx0U3VwcG9ydGVkKHJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdG9ycyA9IHRoaXMuX3Jlc29sdmVDb25uZWN0aW9uQ29ubmVjdG9ycyhjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKCFjb25uZWN0b3JzKSB7XG4gICAgICAgICAgZW5kSW5kZXgrKztcbiAgICAgICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQsIG5vZGVzUmV2aXNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25uZWN0aW9uLl9hcHBseVJlc29sdmVkU2lkZXNUb0Nvbm5lY3Rpb24oXG4gICAgICAgICAgICByZXN1bHQuc291cmNlU2lkZSBhcyBFRkNvbm5lY3RhYmxlU2lkZSxcbiAgICAgICAgICAgIHJlc3VsdC50YXJnZXRTaWRlIGFzIEVGQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uV2l0aExpbmUoXG4gICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICAgICAgY29ubmVjdG9ycy5zb3VyY2UsXG4gICAgICAgICAgICBjb25uZWN0b3JzLnRhcmdldCxcbiAgICAgICAgICAgIHJlc3VsdC5saW5lLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbihjb25uZWN0aW9uLCBjb25uZWN0b3JSZWN0Q2FjaGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb24oY29ubmVjdGlvbiwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIH1cblxuICAgICAgZW5kSW5kZXgrKztcbiAgICAgIHByb2Nlc3NlZCsrO1xuXG4gICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZEluZGV4ID49IGNvbm5lY3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PlxuICAgICAgdGhpcy5fYXBwbHlXb3JrZXJSZXN1bHRzQ2h1bmtlZChcbiAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgIHdvcmtlclJlc3VsdHMsXG4gICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgZW5kSW5kZXgsXG4gICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FsaWduV29ya2VyUmVzdWx0c1RvQ29ubmVjdGlvbkluZGV4ZXMoXG4gICAgcmVzdWx0czogcmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdLFxuICAgIGNvbm5lY3Rpb25Db3VudDogbnVtYmVyLFxuICApOiAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSB7XG4gICAgY29uc3QgYWxpZ25lZDogKElGQ29ubmVjdGlvbldvcmtlclJlc3VsdEl0ZW0gfCB1bmRlZmluZWQpW10gPSBuZXcgQXJyYXkoY29ubmVjdGlvbkNvdW50KTtcblxuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gcmVzdWx0Lm9yaWdpbmFsSW5kZXg7XG4gICAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBjb25uZWN0aW9uQ291bnQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGFsaWduZWRbaW5kZXhdID0gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiBhbGlnbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXb3JrZXJSZXN1bHRTdXBwb3J0ZWQoXG4gICAgcmVzdWx0OiBJRkNvbm5lY3Rpb25Xb3JrZXJSZXN1bHRJdGVtIHwgdW5kZWZpbmVkLFxuICApOiByZXN1bHQgaXMgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSAmIHtcbiAgICBzb3VyY2VTaWRlOiBzdHJpbmc7XG4gICAgdGFyZ2V0U2lkZTogc3RyaW5nO1xuICAgIGxpbmU6IElMaW5lO1xuICB9IHtcbiAgICByZXR1cm4gISEocmVzdWx0Py5zdXBwb3J0ZWQgJiYgcmVzdWx0LnNvdXJjZVNpZGUgJiYgcmVzdWx0LnRhcmdldFNpZGUgJiYgcmVzdWx0LmxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb25uZWN0aW9uc0NodW5rZWQoXG4gICAgY29ubmVjdGlvbnM6IHJlYWRvbmx5IEZDb25uZWN0aW9uQmFzZVtdLFxuICAgIGNvbm5lY3RvclJlY3RDYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0PixcbiAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgcmVuZGVyVGlja2V0OiBudW1iZXIsXG4gICAgbm9kZXNSZXZpc2lvbjogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaWNlU3RhcnQgPSB0aGlzLl9ub3coKTtcbiAgICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4O1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuXG4gICAgd2hpbGUgKFxuICAgICAgZW5kSW5kZXggPCBjb25uZWN0aW9ucy5sZW5ndGggJiZcbiAgICAgIHByb2Nlc3NlZCA8IENPTk5FQ1RJT05TX1BFUl9TTElDRV9MSU1JVCAmJlxuICAgICAgdGhpcy5faXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0KVxuICAgICkge1xuICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uKGNvbm5lY3Rpb25zW2VuZEluZGV4XSwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIGVuZEluZGV4Kys7XG4gICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmRJbmRleCA+PSBjb25uZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT5cbiAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICBjb25uZWN0aW9ucyxcbiAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICBlbmRJbmRleCxcbiAgICAgICAgcmVuZGVyVGlja2V0LFxuICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkVXNlV29ya2VyKGNvbm5lY3Rpb25Db3VudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8Ym9vbGVhbj4obmV3IFNob3VsZFVzZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25Db3VudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQ6IG51bWJlciwgbm9kZXNSZXZpc2lvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlbmRlclRpY2tldCA9PT0gdGhpcy5fcmVuZGVyVGlja2V0ICYmIG5vZGVzUmV2aXNpb24gPT09IHRoaXMuX3N0b3JlLm5vZGVzUmV2aXNpb247XG4gIH1cblxuICBwcml2YXRlIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSB0aGlzLl9icm93c2VyLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIGlmICghd2luZG93UmVmKSB7XG4gICAgICBjYWxsYmFjaygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2luZG93UmVmLnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gIH1cblxuICBwcml2YXRlIF9ub3coKTogbnVtYmVyIHtcbiAgICBjb25zdCBwZXJmb3JtYW5jZVJlZiA9IHRoaXMuX2Jyb3dzZXIuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LnBlcmZvcm1hbmNlO1xuXG4gICAgcmV0dXJuIHBlcmZvcm1hbmNlUmVmID8gcGVyZm9ybWFuY2VSZWYubm93KCkgOiBEYXRlLm5vdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2Jyb3dzZXIuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ub3coKSAtIHNsaWNlU3RhcnQgPCBTTElDRV9CVURHRVRfTVM7XG4gIH1cbn1cbiJdfQ==
|
|
236
|
+
function createConnectionRenderSignature(connection, line) {
|
|
237
|
+
const { sourceSide, targetSide } = connection.getResolvedSides();
|
|
238
|
+
return [
|
|
239
|
+
connection.fBehavior,
|
|
240
|
+
connection.fType,
|
|
241
|
+
connection.fRadius,
|
|
242
|
+
connection.fOffset,
|
|
243
|
+
connection.fReassignableStart(),
|
|
244
|
+
serializeContents(connection.fContents() || []),
|
|
245
|
+
sourceSide,
|
|
246
|
+
targetSide,
|
|
247
|
+
serializePoint(line.point1),
|
|
248
|
+
serializePoint(line.point2),
|
|
249
|
+
serializeWaypoints(connection.fWaypoints()?.waypoints() || []),
|
|
250
|
+
].join('|');
|
|
251
|
+
}
|
|
252
|
+
function serializePoint(point) {
|
|
253
|
+
return `${point.x}:${point.y}`;
|
|
254
|
+
}
|
|
255
|
+
function serializeWaypoints(waypoints) {
|
|
256
|
+
return waypoints.map(serializePoint).join(';');
|
|
257
|
+
}
|
|
258
|
+
function serializeContents(contents) {
|
|
259
|
+
return contents
|
|
260
|
+
.map((content) => {
|
|
261
|
+
return [content.position(), content.offset(), content.align()].join(':');
|
|
262
|
+
})
|
|
263
|
+
.join(';');
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcmF3LWNvbm5lY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1jb25uZWN0aW9uL3JlZHJhdy1jb25uZWN0aW9ucy9yZWRyYXctY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGlDQUFpQyxHQUlsQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZ0RBQWdELEVBSWhELHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEdBQ2pDLE1BQU0sOEJBQThCLENBQUM7O0FBRXRDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQjs7OztHQUlHO0FBR0ksSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFDWCxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMxRCxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FB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RUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDL0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBc0I7SUFDNUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2pDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLFNBQXFDO0lBQy9ELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsUUFBMkM7SUFDcEUsT0FBTyxRQUFRO1NBQ1osR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDZixPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMaW5lLCBJUm91bmRlZFJlY3QgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0IH0gZnJvbSAnLi9yZWRyYXctY29ubmVjdGlvbnMtcmVxdWVzdCc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZDb25uZWN0b3JCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0b3JzJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QgfSBmcm9tICcuLi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzJztcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyLFxuICBDb25uZWN0aW9uQmVoYXZpb3VyQnVpbGRlclJlcXVlc3QsXG4gIEVGQ29ubmVjdGFibGVTaWRlLFxuICBGQ29ubmVjdGlvbkJhc2UsXG4gIEZDb25uZWN0aW9uQ29udGVudEJhc2UsXG59IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdGlvbi12Mic7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgQ2FsY3VsYXRlQ29ubmVjdGlvbnNVc2luZ0Nvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0LFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzLFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0LFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJSZXN1bHRJdGVtLFxuICBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbm5lY3RvcnNSZXF1ZXN0LFxuICBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbnRleHRSZXF1ZXN0LFxuICBTaG91bGRVc2VDb25uZWN0aW9uV29ya2VyUmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0aW9uLXdvcmtlcic7XG5cbmNvbnN0IENPTk5FQ1RJT05TX1BFUl9TTElDRV9MSU1JVCA9IDUwMDtcbmNvbnN0IFNMSUNFX0JVREdFVF9NUyA9IDY7XG5cbi8qKlxuICogRXhlY3V0aW9uIHRoYXQgcmVkcmF3cyBjb25uZWN0aW9ucyBpbiB0aGUgRkNvbXBvbmVudHNTdG9yZS5cbiAqIEl0IHJlc2V0cyBjb25uZWN0b3JzLCBzZXRzIG1hcmtlcnMgZm9yIHRlbXBvcmFyeSBhbmQgc25hcCBjb25uZWN0aW9ucyxcbiAqIGFuZCBzZXRzIHVwIGNvbm5lY3Rpb25zIGJhc2VkIG9uIHRoZSBzdG9yZWQgb3V0cHV0cyBhbmQgaW5wdXRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBSZWRyYXdDb25uZWN0aW9ucyBpbXBsZW1lbnRzIElFeGVjdXRpb248UmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0LCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25uZWN0aW9uQmVoYXZpb3VyID0gaW5qZWN0KENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJvd3NlciA9IGluamVjdChCcm93c2VyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVGlja2V0ID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlciA9IG5ldyBTZXQ8RkNvbm5lY3RvckJhc2U+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nvbm5lY3Rpb25SZW5kZXJDYWNoZSA9IG5ldyBXZWFrTWFwPFxuICAgIEZDb25uZWN0aW9uQmFzZSxcbiAgICB7IHNpZ25hdHVyZTogc3RyaW5nOyBwYXRoRWxlbWVudDogU1ZHRWxlbWVudCB9XG4gID4oKTtcblxuICBwdWJsaWMgaGFuZGxlKF9yZXF1ZXN0OiBSZWRyYXdDb25uZWN0aW9uc1JlcXVlc3QpOiB2b2lkIHtcbiAgICBjb25zdCByZW5kZXJUaWNrZXQgPSArK3RoaXMuX3JlbmRlclRpY2tldDtcbiAgICBjb25zdCBub2Rlc1JldmlzaW9uID0gdGhpcy5fc3RvcmUubm9kZXNSZXZpc2lvbjtcbiAgICB0aGlzLl9yZXNldENvbm5lY3RlZENvbm5lY3RvcnMoKTtcblxuICAgIGNvbnN0IGluc3RhbmNlRm9yQ3JlYXRlID0gdGhpcy5fc3RvcmUuY29ubmVjdGlvbnMuZ2V0Rm9yQ3JlYXRlKCk7XG4gICAgaWYgKGluc3RhbmNlRm9yQ3JlYXRlKSB7XG4gICAgICB0aGlzLl9jcmVhdGVNYXJrZXJzKGluc3RhbmNlRm9yQ3JlYXRlKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZUZvclNuYXAgPSB0aGlzLl9zdG9yZS5jb25uZWN0aW9ucy5nZXRGb3JTbmFwKCk7XG4gICAgaWYgKGluc3RhbmNlRm9yU25hcCkge1xuICAgICAgdGhpcy5fY3JlYXRlTWFya2VycyhpbnN0YW5jZUZvclNuYXApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbm5lY3Rpb25zID0gWy4uLnRoaXMuX3N0b3JlLmNvbm5lY3Rpb25zLmdldEFsbCgpXTtcbiAgICBjb25zdCBjb25uZWN0b3JSZWN0Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0PigpO1xuXG4gICAgaWYgKHRoaXMuX3Nob3VsZFVzZVdvcmtlcihjb25uZWN0aW9ucy5sZW5ndGgpKSB7XG4gICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb25zVXNpbmdXb3JrZXIoXG4gICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICBjb25uZWN0b3JSZWN0Q2FjaGUsXG4gICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uc0NodW5rZWQoY29ubmVjdGlvbnMsIGNvbm5lY3RvclJlY3RDYWNoZSwgMCwgcmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q29ubmVjdGVkQ29ubmVjdG9ycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3RlZEluUHJldmlvdXNSZW5kZXIuc2l6ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29ubmVjdG9yIG9mIHRoaXMuX2Nvbm5lY3RlZEluUHJldmlvdXNSZW5kZXIpIHtcbiAgICAgIGNvbm5lY3Rvci5yZXNldENvbm5lY3RlZCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2Nvbm5lY3RlZEluUHJldmlvdXNSZW5kZXIuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29ubmVjdGlvbihjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsIGNhY2hlOiBNYXA8c3RyaW5nLCBJUm91bmRlZFJlY3Q+KTogdm9pZCB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuX3Jlc29sdmVDb25uZWN0aW9uQ29udGV4dChjb25uZWN0aW9uLCBjYWNoZSk7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHRoaXMuX2NhbGN1bGF0ZUNvbm5lY3Rpb25MaW5lKGNvbm5lY3Rpb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uV2l0aExpbmUoY29ubmVjdGlvbiwgY29udGV4dC5zb3VyY2UsIGNvbnRleHQudGFyZ2V0LCBsaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29ubmVjdGlvbldpdGhMaW5lKFxuICAgIGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSxcbiAgICBzb3VyY2U6IEZDb25uZWN0b3JCYXNlLFxuICAgIHRhcmdldDogRkNvbm5lY3RvckJhc2UsXG4gICAgbGluZTogSUxpbmUsXG4gICk6IHZvaWQge1xuICAgIHNvdXJjZS5zZXRDb25uZWN0ZWQodGFyZ2V0KTtcbiAgICB0YXJnZXQuc2V0Q29ubmVjdGVkKHNvdXJjZSk7XG4gICAgdGhpcy5fY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlci5hZGQoc291cmNlKTtcbiAgICB0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyLmFkZCh0YXJnZXQpO1xuXG4gICAgY29uc3QgbWFya2Vyc0NoYW5nZWQgPSB0aGlzLl9jcmVhdGVNYXJrZXJzKGNvbm5lY3Rpb24pO1xuICAgIGlmICghbWFya2Vyc0NoYW5nZWQgJiYgIXRoaXMuX3Nob3VsZFJlZHJhd0Nvbm5lY3Rpb24oY29ubmVjdGlvbiwgbGluZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25uZWN0aW9uLnNldExpbmUobGluZSk7XG4gICAgY29ubmVjdGlvbi5pbml0aWFsaXplKCk7XG4gICAgY29ubmVjdGlvbi5pc1NlbGVjdGVkKCkgPyBjb25uZWN0aW9uLm1hcmtBc1NlbGVjdGVkKCkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29ubmVjdGlvbkxpbmUoXG4gICAgY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLFxuICAgIGNvbnRleHQ6IElGQ29ubmVjdGlvbldvcmtlckNvbnRleHQsXG4gICk6IElMaW5lIHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbkJlaGF2aW91ci5oYW5kbGUoXG4gICAgICBuZXcgQ29ubmVjdGlvbkJlaGF2aW91ckJ1aWxkZXJSZXF1ZXN0KFxuICAgICAgICBjb250ZXh0LnNvdXJjZVJlY3QsXG4gICAgICAgIGNvbnRleHQudGFyZ2V0UmVjdCxcbiAgICAgICAgY29ubmVjdGlvbixcbiAgICAgICAgY29udGV4dC5zb3VyY2UuZkNvbm5lY3RhYmxlU2lkZSxcbiAgICAgICAgY29udGV4dC50YXJnZXQuZkNvbm5lY3RhYmxlU2lkZSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc29sdmVDb25uZWN0aW9uQ29ubmVjdG9ycyhcbiAgICBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICk6IElGQ29ubmVjdGlvbldvcmtlckNvbm5lY3RvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTxJRkNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzIHwgbnVsbD4oXG4gICAgICBuZXcgUmVzb2x2ZUNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzUmVxdWVzdChjb25uZWN0aW9uKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzb2x2ZUNvbm5lY3Rpb25Db250ZXh0KFxuICAgIGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSxcbiAgICBjYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0PixcbiAgKTogSUZDb25uZWN0aW9uV29ya2VyQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlPElGQ29ubmVjdGlvbldvcmtlckNvbnRleHQgfCBudWxsPihcbiAgICAgIG5ldyBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbnRleHRSZXF1ZXN0KGNvbm5lY3Rpb24sIGNhY2hlKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlTWFya2Vycyhjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTxib29sZWFuPihuZXcgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0KGNvbm5lY3Rpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3VsZFJlZHJhd0Nvbm5lY3Rpb24oY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLCBsaW5lOiBJTGluZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGhFbGVtZW50ID0gY29ubmVjdGlvbi5mUGF0aCgpLmhvc3RFbGVtZW50O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZUNvbm5lY3Rpb25SZW5kZXJTaWduYXR1cmUoY29ubmVjdGlvbiwgbGluZSk7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5fY29ubmVjdGlvblJlbmRlckNhY2hlLmdldChjb25uZWN0aW9uKTtcbiAgICBpZiAoY2FjaGVkPy5zaWduYXR1cmUgPT09IHNpZ25hdHVyZSAmJiBjYWNoZWQucGF0aEVsZW1lbnQgPT09IHBhdGhFbGVtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdGlvblJlbmRlckNhY2hlLnNldChjb25uZWN0aW9uLCB7IHNpZ25hdHVyZSwgcGF0aEVsZW1lbnQgfSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29ubmVjdGlvbnNVc2luZ1dvcmtlcihcbiAgICBjb25uZWN0aW9uczogcmVhZG9ubHkgRkNvbm5lY3Rpb25CYXNlW10sXG4gICAgY29ubmVjdG9yUmVjdENhY2hlOiBNYXA8c3RyaW5nLCBJUm91bmRlZFJlY3Q+LFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3JcbiAgICAgIC5leGVjdXRlPFByb21pc2U8cmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdIHwgbnVsbD4+KFxuICAgICAgICBuZXcgQ2FsY3VsYXRlQ29ubmVjdGlvbnNVc2luZ0Nvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25zLCBjb25uZWN0b3JSZWN0Q2FjaGUpLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcbiAgICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb25zQ2h1bmtlZChcbiAgICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICAgIG5vZGVzUmV2aXNpb24sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvcmtlclJlc3VsdHMgPSB0aGlzLl9hbGlnbldvcmtlclJlc3VsdHNUb0Nvbm5lY3Rpb25JbmRleGVzKFxuICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgY29ubmVjdGlvbnMubGVuZ3RoLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2FwcGx5V29ya2VyUmVzdWx0c0NodW5rZWQoXG4gICAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgICAgd29ya2VyUmVzdWx0cyxcbiAgICAgICAgICBjb25uZWN0b3JSZWN0Q2FjaGUsXG4gICAgICAgICAgMCxcbiAgICAgICAgICByZW5kZXJUaWNrZXQsXG4gICAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVdvcmtlclJlc3VsdHNDaHVua2VkKFxuICAgIGNvbm5lY3Rpb25zOiByZWFkb25seSBGQ29ubmVjdGlvbkJhc2VbXSxcbiAgICB3b3JrZXJSZXN1bHRzOiByZWFkb25seSAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSxcbiAgICBjb25uZWN0b3JSZWN0Q2FjaGU6IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4sXG4gICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzbGljZVN0YXJ0ID0gdGhpcy5fbm93KCk7XG4gICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleDtcbiAgICBsZXQgcHJvY2Vzc2VkID0gMDtcblxuICAgIHdoaWxlIChcbiAgICAgIGVuZEluZGV4IDwgY29ubmVjdGlvbnMubGVuZ3RoICYmXG4gICAgICBwcm9jZXNzZWQgPCBDT05ORUNUSU9OU19QRVJfU0xJQ0VfTElNSVQgJiZcbiAgICAgIHRoaXMuX2lzV2l0aGluU2xpY2VCdWRnZXQoc2xpY2VTdGFydClcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uc1tlbmRJbmRleF07XG4gICAgICBjb25zdCByZXN1bHQgPSB3b3JrZXJSZXN1bHRzW2VuZEluZGV4XTtcblxuICAgICAgaWYgKHRoaXMuX2lzV29ya2VyUmVzdWx0U3VwcG9ydGVkKHJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdG9ycyA9IHRoaXMuX3Jlc29sdmVDb25uZWN0aW9uQ29ubmVjdG9ycyhjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKCFjb25uZWN0b3JzKSB7XG4gICAgICAgICAgZW5kSW5kZXgrKztcbiAgICAgICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQsIG5vZGVzUmV2aXNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25uZWN0aW9uLl9hcHBseVJlc29sdmVkU2lkZXNUb0Nvbm5lY3Rpb24oXG4gICAgICAgICAgICByZXN1bHQuc291cmNlU2lkZSBhcyBFRkNvbm5lY3RhYmxlU2lkZSxcbiAgICAgICAgICAgIHJlc3VsdC50YXJnZXRTaWRlIGFzIEVGQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uV2l0aExpbmUoXG4gICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICAgICAgY29ubmVjdG9ycy5zb3VyY2UsXG4gICAgICAgICAgICBjb25uZWN0b3JzLnRhcmdldCxcbiAgICAgICAgICAgIHJlc3VsdC5saW5lLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbihjb25uZWN0aW9uLCBjb25uZWN0b3JSZWN0Q2FjaGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb24oY29ubmVjdGlvbiwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIH1cblxuICAgICAgZW5kSW5kZXgrKztcbiAgICAgIHByb2Nlc3NlZCsrO1xuXG4gICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZEluZGV4ID49IGNvbm5lY3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PlxuICAgICAgdGhpcy5fYXBwbHlXb3JrZXJSZXN1bHRzQ2h1bmtlZChcbiAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgIHdvcmtlclJlc3VsdHMsXG4gICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgZW5kSW5kZXgsXG4gICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FsaWduV29ya2VyUmVzdWx0c1RvQ29ubmVjdGlvbkluZGV4ZXMoXG4gICAgcmVzdWx0czogcmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdLFxuICAgIGNvbm5lY3Rpb25Db3VudDogbnVtYmVyLFxuICApOiAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSB7XG4gICAgY29uc3QgYWxpZ25lZDogKElGQ29ubmVjdGlvbldvcmtlclJlc3VsdEl0ZW0gfCB1bmRlZmluZWQpW10gPSBuZXcgQXJyYXkoY29ubmVjdGlvbkNvdW50KTtcblxuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gcmVzdWx0Lm9yaWdpbmFsSW5kZXg7XG4gICAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBjb25uZWN0aW9uQ291bnQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGFsaWduZWRbaW5kZXhdID0gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiBhbGlnbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXb3JrZXJSZXN1bHRTdXBwb3J0ZWQoXG4gICAgcmVzdWx0OiBJRkNvbm5lY3Rpb25Xb3JrZXJSZXN1bHRJdGVtIHwgdW5kZWZpbmVkLFxuICApOiByZXN1bHQgaXMgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSAmIHtcbiAgICBzb3VyY2VTaWRlOiBzdHJpbmc7XG4gICAgdGFyZ2V0U2lkZTogc3RyaW5nO1xuICAgIGxpbmU6IElMaW5lO1xuICB9IHtcbiAgICByZXR1cm4gISEocmVzdWx0Py5zdXBwb3J0ZWQgJiYgcmVzdWx0LnNvdXJjZVNpZGUgJiYgcmVzdWx0LnRhcmdldFNpZGUgJiYgcmVzdWx0LmxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb25uZWN0aW9uc0NodW5rZWQoXG4gICAgY29ubmVjdGlvbnM6IHJlYWRvbmx5IEZDb25uZWN0aW9uQmFzZVtdLFxuICAgIGNvbm5lY3RvclJlY3RDYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0PixcbiAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgcmVuZGVyVGlja2V0OiBudW1iZXIsXG4gICAgbm9kZXNSZXZpc2lvbjogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaWNlU3RhcnQgPSB0aGlzLl9ub3coKTtcbiAgICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4O1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuXG4gICAgd2hpbGUgKFxuICAgICAgZW5kSW5kZXggPCBjb25uZWN0aW9ucy5sZW5ndGggJiZcbiAgICAgIHByb2Nlc3NlZCA8IENPTk5FQ1RJT05TX1BFUl9TTElDRV9MSU1JVCAmJlxuICAgICAgdGhpcy5faXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0KVxuICAgICkge1xuICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uKGNvbm5lY3Rpb25zW2VuZEluZGV4XSwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIGVuZEluZGV4Kys7XG4gICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmRJbmRleCA+PSBjb25uZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT5cbiAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICBjb25uZWN0aW9ucyxcbiAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICBlbmRJbmRleCxcbiAgICAgICAgcmVuZGVyVGlja2V0LFxuICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkVXNlV29ya2VyKGNvbm5lY3Rpb25Db3VudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8Ym9vbGVhbj4obmV3IFNob3VsZFVzZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25Db3VudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQ6IG51bWJlciwgbm9kZXNSZXZpc2lvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlbmRlclRpY2tldCA9PT0gdGhpcy5fcmVuZGVyVGlja2V0ICYmIG5vZGVzUmV2aXNpb24gPT09IHRoaXMuX3N0b3JlLm5vZGVzUmV2aXNpb247XG4gIH1cblxuICBwcml2YXRlIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSB0aGlzLl9icm93c2VyLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIGlmICghd2luZG93UmVmKSB7XG4gICAgICBjYWxsYmFjaygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2luZG93UmVmLnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gIH1cblxuICBwcml2YXRlIF9ub3coKTogbnVtYmVyIHtcbiAgICBjb25zdCBwZXJmb3JtYW5jZVJlZiA9IHRoaXMuX2Jyb3dzZXIuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LnBlcmZvcm1hbmNlO1xuXG4gICAgcmV0dXJuIHBlcmZvcm1hbmNlUmVmID8gcGVyZm9ybWFuY2VSZWYubm93KCkgOiBEYXRlLm5vdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2Jyb3dzZXIuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ub3coKSAtIHNsaWNlU3RhcnQgPCBTTElDRV9CVURHRVRfTVM7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvblJlbmRlclNpZ25hdHVyZShjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsIGxpbmU6IElMaW5lKTogc3RyaW5nIHtcbiAgY29uc3QgeyBzb3VyY2VTaWRlLCB0YXJnZXRTaWRlIH0gPSBjb25uZWN0aW9uLmdldFJlc29sdmVkU2lkZXMoKTtcblxuICByZXR1cm4gW1xuICAgIGNvbm5lY3Rpb24uZkJlaGF2aW9yLFxuICAgIGNvbm5lY3Rpb24uZlR5cGUsXG4gICAgY29ubmVjdGlvbi5mUmFkaXVzLFxuICAgIGNvbm5lY3Rpb24uZk9mZnNldCxcbiAgICBjb25uZWN0aW9uLmZSZWFzc2lnbmFibGVTdGFydCgpLFxuICAgIHNlcmlhbGl6ZUNvbnRlbnRzKGNvbm5lY3Rpb24uZkNvbnRlbnRzKCkgfHwgW10pLFxuICAgIHNvdXJjZVNpZGUsXG4gICAgdGFyZ2V0U2lkZSxcbiAgICBzZXJpYWxpemVQb2ludChsaW5lLnBvaW50MSksXG4gICAgc2VyaWFsaXplUG9pbnQobGluZS5wb2ludDIpLFxuICAgIHNlcmlhbGl6ZVdheXBvaW50cyhjb25uZWN0aW9uLmZXYXlwb2ludHMoKT8ud2F5cG9pbnRzKCkgfHwgW10pLFxuICBdLmpvaW4oJ3wnKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplUG9pbnQocG9pbnQ6IElMaW5lWydwb2ludDEnXSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtwb2ludC54fToke3BvaW50Lnl9YDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplV2F5cG9pbnRzKHdheXBvaW50czogcmVhZG9ubHkgSUxpbmVbJ3BvaW50MSddW10pOiBzdHJpbmcge1xuICByZXR1cm4gd2F5cG9pbnRzLm1hcChzZXJpYWxpemVQb2ludCkuam9pbignOycpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVDb250ZW50cyhjb250ZW50czogcmVhZG9ubHkgRkNvbm5lY3Rpb25Db250ZW50QmFzZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbnRlbnRzXG4gICAgLm1hcCgoY29udGVudCkgPT4ge1xuICAgICAgcmV0dXJuIFtjb250ZW50LnBvc2l0aW9uKCksIGNvbnRlbnQub2Zmc2V0KCksIGNvbnRlbnQuYWxpZ24oKV0uam9pbignOicpO1xuICAgIH0pXG4gICAgLmpvaW4oJzsnKTtcbn1cbiJdfQ==
|
|
@@ -6,9 +6,9 @@ import { AddConnectionToStoreRequest, RemoveConnectionFromStoreRequest } from '.
|
|
|
6
6
|
import { stringAttribute } from '../../utils';
|
|
7
7
|
import { EFConnectionBehavior, EFConnectionConnectableSide, EFConnectionType, F_CONNECTION_COMPONENTS_PARENT, FConnectionBase, } from '../../f-connection-v2';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../../f-connection-v2/components/connection-
|
|
10
|
-
import * as i2 from "../../f-connection-v2/components/connection-drag-handles/f-connection-drag-handle-
|
|
11
|
-
import * as i3 from "../../f-connection-v2/components/connection-
|
|
9
|
+
import * as i1 from "../../f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer";
|
|
10
|
+
import * as i2 from "../../f-connection-v2/components/connection-drag-handles/f-connection-drag-handle-start";
|
|
11
|
+
import * as i3 from "../../f-connection-v2/components/connection-drag-handles/f-connection-drag-handle-end";
|
|
12
12
|
import * as i4 from "../../f-connection-v2/components/connection-path/f-connection-path";
|
|
13
13
|
import * as i5 from "../../f-connection-v2/components/connection-selection/f-connection-selection";
|
|
14
14
|
let uniqueId = 0;
|
|
@@ -54,7 +54,7 @@ export class FConnectionComponent extends FConnectionBase {
|
|
|
54
54
|
this._mediator.execute(new RemoveConnectionFromStoreRequest(this));
|
|
55
55
|
}
|
|
56
56
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content />\n <g class=\"f-connection-group\">\n <linearGradient
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-gradient\" />\n<ng-content select=\"f-connection-waypoints\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none}:host svg{display:block;vertical-align:middle;overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: i1.FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: i2.FConnectionDragHandleStart, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: i3.FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: i4.FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: i5.FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
58
58
|
}
|
|
59
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, decorators: [{
|
|
60
60
|
type: Component,
|
|
@@ -63,7 +63,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
63
63
|
class: 'f-component f-connection',
|
|
64
64
|
'[class.f-connection-selection-disabled]': 'fSelectionDisabled()',
|
|
65
65
|
'[class.f-connection-reassign-disabled]': 'fDraggingDisabled()',
|
|
66
|
-
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content />\n <g class=\"f-connection-group\">\n <linearGradient
|
|
66
|
+
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-gradient\" />\n<ng-content select=\"f-connection-waypoints\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none}:host svg{display:block;vertical-align:middle;overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
67
67
|
}], propDecorators: { fRadius: [{
|
|
68
68
|
type: Input,
|
|
69
69
|
args: [{ transform: numberAttribute }]
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
76
76
|
}], fType: [{
|
|
77
77
|
type: Input
|
|
78
78
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsZUFBZSxHQUloQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsOEJBQThCLEVBQzlCLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUUvQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFnQmpCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBQ3ZDLEdBQUcsR0FBRyxLQUFLLENBQVMsZ0JBQWdCLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUU5RSxTQUFTLEdBQUcsS0FBSyxDQUFrQixFQUFFLEVB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RSxlQUFlLEVBQUU7Z0JBSXJCLE9BQU87c0JBRHRCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUlyQixTQUFTO3NCQUR4QixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO2dCQUk5RSxLQUFLO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbWl0Q29ubmVjdGlvbnNDaGFuZ2VzUmVxdWVzdCB9IGZyb20gJy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBjYXN0VG9FbnVtIH0gZnJvbSAnQGZvYmxleC91dGlscyc7XG5pbXBvcnQgeyBGTWVkaWF0b3IgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IEFkZENvbm5lY3Rpb25Ub1N0b3JlUmVxdWVzdCwgUmVtb3ZlQ29ubmVjdGlvbkZyb21TdG9yZVJlcXVlc3QgfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgc3RyaW5nQXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRUZDb25uZWN0aW9uQmVoYXZpb3IsXG4gIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZSxcbiAgRUZDb25uZWN0aW9uVHlwZSxcbiAgRl9DT05ORUNUSU9OX0NPTVBPTkVOVFNfUEFSRU5ULFxuICBGQ29ubmVjdGlvbkJhc2UsXG59IGZyb20gJy4uLy4uL2YtY29ubmVjdGlvbi12Mic7XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2YtY29ubmVjdGlvbicsXG4gIGV4cG9ydEFzOiAnZkNvbXBvbmVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mLWNvbm5lY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mLWNvbm5lY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuaWRdJzogJ2ZJZCgpJyxcbiAgICBjbGFzczogJ2YtY29tcG9uZW50IGYtY29ubmVjdGlvbicsXG4gICAgJ1tjbGFzcy5mLWNvbm5lY3Rpb24tc2VsZWN0aW9uLWRpc2FibGVkXSc6ICdmU2VsZWN0aW9uRGlzYWJsZWQoKScsXG4gICAgJ1tjbGFzcy5mLWNvbm5lY3Rpb24tcmVhc3NpZ24tZGlzYWJsZWRdJzogJ2ZEcmFnZ2luZ0Rpc2FibGVkKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEZfQ09OTkVDVElPTl9DT01QT05FTlRTX1BBUkVOVCwgdXNlRXhpc3Rpbmc6IEZDb25uZWN0aW9uQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBGQ29ubmVjdGlvbkNvbXBvbmVudCBleHRlbmRzIEZDb25uZWN0aW9uQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgb3ZlcnJpZGUgZklkID0gaW5wdXQ8c3RyaW5nPihgZi1jb25uZWN0aW9uLSR7dW5pcXVlSWQrK31gLCB7IGFsaWFzOiAnZkNvbm5lY3Rpb25JZCcgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZPdXRwdXRJZCA9IGlucHV0PHN0cmluZywgdW5rbm93bj4oJycsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gc3RyaW5nQXR0cmlidXRlKHZhbHVlKSB8fCAnJyxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZJbnB1dElkID0gaW5wdXQ8c3RyaW5nLCB1bmtub3duPignJywge1xuICAgIHRyYW5zZm9ybTogKHZhbHVlKSA9PiBzdHJpbmdBdHRyaWJ1dGUodmFsdWUpIHx8ICcnLFxuICB9KTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZlJhZGl1czogbnVtYmVyID0gODtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZk9mZnNldDogbnVtYmVyID0gMTI7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IHVua25vd24pID0+IGNhc3RUb0VudW0odmFsdWUsICdmQmVoYXZpb3InLCBFRkNvbm5lY3Rpb25CZWhhdmlvcikgfSlcbiAgcHVibGljIG92ZXJyaWRlIGZCZWhhdmlvcjogRUZDb25uZWN0aW9uQmVoYXZpb3IgPSBFRkNvbm5lY3Rpb25CZWhhdmlvci5GSVhFRDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZlR5cGU6IEVGQ29ubmVjdGlvblR5cGUgfCBzdHJpbmcgPSBFRkNvbm5lY3Rpb25UeXBlLlNUUkFJR0hUO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmU2VsZWN0aW9uRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZSZWFzc2lnbmFibGVTdGFydCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZkRyYWdnaW5nRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICAgIGFsaWFzOiAnZlJlYXNzaWduRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZJbnB1dFNpZGUgPSBpbnB1dChFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGUuREVGQVVMVCwge1xuICAgIHRyYW5zZm9ybTogKHgpID0+IHtcbiAgICAgIHJldHVybiBjYXN0VG9FbnVtKHgsICdmSW5wdXRTaWRlJywgRUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlKTtcbiAgICB9LFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZk91dHB1dFNpZGUgPSBpbnB1dChFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGUuREVGQVVMVCwge1xuICAgIHRyYW5zZm9ybTogKHgpID0+IHtcbiAgICAgIHJldHVybiBjYXN0VG9FbnVtKHgsICdmT3V0cHV0U2lkZScsIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZSk7XG4gICAgfSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBib3VuZGluZ0VsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mUGF0aCgpLmhvc3RFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgQWRkQ29ubmVjdGlvblRvU3RvcmVSZXF1ZXN0KHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBFbWl0Q29ubmVjdGlvbnNDaGFuZ2VzUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZW1vdmVDb25uZWN0aW9uRnJvbVN0b3JlUmVxdWVzdCh0aGlzKSk7XG4gIH1cbn1cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8ZGVmcyAjZGVmcz48L2RlZnM+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInN2Z1tmTWFya2VyXVwiIC8+XG4gIDxnIGNsYXNzPVwiZi1jb25uZWN0aW9uLWdyb3VwXCI+XG4gICAgQGlmIChmR3JhZGllbnQoKTsgYXMgZ3JhZGllbnQpIHtcbiAgICAgIDxsaW5lYXJHcmFkaWVudFxuICAgICAgICBmQ29ubmVjdGlvbkdyYWRpZW50UmVuZGVyZXJcbiAgICAgICAgW2ZDb25uZWN0aW9uR3JhZGllbnRSZW5kZXJlckZvcl09XCJncmFkaWVudFwiXG4gICAgICA+PC9saW5lYXJHcmFkaWVudD5cbiAgICB9XG4gICAgPHBhdGggZkNvbm5lY3Rpb25TZWxlY3Rpb24gW2F0dHIuZF09XCJwYXRoXCI+PC9wYXRoPlxuICAgIDxnPlxuICAgICAgPHBhdGggZi1jb25uZWN0aW9uLXBhdGggW3VzZUdyYWRpZW50XT1cIiEhZkdyYWRpZW50KClcIiBbYXR0ci5kXT1cInBhdGhcIj48L3BhdGg+XG4gICAgICBAaWYgKGZSZWFzc2lnbmFibGVTdGFydCgpKSB7XG4gICAgICAgIDxjaXJjbGUgZi1jb25uZWN0aW9uLWRyYWctaGFuZGxlLXN0YXJ0IHI9XCI4XCI+PC9jaXJjbGU+XG4gICAgICB9XG4gICAgICA8Y2lyY2xlIGYtY29ubmVjdGlvbi1kcmFnLWhhbmRsZS1lbmQgcj1cIjhcIj48L2NpcmNsZT5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1jb25uZWN0aW9uLWdyYWRpZW50XCIgLz5cbjxuZy1jb250ZW50IHNlbGVjdD1cImYtY29ubmVjdGlvbi13YXlwb2ludHNcIiAvPlxuXG5AaWYgKGZDb250ZW50cygpLmxlbmd0aCkge1xuICA8bmctY29udGVudCBzZWxlY3Q9XCJbZkNvbm5lY3Rpb25Db250ZW50XVwiIC8+XG59XG4iXX0=
|
|
@@ -5,11 +5,10 @@ import { FMediator } from '@foblex/mediator';
|
|
|
5
5
|
import { AddConnectionForCreateToStoreRequest, RemoveConnectionForCreateFromStoreRequest, } from '../../domain';
|
|
6
6
|
import { EFConnectionBehavior, EFConnectionConnectableSide, EFConnectionType, F_CONNECTION_COMPONENTS_PARENT, FConnectionBase, } from '../../f-connection-v2';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../f-connection-v2/components/connection-
|
|
8
|
+
import * as i1 from "../../f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer";
|
|
9
9
|
import * as i2 from "../../f-connection-v2/components/connection-drag-handles/f-connection-drag-handle-end";
|
|
10
|
-
import * as i3 from "../../f-connection-v2/components/connection-
|
|
11
|
-
import * as i4 from "../../f-connection-v2/components/connection-
|
|
12
|
-
import * as i5 from "../../f-connection-v2/components/connection-selection/f-connection-selection";
|
|
10
|
+
import * as i3 from "../../f-connection-v2/components/connection-path/f-connection-path";
|
|
11
|
+
import * as i4 from "../../f-connection-v2/components/connection-selection/f-connection-selection";
|
|
13
12
|
let uniqueId = 0;
|
|
14
13
|
export class FConnectionForCreateComponent extends FConnectionBase {
|
|
15
14
|
fId = signal(`f-connection-for-create-${uniqueId++}`);
|
|
@@ -48,7 +47,7 @@ export class FConnectionForCreateComponent extends FConnectionBase {
|
|
|
48
47
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
49
48
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionForCreateComponent, selector: "f-connection-for-create", inputs: { fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "f-component f-connection f-connection-for-create" }, providers: [
|
|
50
49
|
{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionForCreateComponent },
|
|
51
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content />\n <g class=\"f-connection-group\">\n <linearGradient
|
|
50
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: i1.FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: i2.FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: i3.FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: i4.FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
52
51
|
}
|
|
53
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, decorators: [{
|
|
54
53
|
type: Component,
|
|
@@ -56,7 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
56
55
|
class: 'f-component f-connection f-connection-for-create',
|
|
57
56
|
}, providers: [
|
|
58
57
|
{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionForCreateComponent },
|
|
59
|
-
], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content />\n <g class=\"f-connection-group\">\n <linearGradient
|
|
58
|
+
], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
60
59
|
}], propDecorators: { fRadius: [{
|
|
61
60
|
type: Input,
|
|
62
61
|
args: [{ transform: numberAttribute }]
|
|
@@ -69,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
69
68
|
}], fType: [{
|
|
70
69
|
type: Input
|
|
71
70
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWZvci1jcmVhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uLWZvci1jcmVhdGUvZi1jb25uZWN0aW9uLWZvci1jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uLWZvci1jcmVhdGUvZi1jb25uZWN0aW9uLWZvci1jcmVhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsZUFBZSxFQUlmLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsb0NBQW9DLEVBQ3BDLHlDQUF5QyxHQUMxQyxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsOEJBQThCLEVBQzlCLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRS9CLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQWNqQixNQUFNLE9BQU8sNkJBQ1gsU0FBUSxlQUFlO0lBR1AsR0FBRyxHQUFHLE1BQU0sQ0FBUywyQkFBMkIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTlELFNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFdkIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUd0QixPQUFPLEdBQVcsQ0FBQyxDQUFDO0lBR3BCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFHckIsU0FBUyxHQUF5QixvQkFBb0IsQ0FBQyxLQUFLLENBQUM7SUFHN0QsS0FBSyxHQUE4QixnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7SUFFN0QsVUFBVSxHQUFHLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLEVBQUU7UUFDdEUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixPQUFPLFVBQVUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixDQUFDLENBQUM7UUFDbEUsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVhLFdBQVcsR0FBRyxLQUFLLENBQUMsMkJBQTJCLENBQUMsT0FBTyxFQUFFO1FBQ3ZFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsT0FBTyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1FBQ25FLENBQUM7S0FDRixDQUFDLENBQUM7SUFFSCxJQUFvQixlQUFlO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRWdCLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFeEMsUUFBUTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksb0NBQW9DLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLDZCQUE2QixFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLHlDQUF5QyxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO3dHQXREVSw2QkFBNkI7NEZBQTdCLDZCQUE2Qix3S0FVcEIsZUFBZSwySEFHZixlQUFlLGlJQUdmLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyx5ZUFwQmpGO1lBQ1QsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFO1NBQ3hGLHNFQ3hDSCxxc0JBc0JBOzs0RkRvQmEsNkJBQTZCO2tCQVp6QyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsa0RBQWtEO3FCQUMxRCxhQUNVO3dCQUNULEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFdBQVcsK0JBQStCLEVBQUU7cUJBQ3hGOzhCQWFlLE9BQU87c0JBRHRCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUlyQixPQUFPO3NCQUR0QixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFJckIsU0FBUztzQkFEeEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtnQkFJOUUsS0FBSztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIElucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbWl0Q29ubmVjdGlvbnNDaGFuZ2VzUmVxdWVzdCB9IGZyb20gJy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBjYXN0VG9FbnVtIH0gZnJvbSAnQGZvYmxleC91dGlscyc7XG5pbXBvcnQgeyBGTWVkaWF0b3IgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7XG4gIEFkZENvbm5lY3Rpb25Gb3JDcmVhdGVUb1N0b3JlUmVxdWVzdCxcbiAgUmVtb3ZlQ29ubmVjdGlvbkZvckNyZWF0ZUZyb21TdG9yZVJlcXVlc3QsXG59IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQge1xuICBFRkNvbm5lY3Rpb25CZWhhdmlvcixcbiAgRUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlLFxuICBFRkNvbm5lY3Rpb25UeXBlLFxuICBGX0NPTk5FQ1RJT05fQ09NUE9ORU5UU19QQVJFTlQsXG4gIEZDb25uZWN0aW9uQmFzZSxcbn0gZnJvbSAnLi4vLi4vZi1jb25uZWN0aW9uLXYyJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZi1jb25uZWN0aW9uLWZvci1jcmVhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZi1jb25uZWN0aW9uLWZvci1jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mLWNvbm5lY3Rpb24tZm9yLWNyZWF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZi1jb21wb25lbnQgZi1jb25uZWN0aW9uIGYtY29ubmVjdGlvbi1mb3ItY3JlYXRlJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBGX0NPTk5FQ1RJT05fQ09NUE9ORU5UU19QQVJFTlQsIHVzZUV4aXN0aW5nOiBGQ29ubmVjdGlvbkZvckNyZWF0ZUNvbXBvbmVudCB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGQ29ubmVjdGlvbkZvckNyZWF0ZUNvbXBvbmVudFxuICBleHRlbmRzIEZDb25uZWN0aW9uQmFzZVxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcHVibGljIG92ZXJyaWRlIGZJZCA9IHNpZ25hbDxzdHJpbmc+KGBmLWNvbm5lY3Rpb24tZm9yLWNyZWF0ZS0ke3VuaXF1ZUlkKyt9YCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZPdXRwdXRJZCA9IHNpZ25hbCgnJyk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZJbnB1dElkID0gc2lnbmFsKCcnKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZlJhZGl1czogbnVtYmVyID0gODtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZk9mZnNldDogbnVtYmVyID0gMTI7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IHVua25vd24pID0+IGNhc3RUb0VudW0odmFsdWUsICdmQmVoYXZpb3InLCBFRkNvbm5lY3Rpb25CZWhhdmlvcikgfSlcbiAgcHVibGljIG92ZXJyaWRlIGZCZWhhdmlvcjogRUZDb25uZWN0aW9uQmVoYXZpb3IgPSBFRkNvbm5lY3Rpb25CZWhhdmlvci5GSVhFRDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZlR5cGU6IEVGQ29ubmVjdGlvblR5cGUgfCBzdHJpbmcgPSBFRkNvbm5lY3Rpb25UeXBlLlNUUkFJR0hUO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmSW5wdXRTaWRlID0gaW5wdXQoRUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlLkRFRkFVTFQsIHtcbiAgICB0cmFuc2Zvcm06ICh4KSA9PiB7XG4gICAgICByZXR1cm4gY2FzdFRvRW51bSh4LCAnZklucHV0U2lkZScsIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZSk7XG4gICAgfSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZPdXRwdXRTaWRlID0gaW5wdXQoRUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlLkRFRkFVTFQsIHtcbiAgICB0cmFuc2Zvcm06ICh4KSA9PiB7XG4gICAgICByZXR1cm4gY2FzdFRvRW51bSh4LCAnZk91dHB1dFNpZGUnLCBFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGUpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgYm91bmRpbmdFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZlBhdGgoKS5ob3N0RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IEFkZENvbm5lY3Rpb25Gb3JDcmVhdGVUb1N0b3JlUmVxdWVzdCh0aGlzKSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IEVtaXRDb25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFJlbW92ZUNvbm5lY3Rpb25Gb3JDcmVhdGVGcm9tU3RvcmVSZXF1ZXN0KCkpO1xuICB9XG59XG4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPGRlZnMgI2RlZnM+PC9kZWZzPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJzdmdbZk1hcmtlcl1cIiAvPlxuICA8ZyBjbGFzcz1cImYtY29ubmVjdGlvbi1ncm91cFwiPlxuICAgIEBpZiAoZkdyYWRpZW50KCk7IGFzIGdyYWRpZW50KSB7XG4gICAgICA8bGluZWFyR3JhZGllbnRcbiAgICAgICAgZkNvbm5lY3Rpb25HcmFkaWVudFJlbmRlcmVyXG4gICAgICAgIFtmQ29ubmVjdGlvbkdyYWRpZW50UmVuZGVyZXJGb3JdPVwiZ3JhZGllbnRcIlxuICAgICAgPjwvbGluZWFyR3JhZGllbnQ+XG4gICAgfVxuICAgIDxwYXRoIGZDb25uZWN0aW9uU2VsZWN0aW9uIFthdHRyLmRdPVwicGF0aFwiPjwvcGF0aD5cbiAgICA8Zz5cbiAgICAgIDxwYXRoIGYtY29ubmVjdGlvbi1wYXRoIFt1c2VHcmFkaWVudF09XCIhIWZHcmFkaWVudCgpXCIgW2F0dHIuZF09XCJwYXRoXCI+PC9wYXRoPlxuICAgICAgPGNpcmNsZSBmLWNvbm5lY3Rpb24tZHJhZy1oYW5kbGUtZW5kIHI9XCI4XCI+PC9jaXJjbGU+XG4gICAgPC9nPlxuICA8L2c+XG48L3N2Zz5cbjxuZy1jb250ZW50IHNlbGVjdD1cImYtY29ubmVjdGlvbi1ncmFkaWVudFwiIC8+XG5cbkBpZiAoZkNvbnRlbnRzKCkubGVuZ3RoKSB7XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltmQ29ubmVjdGlvbkNvbnRlbnRdXCIgLz5cbn1cbiJdfQ==
|