behavior-contracts 0.5.0 → 0.7.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/dist/behavior.d.ts +7 -0
- package/dist/behavior.d.ts.map +1 -1
- package/dist/behavior.js.map +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +10 -3
- package/dist/builder.js.map +1 -1
- package/dist/generator/async-plan.d.ts +78 -0
- package/dist/generator/async-plan.d.ts.map +1 -0
- package/dist/generator/async-plan.js +116 -0
- package/dist/generator/async-plan.js.map +1 -0
- package/dist/generator/core.d.ts +30 -9
- package/dist/generator/core.d.ts.map +1 -1
- package/dist/generator/core.js.map +1 -1
- package/dist/generator/{emit-straightline-typed-go.d.ts → emit-shared-go-typed.d.ts} +11 -17
- package/dist/generator/emit-shared-go-typed.d.ts.map +1 -0
- package/dist/generator/emit-shared-go-typed.js +572 -0
- package/dist/generator/emit-shared-go-typed.js.map +1 -0
- package/dist/generator/emit-shared-go.d.ts +29 -0
- package/dist/generator/emit-shared-go.d.ts.map +1 -0
- package/dist/generator/{emit-straightline-go.js → emit-shared-go.js} +2 -34
- package/dist/generator/emit-shared-go.js.map +1 -0
- package/dist/generator/{emit-straightline-typed-rust.d.ts → emit-shared-rust-typed.d.ts} +11 -17
- package/dist/generator/emit-shared-rust-typed.d.ts.map +1 -0
- package/dist/generator/emit-shared-rust-typed.js +576 -0
- package/dist/generator/emit-shared-rust-typed.js.map +1 -0
- package/dist/generator/{emit-straightline-rust.d.ts → emit-shared-rust.d.ts} +1 -36
- package/dist/generator/emit-shared-rust.d.ts.map +1 -0
- package/dist/generator/{emit-straightline-rust.js → emit-shared-rust.js} +2 -16
- package/dist/generator/emit-shared-rust.js.map +1 -0
- package/dist/generator/emit-shared-typescript.d.ts +12 -0
- package/dist/generator/emit-shared-typescript.d.ts.map +1 -0
- package/dist/generator/{emit-straightline-typescript.js → emit-shared-typescript.js} +5 -20
- package/dist/generator/emit-shared-typescript.js.map +1 -0
- package/dist/generator/emit-straightline-typed-typescript.d.ts +1 -1
- package/dist/generator/emit-straightline-typed-typescript.d.ts.map +1 -1
- package/dist/generator/emit-straightline-typed-typescript.js +1 -1
- package/dist/generator/emit-straightline-typed-typescript.js.map +1 -1
- package/dist/generator/emit-typed-native-go.d.ts.map +1 -1
- package/dist/generator/emit-typed-native-go.js +546 -82
- package/dist/generator/emit-typed-native-go.js.map +1 -1
- package/dist/generator/emit-typed-native-rust.d.ts +2 -1
- package/dist/generator/emit-typed-native-rust.d.ts.map +1 -1
- package/dist/generator/emit-typed-native-rust.js +597 -110
- package/dist/generator/emit-typed-native-rust.js.map +1 -1
- package/dist/generator/index.d.ts +2 -12
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +10 -62
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/native-expr.d.ts +120 -0
- package/dist/generator/native-expr.d.ts.map +1 -0
- package/dist/generator/native-expr.js +456 -0
- package/dist/generator/native-expr.js.map +1 -0
- package/dist/generator/typed.d.ts.map +1 -1
- package/dist/generator/typed.js +8 -0
- package/dist/generator/typed.js.map +1 -1
- package/dist/guard.js +14 -0
- package/dist/guard.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plan.d.ts +6 -2
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +4 -0
- package/dist/plan.js.map +1 -1
- package/package.json +1 -1
- package/dist/generator/emit-go.d.ts +0 -19
- package/dist/generator/emit-go.d.ts.map +0 -1
- package/dist/generator/emit-go.js +0 -79
- package/dist/generator/emit-go.js.map +0 -1
- package/dist/generator/emit-raw-abi-go.d.ts +0 -45
- package/dist/generator/emit-raw-abi-go.d.ts.map +0 -1
- package/dist/generator/emit-raw-abi-go.js +0 -346
- package/dist/generator/emit-raw-abi-go.js.map +0 -1
- package/dist/generator/emit-raw-abi-rust.d.ts +0 -45
- package/dist/generator/emit-raw-abi-rust.d.ts.map +0 -1
- package/dist/generator/emit-raw-abi-rust.js +0 -380
- package/dist/generator/emit-raw-abi-rust.js.map +0 -1
- package/dist/generator/emit-rust.d.ts +0 -25
- package/dist/generator/emit-rust.d.ts.map +0 -1
- package/dist/generator/emit-rust.js +0 -125
- package/dist/generator/emit-rust.js.map +0 -1
- package/dist/generator/emit-straightline-go.d.ts +0 -60
- package/dist/generator/emit-straightline-go.d.ts.map +0 -1
- package/dist/generator/emit-straightline-go.js.map +0 -1
- package/dist/generator/emit-straightline-native-go.d.ts +0 -54
- package/dist/generator/emit-straightline-native-go.d.ts.map +0 -1
- package/dist/generator/emit-straightline-native-go.js +0 -835
- package/dist/generator/emit-straightline-native-go.js.map +0 -1
- package/dist/generator/emit-straightline-native-rust.d.ts +0 -27
- package/dist/generator/emit-straightline-native-rust.d.ts.map +0 -1
- package/dist/generator/emit-straightline-native-rust.js +0 -624
- package/dist/generator/emit-straightline-native-rust.js.map +0 -1
- package/dist/generator/emit-straightline-php.d.ts +0 -46
- package/dist/generator/emit-straightline-php.d.ts.map +0 -1
- package/dist/generator/emit-straightline-php.js +0 -941
- package/dist/generator/emit-straightline-php.js.map +0 -1
- package/dist/generator/emit-straightline-python.d.ts +0 -36
- package/dist/generator/emit-straightline-python.d.ts.map +0 -1
- package/dist/generator/emit-straightline-python.js +0 -855
- package/dist/generator/emit-straightline-python.js.map +0 -1
- package/dist/generator/emit-straightline-rust.d.ts.map +0 -1
- package/dist/generator/emit-straightline-rust.js.map +0 -1
- package/dist/generator/emit-straightline-typed-go.d.ts.map +0 -1
- package/dist/generator/emit-straightline-typed-go.js +0 -1114
- package/dist/generator/emit-straightline-typed-go.js.map +0 -1
- package/dist/generator/emit-straightline-typed-rust.d.ts.map +0 -1
- package/dist/generator/emit-straightline-typed-rust.js +0 -1155
- package/dist/generator/emit-straightline-typed-rust.js.map +0 -1
- package/dist/generator/emit-straightline-typescript.d.ts +0 -47
- package/dist/generator/emit-straightline-typescript.d.ts.map +0 -1
- package/dist/generator/emit-straightline-typescript.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-expr.d.ts","sourceRoot":"","sources":["../../src/generator/native-expr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* native-expr.ts — the RUNTIME-FREE native expression compiler (#108 / bc#101).
|
|
3
|
+
*
|
|
4
|
+
* The typed-native emitters (emit-typed-native-go.ts / -rust.ts) are static mirrors of runBehavior.
|
|
5
|
+
* runBehavior's cond node (behavior.ts:425-429) and map guard (behavior.ts:443-445) lower an
|
|
6
|
+
* arbitrary Expression IR through the reference evaluator `evaluate` (expr-eval.ts). To mirror those
|
|
7
|
+
* on the RUNTIME-FREE covered plane (bc#90 — NO boxed Value, NO bc-runtime import), this module
|
|
8
|
+
* compiles an Expression IR node to a NATIVE Go/Rust expression whose observable result (value +
|
|
9
|
+
* fail-closed failure code) is BYTE-EQUAL to `evaluate`.
|
|
10
|
+
*
|
|
11
|
+
* # The closed op set (25)
|
|
12
|
+
* literals: int({int:"…"}), float({float:n}), bare-number, str, bool, null
|
|
13
|
+
* refs: ref, refOpt construction: obj, arr
|
|
14
|
+
* numeric: add, sub, mul, neg, div, mod string: concat
|
|
15
|
+
* compare: eq, ne, lt, le, gt, ge bool/null: and, or, not, coalesce, cond arr: len
|
|
16
|
+
*
|
|
17
|
+
* # Static typing
|
|
18
|
+
* On the covered plane every operand's type is STATICALLY known (input port scalar type / input
|
|
19
|
+
* array elemType / prior-node outType field / map $as element type / literal kind). So the compiler
|
|
20
|
+
* infers a `TypeRef` for every sub-expression. A TYPE_MISMATCH that `evaluate` would raise at runtime
|
|
21
|
+
* is a GENERATION-TIME fail-closed reject here (the shape is not covered) — never a silent miscompile.
|
|
22
|
+
* The ONLY runtime failures a covered expression can still raise are the value-dependent arithmetic
|
|
23
|
+
* ones: INT_OVERFLOW / NAN_OR_INF / MOD_ZERO / PRECISION_LOSS, and the literal INVALID_LITERAL. Those
|
|
24
|
+
* are emitted as calls to a small fixed set of RUNTIME-FREE local helper funcs (bcAdd/bcMod/… in Go,
|
|
25
|
+
* bc_add/bc_mod/… in Rust) that carry the exact failure code — so the covered module still imports
|
|
26
|
+
* ZERO bc runtime.
|
|
27
|
+
*
|
|
28
|
+
* # Fallible → statements
|
|
29
|
+
* A fallible sub-expression (checked arith, div, mod, an int literal, len over a possibly-huge arr)
|
|
30
|
+
* is hoisted to a temp with an early error-return, so the final `expr` is pure. `compile` returns
|
|
31
|
+
* `{ stmts, expr, ref }`: `stmts` are the hoisted statements (in evaluation order — left-to-right,
|
|
32
|
+
* short-circuit-aware), `expr` the final native value expression, `ref` its static TypeRef.
|
|
33
|
+
*/
|
|
34
|
+
import { GeneratorFailure } from "./core.js";
|
|
35
|
+
const SCALARS = ["string", "int", "float", "bool"];
|
|
36
|
+
/**
|
|
37
|
+
* fail — a GENERATION-TIME fail-closed reject. On the covered plane a statically-detectable violation
|
|
38
|
+
* (a TYPE_MISMATCH the reference evaluator would raise at runtime, an INVALID_LITERAL / out-of-range
|
|
39
|
+
* literal, an uncovered shape) is surfaced as the emitter's fail-closed `UNSUPPORTED_NODE_STRAIGHTLINE`
|
|
40
|
+
* with the SPECIFIC semantic reason (`why`) in the message — never a silent miscompile. The
|
|
41
|
+
* value-dependent RUNTIME failures (INT_OVERFLOW / NAN_OR_INF / MOD_ZERO / PRECISION_LOSS) are NOT
|
|
42
|
+
* thrown here; they are emitted into the generated runtime-free helpers with their exact codes.
|
|
43
|
+
*/
|
|
44
|
+
function fail(why, msg) {
|
|
45
|
+
throw new GeneratorFailure("UNSUPPORTED_NODE_STRAIGHTLINE", `[${why}] ${msg}`);
|
|
46
|
+
}
|
|
47
|
+
function isScalar(r, s) {
|
|
48
|
+
return r.kind === "scalar" && (s === undefined ? r.scalar !== "null" : r.scalar === s);
|
|
49
|
+
}
|
|
50
|
+
/** classify a single-key operator node; else null. */
|
|
51
|
+
function opOf(node) {
|
|
52
|
+
if (node === null || typeof node !== "object" || Array.isArray(node))
|
|
53
|
+
return null;
|
|
54
|
+
const keys = Object.keys(node);
|
|
55
|
+
if (keys.length !== 1)
|
|
56
|
+
return null;
|
|
57
|
+
return { op: keys[0], arg: node[keys[0]] };
|
|
58
|
+
}
|
|
59
|
+
const I64_MAX = 9223372036854775807n;
|
|
60
|
+
const I64_MIN = -9223372036854775808n;
|
|
61
|
+
const SAFE_INT = 9007199254740991n; // 2^53-1
|
|
62
|
+
/**
|
|
63
|
+
* NativeExprCompiler — compiles Expression IR to native code via a backend. One instance per
|
|
64
|
+
* expression-compilation context (it accumulates hoisted statements through `compile`).
|
|
65
|
+
*/
|
|
66
|
+
export class NativeExprCompiler {
|
|
67
|
+
be;
|
|
68
|
+
constructor(be) {
|
|
69
|
+
this.be = be;
|
|
70
|
+
}
|
|
71
|
+
/** compile a node to {stmts, expr, ref}. Fallible sub-exprs are hoisted into stmts. */
|
|
72
|
+
compile(node) {
|
|
73
|
+
// ── literals ──
|
|
74
|
+
if (node === null)
|
|
75
|
+
return fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: a bare null literal has no native scalar type on the runtime-free plane (wrap it in an opt-typed position)`);
|
|
76
|
+
if (typeof node === "boolean")
|
|
77
|
+
return { stmts: [], expr: this.be.boolLit(node), ref: { kind: "scalar", scalar: "bool" } };
|
|
78
|
+
if (typeof node === "string")
|
|
79
|
+
return { stmts: [], expr: this.be.strLit(node), ref: { kind: "scalar", scalar: "string" } };
|
|
80
|
+
if (typeof node === "number")
|
|
81
|
+
return this.numberLit(node);
|
|
82
|
+
const o = opOf(node);
|
|
83
|
+
if (o === null)
|
|
84
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: not a portable expression node: ${JSON.stringify(node).slice(0, 80)}`);
|
|
85
|
+
switch (o.op) {
|
|
86
|
+
case "int":
|
|
87
|
+
return this.intLit(o.arg);
|
|
88
|
+
case "float":
|
|
89
|
+
return this.floatLit(o.arg);
|
|
90
|
+
case "ref":
|
|
91
|
+
case "refOpt":
|
|
92
|
+
return this.ref(o.arg, o.op === "refOpt");
|
|
93
|
+
case "obj":
|
|
94
|
+
return this.obj(o.arg);
|
|
95
|
+
case "arr":
|
|
96
|
+
return this.arr(o.arg);
|
|
97
|
+
case "add":
|
|
98
|
+
case "sub":
|
|
99
|
+
case "mul":
|
|
100
|
+
return this.arith(o.op, o.arg);
|
|
101
|
+
case "neg":
|
|
102
|
+
return this.neg(o.arg);
|
|
103
|
+
case "div":
|
|
104
|
+
return this.div(o.arg);
|
|
105
|
+
case "mod":
|
|
106
|
+
return this.mod(o.arg);
|
|
107
|
+
case "concat":
|
|
108
|
+
return this.concat(o.arg);
|
|
109
|
+
case "eq":
|
|
110
|
+
case "ne":
|
|
111
|
+
return this.eqNe(o.op, o.arg);
|
|
112
|
+
case "lt":
|
|
113
|
+
case "le":
|
|
114
|
+
case "gt":
|
|
115
|
+
case "ge":
|
|
116
|
+
return this.compare(o.op, o.arg);
|
|
117
|
+
case "and":
|
|
118
|
+
case "or":
|
|
119
|
+
return this.andOr(o.op, o.arg);
|
|
120
|
+
case "not":
|
|
121
|
+
return this.not(o.arg);
|
|
122
|
+
case "coalesce":
|
|
123
|
+
return this.coalesce(o.arg);
|
|
124
|
+
case "cond":
|
|
125
|
+
return this.cond(o.arg);
|
|
126
|
+
case "len":
|
|
127
|
+
return this.len(o.arg);
|
|
128
|
+
default:
|
|
129
|
+
return fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: operator '${o.op}' is not in the covered closed set (fail-closed)`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** compile a node and require it to produce a native `bool` (the cond `if` / guard `when` gate). A
|
|
133
|
+
* non-bool result is a GENERATION-TIME fail-closed reject (strict-bool, mirrors requireBool). */
|
|
134
|
+
compileBool(node) {
|
|
135
|
+
const c = this.compile(node);
|
|
136
|
+
if (!isScalar(c.ref, "bool"))
|
|
137
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: condition must be a bool (strict-bool, no truthiness), got ${JSON.stringify(c.ref)}`);
|
|
138
|
+
return c;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* compileTo — compile a node to the given expected TypeRef, MATERIALIZING an {obj}/{arr}/scalar
|
|
142
|
+
* literal against `expected` (the cond-branch / boundary shape — mirrors emitTypedValue). A ref /
|
|
143
|
+
* operator sub-node is compiled by `compile` and must already carry the expected type. `named`
|
|
144
|
+
* targets require the plan-resolved decl fields (passed via `resolveDecl`).
|
|
145
|
+
*/
|
|
146
|
+
compileTo(node, expected, resolveDecl) {
|
|
147
|
+
const op = opOf(node);
|
|
148
|
+
// {obj:{...}} → a named struct literal, each field lowered to its declared type.
|
|
149
|
+
if (op !== null && op.op === "obj" && expected.kind === "named") {
|
|
150
|
+
if (op.arg === null || typeof op.arg !== "object" || Array.isArray(op.arg))
|
|
151
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: {obj} expects an object`);
|
|
152
|
+
const fields = op.arg;
|
|
153
|
+
const decl = resolveDecl(expected.name);
|
|
154
|
+
const stmts = [];
|
|
155
|
+
const inits = [];
|
|
156
|
+
for (const f of decl) {
|
|
157
|
+
if (!(f.name in fields))
|
|
158
|
+
fail("MISSING_PROP", `${this.be.lang} native expr: {obj} missing field '${f.name}' for ${expected.name}`);
|
|
159
|
+
const sub = this.compileTo(fields[f.name], f.type, resolveDecl);
|
|
160
|
+
stmts.push(...sub.stmts);
|
|
161
|
+
inits.push({ field: f.name, expr: sub.expr });
|
|
162
|
+
}
|
|
163
|
+
return { stmts, expr: this.be.structLit(expected.name, inits), ref: expected };
|
|
164
|
+
}
|
|
165
|
+
// {arr:[...]} → a native slice/vec literal of the element type.
|
|
166
|
+
if (op !== null && op.op === "arr" && expected.kind === "arr") {
|
|
167
|
+
if (!Array.isArray(op.arg))
|
|
168
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: {arr} expects an array`);
|
|
169
|
+
const stmts = [];
|
|
170
|
+
const items = [];
|
|
171
|
+
for (const el of op.arg) {
|
|
172
|
+
const sub = this.compileTo(el, expected.elem, resolveDecl);
|
|
173
|
+
stmts.push(...sub.stmts);
|
|
174
|
+
items.push(sub.expr);
|
|
175
|
+
}
|
|
176
|
+
return { stmts, expr: this.be.arrLit(this.be.renderType(expected.elem), items), ref: expected };
|
|
177
|
+
}
|
|
178
|
+
// otherwise a scalar literal / ref / operator: compile and require the expected type.
|
|
179
|
+
const c = this.compile(node);
|
|
180
|
+
if (!typeRefEqual(c.ref, expected))
|
|
181
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: expression type ${JSON.stringify(c.ref)} does not match expected ${JSON.stringify(expected)} (fail-closed)`);
|
|
182
|
+
return c;
|
|
183
|
+
}
|
|
184
|
+
// ── literals ──────────────────────────────────────────────────────────────────────
|
|
185
|
+
numberLit(n) {
|
|
186
|
+
// bare number (§2.3): integral → int (must be safe-integer), else float.
|
|
187
|
+
if (Number.isInteger(n)) {
|
|
188
|
+
if (n < -Number(SAFE_INT) || n > Number(SAFE_INT))
|
|
189
|
+
fail("INVALID_LITERAL", `${this.be.lang} native expr: integral number literal ${n} exceeds safe range; use {int:"..."}`);
|
|
190
|
+
return { stmts: [], expr: this.be.intLit(String(n)), ref: { kind: "scalar", scalar: "int" } };
|
|
191
|
+
}
|
|
192
|
+
if (!Number.isFinite(n))
|
|
193
|
+
fail("NAN_OR_INF", `${this.be.lang} native expr: non-finite float literal ${n}`);
|
|
194
|
+
return { stmts: [], expr: this.be.floatLit(n), ref: { kind: "scalar", scalar: "float" } };
|
|
195
|
+
}
|
|
196
|
+
intLit(arg) {
|
|
197
|
+
if (typeof arg !== "string")
|
|
198
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: {int:...} expects a string`);
|
|
199
|
+
// parse + i64 range check AT GENERATION TIME (the literal is static). INVALID_LITERAL / INT_OVERFLOW
|
|
200
|
+
// become a generation-time reject — the runtime never re-checks a static literal.
|
|
201
|
+
let v;
|
|
202
|
+
try {
|
|
203
|
+
v = BigInt(arg);
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
fail("INVALID_LITERAL", `${this.be.lang} native expr: invalid int literal: ${arg}`);
|
|
207
|
+
}
|
|
208
|
+
if (v < I64_MIN || v > I64_MAX)
|
|
209
|
+
fail("INT_OVERFLOW", `${this.be.lang} native expr: i64 overflow in literal: ${arg}`);
|
|
210
|
+
return { stmts: [], expr: this.be.intLit(v.toString()), ref: { kind: "scalar", scalar: "int" } };
|
|
211
|
+
}
|
|
212
|
+
floatLit(arg) {
|
|
213
|
+
if (typeof arg !== "number")
|
|
214
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: {float:...} expects a number`);
|
|
215
|
+
if (!Number.isFinite(arg))
|
|
216
|
+
fail("NAN_OR_INF", `${this.be.lang} native expr: non-finite {float} literal ${arg}`);
|
|
217
|
+
return { stmts: [], expr: this.be.floatLit(arg), ref: { kind: "scalar", scalar: "float" } };
|
|
218
|
+
}
|
|
219
|
+
// ── refs ──────────────────────────────────────────────────────────────────────────
|
|
220
|
+
ref(arg, opt) {
|
|
221
|
+
if (!Array.isArray(arg) || arg.length === 0 || !arg.every((p) => typeof p === "string"))
|
|
222
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: ${opt ? "refOpt" : "ref"} expects a non-empty string path`);
|
|
223
|
+
const path = arg;
|
|
224
|
+
const head = this.be.resolveHead(path[0]);
|
|
225
|
+
if (head === null)
|
|
226
|
+
fail("UNKNOWN_BINDING", `${this.be.lang} native expr: unknown binding: ${path[0]}`);
|
|
227
|
+
// A refOpt into a possibly-null intermediate would need opt-nil propagation; on the covered plane
|
|
228
|
+
// the cond/guard exprs read REQUIRED typed fields (the corpus + graphddb shapes). A refOpt or a
|
|
229
|
+
// walk through an opt field is fail-closed here (keep the boxed path for that shape).
|
|
230
|
+
if (opt)
|
|
231
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: refOpt inside a cond/guard expression is not native-covered (fail-closed)`);
|
|
232
|
+
const { expr, ref } = this.be.fieldAccess(head.expr, head.ref, path.slice(1));
|
|
233
|
+
if (ref.kind === "opt")
|
|
234
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: a required ref resolving to an opt field is not native-covered in a cond/guard expression (fail-closed)`);
|
|
235
|
+
return { stmts: [], expr, ref };
|
|
236
|
+
}
|
|
237
|
+
// ── construction ────────────────────────────────────────────────────────────────────
|
|
238
|
+
obj(_arg) {
|
|
239
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: an {obj} inside a nested expression has no inferable named type here; obj is materialized only at the cond-branch/output boundary against an expected type (compileTo)`);
|
|
240
|
+
}
|
|
241
|
+
arr(_arg) {
|
|
242
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: an {arr} inside a nested expression has no inferable element type here; arr is materialized only against an expected type (compileTo)`);
|
|
243
|
+
}
|
|
244
|
+
// ── numeric ─────────────────────────────────────────────────────────────────────────
|
|
245
|
+
binArgs(op, arg) {
|
|
246
|
+
if (!Array.isArray(arg) || arg.length !== 2)
|
|
247
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: ${op} expects 2 args`);
|
|
248
|
+
return [arg[0], arg[1]];
|
|
249
|
+
}
|
|
250
|
+
arith(op, arg) {
|
|
251
|
+
const [ea, eb] = this.binArgs(op, arg);
|
|
252
|
+
const a = this.compile(ea);
|
|
253
|
+
const b = this.compile(eb);
|
|
254
|
+
if (isScalar(a.ref, "int") && isScalar(b.ref, "int")) {
|
|
255
|
+
// checked i64 → fallible helper (INT_OVERFLOW).
|
|
256
|
+
const helper = op === "add" ? "addI64" : op === "sub" ? "subI64" : "mulI64";
|
|
257
|
+
const temp = this.be.freshTemp();
|
|
258
|
+
const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall(helper, [a.expr, b.expr]))];
|
|
259
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
|
|
260
|
+
}
|
|
261
|
+
if (isScalar(a.ref, "float") && isScalar(b.ref, "float")) {
|
|
262
|
+
// checked finite f64 → fallible helper (NAN_OR_INF).
|
|
263
|
+
const helper = op === "add" ? "addF" : op === "sub" ? "subF" : "mulF";
|
|
264
|
+
const temp = this.be.freshTemp();
|
|
265
|
+
const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall(helper, [a.expr, b.expr]))];
|
|
266
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
|
|
267
|
+
}
|
|
268
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires int×int or float×float (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
|
|
269
|
+
}
|
|
270
|
+
neg(arg) {
|
|
271
|
+
if (!Array.isArray(arg) || arg.length !== 1)
|
|
272
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: neg expects 1 arg`);
|
|
273
|
+
const a = this.compile(arg[0]);
|
|
274
|
+
if (isScalar(a.ref, "int")) {
|
|
275
|
+
const temp = this.be.freshTemp();
|
|
276
|
+
const stmts = [...a.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall("negI64", [a.expr]))];
|
|
277
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
|
|
278
|
+
}
|
|
279
|
+
if (isScalar(a.ref, "float")) {
|
|
280
|
+
const temp = this.be.freshTemp();
|
|
281
|
+
const stmts = [...a.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("negF", [a.expr]))];
|
|
282
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
|
|
283
|
+
}
|
|
284
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: neg requires numeric (got ${scalarName(a.ref)})`);
|
|
285
|
+
}
|
|
286
|
+
div(arg) {
|
|
287
|
+
const [ea, eb] = this.binArgs("div", arg);
|
|
288
|
+
const a = this.compile(ea);
|
|
289
|
+
const b = this.compile(eb);
|
|
290
|
+
// div ALWAYS widens to float (PRECISION_LOSS if an int operand |x|>2^53) then checks finite
|
|
291
|
+
// (NAN_OR_INF for /0). The widen+divide is one fallible helper taking each operand as its native
|
|
292
|
+
// type. To keep the helper monomorphic per operand kind, we widen int operands via widenI64F first.
|
|
293
|
+
const wa = this.widenToFloat(a);
|
|
294
|
+
const wb = this.widenToFloat(b);
|
|
295
|
+
const temp = this.be.freshTemp();
|
|
296
|
+
const stmts = [...wa.stmts, ...wb.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("divF", [wa.expr, wb.expr]))];
|
|
297
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
|
|
298
|
+
}
|
|
299
|
+
/** widen an int/float compiled value to a fallible f64 (PRECISION_LOSS for int out of ±2^53). */
|
|
300
|
+
widenToFloat(c) {
|
|
301
|
+
if (isScalar(c.ref, "float"))
|
|
302
|
+
return c;
|
|
303
|
+
if (isScalar(c.ref, "int")) {
|
|
304
|
+
const temp = this.be.freshTemp();
|
|
305
|
+
const stmts = [...c.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("widenI64F", [c.expr]))];
|
|
306
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
|
|
307
|
+
}
|
|
308
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: numeric operand expected for div, got ${scalarName(c.ref)}`);
|
|
309
|
+
}
|
|
310
|
+
mod(arg) {
|
|
311
|
+
const [ea, eb] = this.binArgs("mod", arg);
|
|
312
|
+
const a = this.compile(ea);
|
|
313
|
+
const b = this.compile(eb);
|
|
314
|
+
if (isScalar(a.ref, "int") && isScalar(b.ref, "int")) {
|
|
315
|
+
const temp = this.be.freshTemp();
|
|
316
|
+
const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall("modI64", [a.expr, b.expr]))];
|
|
317
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
|
|
318
|
+
}
|
|
319
|
+
if (isScalar(a.ref, "float") && isScalar(b.ref, "float")) {
|
|
320
|
+
const temp = this.be.freshTemp();
|
|
321
|
+
const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("modF", [a.expr, b.expr]))];
|
|
322
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
|
|
323
|
+
}
|
|
324
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: mod requires int×int or float×float (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
|
|
325
|
+
}
|
|
326
|
+
// ── string ──────────────────────────────────────────────────────────────────────────
|
|
327
|
+
concat(arg) {
|
|
328
|
+
if (!Array.isArray(arg) || arg.length < 2)
|
|
329
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: concat expects >= 2 args`);
|
|
330
|
+
const parts = arg.map((p) => this.compile(p));
|
|
331
|
+
for (const p of parts)
|
|
332
|
+
if (!isScalar(p.ref, "string"))
|
|
333
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: concat requires string parts (got ${scalarName(p.ref)})`);
|
|
334
|
+
const stmts = parts.flatMap((p) => p.stmts);
|
|
335
|
+
return { stmts, expr: this.be.concat(parts.map((p) => p.expr)), ref: { kind: "scalar", scalar: "string" } };
|
|
336
|
+
}
|
|
337
|
+
// ── compare ─────────────────────────────────────────────────────────────────────────
|
|
338
|
+
eqNe(op, arg) {
|
|
339
|
+
const [ea, eb] = this.binArgs(op, arg);
|
|
340
|
+
const a = this.compile(ea);
|
|
341
|
+
const b = this.compile(eb);
|
|
342
|
+
// eq/ne: same scalar type only (null-eq is via opt; not on this plane). arr/obj eq is undefined.
|
|
343
|
+
if (!isScalar(a.ref) || !isScalar(b.ref) || scalarName(a.ref) !== scalarName(b.ref))
|
|
344
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires same scalar type (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
|
|
345
|
+
const sc = a.ref.scalar;
|
|
346
|
+
const stmts = [...a.stmts, ...b.stmts];
|
|
347
|
+
const cmp = this.be.binOp(op === "eq" ? "==" : "!=", a.expr, b.expr, sc);
|
|
348
|
+
return { stmts, expr: cmp, ref: { kind: "scalar", scalar: "bool" } };
|
|
349
|
+
}
|
|
350
|
+
compare(op, arg) {
|
|
351
|
+
const [ea, eb] = this.binArgs(op, arg);
|
|
352
|
+
const a = this.compile(ea);
|
|
353
|
+
const b = this.compile(eb);
|
|
354
|
+
if (!isScalar(a.ref) || !isScalar(b.ref) || scalarName(a.ref) !== scalarName(b.ref))
|
|
355
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires same scalar int/float/string (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
|
|
356
|
+
const sc = a.ref.scalar;
|
|
357
|
+
if (sc === "bool")
|
|
358
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} on bool is not defined`);
|
|
359
|
+
const sym = op === "lt" ? "<" : op === "le" ? "<=" : op === "gt" ? ">" : ">=";
|
|
360
|
+
const stmts = [...a.stmts, ...b.stmts];
|
|
361
|
+
// string compare must be CODE-POINT order (helper); int/float use native operators.
|
|
362
|
+
if (sc === "string") {
|
|
363
|
+
return { stmts, expr: this.be.helperCall(cmpHelper(op), [a.expr, b.expr]), ref: { kind: "scalar", scalar: "bool" } };
|
|
364
|
+
}
|
|
365
|
+
return { stmts, expr: this.be.binOp(sym, a.expr, b.expr, sc), ref: { kind: "scalar", scalar: "bool" } };
|
|
366
|
+
}
|
|
367
|
+
// ── bool / null (short-circuit) ───────────────────────────────────────────────────────
|
|
368
|
+
andOr(op, arg) {
|
|
369
|
+
const [ea, eb] = this.binArgs(op, arg);
|
|
370
|
+
const a = this.compile(ea);
|
|
371
|
+
if (!isScalar(a.ref, "bool"))
|
|
372
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires bool operands (got ${scalarName(a.ref)})`);
|
|
373
|
+
// SHORT-CIRCUIT: the right operand (and its fallible temps + failures) must NOT be evaluated when
|
|
374
|
+
// the left settles the result. We realize this with a ternary over the LEFT: and → a?compileR:false,
|
|
375
|
+
// or → a?true:compileR — and any hoisted temps of b live INSIDE the taken branch. To keep the
|
|
376
|
+
// right side's statements from leaking to the unconditional prefix, we compile b to a self-contained
|
|
377
|
+
// block-expression when it has stmts; when b is pure, a native `&&`/`||` is exact and simpler.
|
|
378
|
+
const b = this.compile(eb);
|
|
379
|
+
if (!isScalar(b.ref, "bool"))
|
|
380
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires bool operands (got ${scalarName(b.ref)})`);
|
|
381
|
+
if (b.stmts.length === 0) {
|
|
382
|
+
// pure right side: native &&/|| short-circuits exactly (no failure to guard).
|
|
383
|
+
return { stmts: a.stmts, expr: `(${a.expr} ${op === "and" ? "&&" : "||"} ${b.expr})`, ref: { kind: "scalar", scalar: "bool" } };
|
|
384
|
+
}
|
|
385
|
+
// right side is fallible: guard its evaluation behind the left's short-circuit via a temp+if.
|
|
386
|
+
const temp = this.be.freshTemp();
|
|
387
|
+
const guard = this.be.shortCircuitBool(op, temp, a.expr, b.stmts, b.expr);
|
|
388
|
+
return { stmts: [...a.stmts, ...guard], expr: temp, ref: { kind: "scalar", scalar: "bool" } };
|
|
389
|
+
}
|
|
390
|
+
not(arg) {
|
|
391
|
+
if (!Array.isArray(arg) || arg.length !== 1)
|
|
392
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: not expects 1 arg`);
|
|
393
|
+
const a = this.compile(arg[0]);
|
|
394
|
+
if (!isScalar(a.ref, "bool"))
|
|
395
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: not requires bool (got ${scalarName(a.ref)})`);
|
|
396
|
+
return { stmts: a.stmts, expr: this.be.notOp(a.expr), ref: { kind: "scalar", scalar: "bool" } };
|
|
397
|
+
}
|
|
398
|
+
coalesce(arg) {
|
|
399
|
+
// coalesce needs a nullable left (opt). On the runtime-free covered plane an opt operand in a
|
|
400
|
+
// cond/guard expr is not covered (opt-nil requires the boxed path). Fail closed.
|
|
401
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: coalesce (needs a nullable/opt operand) is not native-covered inside a cond/guard expression (fail-closed)`);
|
|
402
|
+
}
|
|
403
|
+
cond(arg) {
|
|
404
|
+
if (!Array.isArray(arg) || arg.length !== 3)
|
|
405
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: cond expects [c,t,e]`);
|
|
406
|
+
const c = this.compileBool(arg[0]);
|
|
407
|
+
const t = this.compile(arg[1]);
|
|
408
|
+
const e = this.compile(arg[2]);
|
|
409
|
+
if (!typeRefEqual(t.ref, e.ref))
|
|
410
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: cond branches must have the same type (got ${JSON.stringify(t.ref)} vs ${JSON.stringify(e.ref)})`);
|
|
411
|
+
const ty = this.be.renderType(t.ref);
|
|
412
|
+
// SHORT-CIRCUIT: only the taken branch is evaluated. If both branches are pure, a native ternary is
|
|
413
|
+
// exact. If a branch is fallible, we guard both branches inside an if/else assigning a temp.
|
|
414
|
+
if (t.stmts.length === 0 && e.stmts.length === 0) {
|
|
415
|
+
return { stmts: c.stmts, expr: this.be.ternary(c.expr, t.expr, e.expr, ty), ref: t.ref };
|
|
416
|
+
}
|
|
417
|
+
const temp = this.be.freshTemp();
|
|
418
|
+
const guard = this.be.condGuard(temp, ty, c.expr, t.stmts, t.expr, e.stmts, e.expr);
|
|
419
|
+
return { stmts: [...c.stmts, ...guard], expr: temp, ref: t.ref };
|
|
420
|
+
}
|
|
421
|
+
// ── arr ───────────────────────────────────────────────────────────────────────────
|
|
422
|
+
len(arg) {
|
|
423
|
+
if (!Array.isArray(arg) || arg.length !== 1)
|
|
424
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: len expects 1 arg`);
|
|
425
|
+
const a = this.compile(arg[0]);
|
|
426
|
+
if (a.ref.kind !== "arr")
|
|
427
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: len requires an array (got ${JSON.stringify(a.ref)})`);
|
|
428
|
+
// len returns i64. A native slice length is usize/int; the only failure is i64 overflow for an
|
|
429
|
+
// astronomically large slice — the helper checks it (INT_OVERFLOW), matching lenCore→checkI64.
|
|
430
|
+
const temp = this.be.freshTemp();
|
|
431
|
+
const stmts = [...a.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall("lenArr", [a.expr]))];
|
|
432
|
+
return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
/** the code-point compare helper name for a string comparison. */
|
|
436
|
+
function cmpHelper(op) {
|
|
437
|
+
return op === "lt" ? "strLt" : op === "le" ? "strLe" : op === "gt" ? "strGt" : "strGe";
|
|
438
|
+
}
|
|
439
|
+
function scalarName(r) {
|
|
440
|
+
return r.kind === "scalar" ? r.scalar : r.kind;
|
|
441
|
+
}
|
|
442
|
+
/** structural TypeRef equality (for cond-branch join + expected checks). */
|
|
443
|
+
export function typeRefEqual(a, b) {
|
|
444
|
+
if (a.kind !== b.kind)
|
|
445
|
+
return false;
|
|
446
|
+
if (a.kind === "scalar" && b.kind === "scalar")
|
|
447
|
+
return a.scalar === b.scalar;
|
|
448
|
+
if (a.kind === "opt" && b.kind === "opt")
|
|
449
|
+
return typeRefEqual(a.inner, b.inner);
|
|
450
|
+
if (a.kind === "arr" && b.kind === "arr")
|
|
451
|
+
return typeRefEqual(a.elem, b.elem);
|
|
452
|
+
if (a.kind === "named" && b.kind === "named")
|
|
453
|
+
return a.name === b.name;
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
456
|
+
//# sourceMappingURL=native-expr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-expr.js","sourceRoot":"","sources":["../../src/generator/native-expr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAqE7C,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAG5D;;;;;;;GAOG;AACH,SAAS,IAAI,CAAC,GAAW,EAAE,GAAW;IACpC,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,EAAE,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU,EAAE,CAAU;IACtC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,sDAAsD;AACtD,SAAS,IAAI,CAAC,IAAa;IACzB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAG,IAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,OAAO,GAAG,oBAAoB,CAAC;AACrC,MAAM,OAAO,GAAG,CAAC,oBAAoB,CAAC;AACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,SAAS;AAE7C;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACZ,EAAE,CAAoB;IACvC,YAAY,EAAqB;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,uFAAuF;IACvF,OAAO,CAAC,IAAa;QACnB,iBAAiB;QACjB,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,0HAA0H,CAAC,CAAC;QAC3M,IAAI,OAAO,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAC1H,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1H,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,IAAI;YAAE,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iDAAiD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3J,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;YACb,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YAC5C,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,KAAK,CAAC;YACX,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1B,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB;gBACE,OAAO,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,2BAA2B,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC;QACnJ,CAAC;IACH,CAAC;IAED;sGACkG;IAClG,WAAW,CAAC,IAAa;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC;YAC1B,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,4EAA4E,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5J,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAa,EAAE,QAAiB,EAAE,WAAgE;QAC1G,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,iFAAiF;QACjF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAChE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;gBACxE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,uCAAuC,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,EAAE,CAAC,GAA8B,CAAC;YACjD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAsC,EAAE,CAAC;YACpD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;oBAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,sCAAsC,CAAC,CAAC,IAAI,SAAS,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnI,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAChE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QACjF,CAAC;QACD,gEAAgE;QAChE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,sCAAsC,CAAC,CAAC;YACxG,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAClG,CAAC;QACD,sFAAsF;QACtF,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;YAChC,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iCAAiC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACnL,OAAO,CAAC,CAAC;IACX,CAAC;IAED,qFAAqF;IAE7E,SAAS,CAAC,CAAS;QACzB,yEAAyE;QACzE,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC/C,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,yCAAyC,CAAC,sCAAsC,CAAC,CAAC;YAC3H,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,0CAA0C,CAAC,EAAE,CAAC,CAAC;QAC1G,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;IAC5F,CAAC;IAEO,MAAM,CAAC,GAAY;QACzB,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,0CAA0C,CAAC,CAAC;QAC7G,qGAAqG;QACrG,kFAAkF;QAClF,IAAI,CAAS,CAAC;QACd,IAAI,CAAC;YACH,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,sCAAsC,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,0CAA0C,GAAG,EAAE,CAAC,CAAC;QACrH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;IACnG,CAAC;IAEO,QAAQ,CAAC,GAAY;QAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,4CAA4C,CAAC,CAAC;QAC/G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,4CAA4C,GAAG,EAAE,CAAC,CAAC;QAChH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;IAC9F,CAAC;IAED,qFAAqF;IAE7E,GAAG,CAAC,GAAY,EAAE,GAAY;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YACrF,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,kCAAkC,CAAC,CAAC;QACjH,MAAM,IAAI,GAAG,GAAe,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,kCAAkC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvG,kGAAkG;QAClG,gGAAgG;QAChG,sFAAsF;QACtF,IAAI,GAAG;YAAE,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,yFAAyF,CAAC,CAAC;QACzJ,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK;YACpB,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,uHAAuH,CAAC,CAAC;QAChL,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,uFAAuF;IAE/E,GAAG,CAAC,IAAa;QACvB,IAAI,CACF,+BAA+B,EAC/B,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,sLAAsL,CACtM,CAAC;IACJ,CAAC;IAEO,GAAG,CAAC,IAAa;QACvB,IAAI,CACF,+BAA+B,EAC/B,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,qJAAqJ,CACrK,CAAC;IACJ,CAAC;IAED,uFAAuF;IAE/E,OAAO,CAAC,EAAU,EAAE,GAAY;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QACvH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,EAAyB,EAAE,GAAY;QACnD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACrD,gDAAgD;YAChD,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACzD,qDAAqD;YACrD,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACtE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,yCAAyC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9I,CAAC;IAEO,GAAG,CAAC,GAAY;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iCAAiC,CAAC,CAAC;QACpH,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9H,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9H,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,2CAA2C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxG,CAAC;IAEO,GAAG,CAAC,GAAY;QACtB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,4FAA4F;QAC5F,iGAAiG;QACjG,oGAAoG;QACpG,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,iGAAiG;IACzF,YAAY,CAAC,CAAW;QAC9B,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC;YAAE,OAAO,CAAC,CAAC;QACvC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,uDAAuD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC;IAEO,GAAG,CAAC,GAAY;QACtB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,0DAA0D,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5I,CAAC;IAED,uFAAuF;IAE/E,MAAM,CAAC,GAAY;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,wCAAwC,CAAC,CAAC;QACzH,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,KAAK;YACnB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;gBAAE,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,mDAAmD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChJ,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;IAC9G,CAAC;IAED,uFAAuF;IAE/E,IAAI,CAAC,EAAe,EAAE,GAAY;QACxC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,iGAAiG;QACjG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;YACjF,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,mCAAmC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxI,MAAM,EAAE,GAAI,CAAC,CAAC,GAA0B,CAAC,MAAM,CAAC;QAChD,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACvE,CAAC;IAEO,OAAO,CAAC,EAA6B,EAAE,GAAY;QACzD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;YACjF,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,+CAA+C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpJ,MAAM,EAAE,GAAI,CAAC,CAAC,GAA0B,CAAC,MAAM,CAAC;QAChD,IAAI,EAAE,KAAK,MAAM;YAAE,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;QACtG,MAAM,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACvC,oFAAoF;QACpF,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACvH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1G,CAAC;IAED,yFAAyF;IAEjF,KAAK,CAAC,EAAgB,EAAE,GAAY;QAC1C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC;YAAE,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,gCAAgC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5I,kGAAkG;QAClG,qGAAqG;QACrG,8FAA8F;QAC9F,qGAAqG;QACrG,+FAA+F;QAC/F,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC;YAAE,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,gCAAgC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5I,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,8EAA8E;YAC9E,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAClI,CAAC;QACD,8FAA8F;QAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IAChG,CAAC;IAEO,GAAG,CAAC,GAAY;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iCAAiC,CAAC,CAAC;QACpH,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC;YAAE,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,wCAAwC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjI,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IAClG,CAAC;IAEO,QAAQ,CAAC,GAAY;QAC3B,8FAA8F;QAC9F,iFAAiF;QACjF,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,0HAA0H,CAAC,CAAC;IACnL,CAAC;IAEO,IAAI,CAAC,GAAY;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,oCAAoC,CAAC,CAAC;QACvH,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;YAC7B,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,4DAA4D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzJ,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,oGAAoG;QACpG,6FAA6F;QAC7F,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3F,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACpF,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACnE,CAAC;IAED,qFAAqF;IAE7E,GAAG,CAAC,GAAY;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,iCAAiC,CAAC,CAAC;QACpH,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK;YAAE,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,4CAA4C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrI,+FAA+F;QAC/F,+FAA+F;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9H,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;IACvE,CAAC;CACF;AAED,kEAAkE;AAClE,SAAS,SAAS,CAAC,EAA6B;IAC9C,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACzF,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,CAAU,EAAE,CAAU;IACjD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC;IAC7E,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAChF,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/generator/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAa,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIhF;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAiDD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,gBAAgB,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/generator/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAa,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIhF;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAiDD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,gBAAgB,GAAG,QAAQ,CAiB5D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAUtE;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAGpC;;;;OAIG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzC;;;;OAIG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxE;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACxH;;;OAGG;IACH,cAAc,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC1E;AAED,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE3E"}
|
package/dist/generator/typed.js
CHANGED
|
@@ -62,6 +62,14 @@ export function buildTypePlan(ir) {
|
|
|
62
62
|
}
|
|
63
63
|
if (comp.outputType !== undefined)
|
|
64
64
|
b.ref(comp.outputType);
|
|
65
|
+
// #108 / bc#101: input array port の `elemType`(map-over-input の $as 要素型)も named 宣言へ
|
|
66
|
+
// 収集する。obj 要素型(例 guarded map over input の要素 {obj:{n:int}})が named struct として
|
|
67
|
+
// 宣言され、$as field access が typed struct 直参照になる。additive(elemType 無しは従来通り)。
|
|
68
|
+
for (const schema of Object.values(comp.inputPorts ?? {})) {
|
|
69
|
+
const et = schema.elemType;
|
|
70
|
+
if (et !== undefined)
|
|
71
|
+
b.ref(et);
|
|
72
|
+
}
|
|
65
73
|
}
|
|
66
74
|
return b.plan();
|
|
67
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed.js","sourceRoot":"","sources":["../../src/generator/typed.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"typed.js","sourceRoot":"","sources":["../../src/generator/typed.ts"],"names":[],"mappings":"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"}
|
package/dist/guard.js
CHANGED
|
@@ -134,6 +134,20 @@ function assertPortableComponent(c, path) {
|
|
|
134
134
|
// 可搬型記法(B0 / bc#44・§5.2): additive・省略可。存在時のみ閉集合を fail-closed 検証。
|
|
135
135
|
if (comp.outputType !== undefined)
|
|
136
136
|
assertPortableTypeNotation(comp.outputType, `${path}.outputType`);
|
|
137
|
+
// #108 / bc#101: input port の `elemType`(`type:"array"` の要素型注記)も additive・省略可。存在時のみ
|
|
138
|
+
// 可搬型閉集合を outType 等と同一強度で検証する(map-over-input の $as native 型解決源)。
|
|
139
|
+
const cc = c;
|
|
140
|
+
if (cc.inputPorts !== undefined) {
|
|
141
|
+
if (typeof cc.inputPorts !== "object" || cc.inputPorts === null || Array.isArray(cc.inputPorts))
|
|
142
|
+
throw new PortabilityError(`${path}.inputPorts`, `Portability Guard: inputPorts must be an object (at ${path}.inputPorts)`);
|
|
143
|
+
for (const [k, schema] of Object.entries(cc.inputPorts)) {
|
|
144
|
+
if (schema !== null && typeof schema === "object" && "elemType" in schema) {
|
|
145
|
+
const et = schema.elemType;
|
|
146
|
+
if (et !== undefined)
|
|
147
|
+
assertPortableTypeNotation(et, `${path}.inputPorts.${k}.elemType`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
137
151
|
}
|
|
138
152
|
function assertPortableBodyNode(n, path) {
|
|
139
153
|
if (!n || typeof n !== "object")
|
package/dist/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
|