@descryy/adapter-kotlin 0.4.0 → 0.5.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/client.js CHANGED
@@ -39,6 +39,9 @@
39
39
  * whose name is bound to `HttpClient` in one place and to something else in another, which this
40
40
  * reader cannot separate without a type checker.
41
41
  */
42
+ import { originOf, pathPrefixOf, resolveBaseSite, } from "./client-base.js";
43
+ /** The origin set before any base has been read. Named so a caller cannot pass `new Set()` by accident and mean something else. */
44
+ export const NO_KNOWN_ORIGINS = new Set();
42
45
  /** The package whose verb extension functions are HTTP calls. */
43
46
  const REQUEST_PACKAGE = "io.ktor.client.request";
44
47
  /** The client type whose construction, or written type, is provenance. */
@@ -127,6 +130,86 @@ function templateOf(argument) {
127
130
  }
128
131
  return out;
129
132
  }
133
+ // --- DEC-164's base reader ---------------------------------------------------
134
+ /** The calls that set a base on a Ktor `HttpClient`, inside `defaultRequest { … }`. */
135
+ const BASE_SETTERS = new Set(["url", "takeFrom"]);
136
+ /** A string literal with no interpolation and no escape, or `undefined`. */
137
+ function plainLiteral(node) {
138
+ if (node === undefined)
139
+ return undefined;
140
+ const literal = node.type === "string_literal" ? node : firstOfType(node, "string_literal");
141
+ if (literal === undefined)
142
+ return undefined;
143
+ let out = "";
144
+ for (const child of namedChildren(literal)) {
145
+ if (child.type !== "string_content")
146
+ return undefined;
147
+ out += child.text;
148
+ }
149
+ return out;
150
+ }
151
+ /**
152
+ * This file's own top-level and member `val`/`const val` string values —
153
+ * DEC-164's base table. Per file on purpose; see `client-base.ts`.
154
+ */
155
+ function stringConstantsIn(root) {
156
+ const constants = new Map();
157
+ const visit = (node) => {
158
+ if (node.type === "property_declaration") {
159
+ const declaration = firstOfType(node, "variable_declaration");
160
+ const name = declaration === undefined ? undefined : firstOfType(declaration, "simple_identifier")?.text;
161
+ const value = namedChildren(node).find((c) => c.type === "string_literal");
162
+ const literal = plainLiteral(value);
163
+ // First writer wins: a name declared twice is one this reader cannot
164
+ // separate without a type checker.
165
+ if (name !== undefined && literal !== undefined && !constants.has(name))
166
+ constants.set(name, literal);
167
+ }
168
+ for (const child of namedChildren(node))
169
+ visit(child);
170
+ };
171
+ visit(root);
172
+ return constants;
173
+ }
174
+ /**
175
+ * What one `HttpClient` construction says about its base.
176
+ *
177
+ * `undefined` means this is not a construction this reader recognises, which
178
+ * becomes DEC-164's fourth state rather than a claim. A construction with no
179
+ * `url(…)`/`takeFrom(…)` anywhere in it is a real `none` — the configuration
180
+ * was visible and set no base.
181
+ */
182
+ function baseSiteOf(initialiser) {
183
+ let found;
184
+ const visit = (node) => {
185
+ if (found !== undefined)
186
+ return;
187
+ const call = node.type === "call_expression" ? node : undefined;
188
+ if (call !== undefined) {
189
+ const head = call.namedChild(0);
190
+ if (head !== null && head.type === "simple_identifier" && BASE_SETTERS.has(head.text)) {
191
+ const suffix = namedChildren(call)[1];
192
+ const args = suffix?.type === "call_suffix" ? firstOfType(suffix, "value_arguments") : undefined;
193
+ const first = args === undefined ? undefined : firstOfType(args, "value_argument");
194
+ if (first !== undefined) {
195
+ found = first;
196
+ return;
197
+ }
198
+ }
199
+ }
200
+ for (const child of namedChildren(node))
201
+ visit(child);
202
+ };
203
+ visit(initialiser);
204
+ if (found === undefined)
205
+ return { kind: "none" };
206
+ const literal = plainLiteral(found);
207
+ if (literal !== undefined)
208
+ return { kind: "base", text: found.text.slice(0, 120), literal };
209
+ const bare = found.type === "value_argument" ? found.namedChild(0) : found;
210
+ const name = bare !== null && bare !== undefined && bare.type === "simple_identifier" ? bare.text : undefined;
211
+ return { kind: "base", text: found.text.slice(0, 120), ...(name === undefined ? {} : { name }) };
212
+ }
130
213
  /**
131
214
  * Unwrap `receiver.verb(args)`, including the trailing-lambda form — args plus
132
215
  * a lambda parse as two nested `call_expression`s (same fact `routes.ts`
@@ -196,8 +279,24 @@ function constructedName(node) {
196
279
  function clientNames(root, imports) {
197
280
  const verified = new Set();
198
281
  const other = new Set();
282
+ /**
283
+ * DEC-164: `<owner>::<name>` -> what that construction said about a base.
284
+ *
285
+ * **Keyed by the enclosing class, not by the name alone.** Kotlin puts many
286
+ * classes in one file and every one of them calls its client `client`; a
287
+ * file-wide name key handed the first class's base to all of them, which the
288
+ * conformance corpus caught as a `resolved` base on the two callers whose
289
+ * own clients set none and an unreadable one. `verified`/`ambiguous` above
290
+ * stay name-keyed — they answer "is this name ever an HttpClient", where a
291
+ * collision is disclosed rather than resolved — but a BASE attributed to the
292
+ * wrong client is a wrong edge, which rule 2 does not trade for recall.
293
+ */
294
+ const bases = new Map();
199
295
  const constructible = importsClientType(imports);
200
- const bindingsOf = (node) => {
296
+ const bindingsOf = (node, owner) => {
297
+ const scoped = node.type === "class_declaration" || node.type === "object_declaration"
298
+ ? `${owner}${owner === "" ? "" : "."}${firstOfType(node, "type_identifier")?.text ?? ""}`
299
+ : owner;
201
300
  // `val client: HttpClient` / `client: HttpClient` — a written type, on a
202
301
  // property, a constructor parameter or a function parameter alike.
203
302
  if (node.type === "property_declaration" || node.type === "class_parameter" || node.type === "parameter") {
@@ -214,16 +313,30 @@ function clientNames(root, imports) {
214
313
  verified.add(name);
215
314
  else if (written !== undefined || initialiser !== undefined)
216
315
  other.add(name);
316
+ // DEC-164: a base is read only off a construction this reader can
317
+ // SEE. A `HttpClient` parameter with no initialiser here keeps the
318
+ // fourth state — the field's absence — rather than a false `none`.
319
+ if (constructed && initialiser !== undefined && !bases.has(`${owner}::${name}`)) {
320
+ const site = baseSiteOf(initialiser);
321
+ if (site !== undefined)
322
+ bases.set(`${owner}::${name}`, site);
323
+ }
217
324
  }
218
325
  }
219
326
  for (const child of namedChildren(node))
220
- bindingsOf(child);
327
+ bindingsOf(child, scoped);
221
328
  };
222
- bindingsOf(root);
329
+ bindingsOf(root, "");
223
330
  const ambiguous = new Set([...verified].filter((name) => other.has(name)));
224
- for (const name of ambiguous)
331
+ for (const name of ambiguous) {
225
332
  verified.delete(name);
226
- return { verified, ambiguous };
333
+ // An ambiguous name's base would be attributed to the wrong client.
334
+ for (const key of [...bases.keys()]) {
335
+ if (key.endsWith(`::${name}`))
336
+ bases.delete(key);
337
+ }
338
+ }
339
+ return { verified, ambiguous, bases };
227
340
  }
228
341
  /** The bindings a `function_declaration`'s own value-parameter list introduces. */
229
342
  function parameterNamesOf(fn) {
@@ -241,18 +354,38 @@ function parameterNamesOf(fn) {
241
354
  return names;
242
355
  }
243
356
  /** Every HTTP call written in one file, and every one refused. */
244
- export function readKtorClientCalls(root, imports) {
357
+ export function readKtorClientCalls(root, imports,
358
+ /** Origins some base in this same file already resolves to — see `client-base.ts`'s header. */
359
+ knownOrigins = NO_KNOWN_ORIGINS) {
245
360
  if (!importsRequestPackage(imports))
246
361
  return { calls: [], refusals: [] };
247
362
  const calls = [];
248
363
  const refusals = [];
249
- const { verified, ambiguous } = clientNames(root, imports);
364
+ const { verified, ambiguous, bases } = clientNames(root, imports);
365
+ const constants = stringConstantsIn(root);
366
+ /**
367
+ * DEC-164's 08c, and the one narrow exception to DEC-113: an origin some
368
+ * base in this same file resolves to is an origin this program treats as
369
+ * its own API. A bare origin with no path is not an endpoint anything
370
+ * serves.
371
+ */
372
+ const pathAtKnownOrigin = (literal) => {
373
+ const origin = originOf(literal);
374
+ if (origin === undefined || !knownOrigins.has(origin))
375
+ return undefined;
376
+ const cut = literal.indexOf("?");
377
+ const path = pathPrefixOf(cut === -1 ? literal : literal.slice(0, cut));
378
+ return path === undefined || path === "" ? undefined : path;
379
+ };
250
380
  // Replaced, not merged, on entering a nested `function_declaration`: the
251
381
  // innermost function's parameters are what "varies-per-call" means inside it
252
382
  // (same scoping as every other language's diagnoseArgument). A name closed
253
383
  // over from an outer function is an ordinary capture, not a parameter.
254
- const visit = (node, parameterNames) => {
384
+ const visit = (node, parameterNames, owner) => {
255
385
  const scoped = node.type === "function_declaration" ? parameterNamesOf(node) : parameterNames;
386
+ const scopedOwner = node.type === "class_declaration" || node.type === "object_declaration"
387
+ ? `${owner}${owner === "" ? "" : "."}${firstOfType(node, "type_identifier")?.text ?? ""}`
388
+ : owner;
256
389
  const call = verbCallOf(node);
257
390
  if (call !== undefined) {
258
391
  const method = VERBS.get(call.verb);
@@ -268,7 +401,7 @@ export function readKtorClientCalls(root, imports) {
268
401
  });
269
402
  }
270
403
  else if (verified.has(call.receiver)) {
271
- readVerified(call, method, scoped);
404
+ readVerified(call, method, scoped, scopedOwner);
272
405
  }
273
406
  // Neither verified nor ambiguous: no visible client, no ledger row.
274
407
  // `x.get(...)` is overwhelmingly a map lookup or test client; filing
@@ -276,11 +409,50 @@ export function readKtorClientCalls(root, imports) {
276
409
  }
277
410
  }
278
411
  for (const child of namedChildren(node))
279
- visit(child, scoped);
412
+ visit(child, scoped, scopedOwner);
280
413
  };
281
- function readVerified(call, method, parameterNames) {
414
+ /**
415
+ * The base site for `receiver` as seen from `owner` — the enclosing class
416
+ * first, then each enclosing scope out to the file. A top-level `val` is
417
+ * visible to every class in the file; another class's property is not.
418
+ */
419
+ function baseSiteFor(owner, receiver) {
420
+ let scope = owner;
421
+ for (;;) {
422
+ const site = bases.get(`${scope}::${receiver}`);
423
+ if (site !== undefined)
424
+ return site;
425
+ if (scope === "")
426
+ return undefined;
427
+ const cut = scope.lastIndexOf(".");
428
+ scope = cut === -1 ? "" : scope.slice(0, cut);
429
+ }
430
+ }
431
+ function readVerified(call, method, parameterNames, owner) {
282
432
  const raw = call.firstArg?.text ?? "";
283
433
  const path = templateOf(call.firstArg);
434
+ // DEC-164: the base configured on this receiver, resolved against the
435
+ // file's own constants. `undefined` is the fourth state — a construction
436
+ // this reader never saw.
437
+ const site = baseSiteFor(owner, call.receiver);
438
+ const resolved = site === undefined ? undefined : resolveBaseSite(site, constants);
439
+ const clientBase = resolved?.base;
440
+ const carry = clientBase === undefined ? {} : { clientBase };
441
+ if (clientBase?.state === "unresolved" && path !== undefined) {
442
+ // DEC-164 §2: a base injected from outside the readable source cannot be
443
+ // composed and must not be guessed. No edge, and the row names BOTH
444
+ // halves — the blocking expression and the call's own path.
445
+ refusals.push({
446
+ rawTarget: path.slice(0, 80),
447
+ reason: `an HTTP call whose base this reader traced to \`${clientBase.why}\` and could not read as a ` +
448
+ `string literal. DEC-164 refuses rather than guesses what an unreadable base composes to.`,
449
+ line: call.line,
450
+ ...diagnoseArgument(clientBase.why, parameterNames),
451
+ clientBase,
452
+ callPath: path.startsWith("/") ? path : `/${path}`,
453
+ });
454
+ return;
455
+ }
284
456
  if (path === undefined) {
285
457
  refusals.push({
286
458
  rawTarget: raw.slice(0, 80) || `${call.receiver}.${call.verb}`,
@@ -292,6 +464,11 @@ export function readKtorClientCalls(root, imports) {
292
464
  return;
293
465
  }
294
466
  if (/^[a-zA-Z][\w+.-]*:\/\//.test(path)) {
467
+ const under = pathAtKnownOrigin(path);
468
+ if (under !== undefined) {
469
+ calls.push({ method, path: under, rawPath: raw, client: `${call.receiver}.${call.verb}`, line: call.line, ...carry });
470
+ return;
471
+ }
295
472
  refusals.push({
296
473
  rawTarget: path.slice(0, 80),
297
474
  reason: "an HTTP call to an absolute URL, which names a host this repository does not serve. Refused " +
@@ -303,17 +480,34 @@ export function readKtorClientCalls(root, imports) {
303
480
  return;
304
481
  }
305
482
  if (!path.startsWith("/")) {
483
+ // DEC-164: a base this reader DID read turns this path from an
484
+ // unservable one into a composed one. Ktor resolves `url(base)` by RFC
485
+ // 3986, so the two are joined under exactly one separator whichever way
486
+ // each was spelled.
487
+ if (clientBase?.state === "resolved") {
488
+ calls.push({
489
+ method,
490
+ path: `${clientBase.path}/${path.replace(/^\/+/, "")}`,
491
+ rawPath: raw,
492
+ client: `${call.receiver}.${call.verb}`,
493
+ line: call.line,
494
+ ...carry,
495
+ ...(resolved?.origin === undefined ? {} : { baseOrigin: resolved.origin }),
496
+ });
497
+ return;
498
+ }
306
499
  refusals.push({
307
500
  rawTarget: path.slice(0, 80),
308
501
  reason: "an HTTP call whose path is not repository-relative, so no route on this side of the join serves it.",
309
502
  line: call.line,
310
503
  ...CAPABILITY_GAP,
504
+ ...carry,
311
505
  });
312
506
  return;
313
507
  }
314
- calls.push({ method, path, rawPath: raw, client: `${call.receiver}.${call.verb}`, line: call.line });
508
+ calls.push({ method, path, rawPath: raw, client: `${call.receiver}.${call.verb}`, line: call.line, ...carry });
315
509
  }
316
- visit(root, new Set());
510
+ visit(root, new Set(), "");
317
511
  return { calls, refusals };
318
512
  }
319
513
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * The dependency boundary, Kotlin side.
3
+ *
4
+ * `client.get(url)` on an `io.ktor.client.HttpClient`, or `Json.encodeToString(x)`
5
+ * on `kotlinx.serialization.json.Json`, leaves the repository. Today that becomes
6
+ * a ledger row saying there is no declaration for the name in the analysed set,
7
+ * and the call graph stops. This module answers the one question that turns the
8
+ * boundary into a fact the graph can hold: **which package, and which symbol in
9
+ * it.**
10
+ *
11
+ * ## The rule everything here rests on: attribute only from a binding the
12
+ * developer wrote
13
+ *
14
+ * In Go (`adapter-go/src/external.ts`, the model for all of these) that binding
15
+ * is the file's own `import` block. Kotlin's is the same statement — and Kotlin
16
+ * makes it stricter than Java does, which is why this file is shorter than
17
+ * `adapter-java/src/external.ts`:
18
+ *
19
+ * - **A Kotlin import names a symbol, not only a type.** `import
20
+ * io.ktor.server.request.receive` imports an extension function; `import
21
+ * okhttp3.Request` imports a class; `import kotlin.test.assertEquals`
22
+ * imports a top-level function. All three are the same statement and all
23
+ * three bind one local name.
24
+ * - **There is no inline fully-qualified fallback here.** Java attributes
25
+ * `java.util.List` written out at the reference, because Java code writes
26
+ * FQNs inline often enough to be worth the naming-convention rule it takes
27
+ * to read one. Kotlin's `parse.ts` reports a receiver as a written *name*
28
+ * and a dotted path is a value traversal far more often than a package, so
29
+ * the same rule would buy little and cost precision. Only an import is read.
30
+ *
31
+ * Nothing here reads a Gradle configuration, a resolved classpath, `~/.m2` or a
32
+ * jar. Two reasons, the same two Go gives: most checkouts have no dependencies
33
+ * fetched, and an identity taken from a resolved classpath would *move* the
34
+ * first time somebody ran a build.
35
+ *
36
+ * ## Where the package ends and the symbol begins
37
+ *
38
+ * Java's `external.ts` cuts a fully-qualified name at its first capitalised
39
+ * segment, which works because a Java import always ends at a type. **A Kotlin
40
+ * import does not**: `io.ktor.server.request.receive` has no capitalised segment
41
+ * at all. So the cut here is the import statement's own structure first — the
42
+ * last segment is the imported symbol, the rest is where it lives — and the
43
+ * capitalisation rule only refines it, to keep a nested symbol
44
+ * (`okhttp3.Headers.Companion.of`) attached to the type that owns it rather than
45
+ * turned into three package segments.
46
+ *
47
+ * ## The refusals, and what each costs
48
+ *
49
+ * - **A wildcard import binds no name.** `import io.ktor.util.*` then
50
+ * `escapeHTML()` could come from that package or any other wildcard in the
51
+ * file. Python's `from x import *` refusal, for the same reason.
52
+ * - **Kotlin's default imports are never written.** `List`, `println`,
53
+ * `String`, `require` arrive with no import statement anywhere, because the
54
+ * compiler imports `kotlin.*`, `kotlin.collections.*`, `kotlin.io.*` and
55
+ * `java.lang.*` into every file. A language rule filling a silence is not a
56
+ * binding a developer wrote, and this is the single largest recall cost here.
57
+ * - **A symbol under one of the repository's own packages is ours**, analysed
58
+ * or not. Unanalysed code of ours is still ours.
59
+ * - **The reflection packages are declined** — see `DYNAMIC_DISPATCH_PACKAGES`.
60
+ *
61
+ * **Everything this module does not attribute is a deliberate refusal.** Rule 2
62
+ * prices a wrong edge far above a missing one.
63
+ */
64
+ /** What one written name was bound by. Only an import is a binding a developer
65
+ * wrote; a default import and a wildcard are language rules filling a silence. */
66
+ export type Binding = "import" | "import-alias";
67
+ export interface ExternalContext {
68
+ /** This file's own non-wildcard imports: local name -> the full import path. */
69
+ readonly imports: ReadonlyMap<string, {
70
+ readonly path: string;
71
+ readonly aliased: boolean;
72
+ }>;
73
+ /**
74
+ * Packages declared by the repository's own files. A symbol under one of them
75
+ * is OURS whether or not this run read it — calling unanalysed code of ours a
76
+ * dependency is the error that never surfaces.
77
+ */
78
+ readonly ownPackages: ReadonlySet<string>;
79
+ }
80
+ export interface ExternalAttribution {
81
+ /** The package **as written in the import statement** — this is the identity. */
82
+ readonly moduleOrNamespace: string;
83
+ /** The symbol, and any member named on it. Never the local alias. */
84
+ readonly symbolPath: readonly string[];
85
+ readonly binding: Binding;
86
+ /**
87
+ * From a jar rather than the Kotlin standard library or the JDK, decided from
88
+ * the package name alone against `PLATFORM_BASIS`. Disclosure only — it never
89
+ * enters the node id, because a package that moved between the two would
90
+ * otherwise change identity with no line of source changing.
91
+ */
92
+ readonly thirdParty: boolean;
93
+ }
94
+ /**
95
+ * Provenance of the platform-package list, carried on every attributed node. A
96
+ * property of the language and its JDK, frozen into this source — never read
97
+ * from whatever toolchain a developer happens to have installed.
98
+ *
99
+ * `kotlinx` is deliberately **not** here: `kotlinx.coroutines` and
100
+ * `kotlinx.serialization` are separately released libraries, not the standard
101
+ * library, and calling them platform would be a wrong disclosure on thousands
102
+ * of nodes. `javax` is split for the same reason `adapter-java` splits it.
103
+ */
104
+ export declare const PLATFORM_BASIS = "kotlin-2 stdlib (kotlin.) plus jdk-21 java./jdk./sun./com.sun. roots and the JDK's own javax subpackages";
105
+ /**
106
+ * An import path split into the package that holds it and the symbol chain
107
+ * inside that package.
108
+ *
109
+ * The import statement settles the coarse split by itself — the last segment is
110
+ * the symbol — and the capitalisation rule refines it so a nested symbol stays
111
+ * attached to the type that owns it:
112
+ *
113
+ * `okhttp3.Request` -> `okhttp3` + `Request`
114
+ * `io.ktor.server.request.receive` -> `io.ktor.server.request` + `receive`
115
+ * `okhttp3.Headers.Companion.of` -> `okhttp3` + `Headers.Companion.of`
116
+ *
117
+ * `null` when the path names no package at all (a single segment), which an
118
+ * import of a dependency's symbol never is.
119
+ */
120
+ export declare function splitImportPath(path: string): {
121
+ pkg: string;
122
+ symbols: string[];
123
+ } | null;
124
+ /**
125
+ * The package and symbol behind a name that left the repository, or `null` when
126
+ * no import the developer wrote binds it.
127
+ *
128
+ * `written` is the local name at the reference — a type name, a receiver, or a
129
+ * bare callee. `extra` is whatever was named on it: `["get"]` for a method call
130
+ * on an imported type, empty for a type reference.
131
+ */
132
+ export declare function attributeExternal(written: string, extra: readonly string[], context: ExternalContext): ExternalAttribution | null;
133
+ /**
134
+ * This file's non-wildcard imports, as `attributeExternal` reads them.
135
+ *
136
+ * A wildcard is dropped: it names a package and binds no local name, so there
137
+ * is no written binding to read. A name bound twice by two different statements
138
+ * is dropped outright — which import wins is a question the source did not
139
+ * answer here, and Python's conditional-import refusal is the same call.
140
+ */
141
+ export declare function externalImportTable(imports: readonly {
142
+ readonly path: string;
143
+ readonly isWildcard: boolean;
144
+ readonly alias: string | undefined;
145
+ }[]): ReadonlyMap<string, {
146
+ path: string;
147
+ aliased: boolean;
148
+ }>;
149
+ //# sourceMappingURL=external.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH;mFACmF;AACnF,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5F;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,6GACiF,CAAC;AAiD7G;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAWvF;AASD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,eAAe,GACvB,mBAAmB,GAAG,IAAI,CA4B5B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,GAC9G,WAAW,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAkBzD"}