alasio 7.0.0 → 9.0.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/cli/src/api-server.js +18 -0
- package/dist/cli/src/api-server.js.map +1 -0
- package/dist/cli/src/branches.js +123 -46
- package/dist/cli/src/branches.js.map +1 -1
- package/dist/cli/src/cluster/docker.js +25 -10
- package/dist/cli/src/cluster/docker.js.map +1 -1
- package/dist/cli/src/cluster/host.js +33 -7
- package/dist/cli/src/cluster/host.js.map +1 -1
- package/dist/cli/src/cluster/k3s.js +51 -12
- package/dist/cli/src/cluster/k3s.js.map +1 -1
- package/dist/cli/src/cluster/node.js +115 -33
- package/dist/cli/src/cluster/node.js.map +1 -1
- package/dist/cli/src/cluster/stargz.js +55 -0
- package/dist/cli/src/cluster/stargz.js.map +1 -0
- package/dist/cli/src/commands/branch.js +5 -4
- package/dist/cli/src/commands/branch.js.map +1 -1
- package/dist/cli/src/commands/common.js +9 -3
- package/dist/cli/src/commands/common.js.map +1 -1
- package/dist/cli/src/commands/folder.js +14 -0
- package/dist/cli/src/commands/folder.js.map +1 -0
- package/dist/cli/src/commands/init.js +54 -4
- package/dist/cli/src/commands/init.js.map +1 -1
- package/dist/cli/src/commands/lake.js +40 -6
- package/dist/cli/src/commands/lake.js.map +1 -1
- package/dist/cli/src/commands/restore-filer-store.js +40 -8
- package/dist/cli/src/commands/restore-filer-store.js.map +1 -1
- package/dist/cli/src/commands/status.js +216 -20
- package/dist/cli/src/commands/status.js.map +1 -1
- package/dist/cli/src/commands/uninstall.js +8 -9
- package/dist/cli/src/commands/uninstall.js.map +1 -1
- package/dist/cli/src/commands/up.js +11 -3
- package/dist/cli/src/commands/up.js.map +1 -1
- package/dist/cli/src/commands/upgrade.js +1 -1
- package/dist/cli/src/commands/upgrade.js.map +1 -1
- package/dist/cli/src/commands.js +2 -1
- package/dist/cli/src/commands.js.map +1 -1
- package/dist/cli/src/config.js +24 -9
- package/dist/cli/src/config.js.map +1 -1
- package/dist/cli/src/cpu-baseline.js +8 -4
- package/dist/cli/src/cpu-baseline.js.map +1 -1
- package/dist/cli/src/folders.js +67 -0
- package/dist/cli/src/folders.js.map +1 -0
- package/dist/cli/src/gateway-calls.js +58 -0
- package/dist/cli/src/gateway-calls.js.map +1 -0
- package/dist/cli/src/install.js +119 -17
- package/dist/cli/src/install.js.map +1 -1
- package/dist/cli/src/kept-releases.js +27 -20
- package/dist/cli/src/kept-releases.js.map +1 -1
- package/dist/cli/src/kube/api.js +11 -5
- package/dist/cli/src/kube/api.js.map +1 -1
- package/dist/cli/src/kube/apply.js +16 -73
- package/dist/cli/src/kube/apply.js.map +1 -1
- package/dist/cli/src/kube/rollout.js +84 -26
- package/dist/cli/src/kube/rollout.js.map +1 -1
- package/dist/cli/src/lake.js +124 -0
- package/dist/cli/src/lake.js.map +1 -0
- package/dist/cli/src/manifests/admission.js +381 -223
- package/dist/cli/src/manifests/admission.js.map +1 -1
- package/dist/cli/src/manifests/alasio.js +79 -362
- package/dist/cli/src/manifests/alasio.js.map +1 -1
- package/dist/cli/src/manifests/branch.js +10 -26
- package/dist/cli/src/manifests/branch.js.map +1 -1
- package/dist/cli/src/manifests/collector.js +250 -135
- package/dist/cli/src/manifests/collector.js.map +1 -1
- package/dist/cli/src/manifests/common.js +32 -2
- package/dist/cli/src/manifests/common.js.map +1 -1
- package/dist/cli/src/manifests/config.js +256 -92
- package/dist/cli/src/manifests/config.js.map +1 -1
- package/dist/cli/src/manifests/disruption.js +10 -0
- package/dist/cli/src/manifests/disruption.js.map +1 -1
- package/dist/cli/src/manifests/folders.js +128 -0
- package/dist/cli/src/manifests/folders.js.map +1 -0
- package/dist/cli/src/manifests/grafana.js +4 -2
- package/dist/cli/src/manifests/grafana.js.map +1 -1
- package/dist/cli/src/manifests/index.js +15 -8
- package/dist/cli/src/manifests/index.js.map +1 -1
- package/dist/cli/src/manifests/keda.js +2 -1
- package/dist/cli/src/manifests/keda.js.map +1 -1
- package/dist/cli/src/manifests/lake.js +350 -73
- package/dist/cli/src/manifests/lake.js.map +1 -1
- package/dist/cli/src/manifests/log.js +316 -0
- package/dist/cli/src/manifests/log.js.map +1 -0
- package/dist/cli/src/manifests/neon.js +128 -49
- package/dist/cli/src/manifests/neon.js.map +1 -1
- package/dist/cli/src/manifests/network-policies.js +263 -100
- package/dist/cli/src/manifests/network-policies.js.map +1 -1
- package/dist/cli/src/manifests/node-agent.js +24 -8
- package/dist/cli/src/manifests/node-agent.js.map +1 -1
- package/dist/cli/src/manifests/object-store.js +4 -2
- package/dist/cli/src/manifests/object-store.js.map +1 -1
- package/dist/cli/src/manifests/sandbox-gateway.js +663 -0
- package/dist/cli/src/manifests/sandbox-gateway.js.map +1 -0
- package/dist/cli/src/manifests/scalers.js +16 -5
- package/dist/cli/src/manifests/scalers.js.map +1 -1
- package/dist/cli/src/manifests/sizing.js +16 -8
- package/dist/cli/src/manifests/sizing.js.map +1 -1
- package/dist/cli/src/manifests/valkey.js +11 -5
- package/dist/cli/src/manifests/valkey.js.map +1 -1
- package/dist/cli/src/manifests/vpa.js +3 -1
- package/dist/cli/src/manifests/vpa.js.map +1 -1
- package/dist/cli/src/manifests/webhook.js +102 -0
- package/dist/cli/src/manifests/webhook.js.map +1 -0
- package/dist/cli/src/manifests/workspace-storage.js +174 -89
- package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
- package/dist/cli/src/neon-storage.js +155 -0
- package/dist/cli/src/neon-storage.js.map +1 -0
- package/dist/cli/src/release.js +9 -6
- package/dist/cli/src/release.js.map +1 -1
- package/dist/cli/src/secrets.js +45 -4
- package/dist/cli/src/secrets.js.map +1 -1
- package/dist/cli/src/target.js +1 -1
- package/dist/cli/src/target.js.map +1 -1
- package/dist/cli/src/telegram.js +56 -10
- package/dist/cli/src/telegram.js.map +1 -1
- package/dist/cli/src/webhook.js +182 -0
- package/dist/cli/src/webhook.js.map +1 -0
- package/dist/cluster/node/pins.json +12 -2
- package/dist/neon/control/branches.js +126 -21
- package/dist/neon/control/branches.js.map +1 -1
- package/dist/neon/control/endpoints.js +9 -0
- package/dist/neon/control/endpoints.js.map +1 -1
- package/dist/neon/control/jwt.js +16 -3
- package/dist/neon/control/jwt.js.map +1 -1
- package/dist/neon/control/secrets.js +51 -7
- package/dist/neon/control/secrets.js.map +1 -1
- package/dist/src/binder/names.js +33 -0
- package/dist/src/binder/names.js.map +1 -0
- package/dist/src/binder/tokens.js +58 -0
- package/dist/src/binder/tokens.js.map +1 -0
- package/dist/src/branch/names.js +12 -2
- package/dist/src/branch/names.js.map +1 -1
- package/dist/src/events/names.js +7 -0
- package/dist/src/events/names.js.map +1 -0
- package/dist/src/gateway/names.js +201 -0
- package/dist/src/gateway/names.js.map +1 -0
- package/dist/src/harness/names.js +49 -0
- package/dist/src/harness/names.js.map +1 -0
- package/dist/src/kube/sandbox-shape.js +19 -69
- package/dist/src/kube/sandbox-shape.js.map +1 -1
- package/dist/src/node-agent/names.js +118 -2
- package/dist/src/node-agent/names.js.map +1 -1
- package/dist/src/sandbox/names.js +12 -20
- package/dist/src/sandbox/names.js.map +1 -1
- package/dist/src/sandbox/otlp-resource.js +173 -0
- package/dist/src/sandbox/otlp-resource.js.map +1 -0
- package/dist/src/sandbox/telemetry.js +43 -0
- package/dist/src/sandbox/telemetry.js.map +1 -0
- package/dist/src/telegram/deliveries.js +40 -0
- package/dist/src/telegram/deliveries.js.map +1 -0
- package/dist/src/telemetry/config.js +131 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/forward.js +154 -0
- package/dist/src/telemetry/forward.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/src/manifests/agent-sandbox.js +0 -92
- package/dist/cli/src/manifests/agent-sandbox.js.map +0 -1
- package/dist/cli/src/manifests/juicefs-csi.js +0 -319
- package/dist/cli/src/manifests/juicefs-csi.js.map +0 -1
- package/dist/cli/src/manifests/sandboxes.agents.x-k8s.io.json +0 -6295
- package/dist/src/kube/config.js +0 -143
- package/dist/src/kube/config.js.map +0 -1
package/dist/src/kube/config.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The templates alasio's installation gives it for its workspaces: `ALASIO_KUBE_TEMPLATES`
|
|
3
|
-
* is the path of a JSON file, which its Deployment mounts from a ConfigMap
|
|
4
|
-
* (cli/src/manifests/alasio.ts), of the form
|
|
5
|
-
*
|
|
6
|
-
* {
|
|
7
|
-
* "sessions": { "namespace", "port", "workspaceDir", "egressGate", "fullModeNameservers",
|
|
8
|
-
* "mountPodNamespace", "podTemplate", "volumeClaimTemplates", "clone",
|
|
9
|
-
* "snapshots" },
|
|
10
|
-
* "host": { "namespace", "port", "stateRoot", "podTemplate" }
|
|
11
|
-
* }
|
|
12
|
-
*
|
|
13
|
-
* either of which may be absent: no `sessions`, no session filesystems; no `host`, no
|
|
14
|
-
* folder workspaces. Each `podTemplate` has a container named `bayma` whose arguments
|
|
15
|
-
* serve MCP over HTTP on `port`; alasio adds the rest per Sandbox (./sandboxes.ts).
|
|
16
|
-
*/
|
|
17
|
-
import { readFileSync } from "node:fs";
|
|
18
|
-
import { Config, Effect, Predicate, Result, Schema, SchemaGetter, SchemaIssue } from "effect";
|
|
19
|
-
import { CLAIM_TEMPLATE_MAX } from "../sandbox/names.js";
|
|
20
|
-
/** The deployment's templates could not be read, or are not what alasio needs; the message says which. */
|
|
21
|
-
export class KubeTemplatesError extends Schema.TaggedError()("KubeTemplatesError", {
|
|
22
|
-
message: Schema.String,
|
|
23
|
-
}) {
|
|
24
|
-
}
|
|
25
|
-
const NAMESPACE = /^[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?$/u;
|
|
26
|
-
/**
|
|
27
|
-
* `schema`, whose every failure, a missing key's too, reads as `message`, which the
|
|
28
|
-
* error then says of the key's path.
|
|
29
|
-
*/
|
|
30
|
-
const said = (schema, message) => schema.annotate({ message }).annotateKey({ messageMissingKey: message });
|
|
31
|
-
/** A namespace's name; a name YAML reads as a number (`123`) is that name. */
|
|
32
|
-
const Namespace = said(Schema.Union([Schema.String, Schema.Finite.pipe(Schema.decodeTo(Schema.String, { decode: SchemaGetter.String(), encode: SchemaGetter.Number() }))])
|
|
33
|
-
.check(Schema.isPattern(NAMESPACE, { message: "must be a namespace name" })), "must be a namespace name");
|
|
34
|
-
const Port = said(Schema.Number.check(Schema.isInt({ message: "must be a port number" }), Schema.isBetween({ minimum: 1, maximum: 65535 }, { message: "must be a port number" })), "must be a port number");
|
|
35
|
-
const Path = said(Schema.String, "must be a path");
|
|
36
|
-
/**
|
|
37
|
-
* What alasio relies on of a pod template is checked with its profile (a container named
|
|
38
|
-
* `bayma`); the rest of it, and the claim templates, are Kubernetes objects the
|
|
39
|
-
* installation gives, which the API server checks as each Sandbox is made.
|
|
40
|
-
*/
|
|
41
|
-
const PodTemplate = said(Schema.declare((value) => Predicate.isObject(value)), "must be an object").pipe(Schema.withDecodingDefaultKey(Effect.succeed({})));
|
|
42
|
-
const VolumeClaimTemplates = said(Schema.Array(Schema.declare((value) => Predicate.isObject(value))), "must be a list of volume claim templates");
|
|
43
|
-
/**
|
|
44
|
-
* How a session's volume is cloned (cloneJob in cli/src/manifests/workspace-storage.ts):
|
|
45
|
-
* the name of the volume's claim template, and the Job that clones one claim of it into
|
|
46
|
-
* another, given the claims' namespaces and names as `SOURCE_NAMESPACE`, `SOURCE_CLAIM`,
|
|
47
|
-
* `DESTINATION_NAMESPACE` and `DESTINATION_CLAIM`. The Job is a Kubernetes object the
|
|
48
|
-
* installation gives, which the API server checks as each is made.
|
|
49
|
-
*/
|
|
50
|
-
const Clone = said(Schema.Struct({
|
|
51
|
-
// Short enough that each claim of it, named `<template>-<volume id>`, is a DNS label.
|
|
52
|
-
claimTemplate: said(Schema.String.check(Schema.isPattern(new RegExp(`^[a-z0-9]([-a-z0-9]{0,${CLAIM_TEMPLATE_MAX - 2}}[a-z0-9])?$`, "u"))), `must be a claim template's name, a DNS label of at most ${CLAIM_TEMPLATE_MAX} characters`),
|
|
53
|
-
job: said(Schema.declare((value) => Predicate.isObject(value)), "must be an object"),
|
|
54
|
-
}), "must be an object");
|
|
55
|
-
/** The variables a clone's Job is given, after its own, in this order (src/sandbox/index.ts). */
|
|
56
|
-
export const CLONE_VARIABLES = ["SOURCE_NAMESPACE", "SOURCE_CLAIM", "DESTINATION_NAMESPACE", "DESTINATION_CLAIM"];
|
|
57
|
-
const Count = said(Schema.Number.check(Schema.isInt({ message: "must be a whole number" }), Schema.isGreaterThan(0, { message: "must be positive" })), "must be a positive whole number");
|
|
58
|
-
/**
|
|
59
|
-
* Session sandboxes' whole-sandbox snapshots (../sandbox/snapshots.ts): how long a session
|
|
60
|
-
* runs no exec and no turn before its Sandbox is snapshotted and released; the gVisor
|
|
61
|
-
* releases a snapshot is restored under, each by its RuntimeClass, the current one first;
|
|
62
|
-
* and where the node agents that take and prepare the snapshots are, by their pods'
|
|
63
|
-
* namespace and labels, and the port they serve on.
|
|
64
|
-
*/
|
|
65
|
-
const Snapshots = said(Schema.Struct({
|
|
66
|
-
releaseAfterSeconds: Count,
|
|
67
|
-
releases: said(Schema.Array(Schema.Struct({ release: said(Schema.NonEmptyString, "must be a release"), runtimeClassName: said(Schema.NonEmptyString, "must be a RuntimeClass's name") }))
|
|
68
|
-
.check(Schema.isMinLength(1, { message: "must name a release" })), "must be a list of releases"),
|
|
69
|
-
agents: said(Schema.Struct({ namespace: Namespace, selector: said(Schema.NonEmptyString, "must be a label selector"), port: Port }), "must be an object"),
|
|
70
|
-
}), "must be an object");
|
|
71
|
-
/** Whether `podTemplate`, as the installation gives it, runs a container named `bayma`. */
|
|
72
|
-
function runsBayma(podTemplate) {
|
|
73
|
-
const containers = Predicate.hasProperty(podTemplate, "spec") && Predicate.hasProperty(podTemplate.spec, "containers")
|
|
74
|
-
? podTemplate.spec.containers
|
|
75
|
-
: undefined;
|
|
76
|
-
return Array.isArray(containers) && containers.some((container) => Predicate.hasProperty(container, "name") && container.name === "bayma");
|
|
77
|
-
}
|
|
78
|
-
/** What both profiles hold: where their Sandboxes are made, and from what. */
|
|
79
|
-
const sandboxProfile = { namespace: Namespace, port: Port, podTemplate: PodTemplate };
|
|
80
|
-
/** The issue of a profile whose pod template runs no bayma. */
|
|
81
|
-
const baymaIssue = { path: ["podTemplate", "spec", "containers"], issue: 'must include one named "bayma"' };
|
|
82
|
-
/** The template of session filesystems' Sandboxes (sessionsProfile in cli/src/manifests/alasio.ts). */
|
|
83
|
-
const SessionsProfile = said(Schema.Struct({
|
|
84
|
-
...sandboxProfile,
|
|
85
|
-
/** Where the session's workspace is in bayma's container. */
|
|
86
|
-
workspaceDir: Path,
|
|
87
|
-
/** Whether a session waits for its egress to be confined before it starts; only false turns it off. */
|
|
88
|
-
egressGate: Schema.optional(said(Schema.NullOr(Schema.Boolean), "must be true or false")),
|
|
89
|
-
/** The resolvers sessions with internet access use, or none for alasio's defaults. */
|
|
90
|
-
fullModeNameservers: Schema.optional(said(Schema.NullOr(Schema.Array(Schema.String)), "must be a list of addresses")),
|
|
91
|
-
/**
|
|
92
|
-
* Where JuiceFS's CSI driver, which alasio installs, runs the mount pods of sessions'
|
|
93
|
-
* volumes, whose broken ones a session's restart removes; none where it installs none.
|
|
94
|
-
*/
|
|
95
|
-
mountPodNamespace: Schema.optional(Schema.NullOr(Namespace)),
|
|
96
|
-
volumeClaimTemplates: Schema.optional(VolumeClaimTemplates),
|
|
97
|
-
/** How a session's volume is cloned, where its storage can; none where it cannot, and sessions are not forked. */
|
|
98
|
-
clone: Schema.optional(Schema.NullOr(Clone)),
|
|
99
|
-
/** How sessions' Sandboxes are snapshotted as they are released, where they are; none where they are not. */
|
|
100
|
-
snapshots: Schema.optional(Schema.NullOr(Snapshots)),
|
|
101
|
-
}), "must be an object").check(Schema.makeFilter((profile) => (runsBayma(profile.podTemplate) ? undefined : baymaIssue)));
|
|
102
|
-
/** The template of folder workspaces' bayma (hostProfile in cli/src/manifests/alasio.ts). */
|
|
103
|
-
const HostProfile = said(Schema.Struct({
|
|
104
|
-
...sandboxProfile,
|
|
105
|
-
/** The directory on the host under which each conversation's bayma keeps its state. */
|
|
106
|
-
stateRoot: Path,
|
|
107
|
-
}), "must be an object").check(Schema.makeFilter((profile) => (runsBayma(profile.podTemplate) ? undefined : baymaIssue)));
|
|
108
|
-
/** A profile the deployment may leave out, which is then null. */
|
|
109
|
-
const optionalProfile = (schema) => said(Schema.NullOr(schema), "must be an object").pipe(Schema.withDecodingDefaultKey(Effect.succeed(null)));
|
|
110
|
-
/**
|
|
111
|
-
* ALASIO_KUBE_TEMPLATES, checked: a profile the deployment does not render is null; and
|
|
112
|
-
* the sessions' profile before the current one, as `alasio up` carries it forward until
|
|
113
|
-
* their template changes again, which sessions' snapshots may restore onto
|
|
114
|
-
* (../sandbox/snapshots.ts), null where there is none.
|
|
115
|
-
*/
|
|
116
|
-
const KubeTemplates = said(Schema.Struct({ sessions: optionalProfile(SessionsProfile), previousSessions: optionalProfile(SessionsProfile), host: optionalProfile(HostProfile) }), "must be an object");
|
|
117
|
-
const formatIssue = SchemaIssue.makeFormatterStandardSchemaV1();
|
|
118
|
-
/** The first thing wrong with the templates, as alasio says it: the key's path, then what it must be. */
|
|
119
|
-
function describe(issue) {
|
|
120
|
-
const [first] = formatIssue(issue).issues;
|
|
121
|
-
const path = first?.path?.map((segment) => String(Predicate.hasProperty(segment, "key") ? segment.key : segment)).join(".") ?? "";
|
|
122
|
-
return ["ALASIO_KUBE_TEMPLATES", path, first?.message ?? "is not what alasio expects"].filter(Boolean).join(" ");
|
|
123
|
-
}
|
|
124
|
-
/** The templates in `text`, the content of the file at `path`, checked. */
|
|
125
|
-
export const decodeKubeTemplates = (path, text) => Result.try({
|
|
126
|
-
try: () => JSON.parse(text),
|
|
127
|
-
catch: (error) => new KubeTemplatesError({ message: `ALASIO_KUBE_TEMPLATES ${path} is not readable JSON: ${error instanceof Error ? error.message : String(error)}` }),
|
|
128
|
-
}).pipe(Result.flatMap((parsed) => Result.mapError(Schema.decodeUnknownResult(KubeTemplates)(parsed), (error) => new KubeTemplatesError({ message: describe(error.issue) }))));
|
|
129
|
-
/**
|
|
130
|
-
* The templates, read once at startup and checked, so a deployment that renders them
|
|
131
|
-
* wrongly fails as it starts rather than at a workspace's first turn.
|
|
132
|
-
*/
|
|
133
|
-
export const loadKubeTemplates = Effect.gen(function* () {
|
|
134
|
-
const path = (yield* Config.String("ALASIO_KUBE_TEMPLATES").pipe(Config.withDefault(""))).trim();
|
|
135
|
-
if (!path)
|
|
136
|
-
return yield* new KubeTemplatesError({ message: "ALASIO_KUBE_TEMPLATES is not set: alasio runs where alasio up installs it" });
|
|
137
|
-
const text = yield* Effect.try({
|
|
138
|
-
try: () => readFileSync(path, "utf8"),
|
|
139
|
-
catch: (error) => new KubeTemplatesError({ message: `ALASIO_KUBE_TEMPLATES ${path} is not readable JSON: ${error instanceof Error ? error.message : String(error)}` }),
|
|
140
|
-
});
|
|
141
|
-
return yield* Effect.fromResult(decodeKubeTemplates(path, text));
|
|
142
|
-
});
|
|
143
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/kube/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,0GAA0G;AAC1G,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAAC,oBAAoB,EAAE;IACrG,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,SAAS,GAAG,uCAAuC,CAAC;AAE1D;;;GAGG;AACH,MAAM,IAAI,GAAG,CAAuB,MAAS,EAAE,OAAe,EAAgB,EAAE,CAC9E,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC;AAE3E,8EAA8E;AAC9E,MAAM,SAAS,GAAG,IAAI,CACpB,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KAChJ,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC,EAC9E,0BAA0B,CAC3B,CAAC;AAEF,MAAM,IAAI,GAAG,IAAI,CACf,MAAM,CAAC,MAAM,CAAC,KAAK,CACjB,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,EAClD,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CACvF,EACD,uBAAuB,CACxB,CAAC;AAEF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAA8B,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAClI,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAClD,CAAC;AAEF,MAAM,oBAAoB,GAAG,IAAI,CAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAoC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EACpG,0CAA0C,CAC3C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,KAAK,GAAG,IAAI,CAChB,MAAM,CAAC,MAAM,CAAC;IACZ,sFAAsF;IACtF,aAAa,EAAE,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,yBAAyB,kBAAkB,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EACrH,2DAA2D,kBAAkB,aAAa,CAC3F;IACD,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAkB,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC;CACrG,CAAC,EACF,mBAAmB,CACpB,CAAC;AAEF,iGAAiG;AACjG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,kBAAkB,EAAE,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,CAAU,CAAC;AAE3H,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC;AAE1L;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,IAAI,CACpB,MAAM,CAAC,MAAM,CAAC;IACZ,mBAAmB,EAAE,KAAK;IAC1B,QAAQ,EAAE,IAAI,CACZ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,+BAA+B,CAAC,EAAE,CAAC,CAAC;SACvK,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,EACnE,4BAA4B,CAC7B;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC;CAC1J,CAAC,EACF,mBAAmB,CACpB,CAAC;AAEF,2FAA2F;AAC3F,SAAS,SAAS,CAAC,WAAoB;IACrC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC;QACpH,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;QAC7B,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,SAAkB,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AACtJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,cAAc,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAEtF,+DAA+D;AAC/D,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;AAE5G,uGAAuG;AACvG,MAAM,eAAe,GAAG,IAAI,CAC1B,MAAM,CAAC,MAAM,CAAC;IACZ,GAAG,cAAc;IACjB,6DAA6D;IAC7D,YAAY,EAAE,IAAI;IAClB,uGAAuG;IACvG,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACzF,sFAAsF;IACtF,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;IACrH;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5D,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC3D,kHAAkH;IAClH,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,6GAA6G;IAC7G,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;CACrD,CAAC,EACF,mBAAmB,CACpB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAEnG,6FAA6F;AAC7F,MAAM,WAAW,GAAG,IAAI,CACtB,MAAM,CAAC,MAAM,CAAC;IACZ,GAAG,cAAc;IACjB,uFAAuF;IACvF,SAAS,EAAE,IAAI;CAChB,CAAC,EACF,mBAAmB,CACpB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAEnG,kEAAkE;AAClE,MAAM,eAAe,GAAG,CAAuB,MAAS,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7G;;;;;GAKG;AACH,MAAM,aAAa,GAAG,IAAI,CACxB,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,eAAe,CAAC,EAAE,gBAAgB,EAAE,eAAe,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,EACrJ,mBAAmB,CACpB,CAAC;AAMF,MAAM,WAAW,GAAG,WAAW,CAAC,6BAA6B,EAAE,CAAC;AAEhE,yGAAyG;AACzG,SAAS,QAAQ,CAAC,KAAwB;IACxC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAClI,OAAO,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,4BAA4B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,IAAY,EAAoD,EAAE,CAClH,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,yBAAyB,IAAI,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;CACvK,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAC1I,CACF,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC1H,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjG,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,2EAA2E,EAAE,CAAC,CAAC;IAC1I,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7B,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;QACrC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,yBAAyB,IAAI,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;KACvK,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC"}
|