@toa.io/extensions.introspection 1.0.0-alpha.270 → 1.0.0-alpha.273
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/CHANGELOG.md +16 -0
- package/components/introspection.edges/manifest.toa.yaml +7 -4
- package/components/introspection.edges/operations/tsconfig.tsbuildinfo +1 -1
- package/components/introspection.nodes/manifest.toa.yaml +18 -9
- package/components/introspection.nodes/operations/tsconfig.tsbuildinfo +1 -1
- package/features/steps/Map.ts +6 -6
- package/features/steps/components/probe.discreet/manifest.toa.yaml +6 -2
- package/features/steps/components/probe.quiet/manifest.toa.yaml +6 -2
- package/features/steps/components/probe.source/manifest.toa.yaml +23 -9
- package/features/steps/components/probe.target/manifest.toa.yaml +13 -6
- package/features/steps/config.ts +1 -2
- package/package.json +6 -6
- package/schemas/annotation.cos.yaml +30 -20
- package/schemas/declaration.cos.yaml +4 -1
- package/source/annotation.ts +1 -2
- package/source/describe.ts +2 -2
- package/source/extension.ts +1 -2
- package/transpiled/annotation.js +1 -2
- package/transpiled/annotation.js.map +1 -1
- package/transpiled/describe.d.ts +2 -2
- package/transpiled/describe.js +2 -2
- package/transpiled/extension.js +1 -2
- package/transpiled/extension.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/ui/dist/_app/immutable/chunks/{CHxcRBoo.js → B1UAXRl6.js} +1 -1
- package/ui/dist/_app/immutable/chunks/B4keVd1W.js +1 -0
- package/ui/dist/_app/immutable/chunks/{DkWnYnRj.js → BRzKTtG1.js} +1 -1
- package/ui/dist/_app/immutable/chunks/BYoLgHHK.js +1 -0
- package/ui/dist/_app/immutable/chunks/{1h9c3-kb.js → BhsTl35j.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{BTdP7NDg.js → Bva_8OsO.js} +2 -2
- package/ui/dist/_app/immutable/chunks/{fvN-1qLb.js → CHZigHJJ.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{CE5oCrcG.js → DqYXmv_C.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{gGglPx4n.js → zxIUM3uQ.js} +1 -1
- package/ui/dist/_app/immutable/entry/{app.YHhldYu7.js → app.BQaWSqcG.js} +2 -2
- package/ui/dist/_app/immutable/entry/start.DFsFdV8O.js +1 -0
- package/ui/dist/_app/immutable/nodes/{0.DF12guHu.js → 0.Dl8mPn96.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{1.welC79ue.js → 1.Bf7_YJQ8.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{2.B--vK9gg.js → 2.CFLv6RzK.js} +1 -1
- package/ui/dist/_app/immutable/nodes/3.DANq7w76.js +1 -0
- package/ui/dist/_app/immutable/nodes/4.Bc-YH5ro.js +1 -0
- package/ui/dist/_app/immutable/nodes/{5.wi07x_b6.js → 5.CDeyHOCG.js} +1 -1
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +12 -12
- package/ui/dist/_app/immutable/chunks/B-y00kYY.js +0 -1
- package/ui/dist/_app/immutable/chunks/DSm-ObJN.js +0 -1
- package/ui/dist/_app/immutable/entry/start.aySpka5i.js +0 -1
- package/ui/dist/_app/immutable/nodes/3.CMdcm72a.js +0 -1
- package/ui/dist/_app/immutable/nodes/4.Th5L0TK8.js +0 -1
package/features/steps/Map.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { readdirSync } from 'node:fs'
|
|
|
4
4
|
import { setTimeout } from 'node:timers/promises'
|
|
5
5
|
import { MongoClient } from 'mongodb'
|
|
6
6
|
import { after, before, binding, then, when } from 'cucumber-tsflow'
|
|
7
|
-
import { parse } from '
|
|
7
|
+
import { load as parse } from 'js-yaml'
|
|
8
8
|
import { match } from '@toa.io/generic'
|
|
9
9
|
import * as boot from '@toa.io/boot'
|
|
10
10
|
import * as stage from '@toa.io/userland/stage'
|
|
@@ -19,7 +19,7 @@ export class Map {
|
|
|
19
19
|
|
|
20
20
|
@when('the `{word}` is called with:')
|
|
21
21
|
public async call (endpoint: string, yaml: string): Promise<void> {
|
|
22
|
-
const request = parse
|
|
22
|
+
const request = parse(yaml) as Request
|
|
23
23
|
const [operation, component, namespace = 'default'] = endpoint.split('.').reverse()
|
|
24
24
|
|
|
25
25
|
// an operation may throw, and that is exactly what one of the scenarios is about
|
|
@@ -28,22 +28,22 @@ export class Map {
|
|
|
28
28
|
|
|
29
29
|
@then('the map contains a node:')
|
|
30
30
|
public async node (yaml: string): Promise<void> {
|
|
31
|
-
await this.eventually('introspection.nodes', parse(yaml))
|
|
31
|
+
await this.eventually('introspection.nodes', parse(yaml) as object)
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
@then('the map contains an edge:')
|
|
35
35
|
public async edge (yaml: string): Promise<void> {
|
|
36
|
-
await this.eventually('introspection.edges', parse(yaml))
|
|
36
|
+
await this.eventually('introspection.edges', parse(yaml) as object)
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
@then('the map contains no node:')
|
|
40
40
|
public async noNode (yaml: string): Promise<void> {
|
|
41
|
-
await this.never('introspection.nodes', parse(yaml))
|
|
41
|
+
await this.never('introspection.nodes', parse(yaml) as object)
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
@then('the map contains no edge:')
|
|
45
45
|
public async noEdge (yaml: string): Promise<void> {
|
|
46
|
-
await this.never('introspection.edges', parse(yaml))
|
|
46
|
+
await this.never('introspection.edges', parse(yaml) as object)
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
@when('the components are stopped')
|
|
@@ -5,22 +5,36 @@ entity:
|
|
|
5
5
|
associated: true
|
|
6
6
|
storage: null
|
|
7
7
|
schema:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
properties:
|
|
9
|
+
value:
|
|
10
|
+
type: integer
|
|
11
|
+
default: 0
|
|
12
|
+
secret:
|
|
13
|
+
type: string
|
|
14
|
+
type: object
|
|
12
15
|
|
|
13
16
|
operations:
|
|
14
17
|
transit:
|
|
15
18
|
concurrency: retry
|
|
16
19
|
input:
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
properties:
|
|
21
|
+
value:
|
|
22
|
+
type: string
|
|
23
|
+
default: .
|
|
24
|
+
secret:
|
|
25
|
+
type: string
|
|
26
|
+
default: .
|
|
27
|
+
type: object
|
|
19
28
|
relay:
|
|
20
29
|
input:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
properties:
|
|
31
|
+
a:
|
|
32
|
+
type: number
|
|
33
|
+
b:
|
|
34
|
+
type: number
|
|
35
|
+
type: object
|
|
36
|
+
output:
|
|
37
|
+
type: number
|
|
24
38
|
crash: {}
|
|
25
39
|
fail:
|
|
26
40
|
errors:
|
|
@@ -4,16 +4,23 @@ name: target
|
|
|
4
4
|
entity:
|
|
5
5
|
storage: null
|
|
6
6
|
schema:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
properties:
|
|
8
|
+
counted:
|
|
9
|
+
type: integer
|
|
10
|
+
default: 0
|
|
11
|
+
type: object
|
|
10
12
|
|
|
11
13
|
operations:
|
|
12
14
|
compute:
|
|
13
15
|
input:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
properties:
|
|
17
|
+
a:
|
|
18
|
+
type: number
|
|
19
|
+
b:
|
|
20
|
+
type: number
|
|
21
|
+
type: object
|
|
22
|
+
output:
|
|
23
|
+
type: number
|
|
17
24
|
count:
|
|
18
25
|
concurrency: retry
|
|
19
26
|
input:
|
package/features/steps/config.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { setDefaultTimeout } from '@cucumber/cucumber'
|
|
2
|
-
import { encode } from '@toa.io/generic'
|
|
3
2
|
|
|
4
3
|
process.env.TOA_DEV = '1'
|
|
5
4
|
|
|
@@ -8,7 +7,7 @@ process.env.TOA_DEV = '1'
|
|
|
8
7
|
* factories per process — so the context level of the annotation is fixed for
|
|
9
8
|
* a whole run. `npm run features` therefore makes a pass per configuration.
|
|
10
9
|
*/
|
|
11
|
-
process.env.TOA_INTROSPECTION =
|
|
10
|
+
process.env.TOA_INTROSPECTION = JSON.stringify({
|
|
12
11
|
samples: process.env.TOA_INTROSPECTION_SAMPLES === '1',
|
|
13
12
|
interval: Number(process.env.TOA_INTROSPECTION_INTERVAL ?? 1),
|
|
14
13
|
threshold: 64,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toa.io/extensions.introspection",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.273",
|
|
4
4
|
"description": "Toa Introspection",
|
|
5
5
|
"author": "temich <tema.gurtovoy@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/toa-io/toa#readme",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"access": "public"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@toa.io/core": "1.0.0-alpha.
|
|
21
|
-
"@toa.io/generic": "1.0.0-alpha.
|
|
22
|
-
"@toa.io/schemas": "1.0.0-alpha.
|
|
23
|
-
"openspan": "1.0.0-alpha.
|
|
20
|
+
"@toa.io/core": "1.0.0-alpha.273",
|
|
21
|
+
"@toa.io/generic": "1.0.0-alpha.273",
|
|
22
|
+
"@toa.io/schemas": "1.0.0-alpha.273",
|
|
23
|
+
"openspan": "1.0.0-alpha.272"
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
26
|
"transpile": "npx tsc && npx tsc -p ./components/introspection.nodes && npx tsc -p ./components/introspection.edges",
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
"prepack": "npm run build:ui",
|
|
29
29
|
"features": "npx cucumber-js --tags 'not @samples and not @shutdown' && TOA_INTROSPECTION_SAMPLES=1 npx cucumber-js --tags @samples && TOA_INTROSPECTION_INTERVAL=3600 npx cucumber-js --tags @shutdown"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "ad3284850ece95ffd5325fd0995707fc144c9c3d"
|
|
32
32
|
}
|
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
# context.toa.yaml introspection annotation
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
properties:
|
|
3
|
+
samples:
|
|
4
|
+
type: boolean
|
|
5
|
+
interval:
|
|
6
|
+
type: integer
|
|
7
|
+
minimum: 1
|
|
8
|
+
threshold:
|
|
9
|
+
type: integer
|
|
10
|
+
minimum: 1
|
|
11
|
+
ui:
|
|
12
|
+
type: boolean
|
|
13
|
+
resources:
|
|
14
|
+
# `null` deploys the service without any, which every deployment has to state one way
|
|
15
|
+
# or the other — see `migrations/263.md`.
|
|
16
|
+
type: object
|
|
17
|
+
nullable: true
|
|
18
|
+
properties:
|
|
19
|
+
cpu:
|
|
20
|
+
type: array
|
|
21
|
+
items:
|
|
22
|
+
type: string
|
|
23
|
+
minItems: 2
|
|
24
|
+
maxItems: 2
|
|
25
|
+
memory:
|
|
26
|
+
type: array
|
|
27
|
+
items:
|
|
28
|
+
type: string
|
|
29
|
+
minItems: 2
|
|
30
|
+
maxItems: 2
|
|
31
|
+
type: object
|
package/source/annotation.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { decode } from '@toa.io/generic'
|
|
2
1
|
import { DEFAULT_INTERVAL, DEFAULT_THRESHOLD, DENIED, ENV } from './const'
|
|
3
2
|
import type { Resources } from '@toa.io/operations'
|
|
4
3
|
|
|
@@ -54,7 +53,7 @@ export function environment (): Options | null {
|
|
|
54
53
|
if (value === undefined)
|
|
55
54
|
return null
|
|
56
55
|
|
|
57
|
-
return
|
|
56
|
+
return JSON.parse(value) as Options
|
|
58
57
|
}
|
|
59
58
|
|
|
60
59
|
export function component (declaration: Declaration | null | undefined): Declaration {
|
package/source/describe.ts
CHANGED
|
@@ -4,8 +4,8 @@ import type { Manifest } from '@toa.io/norm'
|
|
|
4
4
|
/**
|
|
5
5
|
* Turns a normalized component manifest into the node of the map.
|
|
6
6
|
*
|
|
7
|
-
* Everything here is already
|
|
8
|
-
*
|
|
7
|
+
* Everything here is already normalized by norm: the prototype chain is collapsed,
|
|
8
|
+
* so this is the shape the runtime actually runs.
|
|
9
9
|
*/
|
|
10
10
|
export function describe (manifest: Manifest): Node {
|
|
11
11
|
return {
|
package/source/extension.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { encode } from '@toa.io/generic'
|
|
2
1
|
import { options } from './annotation'
|
|
3
2
|
import { components } from './Composition'
|
|
4
3
|
import { ENV, UI_PATH, UI_PORT } from './const'
|
|
@@ -40,6 +39,6 @@ export function deployment (_: Instances<unknown>, annotation?: Annotation): Dep
|
|
|
40
39
|
|
|
41
40
|
return {
|
|
42
41
|
services: [service],
|
|
43
|
-
variables: { global: [{ name: ENV, value:
|
|
42
|
+
variables: { global: [{ name: ENV, value: JSON.stringify(opts) }] }
|
|
44
43
|
}
|
|
45
44
|
}
|
package/transpiled/annotation.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.settings = exports.component = exports.environment = exports.options = exports.DISABLED = void 0;
|
|
4
|
-
const generic_1 = require("@toa.io/generic");
|
|
5
4
|
const const_1 = require("./const");
|
|
6
5
|
exports.DISABLED = { enabled: false, samples: false };
|
|
7
6
|
function options(annotation) {
|
|
@@ -19,7 +18,7 @@ function environment() {
|
|
|
19
18
|
const value = process.env[const_1.ENV];
|
|
20
19
|
if (value === undefined)
|
|
21
20
|
return null;
|
|
22
|
-
return
|
|
21
|
+
return JSON.parse(value);
|
|
23
22
|
}
|
|
24
23
|
exports.environment = environment;
|
|
25
24
|
function component(declaration) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotation.js","sourceRoot":"","sources":["../source/annotation.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"annotation.js","sourceRoot":"","sources":["../source/annotation.ts"],"names":[],"mappings":";;;AAAA,mCAA0E;AAmC7D,QAAA,QAAQ,GAAa,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAEpE,SAAgB,OAAO,CAAE,UAAuB;IAC9C,MAAM,WAAW,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;IAEtF,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,OAAO,KAAK,IAAI;QACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,wBAAgB;QAClD,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,yBAAiB;QACrD,EAAE,EAAE,WAAW,CAAC,EAAE,KAAK,KAAK;KAC7B,CAAA;AACH,CAAC;AATD,0BASC;AAED,8DAA8D;AAC9D,SAAgB,WAAW;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAG,CAAC,CAAA;IAE9B,IAAI,KAAK,KAAK,SAAS;QACrB,OAAO,IAAI,CAAA;IAEb,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAA;AACrC,CAAC;AAPD,kCAOC;AAED,SAAgB,SAAS,CAAE,WAA2C;IACpE,IAAI,WAAW,KAAK,KAAK;QACvB,OAAO,KAAK,CAAA;IAEd,uEAAuE;IACvE,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS;QACnD,OAAO,EAAE,CAAA;IAEX,OAAO,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAA;AAClF,CAAC;AATD,8BASC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CAAE,SAAiB,EAAE,WAAwB,EAAE,IAAoB;IACzF,IAAI,IAAI,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK;QACxC,OAAO,gBAAQ,CAAA;IAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,cAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAEvF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AACnC,CAAC;AAPD,4BAOC"}
|
package/transpiled/describe.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Manifest } from '@toa.io/norm';
|
|
|
3
3
|
/**
|
|
4
4
|
* Turns a normalized component manifest into the node of the map.
|
|
5
5
|
*
|
|
6
|
-
* Everything here is already
|
|
7
|
-
*
|
|
6
|
+
* Everything here is already normalized by norm: the prototype chain is collapsed,
|
|
7
|
+
* so this is the shape the runtime actually runs.
|
|
8
8
|
*/
|
|
9
9
|
export declare function describe(manifest: Manifest): Node;
|
package/transpiled/describe.js
CHANGED
|
@@ -4,8 +4,8 @@ exports.describe = void 0;
|
|
|
4
4
|
/**
|
|
5
5
|
* Turns a normalized component manifest into the node of the map.
|
|
6
6
|
*
|
|
7
|
-
* Everything here is already
|
|
8
|
-
*
|
|
7
|
+
* Everything here is already normalized by norm: the prototype chain is collapsed,
|
|
8
|
+
* so this is the shape the runtime actually runs.
|
|
9
9
|
*/
|
|
10
10
|
function describe(manifest) {
|
|
11
11
|
return {
|
package/transpiled/extension.js
CHANGED
|
@@ -24,7 +24,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.deployment = exports.standalone = void 0;
|
|
27
|
-
const generic_1 = require("@toa.io/generic");
|
|
28
27
|
const annotation_1 = require("./annotation");
|
|
29
28
|
const Composition_1 = require("./Composition");
|
|
30
29
|
const const_1 = require("./const");
|
|
@@ -57,7 +56,7 @@ function deployment(_, annotation) {
|
|
|
57
56
|
}
|
|
58
57
|
return {
|
|
59
58
|
services: [service],
|
|
60
|
-
variables: { global: [{ name: const_1.ENV, value:
|
|
59
|
+
variables: { global: [{ name: const_1.ENV, value: JSON.stringify(opts) }] }
|
|
61
60
|
};
|
|
62
61
|
}
|
|
63
62
|
exports.deployment = deployment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../source/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../source/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAsC;AACtC,+CAA0C;AAC1C,mCAA+C;AAC/C,mDAAoC;AAIvB,QAAA,UAAU,GAAG,IAAI,CAAA;AAE9B;;;;;;GAMG;AACH,SAAgB,UAAU,CAAE,CAAqB,EAAE,UAAuB;IACxE,IAAI,UAAU,KAAK,KAAK;QACtB,OAAO,EAAE,CAAA;IAEX,IAAI,UAAU,KAAK,SAAS;QAC1B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAEzC,MAAM,IAAI,GAAG,IAAA,oBAAO,EAAC,UAAU,CAAC,CAAA;IAEhC,MAAM,OAAO,GAAY;QACvB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;QAC3C,UAAU,EAAE,IAAA,wBAAU,GAAE,CAAC,MAAM;QAC/B,SAAS,EAAE,UAAU,EAAE,SAAS;QAChC,SAAS,EAAE,EAAE;KACd,CAAA;IAED,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,GAAG,eAAO,CAAA;QACtB,OAAO,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,eAAO,EAAE,CAAA;IACrC,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;KACpE,CAAA;AACH,CAAC;AA3BD,gCA2BC"}
|