@nodetool-ai/dsl 0.8.2 → 0.8.4-a24.1
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 +6 -0
- package/dist/.nodetool-build-stamp +1 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +7 -0
- package/dist/core.js.map +1 -1
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +7 -5
- package/dist/export.js.map +1 -1
- package/dist/flow/core.d.ts +3 -0
- package/dist/flow/core.d.ts.map +1 -1
- package/dist/flow/core.js +12 -2
- package/dist/flow/core.js.map +1 -1
- package/dist/flow/generated/nodetool.image.d.ts +1 -1
- package/dist/flow/generated/nodetool.image.d.ts.map +1 -1
- package/dist/flow/generated/nodetool.manimgx.d.ts +52 -0
- package/dist/flow/generated/nodetool.manimgx.d.ts.map +1 -0
- package/dist/flow/generated/nodetool.manimgx.js +14 -0
- package/dist/flow/generated/nodetool.manimgx.js.map +1 -0
- package/dist/flow/generated/nodetool.storyboard.d.ts +17 -0
- package/dist/flow/generated/nodetool.storyboard.d.ts.map +1 -1
- package/dist/flow/generated/nodetool.storyboard.js +3 -0
- package/dist/flow/generated/nodetool.storyboard.js.map +1 -1
- package/dist/flow/generated/nodetool.video.d.ts +1 -0
- package/dist/flow/generated/nodetool.video.d.ts.map +1 -1
- package/dist/flow/generated/nodetool.video.js.map +1 -1
- package/dist/flow/generated/nodetool.workflows.app_node.d.ts +11 -0
- package/dist/flow/generated/nodetool.workflows.app_node.d.ts.map +1 -0
- package/dist/flow/generated/nodetool.workflows.app_node.js +11 -0
- package/dist/flow/generated/nodetool.workflows.app_node.js.map +1 -0
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +1 -1
- package/dist/flow/index.js.map +1 -1
- package/dist/generated/index.d.ts +2 -0
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +2 -0
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/nodetool.image.d.ts +1 -1
- package/dist/generated/nodetool.image.d.ts.map +1 -1
- package/dist/generated/nodetool.manimgx.d.ts +56 -0
- package/dist/generated/nodetool.manimgx.d.ts.map +1 -0
- package/dist/generated/nodetool.manimgx.js +12 -0
- package/dist/generated/nodetool.manimgx.js.map +1 -0
- package/dist/generated/nodetool.storyboard.d.ts +17 -0
- package/dist/generated/nodetool.storyboard.d.ts.map +1 -1
- package/dist/generated/nodetool.storyboard.js +3 -0
- package/dist/generated/nodetool.storyboard.js.map +1 -1
- package/dist/generated/nodetool.video.d.ts +1 -0
- package/dist/generated/nodetool.video.d.ts.map +1 -1
- package/dist/generated/nodetool.video.js.map +1 -1
- package/dist/generated/nodetool.workflows.app_node.d.ts +10 -0
- package/dist/generated/nodetool.workflows.app_node.d.ts.map +1 -0
- package/dist/generated/nodetool.workflows.app_node.js +6 -0
- package/dist/generated/nodetool.workflows.app_node.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +5 -15
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +32 -58
- package/dist/registry.js.map +1 -1
- package/dist/script-export.d.ts +57 -0
- package/dist/script-export.d.ts.map +1 -0
- package/dist/script-export.js +632 -0
- package/dist/script-export.js.map +1 -0
- package/package.json +11 -15
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Auto-generated — do not edit manually
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
export function app(inputs, options) {
|
|
4
|
+
return createNode("nodetool.workflows.app_node.App", inputs, { id: options?.id, outputNames: [], outputTypes: {}, streaming: true, inputMode: "buffered" });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=nodetool.workflows.app_node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodetool.workflows.app_node.js","sourceRoot":"","sources":["../../src/generated/nodetool.workflows.app_node.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAA6C,MAAM,YAAY,CAAC;AAYnF,MAAM,UAAU,GAAG,CAAC,MAAiB,EAAE,OAAqB;IAC1D,OAAO,UAAU,CAAC,iCAAiC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9J,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AAErC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AAErC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AAErC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AAErC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,29 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry and executor resolution shared by the graph DSL (`run()`) and the
|
|
3
|
-
* native flow API. One builtin-pack list, two consumers.
|
|
4
|
-
*/
|
|
5
1
|
import { NodeRegistry } from "@nodetool-ai/node-sdk";
|
|
6
2
|
import { type NodeExecutor, type PythonBridgeBase } from "@nodetool-ai/runtime";
|
|
7
3
|
import type { NodeDescriptor } from "@nodetool-ai/protocol";
|
|
8
|
-
/**
|
|
9
|
-
* The registry of node packs shipped with the DSL. Built once per process:
|
|
10
|
-
* `run()` used to rebuild it per call, and the flow API calls this per node
|
|
11
|
-
* call, where re-importing six packages would dominate the cost of the call.
|
|
12
|
-
*
|
|
13
|
-
* Every pack except `base-nodes` is optional — an environment that cannot load
|
|
14
|
-
* one (missing native dependency, platform-specific pack) keeps the rest.
|
|
15
|
-
*/
|
|
4
|
+
/** Build the resolvable legacy DSL packs once, retaining missing-pack metadata. */
|
|
16
5
|
export declare function buildBuiltinRegistry(): Promise<NodeRegistry>;
|
|
17
6
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* worth connecting.
|
|
7
|
+
* Types handled by the TS registry never require a Python worker. Catalog
|
|
8
|
+
* types are refused by the executor resolver rather than sent to Python.
|
|
21
9
|
*/
|
|
22
10
|
export declare function createHasTsExecutor(registry: NodeRegistry | undefined, builtinRegistry: NodeRegistry): (nodeType: string) => boolean;
|
|
23
11
|
export interface ExecutorResolverOptions {
|
|
24
12
|
/** Custom node registry, consulted before the global and builtin ones. */
|
|
25
13
|
registry?: NodeRegistry | undefined;
|
|
26
14
|
}
|
|
15
|
+
/** Refuse only catalog entries present in the selected registries, without constructing a node. */
|
|
16
|
+
export declare function assertNodePackAvailable(nodeType: string, opts: ExecutorResolverOptions | undefined, builtinRegistry: NodeRegistry): void;
|
|
27
17
|
/**
|
|
28
18
|
* The resolution chain: caller override → `NodeRegistry.global` → builtin packs
|
|
29
19
|
* → the Python bridge. Unknown types throw.
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,mFAAmF;AACnF,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,YAAY,CAAC,CAG5D;AAWD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,eAAe,EAAE,YAAY,GAC5B,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAQ/B;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACrC;AAED,mGAAmG;AACnG,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,uBAAuB,GAAG,SAAS,EACzC,eAAe,EAAE,YAAY,GAC5B,IAAI,CAWN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,uBAAuB,GAAG,SAAS,EACzC,eAAe,EAAE,YAAY,EAC7B,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAC9B,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAqBxC"}
|
package/dist/registry.js
CHANGED
|
@@ -1,79 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Registry and executor resolution shared by the graph DSL
|
|
3
|
-
* native flow API. One builtin-pack list, two consumers.
|
|
2
|
+
* Registry and executor resolution shared by the graph DSL and native flow API.
|
|
4
3
|
*/
|
|
4
|
+
import { createMissingPackError, registerAvailablePacks } from "@nodetool-ai/node-catalog";
|
|
5
5
|
import { NodeRegistry } from "@nodetool-ai/node-sdk";
|
|
6
6
|
import { resolvePythonNodeExecutor } from "@nodetool-ai/runtime";
|
|
7
7
|
let builtinRegistryPromise = null;
|
|
8
|
-
/**
|
|
9
|
-
* The registry of node packs shipped with the DSL. Built once per process:
|
|
10
|
-
* `run()` used to rebuild it per call, and the flow API calls this per node
|
|
11
|
-
* call, where re-importing six packages would dominate the cost of the call.
|
|
12
|
-
*
|
|
13
|
-
* Every pack except `base-nodes` is optional — an environment that cannot load
|
|
14
|
-
* one (missing native dependency, platform-specific pack) keeps the rest.
|
|
15
|
-
*/
|
|
8
|
+
/** Build the resolvable legacy DSL packs once, retaining missing-pack metadata. */
|
|
16
9
|
export function buildBuiltinRegistry() {
|
|
17
10
|
builtinRegistryPromise ??= loadBuiltinRegistry();
|
|
18
11
|
return builtinRegistryPromise;
|
|
19
12
|
}
|
|
20
13
|
async function loadBuiltinRegistry() {
|
|
21
14
|
const builtinRegistry = new NodeRegistry();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
registerWhisperCppNodes(builtinRegistry);
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
// Some environments do not have the whisper.cpp node package installed.
|
|
30
|
-
}
|
|
31
|
-
try {
|
|
32
|
-
const { registerElevenLabsNodes } = await import("@nodetool-ai/elevenlabs-nodes");
|
|
33
|
-
registerElevenLabsNodes(builtinRegistry);
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
// Some environments do not have the ElevenLabs node package in a runnable state.
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
const { registerMinimaxNodes } = await import("@nodetool-ai/minimax-nodes");
|
|
40
|
-
registerMinimaxNodes(builtinRegistry);
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
// Some environments do not have the MiniMax node package in a runnable state.
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
const { registerTransformersJsNodes } = await import("@nodetool-ai/transformers-js-nodes");
|
|
47
|
-
registerTransformersJsNodes(builtinRegistry);
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Some environments do not have the Transformers.js node package in a runnable state.
|
|
51
|
-
}
|
|
52
|
-
try {
|
|
53
|
-
const { registerHuggingFaceNodes } = await import("@nodetool-ai/huggingface-nodes");
|
|
54
|
-
registerHuggingFaceNodes(builtinRegistry);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
// Some environments do not have the Hugging Face node package in a runnable state.
|
|
58
|
-
}
|
|
59
|
-
try {
|
|
60
|
-
const { registerReveNodes } = await import("@nodetool-ai/reve-nodes");
|
|
61
|
-
registerReveNodes(builtinRegistry);
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// Some environments do not have the Reve node package in a runnable state.
|
|
65
|
-
}
|
|
15
|
+
await registerAvailablePacks(builtinRegistry, {
|
|
16
|
+
includeOptionalPacks: true,
|
|
17
|
+
excludedPackIds: ["fal", "kie", "topaz", "atlascloud", "higgsfield", "together", "replicate"]
|
|
18
|
+
});
|
|
66
19
|
return builtinRegistry;
|
|
67
20
|
}
|
|
68
21
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* worth connecting.
|
|
22
|
+
* Types handled by the TS registry never require a Python worker. Catalog
|
|
23
|
+
* types are refused by the executor resolver rather than sent to Python.
|
|
72
24
|
*/
|
|
73
25
|
export function createHasTsExecutor(registry, builtinRegistry) {
|
|
74
26
|
return (nodeType) => Boolean(registry?.has(nodeType)) ||
|
|
75
27
|
NodeRegistry.global.has(nodeType) ||
|
|
76
|
-
builtinRegistry.has(nodeType)
|
|
28
|
+
builtinRegistry.has(nodeType) ||
|
|
29
|
+
registry?.availability(nodeType) === "catalog" ||
|
|
30
|
+
NodeRegistry.global.availability(nodeType) === "catalog" ||
|
|
31
|
+
builtinRegistry.availability(nodeType) === "catalog";
|
|
32
|
+
}
|
|
33
|
+
/** Refuse only catalog entries present in the selected registries, without constructing a node. */
|
|
34
|
+
export function assertNodePackAvailable(nodeType, opts, builtinRegistry) {
|
|
35
|
+
const registries = [opts?.registry, NodeRegistry.global, builtinRegistry];
|
|
36
|
+
if (registries.some((registry) => registry?.has(nodeType))) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
for (const registry of registries) {
|
|
40
|
+
const entry = registry?.catalogEntry(nodeType);
|
|
41
|
+
if (entry && registry?.availability(nodeType) === "catalog") {
|
|
42
|
+
throw createMissingPackError(entry.pack, [nodeType]);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
77
45
|
}
|
|
78
46
|
/**
|
|
79
47
|
* The resolution chain: caller override → `NodeRegistry.global` → builtin packs
|
|
@@ -90,6 +58,12 @@ export function createExecutorResolver(opts, builtinRegistry, bridge) {
|
|
|
90
58
|
if (builtinRegistry.has(node.type)) {
|
|
91
59
|
return builtinRegistry.resolve(node);
|
|
92
60
|
}
|
|
61
|
+
for (const registry of [opts?.registry, NodeRegistry.global, builtinRegistry]) {
|
|
62
|
+
const entry = registry?.catalogEntry(node.type);
|
|
63
|
+
if (entry && registry?.availability(node.type) === "catalog") {
|
|
64
|
+
throw createMissingPackError(entry.pack, [node.type]);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
93
67
|
const py = resolvePythonNodeExecutor(bridge, node);
|
|
94
68
|
if (py)
|
|
95
69
|
return py;
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow → JavaScript script.
|
|
3
|
+
*
|
|
4
|
+
* Turns a saved workflow graph into a script that calls each node as an async
|
|
5
|
+
* function, in dependency order: `await` is the edge and a variable is the
|
|
6
|
+
* wire. Two targets share one body and differ only in how a node is called:
|
|
7
|
+
*
|
|
8
|
+
* sandbox — a body for a JS script document or a Code node. Each call
|
|
9
|
+
* goes through the `@nodetool-ai/sandbox-flow` pack's untyped
|
|
10
|
+
* bridge, which crosses to the host and runs on the invoking
|
|
11
|
+
* run's context.
|
|
12
|
+
* node — a standalone `.mjs` for plain Node.js. Each call runs in process
|
|
13
|
+
* through `@nodetool-ai/dsl/flow`, with secrets read from the
|
|
14
|
+
* environment.
|
|
15
|
+
*
|
|
16
|
+
* Both reach the same native-flow backend (docs/dsl-native-flow-design.md), so
|
|
17
|
+
* a node behaves the same in either. What a call cannot express is refused in
|
|
18
|
+
* the generated script itself: a script with an unsupported node throws before
|
|
19
|
+
* it runs anything, naming every node and the reason.
|
|
20
|
+
*/
|
|
21
|
+
import { type NodeMetadata } from "@nodetool-ai/node-sdk";
|
|
22
|
+
export type ScriptTarget = "sandbox" | "node";
|
|
23
|
+
export interface WorkflowToScriptOptions {
|
|
24
|
+
target: ScriptTarget;
|
|
25
|
+
workflowName?: string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Metadata for a node type. Defaults to the node catalog; a server
|
|
28
|
+
* passes its registry so provider and pack nodes are described too.
|
|
29
|
+
*/
|
|
30
|
+
getMetadata?: (nodeType: string) => NodeMetadata | undefined;
|
|
31
|
+
}
|
|
32
|
+
/** A declared script port, in the JS script document's `{name, type}` shape. */
|
|
33
|
+
export interface ScriptPort {
|
|
34
|
+
name: string;
|
|
35
|
+
type: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ScriptIssue {
|
|
38
|
+
node_id: string;
|
|
39
|
+
node_type: string;
|
|
40
|
+
message: string;
|
|
41
|
+
}
|
|
42
|
+
export interface WorkflowScript {
|
|
43
|
+
code: string;
|
|
44
|
+
/** Workflow inputs, read as `inputs.<name>`. */
|
|
45
|
+
inputs: ScriptPort[];
|
|
46
|
+
/** Workflow outputs, written with `output(name, …)` or `emit(name, …)`. */
|
|
47
|
+
outputs: ScriptPort[];
|
|
48
|
+
/** Nodes the script refuses to run. Non-empty means the script throws. */
|
|
49
|
+
unsupported: ScriptIssue[];
|
|
50
|
+
}
|
|
51
|
+
interface WorkflowLike {
|
|
52
|
+
nodes: Array<Record<string, unknown>>;
|
|
53
|
+
edges: Array<Record<string, unknown>>;
|
|
54
|
+
}
|
|
55
|
+
export declare function workflowToScript(graph: WorkflowLike, options: WorkflowToScriptOptions): WorkflowScript;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=script-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-export.d.ts","sourceRoot":"","sources":["../src/script-export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;CAC9D;AAED,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,2EAA2E;IAC3E,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,0EAA0E;IAC1E,WAAW,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvC;AA0VD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,uBAAuB,GAC/B,cAAc,CAsShB"}
|