@asturiu/v0-sdk 0.0.0-stage → 1.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.
Files changed (239) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +5 -0
  4. package/README.md +82 -2
  5. package/contract/assertion-vectors.json +90 -0
  6. package/contract/schemas/branding.schema.json +46 -0
  7. package/contract/schemas/definitions.schema.json +376 -0
  8. package/contract/schemas/portal.schema.json +56 -0
  9. package/contract/tenant-api-routes.json +165 -0
  10. package/dist/branding.d.ts +131 -0
  11. package/dist/branding.d.ts.map +1 -0
  12. package/dist/branding.js +206 -0
  13. package/dist/branding.js.map +1 -0
  14. package/dist/changesets.d.ts +58 -0
  15. package/dist/changesets.d.ts.map +1 -0
  16. package/dist/changesets.js +18 -0
  17. package/dist/changesets.js.map +1 -0
  18. package/dist/cli/bin.d.ts +3 -0
  19. package/dist/cli/bin.d.ts.map +1 -0
  20. package/dist/cli/bin.js +12 -0
  21. package/dist/cli/bin.js.map +1 -0
  22. package/dist/cli/changesets.d.ts +14 -0
  23. package/dist/cli/changesets.d.ts.map +1 -0
  24. package/dist/cli/changesets.js +252 -0
  25. package/dist/cli/changesets.js.map +1 -0
  26. package/dist/cli/cli.d.ts +37 -0
  27. package/dist/cli/cli.d.ts.map +1 -0
  28. package/dist/cli/cli.js +415 -0
  29. package/dist/cli/cli.js.map +1 -0
  30. package/dist/cli/context.d.ts +147 -0
  31. package/dist/cli/context.d.ts.map +1 -0
  32. package/dist/cli/context.js +258 -0
  33. package/dist/cli/context.js.map +1 -0
  34. package/dist/cli/engine.d.ts +59 -0
  35. package/dist/cli/engine.d.ts.map +1 -0
  36. package/dist/cli/engine.js +85 -0
  37. package/dist/cli/engine.js.map +1 -0
  38. package/dist/cli/feedback.d.ts +40 -0
  39. package/dist/cli/feedback.d.ts.map +1 -0
  40. package/dist/cli/feedback.js +420 -0
  41. package/dist/cli/feedback.js.map +1 -0
  42. package/dist/cli/files.d.ts +83 -0
  43. package/dist/cli/files.d.ts.map +1 -0
  44. package/dist/cli/files.js +389 -0
  45. package/dist/cli/files.js.map +1 -0
  46. package/dist/cli/index.d.ts +8 -0
  47. package/dist/cli/index.d.ts.map +1 -0
  48. package/dist/cli/index.js +8 -0
  49. package/dist/cli/index.js.map +1 -0
  50. package/dist/cli/overview.d.ts +6 -0
  51. package/dist/cli/overview.d.ts.map +1 -0
  52. package/dist/cli/overview.js +379 -0
  53. package/dist/cli/overview.js.map +1 -0
  54. package/dist/cli/parts.d.ts +5 -0
  55. package/dist/cli/parts.d.ts.map +1 -0
  56. package/dist/cli/parts.js +414 -0
  57. package/dist/cli/parts.js.map +1 -0
  58. package/dist/cli/sources.d.ts +37 -0
  59. package/dist/cli/sources.d.ts.map +1 -0
  60. package/dist/cli/sources.js +91 -0
  61. package/dist/cli/sources.js.map +1 -0
  62. package/dist/cli/terminal.d.ts +135 -0
  63. package/dist/cli/terminal.d.ts.map +1 -0
  64. package/dist/cli/terminal.js +353 -0
  65. package/dist/cli/terminal.js.map +1 -0
  66. package/dist/cli/ui-page.d.ts +8 -0
  67. package/dist/cli/ui-page.d.ts.map +1 -0
  68. package/dist/cli/ui-page.js +216 -0
  69. package/dist/cli/ui-page.js.map +1 -0
  70. package/dist/cli/ui.d.ts +54 -0
  71. package/dist/cli/ui.d.ts.map +1 -0
  72. package/dist/cli/ui.js +251 -0
  73. package/dist/cli/ui.js.map +1 -0
  74. package/dist/client.d.ts +88 -0
  75. package/dist/client.d.ts.map +1 -0
  76. package/dist/client.js +165 -0
  77. package/dist/client.js.map +1 -0
  78. package/dist/contacts.d.ts +43 -0
  79. package/dist/contacts.d.ts.map +1 -0
  80. package/dist/contacts.js +46 -0
  81. package/dist/contacts.js.map +1 -0
  82. package/dist/definition-set.d.ts +731 -0
  83. package/dist/definition-set.d.ts.map +1 -0
  84. package/dist/definition-set.js +659 -0
  85. package/dist/definition-set.js.map +1 -0
  86. package/dist/definitions.d.ts +42 -0
  87. package/dist/definitions.d.ts.map +1 -0
  88. package/dist/definitions.js +154 -0
  89. package/dist/definitions.js.map +1 -0
  90. package/dist/enrolment.d.ts +9 -0
  91. package/dist/enrolment.d.ts.map +1 -0
  92. package/dist/enrolment.js +8 -0
  93. package/dist/enrolment.js.map +1 -0
  94. package/dist/fill.d.ts +73 -0
  95. package/dist/fill.d.ts.map +1 -0
  96. package/dist/fill.js +46 -0
  97. package/dist/fill.js.map +1 -0
  98. package/dist/index.d.ts +39 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +39 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/notifications.d.ts +33 -0
  103. package/dist/notifications.d.ts.map +1 -0
  104. package/dist/notifications.js +36 -0
  105. package/dist/notifications.js.map +1 -0
  106. package/dist/oidc.d.ts +122 -0
  107. package/dist/oidc.d.ts.map +1 -0
  108. package/dist/oidc.js +150 -0
  109. package/dist/oidc.js.map +1 -0
  110. package/dist/overlay.d.ts +109 -0
  111. package/dist/overlay.d.ts.map +1 -0
  112. package/dist/overlay.js +58 -0
  113. package/dist/overlay.js.map +1 -0
  114. package/dist/passes.d.ts +95 -0
  115. package/dist/passes.d.ts.map +1 -0
  116. package/dist/passes.js +140 -0
  117. package/dist/passes.js.map +1 -0
  118. package/dist/portal-options.d.ts +65 -0
  119. package/dist/portal-options.d.ts.map +1 -0
  120. package/dist/portal-options.js +120 -0
  121. package/dist/portal-options.js.map +1 -0
  122. package/dist/reads.d.ts +41 -0
  123. package/dist/reads.d.ts.map +1 -0
  124. package/dist/reads.js +44 -0
  125. package/dist/reads.js.map +1 -0
  126. package/dist/recovery-words.d.ts +8 -0
  127. package/dist/recovery-words.d.ts.map +1 -0
  128. package/dist/recovery-words.js +136 -0
  129. package/dist/recovery-words.js.map +1 -0
  130. package/dist/recovery.d.ts +198 -0
  131. package/dist/recovery.d.ts.map +1 -0
  132. package/dist/recovery.js +112 -0
  133. package/dist/recovery.js.map +1 -0
  134. package/dist/reveal.d.ts +35 -0
  135. package/dist/reveal.d.ts.map +1 -0
  136. package/dist/reveal.js +66 -0
  137. package/dist/reveal.js.map +1 -0
  138. package/dist/seal.d.ts +15 -0
  139. package/dist/seal.d.ts.map +1 -0
  140. package/dist/seal.js +0 -0
  141. package/dist/seal.js.map +1 -0
  142. package/dist/session.d.ts +66 -0
  143. package/dist/session.d.ts.map +1 -0
  144. package/dist/session.js +61 -0
  145. package/dist/session.js.map +1 -0
  146. package/dist/signing-in-mark.d.ts +14 -0
  147. package/dist/signing-in-mark.d.ts.map +1 -0
  148. package/dist/signing-in-mark.js +24 -0
  149. package/dist/signing-in-mark.js.map +1 -0
  150. package/dist/signing-in.d.ts +22 -0
  151. package/dist/signing-in.d.ts.map +1 -0
  152. package/dist/signing-in.js +203 -0
  153. package/dist/signing-in.js.map +1 -0
  154. package/dist/tags.d.ts +96 -0
  155. package/dist/tags.d.ts.map +1 -0
  156. package/dist/tags.js +88 -0
  157. package/dist/tags.js.map +1 -0
  158. package/dist/tenant-subscription.d.ts +47 -0
  159. package/dist/tenant-subscription.d.ts.map +1 -0
  160. package/dist/tenant-subscription.js +7 -0
  161. package/dist/tenant-subscription.js.map +1 -0
  162. package/dist/testing/index.d.ts +125 -0
  163. package/dist/testing/index.d.ts.map +1 -0
  164. package/dist/testing/index.js +320 -0
  165. package/dist/testing/index.js.map +1 -0
  166. package/dist/theme.d.ts +237 -0
  167. package/dist/theme.d.ts.map +1 -0
  168. package/dist/theme.js +504 -0
  169. package/dist/theme.js.map +1 -0
  170. package/dist/tickets.d.ts +152 -0
  171. package/dist/tickets.d.ts.map +1 -0
  172. package/dist/tickets.js +65 -0
  173. package/dist/tickets.js.map +1 -0
  174. package/dist/tiers.d.ts +168 -0
  175. package/dist/tiers.d.ts.map +1 -0
  176. package/dist/tiers.js +341 -0
  177. package/dist/tiers.js.map +1 -0
  178. package/dist/types.d.ts +885 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +12 -0
  181. package/dist/types.js.map +1 -0
  182. package/dist/urlid.d.ts +50 -0
  183. package/dist/urlid.d.ts.map +1 -0
  184. package/dist/urlid.js +78 -0
  185. package/dist/urlid.js.map +1 -0
  186. package/dist/version.d.ts +15 -0
  187. package/dist/version.d.ts.map +1 -0
  188. package/dist/version.js +15 -0
  189. package/dist/version.js.map +1 -0
  190. package/make/asturiu.mk +43 -0
  191. package/package.json +63 -4
  192. package/src/branding.ts +221 -0
  193. package/src/changesets.ts +61 -0
  194. package/src/cli/bin.ts +12 -0
  195. package/src/cli/changesets.ts +233 -0
  196. package/src/cli/cli.ts +425 -0
  197. package/src/cli/context.ts +299 -0
  198. package/src/cli/engine.ts +112 -0
  199. package/src/cli/feedback.ts +406 -0
  200. package/src/cli/files.ts +371 -0
  201. package/src/cli/index.ts +7 -0
  202. package/src/cli/overview.ts +343 -0
  203. package/src/cli/parts.ts +371 -0
  204. package/src/cli/sources.ts +111 -0
  205. package/src/cli/terminal.ts +384 -0
  206. package/src/cli/ui-page.ts +215 -0
  207. package/src/cli/ui.ts +266 -0
  208. package/src/client.ts +202 -0
  209. package/src/contacts.ts +61 -0
  210. package/src/definition-set.ts +965 -0
  211. package/src/definitions.ts +156 -0
  212. package/src/enrolment.ts +10 -0
  213. package/src/fill.ts +83 -0
  214. package/src/index.ts +38 -0
  215. package/src/notifications.ts +55 -0
  216. package/src/oidc.ts +199 -0
  217. package/src/overlay.ts +137 -0
  218. package/src/passes.ts +168 -0
  219. package/src/portal-options.ts +125 -0
  220. package/src/reads.ts +71 -0
  221. package/src/recovery-words.ts +137 -0
  222. package/src/recovery.ts +269 -0
  223. package/src/reveal.ts +72 -0
  224. package/src/seal.ts +0 -0
  225. package/src/session.ts +93 -0
  226. package/src/signing-in-mark.ts +23 -0
  227. package/src/signing-in.ts +213 -0
  228. package/src/tags.ts +146 -0
  229. package/src/tenant-subscription.ts +44 -0
  230. package/src/testing/index.ts +337 -0
  231. package/src/theme.ts +628 -0
  232. package/src/tickets.ts +195 -0
  233. package/src/tiers.ts +397 -0
  234. package/src/types.ts +847 -0
  235. package/src/urlid.ts +77 -0
  236. package/src/version.ts +15 -0
  237. package/templates/asturiu/branding.json +4 -0
  238. package/templates/asturiu/definitions.json +23 -0
  239. package/templates/asturiu/portal.json +16 -0
@@ -0,0 +1,389 @@
1
+ /**
2
+ * The repository's files next to what the Engine holds: the Definition set, the branding and the portal options
3
+ * (ADR-029, ADR-038, ADR-039). `definitions`, `branding`, `pull` and `apply`.
4
+ */
5
+ import { brandingImageProblems, inlineImageBytes } from "../branding.js";
6
+ import { applyBranding, applyDefinitions, applyPortal, definitionSetHash, definitionStatus, entryTypesOf, readBranding, readPortal } from "../definition-set.js";
7
+ import { PORTAL_PAGES, PORTAL_SWITCHES } from "../portal-options.js";
8
+ import { sanitizeThemeSpec } from "../theme.js";
9
+ import { EXIT, Fail, call, emit, hostOf, needTenantApi, readFailure, sources } from "./context.js";
10
+ import { imagePaths } from "./sources.js";
11
+ import { bytes, plain, plural, truncate } from "./terminal.js";
12
+ // ================================================================== differences
13
+ /** Where two JSON values differ, as dotted paths with both sides. */
14
+ export function differences(a, b, at = "") {
15
+ const isObj = (v) => !!v && typeof v === "object" && !Array.isArray(v);
16
+ if (isObj(a) && isObj(b))
17
+ return [...new Set([...Object.keys(a), ...Object.keys(b)])].flatMap((k) => differences(a[k], b[k], at ? `${at}.${k}` : k));
18
+ return JSON.stringify(a) === JSON.stringify(b) ? [] : [{ path: at || "(all)", a, b }];
19
+ }
20
+ /** A value as a difference shows it: an inline image by its size, long text cut. */
21
+ function shown(v) {
22
+ if (v === undefined)
23
+ return "(not set)";
24
+ const size = inlineImageBytes(v);
25
+ if (size !== null)
26
+ return `inline image, ${bytes(size)}`;
27
+ return truncate(JSON.stringify(v), 60);
28
+ }
29
+ /** The theme keys the Engine would not keep. */
30
+ export function themeDrops(theme) {
31
+ if (!theme || typeof theme !== "object")
32
+ return [];
33
+ return differences(theme, sanitizeThemeSpec(theme))
34
+ .filter((d) => d.b === undefined)
35
+ .map((d) => d.path);
36
+ }
37
+ /** Reads one of the repository's files; its error instead of a throw. */
38
+ export function readSource(read) {
39
+ try {
40
+ return { value: read(), error: null };
41
+ }
42
+ catch (err) {
43
+ return { value: null, error: err.message };
44
+ }
45
+ }
46
+ export const tabRead = (s) => !("error" in s);
47
+ /**
48
+ * What the repository sends next to what the Engine holds, per tab. A switch or page the repository leaves out is its
49
+ * default (on, in the portal), so it is compared as such; a page an administrator redirected is not the repository's.
50
+ */
51
+ export async function presentation(ctx) {
52
+ const [b, p] = await Promise.all([call(ctx, (fetch, cfg) => readBranding({ ...cfg, fetch })), call(ctx, (fetch, cfg) => readPortal({ ...cfg, fetch }))]);
53
+ const src = sources(ctx);
54
+ const diff = (x, y) => differences(x, y).map((d) => ({ path: d.path, repository: shown(d.a), stored: shown(d.b) }));
55
+ let branding;
56
+ if (!b.ok)
57
+ branding = { error: readFailure(b, "branding"), why: b.why, status: b.status };
58
+ else {
59
+ const w = readSource(() => src.branding());
60
+ branding = { source: b.value.source, theme: b.value.branding.theme !== undefined, stored: b.value.branding, differences: w.value ? diff(w.value, b.value.branding) : [], ...(w.error ? { source_error: w.error } : {}) };
61
+ }
62
+ let portal;
63
+ if (!p.ok)
64
+ portal = { error: readFailure(p, "portal"), why: p.why, status: p.status };
65
+ else {
66
+ const w = readSource(() => src.portal());
67
+ let differ = [];
68
+ if (w.value) {
69
+ const redirected = p.value.redirected;
70
+ const wanted = Object.fromEntries(PORTAL_SWITCHES.map((k) => [k, w.value?.[k] ?? true]));
71
+ wanted.pages = Object.fromEntries(PORTAL_PAGES.filter((pg) => !redirected.includes(pg) && p.value.portal.pages?.[pg] !== undefined).map((pg) => [pg, w.value?.pages?.[pg] ?? { mode: "portal" }]));
72
+ differ = diff(wanted, p.value.portal);
73
+ }
74
+ portal = { source: p.value.source, redirected: p.value.redirected, stored: p.value.portal, differences: differ, ...(w.error ? { source_error: w.error } : {}) };
75
+ }
76
+ return { branding, portal };
77
+ }
78
+ /** A tab's state without the stored values (inline images make it long). */
79
+ export function withoutStored(s) {
80
+ const { stored: _s, ...rest } = s;
81
+ return rest;
82
+ }
83
+ const editedIn = (source) => (source === "repository" ? "edited in the repository" : "edited in the Admin UI");
84
+ /** Both tabs next to the repository's files: who edits each, and every difference as a table. */
85
+ function renderTabs(ctx, pres) {
86
+ const { t } = ctx;
87
+ const src = sources(ctx);
88
+ for (const tab of ["branding", "portal"]) {
89
+ const s = pres[tab];
90
+ const label = t.paint.bold(tab === "branding" ? "Branding" : "Portal");
91
+ if (!tabRead(s)) {
92
+ t.item(s.why === "no-key" ? "muted" : "fail", label, s.error);
93
+ t.out();
94
+ continue;
95
+ }
96
+ const tone = s.source_error ? "fail" : s.differences.length ? "warn" : s.source === "repository" ? "ok" : "warn";
97
+ t.item(tone, `${label} ${editedIn(s.source)}`, s.source_error ? "" : s.differences.length ? plural(s.differences.length, "difference") : `equal to ${src.files[tab]}`);
98
+ if (s.source_error)
99
+ t.out(` ${t.paint.red(plain(s.source_error))}`);
100
+ if (s.source !== "repository")
101
+ t.out(` ${t.paint.gray("apply answers 409 until a tenant administrator hands the tab to the repository")}`);
102
+ if (tab === "branding" && !s.theme)
103
+ t.out(` ${t.paint.gray("no theme stored: the portal runs on its default look")}`);
104
+ if (tab === "portal" && s.redirected?.length)
105
+ t.out(` ${t.paint.gray(`${s.redirected.join(", ")} ${s.redirected.length === 1 ? "stays" : "stay"} in the application, where an administrator moved ${s.redirected.length === 1 ? "it" : "them"}`)}`);
106
+ if (s.differences.length) {
107
+ t.table(s.differences, [
108
+ { label: "Key", value: (d) => d.path, paint: (x) => t.paint.bold(x) },
109
+ { label: "Repository", value: (d) => d.repository, flex: true, min: 14 },
110
+ { label: "Stored", value: (d) => d.stored, flex: true, min: 14, paint: (x) => t.paint.cyan(x) },
111
+ ], { indent: 6 });
112
+ }
113
+ t.out();
114
+ }
115
+ }
116
+ // ================================================================== the Definition set
117
+ /**
118
+ * The repository's Definition set, its size and its hash: the hash the SDK sends and the Engine stores, so equal
119
+ * hashes mean the live set is the repository's.
120
+ */
121
+ export async function repositorySet(ctx) {
122
+ const read = readSource(() => sources(ctx).definitions());
123
+ if (!read.value)
124
+ return { set: null, error: read.error, hash: null, wallets: 0, entries: 0, fields: 0 };
125
+ const set = read.value;
126
+ const entries = Object.values(entryTypesOf({ wallets: set.wallets ?? {}, shared_entries: set.shared_entries }));
127
+ const fields = Object.keys(set.shared_fields ?? {}).length + entries.reduce((n, e) => n + Object.keys(e.fields ?? {}).length, 0);
128
+ let hash = null;
129
+ try {
130
+ hash = await definitionSetHash(set);
131
+ }
132
+ catch {
133
+ hash = null;
134
+ }
135
+ return { set, error: null, hash, wallets: Object.keys(set.wallets ?? {}).length, entries: entries.length, fields };
136
+ }
137
+ /** Where the repository's set stands: live, waiting for approval, or not sent; null when either side is unknown. */
138
+ export function setState(live, hash) {
139
+ if (!live || !hash || !live.hash)
140
+ return null;
141
+ if (live.hash === hash)
142
+ return "live";
143
+ if (live.waiting.some((w) => w.hash === hash))
144
+ return "waiting";
145
+ return "differs";
146
+ }
147
+ export async function readDefinitionStatus(ctx) {
148
+ return call(ctx, (fetch, cfg) => definitionStatus({ ...cfg, fetch }));
149
+ }
150
+ export async function cmdDefinitions(ctx, args) {
151
+ const sub = args[0] ?? "status";
152
+ if (sub === "apply")
153
+ return applyParts(ctx, ["definitions"]);
154
+ if (sub !== "status")
155
+ throw new Fail(`“definitions ${plain(sub)}” is not a command.`, { hint: `${ctx.cmd} definitions, or ${ctx.cmd} definitions apply`, code: EXIT.misunderstood });
156
+ const { t } = ctx;
157
+ const src = sources(ctx);
158
+ const [st, repo] = await t.busy("Reading the live Definition set", () => Promise.all([readDefinitionStatus(ctx), repositorySet(ctx)]));
159
+ const live = st.ok ? st.value : null;
160
+ const state = setState(live, repo.hash);
161
+ if (ctx.flags.check && state !== "live")
162
+ ctx.exit = EXIT.failed;
163
+ if (ctx.json)
164
+ return emit(ctx, { live: st.ok ? live : { error: readFailure(st, "definitions") }, repository: { file: src.files.definitions, hash: repo.hash, wallet_types: repo.wallets, entry_types: repo.entries, fields: repo.fields, ...(repo.error ? { error: repo.error } : {}) }, state });
165
+ t.banner("Definitions", [`live at ${hostOf(ctx.baseUrl)}`, `next to ${src.label}`]);
166
+ const short = (h) => (h ? `${h.slice(0, 12)}${t.sym.ellipsis}` : "—");
167
+ const rows = [];
168
+ if (live)
169
+ rows.push(["Live", [`${t.mark(live.source === "repository" ? "ok" : "warn")} revision ${t.paint.bold(String(live.revision))} ${t.sym.dot} ${editedIn(live.source)} ${t.paint.gray(live.auto_apply === "safe" ? "safe changes apply on their own" : "every change waits for approval")}`, ` ${t.paint.gray(`hash ${short(live.hash)}`)}`]]);
170
+ else if (!st.ok)
171
+ rows.push(["Live", `${t.mark(st.why === "no-key" ? "muted" : "fail")} ${readFailure(st, "definitions")}`]);
172
+ if (repo.set)
173
+ rows.push(["Repository", [`${t.mark("info")} ${plural(repo.wallets, "Wallet type")} ${t.sym.dot} ${plural(repo.entries, "Entry type")} ${t.sym.dot} ${plural(repo.fields, "Field")}`, ` ${t.paint.gray(`hash ${short(repo.hash)} ${t.sym.dot} ${src.files.definitions}`)}`]]);
174
+ else
175
+ rows.push(["Repository", `${t.mark("fail")} ${plain(repo.error)}`]);
176
+ for (const w of live?.waiting ?? [])
177
+ rows.push(["Waiting", [`${t.mark("warn")} plan ${t.paint.bold(plain(w.plan_id))} ${t.sym.dot} since ${w.created_at.slice(0, 10)}${w.hash === repo.hash ? ` ${t.sym.dot} the repository's set` : ""}`, ` ${t.paint.gray(`hash ${short(w.hash)}`)}`]]);
178
+ t.pairs(rows, { width: 14 });
179
+ t.out();
180
+ const steps = [];
181
+ if (state === "live")
182
+ t.item("ok", t.paint.bold("The live set is the repository's."));
183
+ else if (state === "waiting")
184
+ t.item("warn", t.paint.bold("The repository's set waits for a tenant administrator's approval."), "the Admin UI, your Tenant › Definitions");
185
+ else if (state === "differs") {
186
+ t.item("warn", t.paint.bold("The live set is not the repository's."), live?.source === "repository" ? "it goes out at the next start" : "");
187
+ steps.push([`${ctx.cmd} definitions apply`, "send it now"]);
188
+ }
189
+ if (live && live.source !== "repository")
190
+ t.out(` ${t.paint.gray(`${t.sym.arrow} apply answers 409 until a tenant administrator sets the Definitions to be edited in the repository`)}`);
191
+ t.next(steps);
192
+ t.out();
193
+ }
194
+ // ================================================================== branding and portal
195
+ export async function cmdBranding(ctx, args) {
196
+ const sub = args[0] ?? "status";
197
+ if (sub === "apply")
198
+ return applyParts(ctx, ["branding", "portal"]);
199
+ if (sub !== "status")
200
+ throw new Fail(`“branding ${plain(sub)}” is not a command.`, { hint: `${ctx.cmd} branding, or ${ctx.cmd} branding apply`, code: EXIT.misunderstood });
201
+ const { t } = ctx;
202
+ const src = sources(ctx);
203
+ const pres = await t.busy("Reading the Branding and Portal tabs", () => presentation(ctx));
204
+ const total = [pres.branding, pres.portal].reduce((n, s) => n + (tabRead(s) ? s.differences.length : 0), 0);
205
+ const unread = !tabRead(pres.branding) || !tabRead(pres.portal);
206
+ if (ctx.flags.check && (total || unread))
207
+ ctx.exit = EXIT.failed;
208
+ if (ctx.json)
209
+ return emit(ctx, { branding: withoutStored(pres.branding), portal: withoutStored(pres.portal), differences: total });
210
+ t.banner("Branding and portal", [`stored at ${hostOf(ctx.baseUrl)}`, `next to ${src.label}`]);
211
+ renderTabs(ctx, pres);
212
+ if (!total && !unread)
213
+ t.item("ok", "The stored tabs are what the repository sends.");
214
+ t.next(total
215
+ ? [
216
+ [`${ctx.cmd} branding apply`, `make the stored tabs what ${src.label} says`],
217
+ [`${ctx.cmd} pull`, `or take the stored state into ${src.label}`],
218
+ ]
219
+ : []);
220
+ t.out();
221
+ }
222
+ export async function cmdPull(ctx) {
223
+ const { t, flags } = ctx;
224
+ needTenantApi(ctx, "nothing to pull.");
225
+ const src = sources(ctx);
226
+ const pres = await t.busy("Reading the Branding and Portal tabs", () => presentation(ctx));
227
+ const branding = pres.branding;
228
+ const portal = pres.portal;
229
+ if (!tabRead(branding))
230
+ throw new Fail(`The branding could not be read: ${branding.error.replace(/^not read: /, "")}.`);
231
+ if (!tabRead(portal))
232
+ throw new Fail(`The portal could not be read: ${portal.error.replace(/^not read: /, "")}.`);
233
+ const total = branding.differences.length + portal.differences.length;
234
+ const strip = withoutStored;
235
+ if (!ctx.json) {
236
+ t.banner("Pull", [`stored at ${hostOf(ctx.baseUrl)}`, `into ${src.label}`]);
237
+ renderTabs(ctx, pres);
238
+ }
239
+ if (!total || !src.write) {
240
+ if (ctx.json)
241
+ return emit(ctx, { branding: strip(branding), portal: strip(portal), written: [] });
242
+ if (!src.write && total)
243
+ t.callout("info", "Copy these into the repository's files by hand", [`This repository's configuration has no way to write ${src.label}.`]);
244
+ else
245
+ t.item("ok", "Nothing to take in.");
246
+ t.out();
247
+ return;
248
+ }
249
+ let write = flags.write === true || flags.yes === true;
250
+ if (!write && !flags["dry-run"] && !ctx.json)
251
+ write = (await t.confirm(`Write the stored state into ${src.label}? It replaces what is there.`, false)) === true;
252
+ if (!write) {
253
+ if (ctx.json)
254
+ return emit(ctx, { branding: strip(branding), portal: strip(portal), written: [] });
255
+ t.next([[`${ctx.cmd} pull --write`, `write the stored state into ${src.label}`]]);
256
+ t.out();
257
+ return;
258
+ }
259
+ const written = src.write({ branding: branding.stored, portal: portal.stored });
260
+ if (ctx.json)
261
+ return emit(ctx, { branding: strip(branding), portal: strip(portal), written });
262
+ for (const f of written)
263
+ t.item("ok", `Wrote ${f}`);
264
+ t.out(` ${t.paint.gray(`${t.sym.arrow} Review the diff${src.afterWrite ? `, then run ${src.afterWrite}` : ""}.`)}`);
265
+ t.out();
266
+ }
267
+ // ================================================================== apply
268
+ export async function cmdApply(ctx, args) {
269
+ const named = args.map((a) => a.toLowerCase());
270
+ const known = ["definitions", "branding", "portal"];
271
+ const unknown = named.filter((a) => !known.includes(a));
272
+ if (unknown.length)
273
+ throw new Fail(`“apply ${plain(unknown[0])}”: apply sends definitions, branding and portal.`, { hint: `${ctx.cmd} apply, or ${ctx.cmd} apply definitions`, code: EXIT.misunderstood });
274
+ return applyParts(ctx, (named.length ? named : known));
275
+ }
276
+ /** Sends the parts named, as the server start does, and shows each outcome. Exits 1 when one is refused or not sent. */
277
+ export async function applyParts(ctx, parts) {
278
+ const { t } = ctx;
279
+ needTenantApi(ctx, "nothing sent.");
280
+ const src = sources(ctx);
281
+ const want = new Set(parts);
282
+ const notes = [];
283
+ const log = {
284
+ info: (m, d) => notes.push({ level: "info", message: m, detail: d }),
285
+ warn: (m, d) => notes.push({ level: "warn", message: m, detail: d }),
286
+ error: (m, d) => notes.push({ level: "error", message: m, detail: d }),
287
+ };
288
+ const set = want.has("definitions") ? readSource(() => src.definitions()) : null;
289
+ const branding = want.has("branding") ? readSource(() => src.branding()) : null;
290
+ const portal = want.has("portal") ? readSource(() => src.portal()) : null;
291
+ const drops = branding?.value ? themeDrops(branding.value.theme) : [];
292
+ const [d, b, p] = await t.busy(`Sending to ${hostOf(ctx.baseUrl)}`, () => Promise.all([
293
+ set?.value ? call(ctx, (fetch, cfg) => applyDefinitions({ ...cfg, set: set.value, fetch, log })) : null,
294
+ branding?.value ? call(ctx, (fetch, cfg) => applyBranding({ ...cfg, branding: branding.value, fetch, log })) : null,
295
+ portal?.value ? call(ctx, (fetch, cfg) => applyPortal({ ...cfg, portal: portal.value, fetch, log })) : null,
296
+ ]));
297
+ const outcome = (r, read) => {
298
+ if (!r)
299
+ return { status: "error", message: read?.error ?? "not read" };
300
+ if (!r.ok)
301
+ return { status: "error", message: r.message, http: r.status };
302
+ const v = r.value;
303
+ if (v.status === "error")
304
+ return { ...v, message: r.network || v.message, http: r.status };
305
+ return v;
306
+ };
307
+ const results = {};
308
+ if (set)
309
+ results.definitions = outcome(d, set);
310
+ if (branding)
311
+ results.branding = outcome(b, branding);
312
+ if (portal)
313
+ results.portal = outcome(p, portal);
314
+ const bad = Object.values(results).some((r) => r.status === "error" || r.status === "refused");
315
+ ctx.exit = bad ? EXIT.failed : EXIT.done;
316
+ if (ctx.json)
317
+ return emit(ctx, { ...results, ...(drops.length ? { theme_dropped: drops } : {}) });
318
+ const order = ["definitions", "branding", "portal"].filter((x) => want.has(x));
319
+ const what = order.length === 3 ? "Apply" : `Apply ${order.length === 1 ? order[0] : `${order.slice(0, -1).join(", ")} and ${order[order.length - 1]}`}`;
320
+ t.banner(what, [`from ${src.label}`, `to ${hostOf(ctx.baseUrl)}`]);
321
+ const tone = { applied: "ok", unchanged: "ok", waiting: "warn", refused: "fail", error: "fail" };
322
+ const why = (r, scope) => {
323
+ if (r.http === 409)
324
+ return `${plain(r.message)} ${t.sym.dot} still edited in the Admin UI: a tenant administrator hands it to the repository`;
325
+ if (r.http === 404)
326
+ return `${plain(r.message)} ${t.sym.dot} the key lacks the scope “${scope}”`;
327
+ return plain(r.message);
328
+ };
329
+ const rd = results.definitions;
330
+ if (rd) {
331
+ const changes = (s) => (s ? ` ${t.sym.dot} ${plural(s.changes, "change")}` : "");
332
+ const text = {
333
+ applied: `applied ${t.sym.dot} revision ${rd.revision}${changes(rd.summary)}`,
334
+ unchanged: `unchanged ${t.sym.dot} revision ${rd.revision}`,
335
+ waiting: rd.reverted_in ? `waits: an administrator reverted it in revision ${rd.reverted_in}` : `waits for a tenant administrator's approval${rd.summary ? ` ${t.sym.dot} ${plural(rd.summary.unsafe, "change")} ${rd.summary.unsafe === 1 ? "touches" : "touch"} existing data` : ""}`,
336
+ refused: "refused",
337
+ error: `not sent ${t.sym.dot} ${why(rd, "definitions")}`,
338
+ };
339
+ t.item(tone[rd.status] ?? "info", `${t.paint.bold("Definitions".padEnd(12))} ${text[rd.status] ?? plain(rd.status)}`);
340
+ if (rd.status === "waiting" && rd.approve_url)
341
+ t.out(` ${t.paint.gray("approve at")} ${t.link(plain(rd.approve_url), rd.approve_url)}`);
342
+ if (rd.status === "waiting" && rd.reverted_in)
343
+ t.out(` ${t.paint.gray("revert the same change in the repository, or have the waiting plan approved")}`);
344
+ if ((rd.status === "applied" || rd.status === "waiting") && rd.changes?.length) {
345
+ const shownChanges = rd.changes.slice(0, 20);
346
+ t.table(shownChanges, [
347
+ { label: "Address", value: (c) => c.address, paint: (x) => t.paint.bold(x) },
348
+ { label: "Change", value: (c) => String(c.change).replace(/_/g, " "), flex: true, min: 12 },
349
+ ...(shownChanges.some((c) => c.in_use?.length) ? [{ label: "In use", value: (c) => (c.in_use?.length ? String(c.in_use.reduce((n, u) => n + u.count, 0)) : ""), align: "right", paint: (x) => t.paint.gray(x) }] : []),
350
+ { label: "Safe", value: (c) => (c.safe ? t.sym.ok : t.sym.warn), paint: (x) => (x === t.sym.ok ? t.paint.green(x) : t.paint.yellow(x)) },
351
+ ], { indent: 6 });
352
+ if (rd.changes.length > shownChanges.length)
353
+ t.out(` ${t.paint.gray(`and ${rd.changes.length - shownChanges.length} more (--json lists them all)`)}`);
354
+ }
355
+ for (const reason of rd.reasons ?? [])
356
+ t.out(` ${t.paint.red(t.sym.bullet)} ${reason.address ? `${t.paint.bold(plain(reason.address))} ` : ""}${plain(reason.reason)}`);
357
+ for (const w of rd.warnings ?? [])
358
+ t.out(` ${t.paint.yellow(t.sym.bullet)} ${w.address ? `${t.paint.bold(plain(w.address))} ` : ""}${plain(w.reason)}`);
359
+ }
360
+ for (const [tab, label] of [
361
+ ["branding", "Branding"],
362
+ ["portal", "Portal"],
363
+ ]) {
364
+ const r = results[tab];
365
+ if (!r)
366
+ continue;
367
+ t.item(tone[r.status] ?? "info", `${t.paint.bold(label.padEnd(12))} ${r.status === "error" ? `not sent ${t.sym.dot} ${why(r, tab)}` : plain(r.status)}`);
368
+ for (const pr of r.problems ?? [])
369
+ t.out(` ${t.paint.red(t.sym.bullet)} ${t.paint.bold((pr.path ?? []).join("."))} ${plain(pr.message)}`);
370
+ if (r.kept?.length)
371
+ t.out(` ${t.paint.gray(`${r.kept.join(", ")} ${r.kept.length === 1 ? "stays" : "stay"} where an administrator moved ${r.kept.length === 1 ? "it" : "them"}: leave ${r.kept.length === 1 ? "it" : "them"} out of ${src.files.portal}`)}`);
372
+ if (tab === "branding" && drops.length)
373
+ t.out(` ${t.paint.yellow(t.sym.warn)} ${t.paint.gray(`the Engine drops ${drops.map((x) => `theme.${x}`).join(", ")}: not in the theme reference`)}`);
374
+ }
375
+ if (bad) {
376
+ t.out();
377
+ t.item("fail", t.paint.bold("Not everything was applied."), "nothing above was retried");
378
+ }
379
+ t.out();
380
+ }
381
+ /** The branding's images the portal refuses, and how many it sends inline: for `doctor`. */
382
+ export function brandingFileCheck(value) {
383
+ return {
384
+ problems: brandingImageProblems(value),
385
+ drops: themeDrops(value.theme),
386
+ images: imagePaths().filter((p) => p.reduce((o, k) => o?.[k], value) !== undefined).length,
387
+ };
388
+ }
389
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAA6C,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5M,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAA6B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9H,OAAO,EAAa,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAa,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE1E,iFAAiF;AAEjF,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,GAAG,EAAE;IACzD,MAAM,KAAK,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3F,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrJ,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,oFAAoF;AACpF,SAAS,KAAK,CAAC,CAAU;IACvB,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IACxC,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,iBAAiB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACzD,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnD,OAAO,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAChD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;AACH,CAAC;AAGD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAW,EAA6C,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;AAEnG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAQ;IACzC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzJ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtI,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,QAAQ,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SACrF,CAAC;QACJ,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,QAAQ,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,QAAgB,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACnO,CAAC;IACD,IAAI,MAAgB,CAAC;IACrB,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SACjF,CAAC;QACJ,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM,GAA2D,EAAE,CAAC;QACxE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAsB,CAAC;YAClD,MAAM,MAAM,GAAS,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/F,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAA0B,EAAE,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACzN,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAc,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1K,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,CAAS,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAEvH,iGAAiG;AACjG,SAAS,UAAU,CAAC,GAAQ,EAAE,IAA8C;IAC1E,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAU,EAAE,CAAC;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC,CAAC,GAAG,EAAE,CAAC;YACR,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACvH,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxK,IAAI,CAAC,CAAC,YAAY;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,EAAE,CAAC,CAAC;QAChJ,IAAI,GAAG,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,EAAE,CAAC,CAAC;QAC3H,IAAI,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,qDAAqD,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACzP,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC,CAAC,KAAK,CACL,CAAC,CAAC,WAAW,EACb;gBACE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACrE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;gBACxE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;aAChG,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;QACJ,CAAC;QACD,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAED,wFAAwF;AAExF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAQ;IAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACzH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAsB,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAChH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjI,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACrH,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,QAAQ,CAAC,IAA6B,EAAE,IAAmB;IACzE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAQ;IACjD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAQ,EAAE,IAAc;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAChC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7D,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,oBAAoB,GAAG,CAAC,GAAG,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACrL,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvI,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAChE,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAElS,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,WAAW,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,CAAC,CAA4B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjG,MAAM,IAAI,GAAkC,EAAE,CAAC;IAC/C,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,iCAAiC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClV,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5H,IAAI,IAAI,CAAC,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;QACxR,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,OAAO,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3R,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,GAAG,EAAE,CAAC;IACR,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,IAAI,KAAK,KAAK,MAAM;QAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;SACjF,IAAI,KAAK,KAAK,SAAS;QAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,EAAE,yCAAyC,CAAC,CAAC;SACtK,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5I,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,oBAAoB,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;QAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,qGAAqG,CAAC,EAAE,CAAC,CAAC;IAC1L,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC,CAAC,GAAG,EAAE,CAAC;AACV,CAAC;AAED,yFAAyF;AAEzF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAQ,EAAE,IAAc;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAChC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5K,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5G,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACjE,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAEnI,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9F,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;QAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,gDAAgD,CAAC,CAAC;IACtF,CAAC,CAAC,IAAI,CACJ,KAAK;QACH,CAAC,CAAC;YACE,CAAC,GAAG,GAAG,CAAC,GAAG,iBAAiB,EAAE,6BAA6B,GAAG,CAAC,KAAK,OAAO,CAAC;YAC5E,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,EAAE,iCAAiC,GAAG,CAAC,KAAK,EAAE,CAAC;SAClE;QACH,CAAC,CAAC,EAAE,CACP,CAAC;IACF,CAAC,CAAC,GAAG,EAAE,CAAC;AACV,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAQ;IACpC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IACzB,aAAa,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,IAAI,CAAC,mCAAmC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACxH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,IAAI,CAAC,iCAAiC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAClH,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;IACtE,MAAM,KAAK,GAAG,aAAa,CAAC;IAE5B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5E,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK;YAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,gDAAgD,EAAE,CAAC,uDAAuD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;;YAC/J,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACzC,CAAC,CAAC,GAAG,EAAE,CAAC;QACR,OAAO;IACT,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC;IACvD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,+BAA+B,GAAG,CAAC,KAAK,8BAA8B,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;IAChK,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAClG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,eAAe,EAAE,+BAA+B,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,GAAG,EAAE,CAAC;QACR,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9F,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,mBAAmB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACrH,CAAC,CAAC,GAAG,EAAE,CAAC;AACV,CAAC;AAED,2EAA2E;AAE3E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ,EAAE,IAAc;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kDAAkD,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,GAAG,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3M,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAA8C,CAAC,CAAC;AACtG,CAAC;AAED,wHAAwH;AACxH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,KAAgD;IACzF,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAClB,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,KAAK,GAA2D,EAAE,CAAC;IACzE,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,CAAC,CAAS,EAAE,CAA2B,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACtG,IAAI,EAAE,CAAC,CAAS,EAAE,CAA2B,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACtG,KAAK,EAAE,CAAC,CAAS,EAAE,CAA2B,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KACzG,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CACvE,OAAO,CAAC,GAAG,CAAC;QACV,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACxH,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3H,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,KAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACpH,CAAC,CACH,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAA6B,EAAE,IAAqC,EAAQ,EAAE;QAC7F,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU,EAAE,CAAC;QACvE,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,KAAa,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3F,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,IAAI,GAAG;QAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,QAAQ;QAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC/F,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAElG,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAkB,CAAC,CAAC,CAAC;IAChG,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IACzJ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAyB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACvH,MAAM,GAAG,GAAG,CAAC,CAAO,EAAE,KAAa,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,kFAAkF,CAAC;QAC9I,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,6BAA6B,KAAK,GAAG,CAAC;QACjG,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAC/B,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnG,MAAM,IAAI,GAA2B;YACnC,OAAO,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,aAAa,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;YAC7E,SAAS,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,aAAa,EAAE,CAAC,QAAQ,EAAE;YAC3D,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,mDAAmD,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,8CAA8C,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;YACvR,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE;SACzD,CAAC;QACF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtH,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,WAAW;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7I,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,WAAW;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,EAAE,CAAC,CAAC;QAC7J,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC/E,MAAM,YAAY,GAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,KAAK,CACL,YAAY,EACZ;gBACE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC5E,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;gBAC3F,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;aACzI,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;YACF,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;gBAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,+BAA+B,CAAC,EAAE,CAAC,CAAC;QAC7J,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9K,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChK,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI;QACzB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,QAAQ,EAAE,QAAQ,CAAC;KACZ,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzJ,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChJ,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,iCAAiC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClQ,IAAI,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;IACpM,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACR,CAAC,CAAC,GAAG,EAAE,CAAC;QACR,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC3F,CAAC;IACD,CAAC,CAAC,GAAG,EAAE,CAAC;AACV,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,iBAAiB,CAAC,KAAW;IAC3C,OAAO;QACL,QAAQ,EAAE,qBAAqB,CAAC,KAAK,CAAC;QACtC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM;KAChG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** The command line as a module, for tests and for the local page: `run(argv, options)` answers the exit code. */
2
+ export { COMMAND, COMMANDS, DEFAULT_PREFIX, parseArgs, run, type RunOptions } from "./cli.js";
3
+ export { EXIT, secretIn } from "./context.js";
4
+ export { bundle, type Finding } from "./feedback.js";
5
+ export { promptOf } from "./changesets.js";
6
+ export { createUiHandler, uiAction, type UiAction, type UiRequest, type UiResponse } from "./ui.js";
7
+ export { plain } from "./terminal.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** The command line as a module, for tests and for the local page: `run(argv, options)` answers the exit code. */
2
+ export { COMMAND, COMMANDS, DEFAULT_PREFIX, parseArgs, run } from "./cli.js";
3
+ export { EXIT, secretIn } from "./context.js";
4
+ export { bundle } from "./feedback.js";
5
+ export { promptOf } from "./changesets.js";
6
+ export { createUiHandler, uiAction } from "./ui.js";
7
+ export { plain } from "./terminal.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAmB,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAgB,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAkD,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type Ctx } from "./context.js";
2
+ export declare function cmdStatus(ctx: Ctx): Promise<void>;
3
+ export declare function cmdDoctor(ctx: Ctx): Promise<void>;
4
+ export declare function cmdEngine(ctx: Ctx): Promise<void>;
5
+ export declare function cmdKey(ctx: Ctx): Promise<void>;
6
+ //# sourceMappingURL=overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../src/cli/overview.ts"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,GAAG,EAA4H,MAAM,cAAc,CAAC;AAyBnL,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,iBAuIvC;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,iBAoGvC;AAID,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,iBA2BvC;AAID,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,iBAkCpC"}