diff --git a/apps/macos/Package.swift b/apps/macos/Package.swift
index ff788f429d..9c91d0a9a7 100644
--- a/apps/macos/Package.swift
+++ b/apps/macos/Package.swift
@@ -51,6 +51,7 @@ let package = Package(
resources: [
.copy("Resources/Clawdis.icns"),
.copy("Resources/WebChat"),
+ .copy("Resources/CanvasA2UI"),
],
swiftSettings: [
.enableUpcomingFeature("StrictConcurrency"),
diff --git a/apps/macos/Sources/Clawdis/CanvasManager.swift b/apps/macos/Sources/Clawdis/CanvasManager.swift
index 171f1fcf5c..0abc245160 100644
--- a/apps/macos/Sources/Clawdis/CanvasManager.swift
+++ b/apps/macos/Sources/Clawdis/CanvasManager.swift
@@ -28,20 +28,17 @@ final class CanvasManager {
.trimmingCharacters(in: .whitespacesAndNewlines)
.nonEmpty
- let isWebTarget = Self.isWebTarget(normalizedTarget)
-
if let controller = self.panelController, self.panelSessionKey == session {
controller.presentAnchoredPanel(anchorProvider: anchorProvider)
controller.applyPreferredPlacement(placement)
// Existing session: only navigate when an explicit target was provided.
if let normalizedTarget {
- controller.goto(path: normalizedTarget)
+ controller.load(target: normalizedTarget)
return self.makeShowResult(
directory: controller.directoryPath,
target: target,
- effectiveTarget: normalizedTarget,
- isWebTarget: isWebTarget)
+ effectiveTarget: normalizedTarget)
}
return CanvasShowResult(
@@ -72,8 +69,7 @@ final class CanvasManager {
return self.makeShowResult(
directory: controller.directoryPath,
target: target,
- effectiveTarget: effectiveTarget,
- isWebTarget: isWebTarget)
+ effectiveTarget: effectiveTarget)
}
func hide(sessionKey: String) {
@@ -111,18 +107,29 @@ final class CanvasManager {
// MARK: - Helpers
- private static func isWebTarget(_ target: String?) -> Bool {
- guard let target, let url = URL(string: target), let scheme = url.scheme?.lowercased() else { return false }
- return scheme == "https" || scheme == "http"
+ private static func directURL(for target: String?) -> URL? {
+ guard let target else { return nil }
+ let trimmed = target.trimmingCharacters(in: .whitespacesAndNewlines)
+ guard !trimmed.isEmpty else { return nil }
+
+ if let url = URL(string: trimmed), let scheme = url.scheme?.lowercased() {
+ if scheme == "https" || scheme == "http" || scheme == "file" { return url }
+ }
+
+ // Convenience: existing absolute paths resolve as local files.
+ if trimmed.hasPrefix("/"), FileManager.default.fileExists(atPath: trimmed) {
+ return URL(fileURLWithPath: trimmed)
+ }
+
+ return nil
}
private func makeShowResult(
directory: String,
target: String?,
- effectiveTarget: String,
- isWebTarget: Bool) -> CanvasShowResult
+ effectiveTarget: String) -> CanvasShowResult
{
- if isWebTarget, let url = URL(string: effectiveTarget) {
+ if let url = Self.directURL(for: effectiveTarget) {
return CanvasShowResult(
directory: directory,
target: target,
@@ -151,12 +158,12 @@ final class CanvasManager {
if path.hasPrefix("/") { path.removeFirst() }
path = path.removingPercentEncoding ?? path
- // Root special-case: welcome page when no index exists.
+ // Root special-case: built-in shell page when no index exists.
if path.isEmpty {
let a = sessionDir.appendingPathComponent("index.html", isDirectory: false)
let b = sessionDir.appendingPathComponent("index.htm", isDirectory: false)
if fm.fileExists(atPath: a.path) || fm.fileExists(atPath: b.path) { return .ok }
- return .welcome
+ return Self.hasBundledA2UIShell() ? .a2uiShell : .welcome
}
// Direct file or directory.
@@ -187,6 +194,14 @@ final class CanvasManager {
let b = dir.appendingPathComponent("index.htm", isDirectory: false)
return fm.fileExists(atPath: b.path)
}
+
+ private static func hasBundledA2UIShell() -> Bool {
+ guard let base = Bundle.module.resourceURL?.appendingPathComponent("CanvasA2UI", isDirectory: true) else {
+ return false
+ }
+ let index = base.appendingPathComponent("index.html", isDirectory: false)
+ return FileManager.default.fileExists(atPath: index.path)
+ }
}
private extension String {
diff --git a/apps/macos/Sources/Clawdis/CanvasSchemeHandler.swift b/apps/macos/Sources/Clawdis/CanvasSchemeHandler.swift
index 1256890a2f..a924a79ead 100644
--- a/apps/macos/Sources/Clawdis/CanvasSchemeHandler.swift
+++ b/apps/macos/Sources/Clawdis/CanvasSchemeHandler.swift
@@ -7,6 +7,8 @@ private let canvasLogger = Logger(subsystem: "com.steipete.clawdis", category: "
final class CanvasSchemeHandler: NSObject, WKURLSchemeHandler {
private let root: URL
+ private static let builtinPrefix = "__clawdis__/a2ui"
+
init(root: URL) {
self.root = root
}
@@ -64,6 +66,10 @@ final class CanvasSchemeHandler: NSObject, WKURLSchemeHandler {
if path.hasPrefix("/") { path.removeFirst() }
path = path.removingPercentEncoding ?? path
+ if let builtin = self.builtinResponse(requestPath: path) {
+ return builtin
+ }
+
// Special-case: welcome page when root index is missing.
if path.isEmpty {
let indexA = sessionRoot.appendingPathComponent("index.html", isDirectory: false)
@@ -71,7 +77,7 @@ final class CanvasSchemeHandler: NSObject, WKURLSchemeHandler {
if !FileManager.default.fileExists(atPath: indexA.path),
!FileManager.default.fileExists(atPath: indexB.path)
{
- return self.welcomePage(sessionRoot: sessionRoot)
+ return self.a2uiShellPage(sessionRoot: sessionRoot)
}
}
@@ -197,6 +203,54 @@ final class CanvasSchemeHandler: NSObject, WKURLSchemeHandler {
return self.html(body, title: "Canvas")
}
+ private func a2uiShellPage(sessionRoot: URL) -> CanvasResponse {
+ // Default Canvas UX: when no index exists, show the built-in A2UI shell.
+ if let data = self.loadBundledResourceData(subdirectory: "CanvasA2UI", relativePath: "index.html") {
+ return CanvasResponse(mime: "text/html", data: data)
+ }
+
+ // Fallback for dev misconfiguration: show the classic welcome page.
+ return self.welcomePage(sessionRoot: sessionRoot)
+ }
+
+ private func builtinResponse(requestPath: String) -> CanvasResponse? {
+ let trimmed = requestPath.trimmingCharacters(in: .whitespacesAndNewlines)
+ guard !trimmed.isEmpty else { return nil }
+
+ guard trimmed == Self.builtinPrefix
+ || trimmed == Self.builtinPrefix + "/"
+ || trimmed.hasPrefix(Self.builtinPrefix + "/")
+ else { return nil }
+
+ let relative: String
+ if trimmed == Self.builtinPrefix || trimmed == Self.builtinPrefix + "/" {
+ relative = "index.html"
+ } else {
+ relative = String(trimmed.dropFirst((Self.builtinPrefix + "/").count))
+ }
+
+ if relative.isEmpty { return self.html("Not Found", title: "Canvas: 404") }
+ if relative.contains("..") || relative.contains("\\") {
+ return self.html("Forbidden", title: "Canvas: 403")
+ }
+
+ guard let data = self.loadBundledResourceData(subdirectory: "CanvasA2UI", relativePath: relative) else {
+ return self.html("Not Found", title: "Canvas: 404")
+ }
+
+ let ext = (relative as NSString).pathExtension
+ let mime = CanvasScheme.mimeType(forExtension: ext)
+ return CanvasResponse(mime: mime, data: data)
+ }
+
+ private func loadBundledResourceData(subdirectory: String, relativePath: String) -> Data? {
+ guard let base = Bundle.module.resourceURL?.appendingPathComponent(subdirectory, isDirectory: true) else {
+ return nil
+ }
+ let url = base.appendingPathComponent(relativePath, isDirectory: false)
+ return try? Data(contentsOf: url)
+ }
+
private func textEncodingName(forMimeType mimeType: String) -> String? {
if mimeType.hasPrefix("text/") { return "utf-8" }
switch mimeType {
diff --git a/apps/macos/Sources/Clawdis/CanvasWindow.swift b/apps/macos/Sources/Clawdis/CanvasWindow.swift
index 094df92bd1..b7cd14c1ce 100644
--- a/apps/macos/Sources/Clawdis/CanvasWindow.swift
+++ b/apps/macos/Sources/Clawdis/CanvasWindow.swift
@@ -100,7 +100,7 @@ final class CanvasWindowController: NSWindowController, WKNavigationDelegate, NS
if case let .panel(anchorProvider) = self.presentation {
self.presentAnchoredPanel(anchorProvider: anchorProvider)
if let path {
- self.goto(path: path)
+ self.load(target: path)
}
return
}
@@ -109,7 +109,7 @@ final class CanvasWindowController: NSWindowController, WKNavigationDelegate, NS
self.window?.makeKeyAndOrderFront(nil)
NSApp.activate(ignoringOtherApps: true)
if let path {
- self.goto(path: path)
+ self.load(target: path)
}
self.onVisibilityChanged?(true)
}
@@ -124,14 +124,27 @@ final class CanvasWindowController: NSWindowController, WKNavigationDelegate, NS
self.onVisibilityChanged?(false)
}
- func goto(path: String) {
- let trimmed = path.trimmingCharacters(in: .whitespacesAndNewlines)
+ func load(target: String) {
+ let trimmed = target.trimmingCharacters(in: .whitespacesAndNewlines)
- if let url = URL(string: trimmed), let scheme = url.scheme?.lowercased(),
- scheme == "https" || scheme == "http"
- {
- canvasWindowLogger.debug("canvas goto web \(url.absoluteString, privacy: .public)")
- self.webView.load(URLRequest(url: url))
+ if let url = URL(string: trimmed), let scheme = url.scheme?.lowercased() {
+ if scheme == "https" || scheme == "http" {
+ canvasWindowLogger.debug("canvas load url \(url.absoluteString, privacy: .public)")
+ self.webView.load(URLRequest(url: url))
+ return
+ }
+ if scheme == "file" {
+ canvasWindowLogger.debug("canvas load file \(url.absoluteString, privacy: .public)")
+ self.loadFile(url)
+ return
+ }
+ }
+
+ // Convenience: absolute paths resolve as local files when they exist.
+ if trimmed.hasPrefix("/"), FileManager.default.fileExists(atPath: trimmed) {
+ let url = URL(fileURLWithPath: trimmed)
+ canvasWindowLogger.debug("canvas load file \(url.absoluteString, privacy: .public)")
+ self.loadFile(url)
return
}
@@ -144,10 +157,16 @@ final class CanvasWindowController: NSWindowController, WKNavigationDelegate, NS
"invalid canvas url session=\(self.sessionKey, privacy: .public) path=\(trimmed, privacy: .public)")
return
}
- canvasWindowLogger.debug("canvas goto canvas \(url.absoluteString, privacy: .public)")
+ canvasWindowLogger.debug("canvas load canvas \(url.absoluteString, privacy: .public)")
self.webView.load(URLRequest(url: url))
}
+ private func loadFile(_ url: URL) {
+ let fileURL = url.isFileURL ? url : URL(fileURLWithPath: url.path)
+ let accessDir = fileURL.deletingLastPathComponent()
+ self.webView.loadFileURL(fileURL, allowingReadAccessTo: accessDir)
+ }
+
func eval(javaScript: String) async -> String {
await withCheckedContinuation { cont in
self.webView.evaluateJavaScript(javaScript) { result, error in
diff --git a/apps/macos/Sources/Clawdis/ControlRequestHandler.swift b/apps/macos/Sources/Clawdis/ControlRequestHandler.swift
index 1e4e9a7486..1989cee996 100644
--- a/apps/macos/Sources/Clawdis/ControlRequestHandler.swift
+++ b/apps/macos/Sources/Clawdis/ControlRequestHandler.swift
@@ -67,6 +67,9 @@ enum ControlRequestHandler {
case let .canvasSnapshot(session, outPath):
return await self.handleCanvasSnapshot(session: session, outPath: outPath)
+ case let .canvasA2UI(session, command, jsonl):
+ return await self.handleCanvasA2UI(session: session, command: command, jsonl: jsonl)
+
case .nodeList:
return await self.handleNodeList()
@@ -228,6 +231,86 @@ enum ControlRequestHandler {
}
}
+ private static func handleCanvasA2UI(session: String, command: CanvasA2UICommand, jsonl: String?) async -> Response {
+ guard self.canvasEnabled() else { return Response(ok: false, message: "Canvas disabled by user") }
+ do {
+ // Ensure the Canvas is visible and the default page is loaded.
+ _ = try await MainActor.run {
+ try CanvasManager.shared.show(sessionKey: session, path: "/")
+ }
+
+ let ready = await Self.waitForCanvasA2UI(session: session, timeoutMs: 2_000)
+ guard ready else { return Response(ok: false, message: "A2UI not ready") }
+
+ let js: String
+ switch command {
+ case .reset:
+ js = """
+ (() => {
+ if (!globalThis.clawdisA2UI) { return "missing clawdisA2UI"; }
+ globalThis.clawdisA2UI.reset();
+ return "ok";
+ })()
+ """
+
+ case .pushJSONL:
+ guard let jsonl, !jsonl.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
+ return Response(ok: false, message: "missing jsonl")
+ }
+ let messages: [Any]
+ do {
+ messages = try Self.parseJSONL(jsonl)
+ } catch {
+ return Response(ok: false, message: "invalid jsonl: \(error.localizedDescription)")
+ }
+ let data = try JSONSerialization.data(withJSONObject: messages, options: [])
+ let json = String(data: data, encoding: .utf8) ?? "[]"
+ js = """
+ (() => {
+ if (!globalThis.clawdisA2UI) { return "missing clawdisA2UI"; }
+ const messages = \(json);
+ globalThis.clawdisA2UI.applyMessages(messages);
+ return "ok";
+ })()
+ """
+ }
+
+ let result = try await CanvasManager.shared.eval(sessionKey: session, javaScript: js)
+ return Response(ok: true, payload: Data(result.utf8))
+ } catch {
+ return Response(ok: false, message: error.localizedDescription)
+ }
+ }
+
+ private static func parseJSONL(_ text: String) throws -> [Any] {
+ var out: [Any] = []
+ for rawLine in text.split(whereSeparator: \.isNewline) {
+ let line = rawLine.trimmingCharacters(in: .whitespacesAndNewlines)
+ if line.isEmpty { continue }
+ let data = Data(line.utf8)
+ let obj = try JSONSerialization.jsonObject(with: data, options: [])
+ out.append(obj)
+ }
+ return out
+ }
+
+ private static func waitForCanvasA2UI(session: String, timeoutMs: Int) async -> Bool {
+ let clock = ContinuousClock()
+ let deadline = clock.now.advanced(by: .milliseconds(timeoutMs))
+ while clock.now < deadline {
+ do {
+ let res = try await CanvasManager.shared.eval(
+ sessionKey: session,
+ javaScript: "(() => globalThis.clawdisA2UI ? 'ready' : '')()")
+ if res == "ready" { return true }
+ } catch {
+ // Ignore; keep waiting.
+ }
+ try? await Task.sleep(nanoseconds: 60_000_000)
+ }
+ return false
+ }
+
private static func handleNodeList() async -> Response {
let ids = await BridgeServer.shared.connectedNodeIds()
let payload = (try? JSONSerialization.data(
diff --git a/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/a2ui.bundle.js b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/a2ui.bundle.js
new file mode 100644
index 0000000000..ee230885d5
--- /dev/null
+++ b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/a2ui.bundle.js
@@ -0,0 +1,17798 @@
+//#region rolldown:runtime
+var __defProp$1 = Object.defineProperty;
+var __export = (all, symbols) => {
+ let target = {};
+ for (var name in all) {
+ __defProp$1(target, name, {
+ get: all[name],
+ enumerable: true
+ });
+ }
+ if (symbols) {
+ __defProp$1(target, Symbol.toStringTag, { value: "Module" });
+ }
+ return target;
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.js
+/**
+* @license
+* Copyright 2019 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+const t$6 = globalThis, e$12 = t$6.ShadowRoot && (void 0 === t$6.ShadyCSS || t$6.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, s$8 = Symbol(), o$13 = new WeakMap();
+var n$9 = class {
+ constructor(t$7, e$14, o$14) {
+ if (this._$cssResult$ = !0, o$14 !== s$8) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
+ this.cssText = t$7, this.t = e$14;
+ }
+ get styleSheet() {
+ let t$7 = this.o;
+ const s$9 = this.t;
+ if (e$12 && void 0 === t$7) {
+ const e$14 = void 0 !== s$9 && 1 === s$9.length;
+ e$14 && (t$7 = o$13.get(s$9)), void 0 === t$7 && ((this.o = t$7 = new CSSStyleSheet()).replaceSync(this.cssText), e$14 && o$13.set(s$9, t$7));
+ }
+ return t$7;
+ }
+ toString() {
+ return this.cssText;
+ }
+};
+const r$1 = (t$7) => new n$9("string" == typeof t$7 ? t$7 : t$7 + "", void 0, s$8), i = (t$7, ...e$14) => {
+ const o$14 = 1 === t$7.length ? t$7[0] : e$14.reduce(((e$15, s$9, o$15) => e$15 + ((t$8) => {
+ if (!0 === t$8._$cssResult$) return t$8.cssText;
+ if ("number" == typeof t$8) return t$8;
+ throw Error("Value passed to 'css' function must be a 'css' function result: " + t$8 + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
+ })(s$9) + t$7[o$15 + 1]), t$7[0]);
+ return new n$9(o$14, t$7, s$8);
+}, S$1 = (s$9, o$14) => {
+ if (e$12) s$9.adoptedStyleSheets = o$14.map(((t$7) => t$7 instanceof CSSStyleSheet ? t$7 : t$7.styleSheet));
+ else for (const e$14 of o$14) {
+ const o$15 = document.createElement("style"), n$11 = t$6.litNonce;
+ void 0 !== n$11 && o$15.setAttribute("nonce", n$11), o$15.textContent = e$14.cssText, s$9.appendChild(o$15);
+ }
+}, c$5 = e$12 ? (t$7) => t$7 : (t$7) => t$7 instanceof CSSStyleSheet ? ((t$8) => {
+ let e$14 = "";
+ for (const s$9 of t$8.cssRules) e$14 += s$9.cssText;
+ return r$1(e$14);
+})(t$7) : t$7;
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const { is: i$9, defineProperty: e$13, getOwnPropertyDescriptor: h$6, getOwnPropertyNames: r$10, getOwnPropertySymbols: o$12, getPrototypeOf: n$10 } = Object, a$1 = globalThis, c$6 = a$1.trustedTypes, l$4 = c$6 ? c$6.emptyScript : "", p$2 = a$1.reactiveElementPolyfillSupport, d$2 = (t$7, s$9) => t$7, u = {
+ toAttribute(t$7, s$9) {
+ switch (s$9) {
+ case Boolean:
+ t$7 = t$7 ? l$4 : null;
+ break;
+ case Object:
+ case Array: t$7 = null == t$7 ? t$7 : JSON.stringify(t$7);
+ }
+ return t$7;
+ },
+ fromAttribute(t$7, s$9) {
+ let i$10 = t$7;
+ switch (s$9) {
+ case Boolean:
+ i$10 = null !== t$7;
+ break;
+ case Number:
+ i$10 = null === t$7 ? null : Number(t$7);
+ break;
+ case Object:
+ case Array: try {
+ i$10 = JSON.parse(t$7);
+ } catch (t$8) {
+ i$10 = null;
+ }
+ }
+ return i$10;
+ }
+}, f$2 = (t$7, s$9) => !i$9(t$7, s$9), b$1 = {
+ attribute: !0,
+ type: String,
+ converter: u,
+ reflect: !1,
+ useDefault: !1,
+ hasChanged: f$2
+};
+Symbol.metadata ??= Symbol("metadata"), a$1.litPropertyMetadata ??= new WeakMap();
+var y = class extends HTMLElement {
+ static addInitializer(t$7) {
+ this._$Ei(), (this.l ??= []).push(t$7);
+ }
+ static get observedAttributes() {
+ return this.finalize(), this._$Eh && [...this._$Eh.keys()];
+ }
+ static createProperty(t$7, s$9 = b$1) {
+ if (s$9.state && (s$9.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(t$7) && ((s$9 = Object.create(s$9)).wrapped = !0), this.elementProperties.set(t$7, s$9), !s$9.noAccessor) {
+ const i$10 = Symbol(), h$7 = this.getPropertyDescriptor(t$7, i$10, s$9);
+ void 0 !== h$7 && e$13(this.prototype, t$7, h$7);
+ }
+ }
+ static getPropertyDescriptor(t$7, s$9, i$10) {
+ const { get: e$14, set: r$11 } = h$6(this.prototype, t$7) ?? {
+ get() {
+ return this[s$9];
+ },
+ set(t$8) {
+ this[s$9] = t$8;
+ }
+ };
+ return {
+ get: e$14,
+ set(s$10) {
+ const h$7 = e$14?.call(this);
+ r$11?.call(this, s$10), this.requestUpdate(t$7, h$7, i$10);
+ },
+ configurable: !0,
+ enumerable: !0
+ };
+ }
+ static getPropertyOptions(t$7) {
+ return this.elementProperties.get(t$7) ?? b$1;
+ }
+ static _$Ei() {
+ if (this.hasOwnProperty(d$2("elementProperties"))) return;
+ const t$7 = n$10(this);
+ t$7.finalize(), void 0 !== t$7.l && (this.l = [...t$7.l]), this.elementProperties = new Map(t$7.elementProperties);
+ }
+ static finalize() {
+ if (this.hasOwnProperty(d$2("finalized"))) return;
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(d$2("properties"))) {
+ const t$8 = this.properties, s$9 = [...r$10(t$8), ...o$12(t$8)];
+ for (const i$10 of s$9) this.createProperty(i$10, t$8[i$10]);
+ }
+ const t$7 = this[Symbol.metadata];
+ if (null !== t$7) {
+ const s$9 = litPropertyMetadata.get(t$7);
+ if (void 0 !== s$9) for (const [t$8, i$10] of s$9) this.elementProperties.set(t$8, i$10);
+ }
+ this._$Eh = new Map();
+ for (const [t$8, s$9] of this.elementProperties) {
+ const i$10 = this._$Eu(t$8, s$9);
+ void 0 !== i$10 && this._$Eh.set(i$10, t$8);
+ }
+ this.elementStyles = this.finalizeStyles(this.styles);
+ }
+ static finalizeStyles(s$9) {
+ const i$10 = [];
+ if (Array.isArray(s$9)) {
+ const e$14 = new Set(s$9.flat(1 / 0).reverse());
+ for (const s$10 of e$14) i$10.unshift(c$5(s$10));
+ } else void 0 !== s$9 && i$10.push(c$5(s$9));
+ return i$10;
+ }
+ static _$Eu(t$7, s$9) {
+ const i$10 = s$9.attribute;
+ return !1 === i$10 ? void 0 : "string" == typeof i$10 ? i$10 : "string" == typeof t$7 ? t$7.toLowerCase() : void 0;
+ }
+ constructor() {
+ super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
+ }
+ _$Ev() {
+ this._$ES = new Promise(((t$7) => this.enableUpdating = t$7)), this._$AL = new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t$7) => t$7(this)));
+ }
+ addController(t$7) {
+ (this._$EO ??= new Set()).add(t$7), void 0 !== this.renderRoot && this.isConnected && t$7.hostConnected?.();
+ }
+ removeController(t$7) {
+ this._$EO?.delete(t$7);
+ }
+ _$E_() {
+ const t$7 = new Map(), s$9 = this.constructor.elementProperties;
+ for (const i$10 of s$9.keys()) this.hasOwnProperty(i$10) && (t$7.set(i$10, this[i$10]), delete this[i$10]);
+ t$7.size > 0 && (this._$Ep = t$7);
+ }
+ createRenderRoot() {
+ const t$7 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
+ return S$1(t$7, this.constructor.elementStyles), t$7;
+ }
+ connectedCallback() {
+ this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach(((t$7) => t$7.hostConnected?.()));
+ }
+ enableUpdating(t$7) {}
+ disconnectedCallback() {
+ this._$EO?.forEach(((t$7) => t$7.hostDisconnected?.()));
+ }
+ attributeChangedCallback(t$7, s$9, i$10) {
+ this._$AK(t$7, i$10);
+ }
+ _$ET(t$7, s$9) {
+ const i$10 = this.constructor.elementProperties.get(t$7), e$14 = this.constructor._$Eu(t$7, i$10);
+ if (void 0 !== e$14 && !0 === i$10.reflect) {
+ const h$7 = (void 0 !== i$10.converter?.toAttribute ? i$10.converter : u).toAttribute(s$9, i$10.type);
+ this._$Em = t$7, null == h$7 ? this.removeAttribute(e$14) : this.setAttribute(e$14, h$7), this._$Em = null;
+ }
+ }
+ _$AK(t$7, s$9) {
+ const i$10 = this.constructor, e$14 = i$10._$Eh.get(t$7);
+ if (void 0 !== e$14 && this._$Em !== e$14) {
+ const t$8 = i$10.getPropertyOptions(e$14), h$7 = "function" == typeof t$8.converter ? { fromAttribute: t$8.converter } : void 0 !== t$8.converter?.fromAttribute ? t$8.converter : u;
+ this._$Em = e$14;
+ const r$11 = h$7.fromAttribute(s$9, t$8.type);
+ this[e$14] = r$11 ?? this._$Ej?.get(e$14) ?? r$11, this._$Em = null;
+ }
+ }
+ requestUpdate(t$7, s$9, i$10) {
+ if (void 0 !== t$7) {
+ const e$14 = this.constructor, h$7 = this[t$7];
+ if (i$10 ??= e$14.getPropertyOptions(t$7), !((i$10.hasChanged ?? f$2)(h$7, s$9) || i$10.useDefault && i$10.reflect && h$7 === this._$Ej?.get(t$7) && !this.hasAttribute(e$14._$Eu(t$7, i$10)))) return;
+ this.C(t$7, s$9, i$10);
+ }
+ !1 === this.isUpdatePending && (this._$ES = this._$EP());
+ }
+ C(t$7, s$9, { useDefault: i$10, reflect: e$14, wrapped: h$7 }, r$11) {
+ i$10 && !(this._$Ej ??= new Map()).has(t$7) && (this._$Ej.set(t$7, r$11 ?? s$9 ?? this[t$7]), !0 !== h$7 || void 0 !== r$11) || (this._$AL.has(t$7) || (this.hasUpdated || i$10 || (s$9 = void 0), this._$AL.set(t$7, s$9)), !0 === e$14 && this._$Em !== t$7 && (this._$Eq ??= new Set()).add(t$7));
+ }
+ async _$EP() {
+ this.isUpdatePending = !0;
+ try {
+ await this._$ES;
+ } catch (t$8) {
+ Promise.reject(t$8);
+ }
+ const t$7 = this.scheduleUpdate();
+ return null != t$7 && await t$7, !this.isUpdatePending;
+ }
+ scheduleUpdate() {
+ return this.performUpdate();
+ }
+ performUpdate() {
+ if (!this.isUpdatePending) return;
+ if (!this.hasUpdated) {
+ if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {
+ for (const [t$9, s$10] of this._$Ep) this[t$9] = s$10;
+ this._$Ep = void 0;
+ }
+ const t$8 = this.constructor.elementProperties;
+ if (t$8.size > 0) for (const [s$10, i$10] of t$8) {
+ const { wrapped: t$9 } = i$10, e$14 = this[s$10];
+ !0 !== t$9 || this._$AL.has(s$10) || void 0 === e$14 || this.C(s$10, void 0, i$10, e$14);
+ }
+ }
+ let t$7 = !1;
+ const s$9 = this._$AL;
+ try {
+ t$7 = this.shouldUpdate(s$9), t$7 ? (this.willUpdate(s$9), this._$EO?.forEach(((t$8) => t$8.hostUpdate?.())), this.update(s$9)) : this._$EM();
+ } catch (s$10) {
+ throw t$7 = !1, this._$EM(), s$10;
+ }
+ t$7 && this._$AE(s$9);
+ }
+ willUpdate(t$7) {}
+ _$AE(t$7) {
+ this._$EO?.forEach(((t$8) => t$8.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t$7)), this.updated(t$7);
+ }
+ _$EM() {
+ this._$AL = new Map(), this.isUpdatePending = !1;
+ }
+ get updateComplete() {
+ return this.getUpdateComplete();
+ }
+ getUpdateComplete() {
+ return this._$ES;
+ }
+ shouldUpdate(t$7) {
+ return !0;
+ }
+ update(t$7) {
+ this._$Eq &&= this._$Eq.forEach(((t$8) => this._$ET(t$8, this[t$8]))), this._$EM();
+ }
+ updated(t$7) {}
+ firstUpdated(t$7) {}
+};
+y.elementStyles = [], y.shadowRootOptions = { mode: "open" }, y[d$2("elementProperties")] = new Map(), y[d$2("finalized")] = new Map(), p$2?.({ ReactiveElement: y }), (a$1.reactiveElementVersions ??= []).push("2.1.1");
+
+//#endregion
+//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+const t$5 = globalThis, i$8 = t$5.trustedTypes, s$7 = i$8 ? i$8.createPolicy("lit-html", { createHTML: (t$7) => t$7 }) : void 0, e$11 = "$lit$", h$5 = `lit$${Math.random().toFixed(9).slice(2)}$`, o$11 = "?" + h$5, n$8 = `<${o$11}>`, r$9 = document, l$3 = () => r$9.createComment(""), c$4 = (t$7) => null === t$7 || "object" != typeof t$7 && "function" != typeof t$7, a = Array.isArray, u$3 = (t$7) => a(t$7) || "function" == typeof t$7?.[Symbol.iterator], d$1 = "[ \n\f\r]", f$3 = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, v$1 = /-->/g, _ = />/g, m$2 = RegExp(`>|${d$1}(?:([^\\s"'>=/]+)(${d$1}*=${d$1}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`, "g"), p$1 = /'/g, g = /"/g, $ = /^(?:script|style|textarea|title)$/i, y$1 = (t$7) => (i$10, ...s$9) => ({
+ _$litType$: t$7,
+ strings: i$10,
+ values: s$9
+}), x = y$1(1), b = y$1(2), w = y$1(3), T = Symbol.for("lit-noChange"), E = Symbol.for("lit-nothing"), A = new WeakMap(), C = r$9.createTreeWalker(r$9, 129);
+function P(t$7, i$10) {
+ if (!a(t$7) || !t$7.hasOwnProperty("raw")) throw Error("invalid template strings array");
+ return void 0 !== s$7 ? s$7.createHTML(i$10) : i$10;
+}
+const V = (t$7, i$10) => {
+ const s$9 = t$7.length - 1, o$14 = [];
+ let r$11, l$5 = 2 === i$10 ? "" : 3 === i$10 ? "" : "")), o$14];
+};
+var N = class N {
+ constructor({ strings: t$7, _$litType$: s$9 }, n$11) {
+ let r$11;
+ this.parts = [];
+ let c$7 = 0, a$2 = 0;
+ const u$4 = t$7.length - 1, d$3 = this.parts, [f$4, v$2] = V(t$7, s$9);
+ if (this.el = N.createElement(f$4, n$11), C.currentNode = this.el.content, 2 === s$9 || 3 === s$9) {
+ const t$8 = this.el.content.firstChild;
+ t$8.replaceWith(...t$8.childNodes);
+ }
+ for (; null !== (r$11 = C.nextNode()) && d$3.length < u$4;) {
+ if (1 === r$11.nodeType) {
+ if (r$11.hasAttributes()) for (const t$8 of r$11.getAttributeNames()) if (t$8.endsWith(e$11)) {
+ const i$10 = v$2[a$2++], s$10 = r$11.getAttribute(t$8).split(h$5), e$14 = /([.?@])?(.*)/.exec(i$10);
+ d$3.push({
+ type: 1,
+ index: c$7,
+ name: e$14[2],
+ strings: s$10,
+ ctor: "." === e$14[1] ? H : "?" === e$14[1] ? I : "@" === e$14[1] ? L : k
+ }), r$11.removeAttribute(t$8);
+ } else t$8.startsWith(h$5) && (d$3.push({
+ type: 6,
+ index: c$7
+ }), r$11.removeAttribute(t$8));
+ if ($.test(r$11.tagName)) {
+ const t$8 = r$11.textContent.split(h$5), s$10 = t$8.length - 1;
+ if (s$10 > 0) {
+ r$11.textContent = i$8 ? i$8.emptyScript : "";
+ for (let i$10 = 0; i$10 < s$10; i$10++) r$11.append(t$8[i$10], l$3()), C.nextNode(), d$3.push({
+ type: 2,
+ index: ++c$7
+ });
+ r$11.append(t$8[s$10], l$3());
+ }
+ }
+ } else if (8 === r$11.nodeType) if (r$11.data === o$11) d$3.push({
+ type: 2,
+ index: c$7
+ });
+ else {
+ let t$8 = -1;
+ for (; -1 !== (t$8 = r$11.data.indexOf(h$5, t$8 + 1));) d$3.push({
+ type: 7,
+ index: c$7
+ }), t$8 += h$5.length - 1;
+ }
+ c$7++;
+ }
+ }
+ static createElement(t$7, i$10) {
+ const s$9 = r$9.createElement("template");
+ return s$9.innerHTML = t$7, s$9;
+ }
+};
+function S(t$7, i$10, s$9 = t$7, e$14) {
+ if (i$10 === T) return i$10;
+ let h$7 = void 0 !== e$14 ? s$9._$Co?.[e$14] : s$9._$Cl;
+ const o$14 = c$4(i$10) ? void 0 : i$10._$litDirective$;
+ return h$7?.constructor !== o$14 && (h$7?._$AO?.(!1), void 0 === o$14 ? h$7 = void 0 : (h$7 = new o$14(t$7), h$7._$AT(t$7, s$9, e$14)), void 0 !== e$14 ? (s$9._$Co ??= [])[e$14] = h$7 : s$9._$Cl = h$7), void 0 !== h$7 && (i$10 = S(t$7, h$7._$AS(t$7, i$10.values), h$7, e$14)), i$10;
+}
+var M$1 = class {
+ constructor(t$7, i$10) {
+ this._$AV = [], this._$AN = void 0, this._$AD = t$7, this._$AM = i$10;
+ }
+ get parentNode() {
+ return this._$AM.parentNode;
+ }
+ get _$AU() {
+ return this._$AM._$AU;
+ }
+ u(t$7) {
+ const { el: { content: i$10 }, parts: s$9 } = this._$AD, e$14 = (t$7?.creationScope ?? r$9).importNode(i$10, !0);
+ C.currentNode = e$14;
+ let h$7 = C.nextNode(), o$14 = 0, n$11 = 0, l$5 = s$9[0];
+ for (; void 0 !== l$5;) {
+ if (o$14 === l$5.index) {
+ let i$11;
+ 2 === l$5.type ? i$11 = new R(h$7, h$7.nextSibling, this, t$7) : 1 === l$5.type ? i$11 = new l$5.ctor(h$7, l$5.name, l$5.strings, this, t$7) : 6 === l$5.type && (i$11 = new z(h$7, this, t$7)), this._$AV.push(i$11), l$5 = s$9[++n$11];
+ }
+ o$14 !== l$5?.index && (h$7 = C.nextNode(), o$14++);
+ }
+ return C.currentNode = r$9, e$14;
+ }
+ p(t$7) {
+ let i$10 = 0;
+ for (const s$9 of this._$AV) void 0 !== s$9 && (void 0 !== s$9.strings ? (s$9._$AI(t$7, s$9, i$10), i$10 += s$9.strings.length - 2) : s$9._$AI(t$7[i$10])), i$10++;
+ }
+};
+var R = class R {
+ get _$AU() {
+ return this._$AM?._$AU ?? this._$Cv;
+ }
+ constructor(t$7, i$10, s$9, e$14) {
+ this.type = 2, this._$AH = E, this._$AN = void 0, this._$AA = t$7, this._$AB = i$10, this._$AM = s$9, this.options = e$14, this._$Cv = e$14?.isConnected ?? !0;
+ }
+ get parentNode() {
+ let t$7 = this._$AA.parentNode;
+ const i$10 = this._$AM;
+ return void 0 !== i$10 && 11 === t$7?.nodeType && (t$7 = i$10.parentNode), t$7;
+ }
+ get startNode() {
+ return this._$AA;
+ }
+ get endNode() {
+ return this._$AB;
+ }
+ _$AI(t$7, i$10 = this) {
+ t$7 = S(this, t$7, i$10), c$4(t$7) ? t$7 === E || null == t$7 || "" === t$7 ? (this._$AH !== E && this._$AR(), this._$AH = E) : t$7 !== this._$AH && t$7 !== T && this._(t$7) : void 0 !== t$7._$litType$ ? this.$(t$7) : void 0 !== t$7.nodeType ? this.T(t$7) : u$3(t$7) ? this.k(t$7) : this._(t$7);
+ }
+ O(t$7) {
+ return this._$AA.parentNode.insertBefore(t$7, this._$AB);
+ }
+ T(t$7) {
+ this._$AH !== t$7 && (this._$AR(), this._$AH = this.O(t$7));
+ }
+ _(t$7) {
+ this._$AH !== E && c$4(this._$AH) ? this._$AA.nextSibling.data = t$7 : this.T(r$9.createTextNode(t$7)), this._$AH = t$7;
+ }
+ $(t$7) {
+ const { values: i$10, _$litType$: s$9 } = t$7, e$14 = "number" == typeof s$9 ? this._$AC(t$7) : (void 0 === s$9.el && (s$9.el = N.createElement(P(s$9.h, s$9.h[0]), this.options)), s$9);
+ if (this._$AH?._$AD === e$14) this._$AH.p(i$10);
+ else {
+ const t$8 = new M$1(e$14, this), s$10 = t$8.u(this.options);
+ t$8.p(i$10), this.T(s$10), this._$AH = t$8;
+ }
+ }
+ _$AC(t$7) {
+ let i$10 = A.get(t$7.strings);
+ return void 0 === i$10 && A.set(t$7.strings, i$10 = new N(t$7)), i$10;
+ }
+ k(t$7) {
+ a(this._$AH) || (this._$AH = [], this._$AR());
+ const i$10 = this._$AH;
+ let s$9, e$14 = 0;
+ for (const h$7 of t$7) e$14 === i$10.length ? i$10.push(s$9 = new R(this.O(l$3()), this.O(l$3()), this, this.options)) : s$9 = i$10[e$14], s$9._$AI(h$7), e$14++;
+ e$14 < i$10.length && (this._$AR(s$9 && s$9._$AB.nextSibling, e$14), i$10.length = e$14);
+ }
+ _$AR(t$7 = this._$AA.nextSibling, i$10) {
+ for (this._$AP?.(!1, !0, i$10); t$7 !== this._$AB;) {
+ const i$11 = t$7.nextSibling;
+ t$7.remove(), t$7 = i$11;
+ }
+ }
+ setConnected(t$7) {
+ void 0 === this._$AM && (this._$Cv = t$7, this._$AP?.(t$7));
+ }
+};
+var k = class {
+ get tagName() {
+ return this.element.tagName;
+ }
+ get _$AU() {
+ return this._$AM._$AU;
+ }
+ constructor(t$7, i$10, s$9, e$14, h$7) {
+ this.type = 1, this._$AH = E, this._$AN = void 0, this.element = t$7, this.name = i$10, this._$AM = e$14, this.options = h$7, s$9.length > 2 || "" !== s$9[0] || "" !== s$9[1] ? (this._$AH = Array(s$9.length - 1).fill(new String()), this.strings = s$9) : this._$AH = E;
+ }
+ _$AI(t$7, i$10 = this, s$9, e$14) {
+ const h$7 = this.strings;
+ let o$14 = !1;
+ if (void 0 === h$7) t$7 = S(this, t$7, i$10, 0), o$14 = !c$4(t$7) || t$7 !== this._$AH && t$7 !== T, o$14 && (this._$AH = t$7);
+ else {
+ const e$15 = t$7;
+ let n$11, r$11;
+ for (t$7 = h$7[0], n$11 = 0; n$11 < h$7.length - 1; n$11++) r$11 = S(this, e$15[s$9 + n$11], i$10, n$11), r$11 === T && (r$11 = this._$AH[n$11]), o$14 ||= !c$4(r$11) || r$11 !== this._$AH[n$11], r$11 === E ? t$7 = E : t$7 !== E && (t$7 += (r$11 ?? "") + h$7[n$11 + 1]), this._$AH[n$11] = r$11;
+ }
+ o$14 && !e$14 && this.j(t$7);
+ }
+ j(t$7) {
+ t$7 === E ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t$7 ?? "");
+ }
+};
+var H = class extends k {
+ constructor() {
+ super(...arguments), this.type = 3;
+ }
+ j(t$7) {
+ this.element[this.name] = t$7 === E ? void 0 : t$7;
+ }
+};
+var I = class extends k {
+ constructor() {
+ super(...arguments), this.type = 4;
+ }
+ j(t$7) {
+ this.element.toggleAttribute(this.name, !!t$7 && t$7 !== E);
+ }
+};
+var L = class extends k {
+ constructor(t$7, i$10, s$9, e$14, h$7) {
+ super(t$7, i$10, s$9, e$14, h$7), this.type = 5;
+ }
+ _$AI(t$7, i$10 = this) {
+ if ((t$7 = S(this, t$7, i$10, 0) ?? E) === T) return;
+ const s$9 = this._$AH, e$14 = t$7 === E && s$9 !== E || t$7.capture !== s$9.capture || t$7.once !== s$9.once || t$7.passive !== s$9.passive, h$7 = t$7 !== E && (s$9 === E || e$14);
+ e$14 && this.element.removeEventListener(this.name, this, s$9), h$7 && this.element.addEventListener(this.name, this, t$7), this._$AH = t$7;
+ }
+ handleEvent(t$7) {
+ "function" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t$7) : this._$AH.handleEvent(t$7);
+ }
+};
+var z = class {
+ constructor(t$7, i$10, s$9) {
+ this.element = t$7, this.type = 6, this._$AN = void 0, this._$AM = i$10, this.options = s$9;
+ }
+ get _$AU() {
+ return this._$AM._$AU;
+ }
+ _$AI(t$7) {
+ S(this, t$7);
+ }
+};
+const Z = {
+ M: e$11,
+ P: h$5,
+ A: o$11,
+ C: 1,
+ L: V,
+ R: M$1,
+ D: u$3,
+ V: S,
+ I: R,
+ H: k,
+ N: I,
+ U: L,
+ B: H,
+ F: z
+}, j = t$5.litHtmlPolyfillSupport;
+j?.(N, R), (t$5.litHtmlVersions ??= []).push("3.3.1");
+const B = (t$7, i$10, s$9) => {
+ const e$14 = s$9?.renderBefore ?? i$10;
+ let h$7 = e$14._$litPart$;
+ if (void 0 === h$7) {
+ const t$8 = s$9?.renderBefore ?? null;
+ e$14._$litPart$ = h$7 = new R(i$10.insertBefore(l$3(), t$8), t$8, void 0, s$9 ?? {});
+ }
+ return h$7._$AI(t$7), h$7;
+};
+
+//#endregion
+//#region node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const s$6 = globalThis;
+var i$1 = class extends y {
+ constructor() {
+ super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
+ }
+ createRenderRoot() {
+ const t$7 = super.createRenderRoot();
+ return this.renderOptions.renderBefore ??= t$7.firstChild, t$7;
+ }
+ update(t$7) {
+ const r$11 = this.render();
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t$7), this._$Do = B(r$11, this.renderRoot, this.renderOptions);
+ }
+ connectedCallback() {
+ super.connectedCallback(), this._$Do?.setConnected(!0);
+ }
+ disconnectedCallback() {
+ super.disconnectedCallback(), this._$Do?.setConnected(!1);
+ }
+ render() {
+ return T;
+ }
+};
+i$1._$litElement$ = !0, i$1["finalized"] = !0, s$6.litElementHydrateSupport?.({ LitElement: i$1 });
+const o$10 = s$6.litElementPolyfillSupport;
+o$10?.({ LitElement: i$1 });
+const n$7 = {
+ _$AK: (t$7, e$14, r$11) => {
+ t$7._$AK(e$14, r$11);
+ },
+ _$AL: (t$7) => t$7._$AL
+};
+(s$6.litElementVersions ??= []).push("4.2.1");
+
+//#endregion
+//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/is-server.js
+/**
+* @license
+* Copyright 2022 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+const o$9 = !1;
+
+//#endregion
+//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directive.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+const t$1 = {
+ ATTRIBUTE: 1,
+ CHILD: 2,
+ PROPERTY: 3,
+ BOOLEAN_ATTRIBUTE: 4,
+ EVENT: 5,
+ ELEMENT: 6
+}, e$1 = (t$7) => (...e$14) => ({
+ _$litDirective$: t$7,
+ values: e$14
+});
+var i$3 = class {
+ constructor(t$7) {}
+ get _$AU() {
+ return this._$AM._$AU;
+ }
+ _$AT(t$7, e$14, i$10) {
+ this._$Ct = t$7, this._$AM = e$14, this._$Ci = i$10;
+ }
+ _$AS(t$7, e$14) {
+ return this.update(t$7, e$14);
+ }
+ update(t$7, e$14) {
+ return this.render(...e$14);
+ }
+};
+
+//#endregion
+//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directive-helpers.js
+/**
+* @license
+* Copyright 2020 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const { I: t$4 } = Z, i$7 = (o$14) => null === o$14 || "object" != typeof o$14 && "function" != typeof o$14, n$6 = {
+ HTML: 1,
+ SVG: 2,
+ MATHML: 3
+}, e$10 = (o$14, t$7) => void 0 === t$7 ? void 0 !== o$14?._$litType$ : o$14?._$litType$ === t$7, l$2 = (o$14) => null != o$14?._$litType$?.h, d = (o$14) => void 0 !== o$14?._$litDirective$, c$3 = (o$14) => o$14?._$litDirective$, f$1 = (o$14) => void 0 === o$14.strings, r$8 = () => document.createComment(""), s$5 = (o$14, i$10, n$11) => {
+ const e$14 = o$14._$AA.parentNode, l$5 = void 0 === i$10 ? o$14._$AB : i$10._$AA;
+ if (void 0 === n$11) {
+ const i$11 = e$14.insertBefore(r$8(), l$5), d$3 = e$14.insertBefore(r$8(), l$5);
+ n$11 = new t$4(i$11, d$3, o$14, o$14.options);
+ } else {
+ const t$7 = n$11._$AB.nextSibling, i$11 = n$11._$AM, d$3 = i$11 !== o$14;
+ if (d$3) {
+ let t$8;
+ n$11._$AQ?.(o$14), n$11._$AM = o$14, void 0 !== n$11._$AP && (t$8 = o$14._$AU) !== i$11._$AU && n$11._$AP(t$8);
+ }
+ if (t$7 !== l$5 || d$3) {
+ let o$15 = n$11._$AA;
+ for (; o$15 !== t$7;) {
+ const t$8 = o$15.nextSibling;
+ e$14.insertBefore(o$15, l$5), o$15 = t$8;
+ }
+ }
+ }
+ return n$11;
+}, v = (o$14, t$7, i$10 = o$14) => (o$14._$AI(t$7, i$10), o$14), u$2 = {}, m$1 = (o$14, t$7 = u$2) => o$14._$AH = t$7, p = (o$14) => o$14._$AH, M = (o$14) => {
+ o$14._$AR(), o$14._$AA.remove();
+}, h$4 = (o$14) => {
+ o$14._$AR();
+};
+
+//#endregion
+//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/repeat.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+const u$1 = (e$14, s$9, t$7) => {
+ const r$11 = new Map();
+ for (let l$5 = s$9; l$5 <= t$7; l$5++) r$11.set(e$14[l$5], l$5);
+ return r$11;
+}, c = e$1(class extends i$3 {
+ constructor(e$14) {
+ if (super(e$14), e$14.type !== t$1.CHILD) throw Error("repeat() can only be used in text expressions");
+ }
+ dt(e$14, s$9, t$7) {
+ let r$11;
+ void 0 === t$7 ? t$7 = s$9 : void 0 !== s$9 && (r$11 = s$9);
+ const l$5 = [], o$14 = [];
+ let i$10 = 0;
+ for (const s$10 of e$14) l$5[i$10] = r$11 ? r$11(s$10, i$10) : i$10, o$14[i$10] = t$7(s$10, i$10), i$10++;
+ return {
+ values: o$14,
+ keys: l$5
+ };
+ }
+ render(e$14, s$9, t$7) {
+ return this.dt(e$14, s$9, t$7).values;
+ }
+ update(s$9, [t$7, r$11, c$7]) {
+ const d$3 = p(s$9), { values: p$3, keys: a$2 } = this.dt(t$7, r$11, c$7);
+ if (!Array.isArray(d$3)) return this.ut = a$2, p$3;
+ const h$7 = this.ut ??= [], v$2 = [];
+ let m$3, y$2, x$1 = 0, j$1 = d$3.length - 1, k$1 = 0, w$1 = p$3.length - 1;
+ for (; x$1 <= j$1 && k$1 <= w$1;) if (null === d$3[x$1]) x$1++;
+ else if (null === d$3[j$1]) j$1--;
+ else if (h$7[x$1] === a$2[k$1]) v$2[k$1] = v(d$3[x$1], p$3[k$1]), x$1++, k$1++;
+ else if (h$7[j$1] === a$2[w$1]) v$2[w$1] = v(d$3[j$1], p$3[w$1]), j$1--, w$1--;
+ else if (h$7[x$1] === a$2[w$1]) v$2[w$1] = v(d$3[x$1], p$3[w$1]), s$5(s$9, v$2[w$1 + 1], d$3[x$1]), x$1++, w$1--;
+ else if (h$7[j$1] === a$2[k$1]) v$2[k$1] = v(d$3[j$1], p$3[k$1]), s$5(s$9, d$3[x$1], d$3[j$1]), j$1--, k$1++;
+ else if (void 0 === m$3 && (m$3 = u$1(a$2, k$1, w$1), y$2 = u$1(h$7, x$1, j$1)), m$3.has(h$7[x$1])) if (m$3.has(h$7[j$1])) {
+ const e$14 = y$2.get(a$2[k$1]), t$8 = void 0 !== e$14 ? d$3[e$14] : null;
+ if (null === t$8) {
+ const e$15 = s$5(s$9, d$3[x$1]);
+ v(e$15, p$3[k$1]), v$2[k$1] = e$15;
+ } else v$2[k$1] = v(t$8, p$3[k$1]), s$5(s$9, d$3[x$1], t$8), d$3[e$14] = null;
+ k$1++;
+ } else M(d$3[j$1]), j$1--;
+ else M(d$3[x$1]), x$1++;
+ for (; k$1 <= w$1;) {
+ const e$14 = s$5(s$9, v$2[w$1 + 1]);
+ v(e$14, p$3[k$1]), v$2[k$1++] = e$14;
+ }
+ for (; x$1 <= j$1;) {
+ const e$14 = d$3[x$1++];
+ null !== e$14 && M(e$14);
+ }
+ return this.ut = a$2, m$1(s$9, v$2), T;
+ }
+});
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/context-request-event.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+var s$2 = class extends Event {
+ constructor(s$9, t$7, e$14, o$14) {
+ super("context-request", {
+ bubbles: !0,
+ composed: !0
+ }), this.context = s$9, this.contextTarget = t$7, this.callback = e$14, this.subscribe = o$14 ?? !1;
+ }
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/create-context.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+function n$3(n$11) {
+ return n$11;
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/controllers/context-consumer.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ var s$3 = class {
+ constructor(t$7, s$9, i$10, h$7) {
+ if (this.subscribe = !1, this.provided = !1, this.value = void 0, this.t = (t$8, s$10) => {
+ this.unsubscribe && (this.unsubscribe !== s$10 && (this.provided = !1, this.unsubscribe()), this.subscribe || this.unsubscribe()), this.value = t$8, this.host.requestUpdate(), this.provided && !this.subscribe || (this.provided = !0, this.callback && this.callback(t$8, s$10)), this.unsubscribe = s$10;
+ }, this.host = t$7, void 0 !== s$9.context) {
+ const t$8 = s$9;
+ this.context = t$8.context, this.callback = t$8.callback, this.subscribe = t$8.subscribe ?? !1;
+ } else this.context = s$9, this.callback = i$10, this.subscribe = h$7 ?? !1;
+ this.host.addController(this);
+ }
+ hostConnected() {
+ this.dispatchRequest();
+ }
+ hostDisconnected() {
+ this.unsubscribe && (this.unsubscribe(), this.unsubscribe = void 0);
+ }
+ dispatchRequest() {
+ this.host.dispatchEvent(new s$2(this.context, this.host, this.t, this.subscribe));
+ }
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/value-notifier.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+var s$4 = class {
+ get value() {
+ return this.o;
+ }
+ set value(s$9) {
+ this.setValue(s$9);
+ }
+ setValue(s$9, t$7 = !1) {
+ const i$10 = t$7 || !Object.is(s$9, this.o);
+ this.o = s$9, i$10 && this.updateObservers();
+ }
+ constructor(s$9) {
+ this.subscriptions = new Map(), this.updateObservers = () => {
+ for (const [s$10, { disposer: t$7 }] of this.subscriptions) s$10(this.o, t$7);
+ }, void 0 !== s$9 && (this.value = s$9);
+ }
+ addCallback(s$9, t$7, i$10) {
+ if (!i$10) return void s$9(this.value);
+ this.subscriptions.has(s$9) || this.subscriptions.set(s$9, {
+ disposer: () => {
+ this.subscriptions.delete(s$9);
+ },
+ consumerHost: t$7
+ });
+ const { disposer: h$7 } = this.subscriptions.get(s$9);
+ s$9(this.value, h$7);
+ }
+ clearCallbacks() {
+ this.subscriptions.clear();
+ }
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/controllers/context-provider.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ var e$9 = class extends Event {
+ constructor(t$7, s$9) {
+ super("context-provider", {
+ bubbles: !0,
+ composed: !0
+ }), this.context = t$7, this.contextTarget = s$9;
+ }
+};
+var i$2 = class extends s$4 {
+ constructor(s$9, e$14, i$10) {
+ super(void 0 !== e$14.context ? e$14.initialValue : i$10), this.onContextRequest = (t$7) => {
+ if (t$7.context !== this.context) return;
+ const s$10 = t$7.contextTarget ?? t$7.composedPath()[0];
+ s$10 !== this.host && (t$7.stopPropagation(), this.addCallback(t$7.callback, s$10, t$7.subscribe));
+ }, this.onProviderRequest = (s$10) => {
+ if (s$10.context !== this.context) return;
+ if ((s$10.contextTarget ?? s$10.composedPath()[0]) === this.host) return;
+ const e$15 = new Set();
+ for (const [s$11, { consumerHost: i$11 }] of this.subscriptions) e$15.has(s$11) || (e$15.add(s$11), i$11.dispatchEvent(new s$2(this.context, i$11, s$11, !0)));
+ s$10.stopPropagation();
+ }, this.host = s$9, void 0 !== e$14.context ? this.context = e$14.context : this.context = e$14, this.attachListeners(), this.host.addController?.(this);
+ }
+ attachListeners() {
+ this.host.addEventListener("context-request", this.onContextRequest), this.host.addEventListener("context-provider", this.onProviderRequest);
+ }
+ hostConnected() {
+ this.host.dispatchEvent(new e$9(this.context, this.host));
+ }
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/context-root.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ var t$3 = class {
+ constructor() {
+ this.pendingContextRequests = new Map(), this.onContextProvider = (t$7) => {
+ const s$9 = this.pendingContextRequests.get(t$7.context);
+ if (void 0 === s$9) return;
+ this.pendingContextRequests.delete(t$7.context);
+ const { requests: o$14 } = s$9;
+ for (const { elementRef: s$10, callbackRef: n$11 } of o$14) {
+ const o$15 = s$10.deref(), c$7 = n$11.deref();
+ void 0 === o$15 || void 0 === c$7 || o$15.dispatchEvent(new s$2(t$7.context, o$15, c$7, !0));
+ }
+ }, this.onContextRequest = (e$14) => {
+ if (!0 !== e$14.subscribe) return;
+ const t$7 = e$14.contextTarget ?? e$14.composedPath()[0], s$9 = e$14.callback;
+ let o$14 = this.pendingContextRequests.get(e$14.context);
+ void 0 === o$14 && this.pendingContextRequests.set(e$14.context, o$14 = {
+ callbacks: new WeakMap(),
+ requests: []
+ });
+ let n$11 = o$14.callbacks.get(t$7);
+ void 0 === n$11 && o$14.callbacks.set(t$7, n$11 = new WeakSet()), n$11.has(s$9) || (n$11.add(s$9), o$14.requests.push({
+ elementRef: new WeakRef(t$7),
+ callbackRef: new WeakRef(s$9)
+ }));
+ };
+ }
+ attach(e$14) {
+ e$14.addEventListener("context-request", this.onContextRequest), e$14.addEventListener("context-provider", this.onContextProvider);
+ }
+ detach(e$14) {
+ e$14.removeEventListener("context-request", this.onContextRequest), e$14.removeEventListener("context-provider", this.onContextProvider);
+ }
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/decorators/provide.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ function e$8({ context: e$14 }) {
+ return (n$11, i$10) => {
+ const r$11 = new WeakMap();
+ if ("object" == typeof i$10) return {
+ get() {
+ return n$11.get.call(this);
+ },
+ set(t$7) {
+ return r$11.get(this).setValue(t$7), n$11.set.call(this, t$7);
+ },
+ init(n$12) {
+ return r$11.set(this, new i$2(this, {
+ context: e$14,
+ initialValue: n$12
+ })), n$12;
+ }
+ };
+ {
+ n$11.constructor.addInitializer(((n$12) => {
+ r$11.set(n$12, new i$2(n$12, { context: e$14 }));
+ }));
+ const o$14 = Object.getOwnPropertyDescriptor(n$11, i$10);
+ let s$9;
+ if (void 0 === o$14) {
+ const t$7 = new WeakMap();
+ s$9 = {
+ get() {
+ return t$7.get(this);
+ },
+ set(e$15) {
+ r$11.get(this).setValue(e$15), t$7.set(this, e$15);
+ },
+ configurable: !0,
+ enumerable: !0
+ };
+ } else {
+ const t$7 = o$14.set;
+ s$9 = {
+ ...o$14,
+ set(e$15) {
+ r$11.get(this).setValue(e$15), t$7?.call(this, e$15);
+ }
+ };
+ }
+ return void Object.defineProperty(n$11, i$10, s$9);
+ }
+ };
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/lib/decorators/consume.js
+/**
+* @license
+* Copyright 2022 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ function c$1({ context: c$7, subscribe: e$14 }) {
+ return (o$14, n$11) => {
+ "object" == typeof n$11 ? n$11.addInitializer((function() {
+ new s$3(this, {
+ context: c$7,
+ callback: (t$7) => {
+ o$14.set.call(this, t$7);
+ },
+ subscribe: e$14
+ });
+ })) : o$14.constructor.addInitializer(((o$15) => {
+ new s$3(o$15, {
+ context: c$7,
+ callback: (t$7) => {
+ o$15[n$11] = t$7;
+ },
+ subscribe: e$14
+ });
+ }));
+ };
+}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/events/events.js
+const eventInit = {
+ bubbles: true,
+ cancelable: true,
+ composed: true
+};
+var StateEvent = class StateEvent extends CustomEvent {
+ static {
+ this.eventName = "a2uiaction";
+ }
+ constructor(payload) {
+ super(StateEvent.eventName, {
+ detail: payload,
+ ...eventInit
+ });
+ this.payload = payload;
+ }
+};
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.js
+const opacityBehavior = `
+ &:not([disabled]) {
+ cursor: pointer;
+ opacity: var(--opacity, 0);
+ transition: opacity var(--speed, 0.2s) cubic-bezier(0, 0, 0.3, 1);
+
+ &:hover,
+ &:focus {
+ opacity: 1;
+ }
+ }`;
+const behavior = `
+ ${new Array(21).fill(0).map((_$1, idx) => {
+ return `.behavior-ho-${idx * 5} {
+ --opacity: ${idx / 20};
+ ${opacityBehavior}
+ }`;
+}).join("\n")}
+
+ .behavior-o-s {
+ overflow: scroll;
+ }
+
+ .behavior-o-a {
+ overflow: auto;
+ }
+
+ .behavior-o-h {
+ overflow: hidden;
+ }
+
+ .behavior-sw-n {
+ scrollbar-width: none;
+ }
+`;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.js
+const grid = 4;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.js
+const border = `
+ ${new Array(25).fill(0).map((_$1, idx) => {
+ return `
+ .border-bw-${idx} { border-width: ${idx}px; }
+ .border-btw-${idx} { border-top-width: ${idx}px; }
+ .border-bbw-${idx} { border-bottom-width: ${idx}px; }
+ .border-blw-${idx} { border-left-width: ${idx}px; }
+ .border-brw-${idx} { border-right-width: ${idx}px; }
+
+ .border-ow-${idx} { outline-width: ${idx}px; }
+ .border-br-${idx} { border-radius: ${idx * grid}px; overflow: hidden;}`;
+}).join("\n")}
+
+ .border-br-50pc {
+ border-radius: 50%;
+ }
+
+ .border-bs-s {
+ border-style: solid;
+ }
+`;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.js
+const shades = [
+ 0,
+ 5,
+ 10,
+ 15,
+ 20,
+ 25,
+ 30,
+ 35,
+ 40,
+ 50,
+ 60,
+ 70,
+ 80,
+ 90,
+ 95,
+ 98,
+ 99,
+ 100
+];
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.js
+function merge(...classes) {
+ const styles = {};
+ for (const clazz of classes) {
+ for (const [key, val] of Object.entries(clazz)) {
+ const prefix = key.split("-").with(-1, "").join("-");
+ const existingKeys = Object.keys(styles).filter((key$1) => key$1.startsWith(prefix));
+ for (const existingKey of existingKeys) {
+ delete styles[existingKey];
+ }
+ styles[key] = val;
+ }
+ }
+ return styles;
+}
+function appendToAll(target, exclusions, ...classes) {
+ const updatedTarget = structuredClone(target);
+ for (const clazz of classes) {
+ for (const key of Object.keys(clazz)) {
+ const prefix = key.split("-").with(-1, "").join("-");
+ for (const [tagName, classesToAdd] of Object.entries(updatedTarget)) {
+ if (exclusions.includes(tagName)) {
+ continue;
+ }
+ let found = false;
+ for (let t$7 = 0; t$7 < classesToAdd.length; t$7++) {
+ if (classesToAdd[t$7].startsWith(prefix)) {
+ found = true;
+ classesToAdd[t$7] = key;
+ }
+ }
+ if (!found) {
+ classesToAdd.push(key);
+ }
+ }
+ }
+ }
+ return updatedTarget;
+}
+function createThemeStyles(palettes) {
+ const styles = {};
+ for (const palette of Object.values(palettes)) {
+ for (const [key, val] of Object.entries(palette)) {
+ const prop = toProp(key);
+ styles[prop] = val;
+ }
+ }
+ return styles;
+}
+function toProp(key) {
+ if (key.startsWith("nv")) {
+ return `--nv-${key.slice(2)}`;
+ }
+ return `--${key[0]}-${key.slice(1)}`;
+}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.js
+const color = (src) => `
+ ${src.map((key) => {
+ const inverseKey = getInverseKey(key);
+ return `.color-bc-${key} { border-color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`;
+}).join("\n")}
+
+ ${src.map((key) => {
+ const inverseKey = getInverseKey(key);
+ const vals = [`.color-bgc-${key} { background-color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`, `.color-bbgc-${key}::backdrop { background-color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`];
+ for (let o$14 = .1; o$14 < 1; o$14 += .1) {
+ vals.push(`.color-bbgc-${key}_${(o$14 * 100).toFixed(0)}::backdrop {
+ background-color: light-dark(oklch(from var(${toProp(key)}) l c h / calc(alpha * ${o$14.toFixed(1)})), oklch(from var(${toProp(inverseKey)}) l c h / calc(alpha * ${o$14.toFixed(1)})) );
+ }
+ `);
+ }
+ return vals.join("\n");
+}).join("\n")}
+
+ ${src.map((key) => {
+ const inverseKey = getInverseKey(key);
+ return `.color-c-${key} { color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`;
+}).join("\n")}
+ `;
+const getInverseKey = (key) => {
+ const match = key.match(/^([a-z]+)(\d+)$/);
+ if (!match) return key;
+ const [, prefix, shadeStr] = match;
+ const shade = parseInt(shadeStr, 10);
+ const target = 100 - shade;
+ const inverseShade = shades.reduce((prev, curr) => Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev);
+ return `${prefix}${inverseShade}`;
+};
+const keyFactory = (prefix) => {
+ return shades.map((v$2) => `${prefix}${v$2}`);
+};
+const colors = [
+ color(keyFactory("p")),
+ color(keyFactory("s")),
+ color(keyFactory("t")),
+ color(keyFactory("n")),
+ color(keyFactory("nv")),
+ color(keyFactory("e")),
+ `
+ .color-bgc-transparent {
+ background-color: transparent;
+ }
+
+ :host {
+ color-scheme: var(--color-scheme);
+ }
+ `
+];
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.js
+/**
+* CSS classes for Google Symbols.
+*
+* Usage:
+*
+* ```html
+*
+* ```
+*/
+const icons = `
+ .g-icon {
+ font-family: "Material Symbols Outlined", "Google Symbols";
+ font-weight: normal;
+ font-style: normal;
+ font-display: optional;
+ font-size: 20px;
+ width: 1em;
+ height: 1em;
+ user-select: none;
+ line-height: 1;
+ letter-spacing: normal;
+ text-transform: none;
+ display: inline-block;
+ white-space: nowrap;
+ word-wrap: normal;
+ direction: ltr;
+ -webkit-font-feature-settings: "liga";
+ -webkit-font-smoothing: antialiased;
+ overflow: hidden;
+
+ font-variation-settings: "FILL" 0, "wght" 300, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+
+ &.filled {
+ font-variation-settings: "FILL" 1, "wght" 300, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+ }
+
+ &.filled-heavy {
+ font-variation-settings: "FILL" 1, "wght" 700, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+ }
+ }
+`;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.js
+const layout = `
+ :host {
+ ${new Array(16).fill(0).map((_$1, idx) => {
+ return `--g-${idx + 1}: ${(idx + 1) * grid}px;`;
+}).join("\n")}
+ }
+
+ ${new Array(49).fill(0).map((_$1, index) => {
+ const idx = index - 24;
+ const lbl = idx < 0 ? `n${Math.abs(idx)}` : idx.toString();
+ return `
+ .layout-p-${lbl} { --padding: ${idx * grid}px; padding: var(--padding); }
+ .layout-pt-${lbl} { padding-top: ${idx * grid}px; }
+ .layout-pr-${lbl} { padding-right: ${idx * grid}px; }
+ .layout-pb-${lbl} { padding-bottom: ${idx * grid}px; }
+ .layout-pl-${lbl} { padding-left: ${idx * grid}px; }
+
+ .layout-m-${lbl} { --margin: ${idx * grid}px; margin: var(--margin); }
+ .layout-mt-${lbl} { margin-top: ${idx * grid}px; }
+ .layout-mr-${lbl} { margin-right: ${idx * grid}px; }
+ .layout-mb-${lbl} { margin-bottom: ${idx * grid}px; }
+ .layout-ml-${lbl} { margin-left: ${idx * grid}px; }
+
+ .layout-t-${lbl} { top: ${idx * grid}px; }
+ .layout-r-${lbl} { right: ${idx * grid}px; }
+ .layout-b-${lbl} { bottom: ${idx * grid}px; }
+ .layout-l-${lbl} { left: ${idx * grid}px; }`;
+}).join("\n")}
+
+ ${new Array(25).fill(0).map((_$1, idx) => {
+ return `
+ .layout-g-${idx} { gap: ${idx * grid}px; }`;
+}).join("\n")}
+
+ ${new Array(8).fill(0).map((_$1, idx) => {
+ return `
+ .layout-grd-col${idx + 1} { grid-template-columns: ${"1fr ".repeat(idx + 1).trim()}; }`;
+}).join("\n")}
+
+ .layout-pos-a {
+ position: absolute;
+ }
+
+ .layout-pos-rel {
+ position: relative;
+ }
+
+ .layout-dsp-none {
+ display: none;
+ }
+
+ .layout-dsp-block {
+ display: block;
+ }
+
+ .layout-dsp-grid {
+ display: grid;
+ }
+
+ .layout-dsp-iflex {
+ display: inline-flex;
+ }
+
+ .layout-dsp-flexvert {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .layout-dsp-flexhor {
+ display: flex;
+ flex-direction: row;
+ }
+
+ .layout-fw-w {
+ flex-wrap: wrap;
+ }
+
+ .layout-al-fs {
+ align-items: start;
+ }
+
+ .layout-al-fe {
+ align-items: end;
+ }
+
+ .layout-al-c {
+ align-items: center;
+ }
+
+ .layout-as-n {
+ align-self: normal;
+ }
+
+ .layout-js-c {
+ justify-self: center;
+ }
+
+ .layout-sp-c {
+ justify-content: center;
+ }
+
+ .layout-sp-ev {
+ justify-content: space-evenly;
+ }
+
+ .layout-sp-bt {
+ justify-content: space-between;
+ }
+
+ .layout-sp-s {
+ justify-content: start;
+ }
+
+ .layout-sp-e {
+ justify-content: end;
+ }
+
+ .layout-ji-e {
+ justify-items: end;
+ }
+
+ .layout-r-none {
+ resize: none;
+ }
+
+ .layout-fs-c {
+ field-sizing: content;
+ }
+
+ .layout-fs-n {
+ field-sizing: none;
+ }
+
+ .layout-flx-0 {
+ flex: 0 0 auto;
+ }
+
+ .layout-flx-1 {
+ flex: 1 0 auto;
+ }
+
+ .layout-c-s {
+ contain: strict;
+ }
+
+ /** Widths **/
+
+ ${new Array(10).fill(0).map((_$1, idx) => {
+ const weight = (idx + 1) * 10;
+ return `.layout-w-${weight} { width: ${weight}%; max-width: ${weight}%; }`;
+}).join("\n")}
+
+ ${new Array(16).fill(0).map((_$1, idx) => {
+ const weight = idx * grid;
+ return `.layout-wp-${idx} { width: ${weight}px; }`;
+}).join("\n")}
+
+ /** Heights **/
+
+ ${new Array(10).fill(0).map((_$1, idx) => {
+ const height = (idx + 1) * 10;
+ return `.layout-h-${height} { height: ${height}%; }`;
+}).join("\n")}
+
+ ${new Array(16).fill(0).map((_$1, idx) => {
+ const height = idx * grid;
+ return `.layout-hp-${idx} { height: ${height}px; }`;
+}).join("\n")}
+
+ .layout-el-cv {
+ & img,
+ & video {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ margin: 0;
+ }
+ }
+
+ .layout-ar-sq {
+ aspect-ratio: 1 / 1;
+ }
+
+ .layout-ex-fb {
+ margin: calc(var(--padding) * -1) 0 0 calc(var(--padding) * -1);
+ width: calc(100% + var(--padding) * 2);
+ height: calc(100% + var(--padding) * 2);
+ }
+`;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.js
+const opacity = `
+ ${new Array(21).fill(0).map((_$1, idx) => {
+ return `.opacity-el-${idx * 5} { opacity: ${idx / 20}; }`;
+}).join("\n")}
+`;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.js
+const type$1 = `
+ :host {
+ --default-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ --default-font-family-mono: "Courier New", Courier, monospace;
+ }
+
+ .typography-f-s {
+ font-family: var(--font-family, var(--default-font-family));
+ font-optical-sizing: auto;
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0;
+ }
+
+ .typography-f-sf {
+ font-family: var(--font-family-flex, var(--default-font-family));
+ font-optical-sizing: auto;
+ }
+
+ .typography-f-c {
+ font-family: var(--font-family-mono, var(--default-font-family));
+ font-optical-sizing: auto;
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0;
+ }
+
+ .typography-v-r {
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0, "ROND" 100;
+ }
+
+ .typography-ta-s {
+ text-align: start;
+ }
+
+ .typography-ta-c {
+ text-align: center;
+ }
+
+ .typography-fs-n {
+ font-style: normal;
+ }
+
+ .typography-fs-i {
+ font-style: italic;
+ }
+
+ .typography-sz-ls {
+ font-size: 11px;
+ line-height: 16px;
+ }
+
+ .typography-sz-lm {
+ font-size: 12px;
+ line-height: 16px;
+ }
+
+ .typography-sz-ll {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-bs {
+ font-size: 12px;
+ line-height: 16px;
+ }
+
+ .typography-sz-bm {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-bl {
+ font-size: 16px;
+ line-height: 24px;
+ }
+
+ .typography-sz-ts {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-tm {
+ font-size: 16px;
+ line-height: 24px;
+ }
+
+ .typography-sz-tl {
+ font-size: 22px;
+ line-height: 28px;
+ }
+
+ .typography-sz-hs {
+ font-size: 24px;
+ line-height: 32px;
+ }
+
+ .typography-sz-hm {
+ font-size: 28px;
+ line-height: 36px;
+ }
+
+ .typography-sz-hl {
+ font-size: 32px;
+ line-height: 40px;
+ }
+
+ .typography-sz-ds {
+ font-size: 36px;
+ line-height: 44px;
+ }
+
+ .typography-sz-dm {
+ font-size: 45px;
+ line-height: 52px;
+ }
+
+ .typography-sz-dl {
+ font-size: 57px;
+ line-height: 64px;
+ }
+
+ .typography-ws-p {
+ white-space: pre-line;
+ }
+
+ .typography-ws-nw {
+ white-space: nowrap;
+ }
+
+ .typography-td-none {
+ text-decoration: none;
+ }
+
+ /** Weights **/
+
+ ${new Array(9).fill(0).map((_$1, idx) => {
+ const weight = (idx + 1) * 100;
+ return `.typography-w-${weight} { font-weight: ${weight}; }`;
+}).join("\n")}
+`;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.js
+const structuralStyles$1 = [
+ behavior,
+ border,
+ colors,
+ icons,
+ layout,
+ opacity,
+ type$1
+].flat(Infinity).join("\n");
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.js
+var guards_exports = /* @__PURE__ */ __export({
+ isComponentArrayReference: () => isComponentArrayReference,
+ isObject: () => isObject$1,
+ isPath: () => isPath,
+ isResolvedAudioPlayer: () => isResolvedAudioPlayer,
+ isResolvedButton: () => isResolvedButton,
+ isResolvedCard: () => isResolvedCard,
+ isResolvedCheckbox: () => isResolvedCheckbox,
+ isResolvedColumn: () => isResolvedColumn,
+ isResolvedDateTimeInput: () => isResolvedDateTimeInput,
+ isResolvedDivider: () => isResolvedDivider,
+ isResolvedIcon: () => isResolvedIcon,
+ isResolvedImage: () => isResolvedImage,
+ isResolvedList: () => isResolvedList,
+ isResolvedModal: () => isResolvedModal,
+ isResolvedMultipleChoice: () => isResolvedMultipleChoice,
+ isResolvedRow: () => isResolvedRow,
+ isResolvedSlider: () => isResolvedSlider,
+ isResolvedTabs: () => isResolvedTabs,
+ isResolvedText: () => isResolvedText,
+ isResolvedTextField: () => isResolvedTextField,
+ isResolvedVideo: () => isResolvedVideo,
+ isValueMap: () => isValueMap
+});
+function isValueMap(value) {
+ return isObject$1(value) && "key" in value;
+}
+function isPath(key, value) {
+ return key === "path" && typeof value === "string";
+}
+function isObject$1(value) {
+ return typeof value === "object" && value !== null && !Array.isArray(value);
+}
+function isComponentArrayReference(value) {
+ if (!isObject$1(value)) return false;
+ return "explicitList" in value || "template" in value;
+}
+function isStringValue(value) {
+ return isObject$1(value) && ("path" in value || "literal" in value && typeof value.literal === "string" || "literalString" in value);
+}
+function isNumberValue(value) {
+ return isObject$1(value) && ("path" in value || "literal" in value && typeof value.literal === "number" || "literalNumber" in value);
+}
+function isBooleanValue(value) {
+ return isObject$1(value) && ("path" in value || "literal" in value && typeof value.literal === "boolean" || "literalBoolean" in value);
+}
+function isAnyComponentNode(value) {
+ if (!isObject$1(value)) return false;
+ const hasBaseKeys = "id" in value && "type" in value && "properties" in value;
+ if (!hasBaseKeys) return false;
+ return true;
+}
+function isResolvedAudioPlayer(props) {
+ return isObject$1(props) && "url" in props && isStringValue(props.url);
+}
+function isResolvedButton(props) {
+ return isObject$1(props) && "child" in props && isAnyComponentNode(props.child) && "action" in props;
+}
+function isResolvedCard(props) {
+ if (!isObject$1(props)) return false;
+ if (!("child" in props)) {
+ if (!("children" in props)) {
+ return false;
+ } else {
+ return Array.isArray(props.children) && props.children.every(isAnyComponentNode);
+ }
+ }
+ return isAnyComponentNode(props.child);
+}
+function isResolvedCheckbox(props) {
+ return isObject$1(props) && "label" in props && isStringValue(props.label) && "value" in props && isBooleanValue(props.value);
+}
+function isResolvedColumn(props) {
+ return isObject$1(props) && "children" in props && Array.isArray(props.children) && props.children.every(isAnyComponentNode);
+}
+function isResolvedDateTimeInput(props) {
+ return isObject$1(props) && "value" in props && isStringValue(props.value);
+}
+function isResolvedDivider(props) {
+ return isObject$1(props);
+}
+function isResolvedImage(props) {
+ return isObject$1(props) && "url" in props && isStringValue(props.url);
+}
+function isResolvedIcon(props) {
+ return isObject$1(props) && "name" in props && isStringValue(props.name);
+}
+function isResolvedList(props) {
+ return isObject$1(props) && "children" in props && Array.isArray(props.children) && props.children.every(isAnyComponentNode);
+}
+function isResolvedModal(props) {
+ return isObject$1(props) && "entryPointChild" in props && isAnyComponentNode(props.entryPointChild) && "contentChild" in props && isAnyComponentNode(props.contentChild);
+}
+function isResolvedMultipleChoice(props) {
+ return isObject$1(props) && "selections" in props;
+}
+function isResolvedRow(props) {
+ return isObject$1(props) && "children" in props && Array.isArray(props.children) && props.children.every(isAnyComponentNode);
+}
+function isResolvedSlider(props) {
+ return isObject$1(props) && "value" in props && isNumberValue(props.value);
+}
+function isResolvedTabItem(item) {
+ return isObject$1(item) && "title" in item && isStringValue(item.title) && "child" in item && isAnyComponentNode(item.child);
+}
+function isResolvedTabs(props) {
+ return isObject$1(props) && "tabItems" in props && Array.isArray(props.tabItems) && props.tabItems.every(isResolvedTabItem);
+}
+function isResolvedText(props) {
+ return isObject$1(props) && "text" in props && isStringValue(props.text);
+}
+function isResolvedTextField(props) {
+ return isObject$1(props) && "label" in props && isStringValue(props.label);
+}
+function isResolvedVideo(props) {
+ return isObject$1(props) && "url" in props && isStringValue(props.url);
+}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.js
+/**
+* Processes and consolidates A2UIProtocolMessage objects into a structured,
+* hierarchical model of UI surfaces.
+*/
+var A2uiMessageProcessor = class A2uiMessageProcessor {
+ static {
+ this.DEFAULT_SURFACE_ID = "@default";
+ }
+ #mapCtor = Map;
+ #arrayCtor = Array;
+ #setCtor = Set;
+ #objCtor = Object;
+ #surfaces;
+ constructor(opts = {
+ mapCtor: Map,
+ arrayCtor: Array,
+ setCtor: Set,
+ objCtor: Object
+ }) {
+ this.opts = opts;
+ this.#arrayCtor = opts.arrayCtor;
+ this.#mapCtor = opts.mapCtor;
+ this.#setCtor = opts.setCtor;
+ this.#objCtor = opts.objCtor;
+ this.#surfaces = new opts.mapCtor();
+ }
+ getSurfaces() {
+ return this.#surfaces;
+ }
+ clearSurfaces() {
+ this.#surfaces.clear();
+ }
+ processMessages(messages) {
+ for (const message of messages) {
+ if (message.beginRendering) {
+ this.#handleBeginRendering(message.beginRendering, message.beginRendering.surfaceId);
+ }
+ if (message.surfaceUpdate) {
+ this.#handleSurfaceUpdate(message.surfaceUpdate, message.surfaceUpdate.surfaceId);
+ }
+ if (message.dataModelUpdate) {
+ this.#handleDataModelUpdate(message.dataModelUpdate, message.dataModelUpdate.surfaceId);
+ }
+ if (message.deleteSurface) {
+ this.#handleDeleteSurface(message.deleteSurface);
+ }
+ }
+ }
+ /**
+ * Retrieves the data for a given component node and a relative path string.
+ * This correctly handles the special `.` path, which refers to the node's
+ * own data context.
+ */
+ getData(node, relativePath, surfaceId = A2uiMessageProcessor.DEFAULT_SURFACE_ID) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ if (!surface) return null;
+ let finalPath;
+ if (relativePath === "." || relativePath === "") {
+ finalPath = node.dataContextPath ?? "/";
+ } else {
+ finalPath = this.resolvePath(relativePath, node.dataContextPath);
+ }
+ return this.#getDataByPath(surface.dataModel, finalPath);
+ }
+ setData(node, relativePath, value, surfaceId = A2uiMessageProcessor.DEFAULT_SURFACE_ID) {
+ if (!node) {
+ console.warn("No component node set");
+ return;
+ }
+ const surface = this.#getOrCreateSurface(surfaceId);
+ if (!surface) return;
+ let finalPath;
+ if (relativePath === "." || relativePath === "") {
+ finalPath = node.dataContextPath ?? "/";
+ } else {
+ finalPath = this.resolvePath(relativePath, node.dataContextPath);
+ }
+ this.#setDataByPath(surface.dataModel, finalPath, value);
+ }
+ resolvePath(path, dataContextPath) {
+ if (path.startsWith("/")) {
+ return path;
+ }
+ if (dataContextPath && dataContextPath !== "/") {
+ return dataContextPath.endsWith("/") ? `${dataContextPath}${path}` : `${dataContextPath}/${path}`;
+ }
+ return `/${path}`;
+ }
+ #parseIfJsonString(value) {
+ if (typeof value !== "string") {
+ return value;
+ }
+ const trimmedValue = value.trim();
+ if (trimmedValue.startsWith("{") && trimmedValue.endsWith("}") || trimmedValue.startsWith("[") && trimmedValue.endsWith("]")) {
+ try {
+ return JSON.parse(value);
+ } catch (e$14) {
+ console.warn(`Failed to parse potential JSON string: "${value.substring(0, 50)}..."`, e$14);
+ return value;
+ }
+ }
+ return value;
+ }
+ /**
+ * Converts a specific array format [{key: "...", value_string: "..."}, ...]
+ * into a standard Map. It also attempts to parse any string values that
+ * appear to be stringified JSON.
+ */
+ #convertKeyValueArrayToMap(arr) {
+ const map$1 = new this.#mapCtor();
+ for (const item of arr) {
+ if (!isObject$1(item) || !("key" in item)) continue;
+ const key = item.key;
+ const valueKey = this.#findValueKey(item);
+ if (!valueKey) continue;
+ let value = item[valueKey];
+ if (valueKey === "valueMap" && Array.isArray(value)) {
+ value = this.#convertKeyValueArrayToMap(value);
+ } else if (typeof value === "string") {
+ value = this.#parseIfJsonString(value);
+ }
+ this.#setDataByPath(map$1, key, value);
+ }
+ return map$1;
+ }
+ #setDataByPath(root, path, value) {
+ if (Array.isArray(value) && (value.length === 0 || isObject$1(value[0]) && "key" in value[0])) {
+ if (value.length === 1 && isObject$1(value[0]) && value[0].key === ".") {
+ const item = value[0];
+ const valueKey = this.#findValueKey(item);
+ if (valueKey) {
+ value = item[valueKey];
+ if (valueKey === "valueMap" && Array.isArray(value)) {
+ value = this.#convertKeyValueArrayToMap(value);
+ } else if (typeof value === "string") {
+ value = this.#parseIfJsonString(value);
+ }
+ } else {
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ } else {
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ }
+ const segments = this.#normalizePath(path).split("/").filter((s$9) => s$9);
+ if (segments.length === 0) {
+ if (value instanceof Map || isObject$1(value)) {
+ if (!(value instanceof Map) && isObject$1(value)) {
+ value = new this.#mapCtor(Object.entries(value));
+ }
+ root.clear();
+ for (const [key, v$2] of value.entries()) {
+ root.set(key, v$2);
+ }
+ } else {
+ console.error("Cannot set root of DataModel to a non-Map value.");
+ }
+ return;
+ }
+ let current = root;
+ for (let i$10 = 0; i$10 < segments.length - 1; i$10++) {
+ const segment = segments[i$10];
+ let target;
+ if (current instanceof Map) {
+ target = current.get(segment);
+ } else if (Array.isArray(current) && /^\d+$/.test(segment)) {
+ target = current[parseInt(segment, 10)];
+ }
+ if (target === undefined || typeof target !== "object" || target === null) {
+ target = new this.#mapCtor();
+ if (current instanceof this.#mapCtor) {
+ current.set(segment, target);
+ } else if (Array.isArray(current)) {
+ current[parseInt(segment, 10)] = target;
+ }
+ }
+ current = target;
+ }
+ const finalSegment = segments[segments.length - 1];
+ const storedValue = value;
+ if (current instanceof this.#mapCtor) {
+ current.set(finalSegment, storedValue);
+ } else if (Array.isArray(current) && /^\d+$/.test(finalSegment)) {
+ current[parseInt(finalSegment, 10)] = storedValue;
+ }
+ }
+ /**
+ * Normalizes a path string into a consistent, slash-delimited format.
+ * Converts bracket notation and dot notation in a two-pass.
+ * e.g., "bookRecommendations[0].title" -> "/bookRecommendations/0/title"
+ * e.g., "book.0.title" -> "/book/0/title"
+ */
+ #normalizePath(path) {
+ const dotPath = path.replace(/\[(\d+)\]/g, ".$1");
+ const segments = dotPath.split(".");
+ return "/" + segments.filter((s$9) => s$9.length > 0).join("/");
+ }
+ #getDataByPath(root, path) {
+ const segments = this.#normalizePath(path).split("/").filter((s$9) => s$9);
+ let current = root;
+ for (const segment of segments) {
+ if (current === undefined || current === null) return null;
+ if (current instanceof Map) {
+ current = current.get(segment);
+ } else if (Array.isArray(current) && /^\d+$/.test(segment)) {
+ current = current[parseInt(segment, 10)];
+ } else if (isObject$1(current)) {
+ current = current[segment];
+ } else {
+ return null;
+ }
+ }
+ return current;
+ }
+ #getOrCreateSurface(surfaceId) {
+ let surface = this.#surfaces.get(surfaceId);
+ if (!surface) {
+ surface = new this.#objCtor({
+ rootComponentId: null,
+ componentTree: null,
+ dataModel: new this.#mapCtor(),
+ components: new this.#mapCtor(),
+ styles: new this.#objCtor()
+ });
+ this.#surfaces.set(surfaceId, surface);
+ }
+ return surface;
+ }
+ #handleBeginRendering(message, surfaceId) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ surface.rootComponentId = message.root;
+ surface.styles = message.styles ?? {};
+ this.#rebuildComponentTree(surface);
+ }
+ #handleSurfaceUpdate(message, surfaceId) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ for (const component of message.components) {
+ surface.components.set(component.id, component);
+ }
+ this.#rebuildComponentTree(surface);
+ }
+ #handleDataModelUpdate(message, surfaceId) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ const path = message.path ?? "/";
+ this.#setDataByPath(surface.dataModel, path, message.contents);
+ this.#rebuildComponentTree(surface);
+ }
+ #handleDeleteSurface(message) {
+ this.#surfaces.delete(message.surfaceId);
+ }
+ /**
+ * Starts at the root component of the surface and builds out the tree
+ * recursively. This process involves resolving all properties of the child
+ * components, and expanding on any explicit children lists or templates
+ * found in the structure.
+ *
+ * @param surface The surface to be built.
+ */
+ #rebuildComponentTree(surface) {
+ if (!surface.rootComponentId) {
+ surface.componentTree = null;
+ return;
+ }
+ const visited = new this.#setCtor();
+ surface.componentTree = this.#buildNodeRecursive(surface.rootComponentId, surface, visited, "/", "");
+ }
+ /** Finds a value key in a map. */
+ #findValueKey(value) {
+ return Object.keys(value).find((k$1) => k$1.startsWith("value"));
+ }
+ /**
+ * Builds out the nodes recursively.
+ */
+ #buildNodeRecursive(baseComponentId, surface, visited, dataContextPath, idSuffix = "") {
+ const fullId = `${baseComponentId}${idSuffix}`;
+ const { components } = surface;
+ if (!components.has(baseComponentId)) {
+ return null;
+ }
+ if (visited.has(fullId)) {
+ throw new Error(`Circular dependency for component "${fullId}".`);
+ }
+ visited.add(fullId);
+ const componentData = components.get(baseComponentId);
+ const componentProps = componentData.component ?? {};
+ const componentType = Object.keys(componentProps)[0];
+ const unresolvedProperties = componentProps[componentType];
+ const resolvedProperties = new this.#objCtor();
+ if (isObject$1(unresolvedProperties)) {
+ for (const [key, value] of Object.entries(unresolvedProperties)) {
+ resolvedProperties[key] = this.#resolvePropertyValue(value, surface, visited, dataContextPath, idSuffix);
+ }
+ }
+ visited.delete(fullId);
+ const baseNode = {
+ id: fullId,
+ dataContextPath,
+ weight: componentData.weight ?? "initial"
+ };
+ switch (componentType) {
+ case "Text":
+ if (!isResolvedText(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Text",
+ properties: resolvedProperties
+ });
+ case "Image":
+ if (!isResolvedImage(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Image",
+ properties: resolvedProperties
+ });
+ case "Icon":
+ if (!isResolvedIcon(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Icon",
+ properties: resolvedProperties
+ });
+ case "Video":
+ if (!isResolvedVideo(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Video",
+ properties: resolvedProperties
+ });
+ case "AudioPlayer":
+ if (!isResolvedAudioPlayer(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "AudioPlayer",
+ properties: resolvedProperties
+ });
+ case "Row":
+ if (!isResolvedRow(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Row",
+ properties: resolvedProperties
+ });
+ case "Column":
+ if (!isResolvedColumn(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Column",
+ properties: resolvedProperties
+ });
+ case "List":
+ if (!isResolvedList(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "List",
+ properties: resolvedProperties
+ });
+ case "Card":
+ if (!isResolvedCard(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Card",
+ properties: resolvedProperties
+ });
+ case "Tabs":
+ if (!isResolvedTabs(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Tabs",
+ properties: resolvedProperties
+ });
+ case "Divider":
+ if (!isResolvedDivider(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Divider",
+ properties: resolvedProperties
+ });
+ case "Modal":
+ if (!isResolvedModal(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Modal",
+ properties: resolvedProperties
+ });
+ case "Button":
+ if (!isResolvedButton(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Button",
+ properties: resolvedProperties
+ });
+ case "CheckBox":
+ if (!isResolvedCheckbox(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "CheckBox",
+ properties: resolvedProperties
+ });
+ case "TextField":
+ if (!isResolvedTextField(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "TextField",
+ properties: resolvedProperties
+ });
+ case "DateTimeInput":
+ if (!isResolvedDateTimeInput(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "DateTimeInput",
+ properties: resolvedProperties
+ });
+ case "MultipleChoice":
+ if (!isResolvedMultipleChoice(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "MultipleChoice",
+ properties: resolvedProperties
+ });
+ case "Slider":
+ if (!isResolvedSlider(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Slider",
+ properties: resolvedProperties
+ });
+ default: return new this.#objCtor({
+ ...baseNode,
+ type: componentType,
+ properties: resolvedProperties
+ });
+ }
+ }
+ /**
+ * Recursively resolves an individual property value. If a property indicates
+ * a child node (a string that matches a component ID), an explicitList of
+ * children, or a template, these will be built out here.
+ */
+ #resolvePropertyValue(value, surface, visited, dataContextPath, idSuffix = "") {
+ if (typeof value === "string" && surface.components.has(value)) {
+ return this.#buildNodeRecursive(value, surface, visited, dataContextPath, idSuffix);
+ }
+ if (isComponentArrayReference(value)) {
+ if (value.explicitList) {
+ return value.explicitList.map((id) => this.#buildNodeRecursive(id, surface, visited, dataContextPath, idSuffix));
+ }
+ if (value.template) {
+ const fullDataPath = this.resolvePath(value.template.dataBinding, dataContextPath);
+ const data = this.#getDataByPath(surface.dataModel, fullDataPath);
+ const template = value.template;
+ if (Array.isArray(data)) {
+ return data.map((_$1, index) => {
+ const parentIndices = dataContextPath.split("/").filter((segment) => /^\d+$/.test(segment));
+ const newIndices = [...parentIndices, index];
+ const newSuffix = `:${newIndices.join(":")}`;
+ const childDataContextPath = `${fullDataPath}/${index}`;
+ return this.#buildNodeRecursive(template.componentId, surface, visited, childDataContextPath, newSuffix);
+ });
+ }
+ const mapCtor = this.#mapCtor;
+ if (data instanceof mapCtor) {
+ return Array.from(data.keys(), (key) => {
+ const newSuffix = `:${key}`;
+ const childDataContextPath = `${fullDataPath}/${key}`;
+ return this.#buildNodeRecursive(template.componentId, surface, visited, childDataContextPath, newSuffix);
+ });
+ }
+ return new this.#arrayCtor();
+ }
+ }
+ if (Array.isArray(value)) {
+ return value.map((item) => this.#resolvePropertyValue(item, surface, visited, dataContextPath, idSuffix));
+ }
+ if (isObject$1(value)) {
+ const newObj = new this.#objCtor();
+ for (const [key, propValue] of Object.entries(value)) {
+ let propertyValue = propValue;
+ if (isPath(key, propValue) && dataContextPath !== "/") {
+ propertyValue = propValue.replace(/^\.?\/item/, "").replace(/^\.?\/text/, "").replace(/^\.?\/label/, "").replace(/^\.?\//, "");
+ newObj[key] = propertyValue;
+ continue;
+ }
+ newObj[key] = this.#resolvePropertyValue(propertyValue, surface, visited, dataContextPath, idSuffix);
+ }
+ return newObj;
+ }
+ return value;
+ }
+};
+
+//#endregion
+//#region node_modules/.pnpm/signal-polyfill@0.2.2/node_modules/signal-polyfill/dist/index.js
+var __defProp = Object.defineProperty;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value
+}) : obj[key] = value;
+var __publicField = (obj, key, value) => {
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
+ return value;
+};
+var __accessCheck = (obj, member, msg) => {
+ if (!member.has(obj)) throw TypeError("Cannot " + msg);
+};
+var __privateIn = (member, obj) => {
+ if (Object(obj) !== obj) throw TypeError("Cannot use the \"in\" operator on this value");
+ return member.has(obj);
+};
+var __privateAdd = (obj, member, value) => {
+ if (member.has(obj)) throw TypeError("Cannot add the same private member more than once");
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
+};
+var __privateMethod = (obj, member, method) => {
+ __accessCheck(obj, member, "access private method");
+ return method;
+};
+/**
+* @license
+* Copyright Google LLC All Rights Reserved.
+*
+* Use of this source code is governed by an MIT-style license that can be
+* found in the LICENSE file at https://angular.io/license
+*/
+function defaultEquals(a$2, b$2) {
+ return Object.is(a$2, b$2);
+}
+/**
+* @license
+* Copyright Google LLC All Rights Reserved.
+*
+* Use of this source code is governed by an MIT-style license that can be
+* found in the LICENSE file at https://angular.io/license
+*/
+let activeConsumer = null;
+let inNotificationPhase = false;
+let epoch = 1;
+const SIGNAL = /* @__PURE__ */ Symbol("SIGNAL");
+function setActiveConsumer(consumer) {
+ const prev = activeConsumer;
+ activeConsumer = consumer;
+ return prev;
+}
+function getActiveConsumer() {
+ return activeConsumer;
+}
+function isInNotificationPhase() {
+ return inNotificationPhase;
+}
+const REACTIVE_NODE = {
+ version: 0,
+ lastCleanEpoch: 0,
+ dirty: false,
+ producerNode: void 0,
+ producerLastReadVersion: void 0,
+ producerIndexOfThis: void 0,
+ nextProducerIndex: 0,
+ liveConsumerNode: void 0,
+ liveConsumerIndexOfThis: void 0,
+ consumerAllowSignalWrites: false,
+ consumerIsAlwaysLive: false,
+ producerMustRecompute: () => false,
+ producerRecomputeValue: () => {},
+ consumerMarkedDirty: () => {},
+ consumerOnSignalRead: () => {}
+};
+function producerAccessed(node) {
+ if (inNotificationPhase) {
+ throw new Error(typeof ngDevMode !== "undefined" && ngDevMode ? `Assertion error: signal read during notification phase` : "");
+ }
+ if (activeConsumer === null) {
+ return;
+ }
+ activeConsumer.consumerOnSignalRead(node);
+ const idx = activeConsumer.nextProducerIndex++;
+ assertConsumerNode(activeConsumer);
+ if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) {
+ if (consumerIsLive(activeConsumer)) {
+ const staleProducer = activeConsumer.producerNode[idx];
+ producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]);
+ }
+ }
+ if (activeConsumer.producerNode[idx] !== node) {
+ activeConsumer.producerNode[idx] = node;
+ activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer) ? producerAddLiveConsumer(node, activeConsumer, idx) : 0;
+ }
+ activeConsumer.producerLastReadVersion[idx] = node.version;
+}
+function producerIncrementEpoch() {
+ epoch++;
+}
+function producerUpdateValueVersion(node) {
+ if (!node.dirty && node.lastCleanEpoch === epoch) {
+ return;
+ }
+ if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) {
+ node.dirty = false;
+ node.lastCleanEpoch = epoch;
+ return;
+ }
+ node.producerRecomputeValue(node);
+ node.dirty = false;
+ node.lastCleanEpoch = epoch;
+}
+function producerNotifyConsumers(node) {
+ if (node.liveConsumerNode === void 0) {
+ return;
+ }
+ const prev = inNotificationPhase;
+ inNotificationPhase = true;
+ try {
+ for (const consumer of node.liveConsumerNode) {
+ if (!consumer.dirty) {
+ consumerMarkDirty(consumer);
+ }
+ }
+ } finally {
+ inNotificationPhase = prev;
+ }
+}
+function producerUpdatesAllowed() {
+ return (activeConsumer == null ? void 0 : activeConsumer.consumerAllowSignalWrites) !== false;
+}
+function consumerMarkDirty(node) {
+ var _a$1;
+ node.dirty = true;
+ producerNotifyConsumers(node);
+ (_a$1 = node.consumerMarkedDirty) == null ? void 0 : _a$1.call(node.wrapper ?? node);
+}
+function consumerBeforeComputation(node) {
+ node && (node.nextProducerIndex = 0);
+ return setActiveConsumer(node);
+}
+function consumerAfterComputation(node, prevConsumer) {
+ setActiveConsumer(prevConsumer);
+ if (!node || node.producerNode === void 0 || node.producerIndexOfThis === void 0 || node.producerLastReadVersion === void 0) {
+ return;
+ }
+ if (consumerIsLive(node)) {
+ for (let i$10 = node.nextProducerIndex; i$10 < node.producerNode.length; i$10++) {
+ producerRemoveLiveConsumerAtIndex(node.producerNode[i$10], node.producerIndexOfThis[i$10]);
+ }
+ }
+ while (node.producerNode.length > node.nextProducerIndex) {
+ node.producerNode.pop();
+ node.producerLastReadVersion.pop();
+ node.producerIndexOfThis.pop();
+ }
+}
+function consumerPollProducersForChange(node) {
+ assertConsumerNode(node);
+ for (let i$10 = 0; i$10 < node.producerNode.length; i$10++) {
+ const producer = node.producerNode[i$10];
+ const seenVersion = node.producerLastReadVersion[i$10];
+ if (seenVersion !== producer.version) {
+ return true;
+ }
+ producerUpdateValueVersion(producer);
+ if (seenVersion !== producer.version) {
+ return true;
+ }
+ }
+ return false;
+}
+function producerAddLiveConsumer(node, consumer, indexOfThis) {
+ var _a$1;
+ assertProducerNode(node);
+ assertConsumerNode(node);
+ if (node.liveConsumerNode.length === 0) {
+ (_a$1 = node.watched) == null ? void 0 : _a$1.call(node.wrapper);
+ for (let i$10 = 0; i$10 < node.producerNode.length; i$10++) {
+ node.producerIndexOfThis[i$10] = producerAddLiveConsumer(node.producerNode[i$10], node, i$10);
+ }
+ }
+ node.liveConsumerIndexOfThis.push(indexOfThis);
+ return node.liveConsumerNode.push(consumer) - 1;
+}
+function producerRemoveLiveConsumerAtIndex(node, idx) {
+ var _a$1;
+ assertProducerNode(node);
+ assertConsumerNode(node);
+ if (typeof ngDevMode !== "undefined" && ngDevMode && idx >= node.liveConsumerNode.length) {
+ throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`);
+ }
+ if (node.liveConsumerNode.length === 1) {
+ (_a$1 = node.unwatched) == null ? void 0 : _a$1.call(node.wrapper);
+ for (let i$10 = 0; i$10 < node.producerNode.length; i$10++) {
+ producerRemoveLiveConsumerAtIndex(node.producerNode[i$10], node.producerIndexOfThis[i$10]);
+ }
+ }
+ const lastIdx = node.liveConsumerNode.length - 1;
+ node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx];
+ node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx];
+ node.liveConsumerNode.length--;
+ node.liveConsumerIndexOfThis.length--;
+ if (idx < node.liveConsumerNode.length) {
+ const idxProducer = node.liveConsumerIndexOfThis[idx];
+ const consumer = node.liveConsumerNode[idx];
+ assertConsumerNode(consumer);
+ consumer.producerIndexOfThis[idxProducer] = idx;
+ }
+}
+function consumerIsLive(node) {
+ var _a$1;
+ return node.consumerIsAlwaysLive || (((_a$1 = node == null ? void 0 : node.liveConsumerNode) == null ? void 0 : _a$1.length) ?? 0) > 0;
+}
+function assertConsumerNode(node) {
+ node.producerNode ?? (node.producerNode = []);
+ node.producerIndexOfThis ?? (node.producerIndexOfThis = []);
+ node.producerLastReadVersion ?? (node.producerLastReadVersion = []);
+}
+function assertProducerNode(node) {
+ node.liveConsumerNode ?? (node.liveConsumerNode = []);
+ node.liveConsumerIndexOfThis ?? (node.liveConsumerIndexOfThis = []);
+}
+/**
+* @license
+* Copyright Google LLC All Rights Reserved.
+*
+* Use of this source code is governed by an MIT-style license that can be
+* found in the LICENSE file at https://angular.io/license
+*/
+function computedGet(node) {
+ producerUpdateValueVersion(node);
+ producerAccessed(node);
+ if (node.value === ERRORED) {
+ throw node.error;
+ }
+ return node.value;
+}
+function createComputed(computation) {
+ const node = Object.create(COMPUTED_NODE);
+ node.computation = computation;
+ const computed = () => computedGet(node);
+ computed[SIGNAL] = node;
+ return computed;
+}
+const UNSET = /* @__PURE__ */ Symbol("UNSET");
+const COMPUTING = /* @__PURE__ */ Symbol("COMPUTING");
+const ERRORED = /* @__PURE__ */ Symbol("ERRORED");
+const COMPUTED_NODE = /* @__PURE__ */ (() => {
+ return {
+ ...REACTIVE_NODE,
+ value: UNSET,
+ dirty: true,
+ error: null,
+ equal: defaultEquals,
+ producerMustRecompute(node) {
+ return node.value === UNSET || node.value === COMPUTING;
+ },
+ producerRecomputeValue(node) {
+ if (node.value === COMPUTING) {
+ throw new Error("Detected cycle in computations.");
+ }
+ const oldValue = node.value;
+ node.value = COMPUTING;
+ const prevConsumer = consumerBeforeComputation(node);
+ let newValue;
+ let wasEqual = false;
+ try {
+ newValue = node.computation.call(node.wrapper);
+ const oldOk = oldValue !== UNSET && oldValue !== ERRORED;
+ wasEqual = oldOk && node.equal.call(node.wrapper, oldValue, newValue);
+ } catch (err) {
+ newValue = ERRORED;
+ node.error = err;
+ } finally {
+ consumerAfterComputation(node, prevConsumer);
+ }
+ if (wasEqual) {
+ node.value = oldValue;
+ return;
+ }
+ node.value = newValue;
+ node.version++;
+ }
+ };
+})();
+/**
+* @license
+* Copyright Google LLC All Rights Reserved.
+*
+* Use of this source code is governed by an MIT-style license that can be
+* found in the LICENSE file at https://angular.io/license
+*/
+function defaultThrowError() {
+ throw new Error();
+}
+let throwInvalidWriteToSignalErrorFn = defaultThrowError;
+function throwInvalidWriteToSignalError() {
+ throwInvalidWriteToSignalErrorFn();
+}
+/**
+* @license
+* Copyright Google LLC All Rights Reserved.
+*
+* Use of this source code is governed by an MIT-style license that can be
+* found in the LICENSE file at https://angular.io/license
+*/
+function createSignal(initialValue) {
+ const node = Object.create(SIGNAL_NODE);
+ node.value = initialValue;
+ const getter = () => {
+ producerAccessed(node);
+ return node.value;
+ };
+ getter[SIGNAL] = node;
+ return getter;
+}
+function signalGetFn() {
+ producerAccessed(this);
+ return this.value;
+}
+function signalSetFn(node, newValue) {
+ if (!producerUpdatesAllowed()) {
+ throwInvalidWriteToSignalError();
+ }
+ if (!node.equal.call(node.wrapper, node.value, newValue)) {
+ node.value = newValue;
+ signalValueChanged(node);
+ }
+}
+const SIGNAL_NODE = /* @__PURE__ */ (() => {
+ return {
+ ...REACTIVE_NODE,
+ equal: defaultEquals,
+ value: void 0
+ };
+})();
+function signalValueChanged(node) {
+ node.version++;
+ producerIncrementEpoch();
+ producerNotifyConsumers(node);
+}
+/**
+* @license
+* Copyright 2024 Bloomberg Finance L.P.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+const NODE = Symbol("node");
+var Signal;
+((Signal2) => {
+ var _a$1, _brand, brand_fn, _b, _brand2, brand_fn2;
+ class State {
+ constructor(initialValue, options = {}) {
+ __privateAdd(this, _brand);
+ __publicField(this, _a$1);
+ const ref = createSignal(initialValue);
+ const node = ref[SIGNAL];
+ this[NODE] = node;
+ node.wrapper = this;
+ if (options) {
+ const equals = options.equals;
+ if (equals) {
+ node.equal = equals;
+ }
+ node.watched = options[Signal2.subtle.watched];
+ node.unwatched = options[Signal2.subtle.unwatched];
+ }
+ }
+ get() {
+ if (!(0, Signal2.isState)(this)) throw new TypeError("Wrong receiver type for Signal.State.prototype.get");
+ return signalGetFn.call(this[NODE]);
+ }
+ set(newValue) {
+ if (!(0, Signal2.isState)(this)) throw new TypeError("Wrong receiver type for Signal.State.prototype.set");
+ if (isInNotificationPhase()) {
+ throw new Error("Writes to signals not permitted during Watcher callback");
+ }
+ const ref = this[NODE];
+ signalSetFn(ref, newValue);
+ }
+ }
+ _a$1 = NODE;
+ _brand = new WeakSet();
+ brand_fn = function() {};
+ Signal2.isState = (s$9) => typeof s$9 === "object" && __privateIn(_brand, s$9);
+ Signal2.State = State;
+ class Computed {
+ constructor(computation, options) {
+ __privateAdd(this, _brand2);
+ __publicField(this, _b);
+ const ref = createComputed(computation);
+ const node = ref[SIGNAL];
+ node.consumerAllowSignalWrites = true;
+ this[NODE] = node;
+ node.wrapper = this;
+ if (options) {
+ const equals = options.equals;
+ if (equals) {
+ node.equal = equals;
+ }
+ node.watched = options[Signal2.subtle.watched];
+ node.unwatched = options[Signal2.subtle.unwatched];
+ }
+ }
+ get() {
+ if (!(0, Signal2.isComputed)(this)) throw new TypeError("Wrong receiver type for Signal.Computed.prototype.get");
+ return computedGet(this[NODE]);
+ }
+ }
+ _b = NODE;
+ _brand2 = new WeakSet();
+ brand_fn2 = function() {};
+ Signal2.isComputed = (c$7) => typeof c$7 === "object" && __privateIn(_brand2, c$7);
+ Signal2.Computed = Computed;
+ ((subtle2) => {
+ var _a2, _brand3, brand_fn3, _assertSignals, assertSignals_fn;
+ function untrack(cb) {
+ let output;
+ let prevActiveConsumer = null;
+ try {
+ prevActiveConsumer = setActiveConsumer(null);
+ output = cb();
+ } finally {
+ setActiveConsumer(prevActiveConsumer);
+ }
+ return output;
+ }
+ subtle2.untrack = untrack;
+ function introspectSources(sink) {
+ var _a3;
+ if (!(0, Signal2.isComputed)(sink) && !(0, Signal2.isWatcher)(sink)) {
+ throw new TypeError("Called introspectSources without a Computed or Watcher argument");
+ }
+ return ((_a3 = sink[NODE].producerNode) == null ? void 0 : _a3.map((n$11) => n$11.wrapper)) ?? [];
+ }
+ subtle2.introspectSources = introspectSources;
+ function introspectSinks(signal) {
+ var _a3;
+ if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {
+ throw new TypeError("Called introspectSinks without a Signal argument");
+ }
+ return ((_a3 = signal[NODE].liveConsumerNode) == null ? void 0 : _a3.map((n$11) => n$11.wrapper)) ?? [];
+ }
+ subtle2.introspectSinks = introspectSinks;
+ function hasSinks(signal) {
+ if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {
+ throw new TypeError("Called hasSinks without a Signal argument");
+ }
+ const liveConsumerNode = signal[NODE].liveConsumerNode;
+ if (!liveConsumerNode) return false;
+ return liveConsumerNode.length > 0;
+ }
+ subtle2.hasSinks = hasSinks;
+ function hasSources(signal) {
+ if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isWatcher)(signal)) {
+ throw new TypeError("Called hasSources without a Computed or Watcher argument");
+ }
+ const producerNode = signal[NODE].producerNode;
+ if (!producerNode) return false;
+ return producerNode.length > 0;
+ }
+ subtle2.hasSources = hasSources;
+ class Watcher {
+ constructor(notify) {
+ __privateAdd(this, _brand3);
+ __privateAdd(this, _assertSignals);
+ __publicField(this, _a2);
+ let node = Object.create(REACTIVE_NODE);
+ node.wrapper = this;
+ node.consumerMarkedDirty = notify;
+ node.consumerIsAlwaysLive = true;
+ node.consumerAllowSignalWrites = false;
+ node.producerNode = [];
+ this[NODE] = node;
+ }
+ watch(...signals) {
+ if (!(0, Signal2.isWatcher)(this)) {
+ throw new TypeError("Called unwatch without Watcher receiver");
+ }
+ __privateMethod(this, _assertSignals, assertSignals_fn).call(this, signals);
+ const node = this[NODE];
+ node.dirty = false;
+ const prev = setActiveConsumer(node);
+ for (const signal of signals) {
+ producerAccessed(signal[NODE]);
+ }
+ setActiveConsumer(prev);
+ }
+ unwatch(...signals) {
+ if (!(0, Signal2.isWatcher)(this)) {
+ throw new TypeError("Called unwatch without Watcher receiver");
+ }
+ __privateMethod(this, _assertSignals, assertSignals_fn).call(this, signals);
+ const node = this[NODE];
+ assertConsumerNode(node);
+ for (let i$10 = node.producerNode.length - 1; i$10 >= 0; i$10--) {
+ if (signals.includes(node.producerNode[i$10].wrapper)) {
+ producerRemoveLiveConsumerAtIndex(node.producerNode[i$10], node.producerIndexOfThis[i$10]);
+ const lastIdx = node.producerNode.length - 1;
+ node.producerNode[i$10] = node.producerNode[lastIdx];
+ node.producerIndexOfThis[i$10] = node.producerIndexOfThis[lastIdx];
+ node.producerNode.length--;
+ node.producerIndexOfThis.length--;
+ node.nextProducerIndex--;
+ if (i$10 < node.producerNode.length) {
+ const idxConsumer = node.producerIndexOfThis[i$10];
+ const producer = node.producerNode[i$10];
+ assertProducerNode(producer);
+ producer.liveConsumerIndexOfThis[idxConsumer] = i$10;
+ }
+ }
+ }
+ }
+ getPending() {
+ if (!(0, Signal2.isWatcher)(this)) {
+ throw new TypeError("Called getPending without Watcher receiver");
+ }
+ const node = this[NODE];
+ return node.producerNode.filter((n$11) => n$11.dirty).map((n$11) => n$11.wrapper);
+ }
+ }
+ _a2 = NODE;
+ _brand3 = new WeakSet();
+ brand_fn3 = function() {};
+ _assertSignals = new WeakSet();
+ assertSignals_fn = function(signals) {
+ for (const signal of signals) {
+ if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {
+ throw new TypeError("Called watch/unwatch without a Computed or State argument");
+ }
+ }
+ };
+ Signal2.isWatcher = (w$1) => __privateIn(_brand3, w$1);
+ subtle2.Watcher = Watcher;
+ function currentComputed() {
+ var _a3;
+ return (_a3 = getActiveConsumer()) == null ? void 0 : _a3.wrapper;
+ }
+ subtle2.currentComputed = currentComputed;
+ subtle2.watched = Symbol("watched");
+ subtle2.unwatched = Symbol("unwatched");
+ })(Signal2.subtle || (Signal2.subtle = {}));
+})(Signal || (Signal = {}));
+
+//#endregion
+//#region node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/dist/-private/util.ts.js
+/**
+* equality check here is always false so that we can dirty the storage
+* via setting to _anything_
+*
+*
+* This is for a pattern where we don't *directly* use signals to back the values used in collections
+* so that instanceof checks and getters and other native features "just work" without having
+* to do nested proxying.
+*
+* (though, see deep.ts for nested / deep behavior)
+*/
+const createStorage = (initial = null) => new Signal.State(initial, { equals: () => false });
+/**
+* Just an alias for brevity
+*/
+const BOUND_FUNS = new WeakMap();
+function fnCacheFor(context) {
+ let fnCache = BOUND_FUNS.get(context);
+ if (!fnCache) {
+ fnCache = new Map();
+ BOUND_FUNS.set(context, fnCache);
+ }
+ return fnCache;
+}
+
+//#endregion
+//#region node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/dist/array.ts.js
+const ARRAY_GETTER_METHODS = new Set([
+ Symbol.iterator,
+ "concat",
+ "entries",
+ "every",
+ "filter",
+ "find",
+ "findIndex",
+ "flat",
+ "flatMap",
+ "forEach",
+ "includes",
+ "indexOf",
+ "join",
+ "keys",
+ "lastIndexOf",
+ "map",
+ "reduce",
+ "reduceRight",
+ "slice",
+ "some",
+ "values"
+]);
+const ARRAY_WRITE_THEN_READ_METHODS = new Set([
+ "fill",
+ "push",
+ "unshift"
+]);
+function convertToInt(prop) {
+ if (typeof prop === "symbol") return null;
+ const num = Number(prop);
+ if (isNaN(num)) return null;
+ return num % 1 === 0 ? num : null;
+}
+var SignalArray = class SignalArray {
+ /**
+ * Creates an array from an iterable object.
+ * @param iterable An iterable object to convert to an array.
+ */
+ /**
+ * Creates an array from an iterable object.
+ * @param iterable An iterable object to convert to an array.
+ * @param mapfn A mapping function to call on every element of the array.
+ * @param thisArg Value of 'this' used to invoke the mapfn.
+ */
+ static from(iterable, mapfn, thisArg) {
+ return mapfn ? new SignalArray(Array.from(iterable, mapfn, thisArg)) : new SignalArray(Array.from(iterable));
+ }
+ static of(...arr) {
+ return new SignalArray(arr);
+ }
+ constructor(arr = []) {
+ let clone = arr.slice();
+ let self = this;
+ let boundFns = new Map();
+ /**
+ Flag to track whether we have *just* intercepted a call to `.push()` or
+ `.unshift()`, since in those cases (and only those cases!) the `Array`
+ itself checks `.length` to return from the function call.
+ */
+ let nativelyAccessingLengthFromPushOrUnshift = false;
+ return new Proxy(clone, {
+ get(target, prop) {
+ let index = convertToInt(prop);
+ if (index !== null) {
+ self.#readStorageFor(index);
+ self.#collection.get();
+ return target[index];
+ }
+ if (prop === "length") {
+ if (nativelyAccessingLengthFromPushOrUnshift) {
+ nativelyAccessingLengthFromPushOrUnshift = false;
+ } else {
+ self.#collection.get();
+ }
+ return target[prop];
+ }
+ if (ARRAY_WRITE_THEN_READ_METHODS.has(prop)) {
+ nativelyAccessingLengthFromPushOrUnshift = true;
+ }
+ if (ARRAY_GETTER_METHODS.has(prop)) {
+ let fn = boundFns.get(prop);
+ if (fn === undefined) {
+ fn = (...args) => {
+ self.#collection.get();
+ return target[prop](...args);
+ };
+ boundFns.set(prop, fn);
+ }
+ return fn;
+ }
+ return target[prop];
+ },
+ set(target, prop, value) {
+ target[prop] = value;
+ let index = convertToInt(prop);
+ if (index !== null) {
+ self.#dirtyStorageFor(index);
+ self.#collection.set(null);
+ } else if (prop === "length") {
+ self.#collection.set(null);
+ }
+ return true;
+ },
+ getPrototypeOf() {
+ return SignalArray.prototype;
+ }
+ });
+ }
+ #collection = createStorage();
+ #storages = new Map();
+ #readStorageFor(index) {
+ let storage = this.#storages.get(index);
+ if (storage === undefined) {
+ storage = createStorage();
+ this.#storages.set(index, storage);
+ }
+ storage.get();
+ }
+ #dirtyStorageFor(index) {
+ const storage = this.#storages.get(index);
+ if (storage) {
+ storage.set(null);
+ }
+ }
+};
+Object.setPrototypeOf(SignalArray.prototype, Array.prototype);
+function signalArray(x$1) {
+ return new SignalArray(x$1);
+}
+
+//#endregion
+//#region node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/dist/map.ts.js
+var SignalMap = class {
+ collection = createStorage();
+ storages = new Map();
+ vals;
+ readStorageFor(key) {
+ const { storages } = this;
+ let storage = storages.get(key);
+ if (storage === undefined) {
+ storage = createStorage();
+ storages.set(key, storage);
+ }
+ storage.get();
+ }
+ dirtyStorageFor(key) {
+ const storage = this.storages.get(key);
+ if (storage) {
+ storage.set(null);
+ }
+ }
+ constructor(existing) {
+ this.vals = existing ? new Map(existing) : new Map();
+ }
+ get(key) {
+ this.readStorageFor(key);
+ return this.vals.get(key);
+ }
+ has(key) {
+ this.readStorageFor(key);
+ return this.vals.has(key);
+ }
+ entries() {
+ this.collection.get();
+ return this.vals.entries();
+ }
+ keys() {
+ this.collection.get();
+ return this.vals.keys();
+ }
+ values() {
+ this.collection.get();
+ return this.vals.values();
+ }
+ forEach(fn) {
+ this.collection.get();
+ this.vals.forEach(fn);
+ }
+ get size() {
+ this.collection.get();
+ return this.vals.size;
+ }
+ [Symbol.iterator]() {
+ this.collection.get();
+ return this.vals[Symbol.iterator]();
+ }
+ get [Symbol.toStringTag]() {
+ return this.vals[Symbol.toStringTag];
+ }
+ set(key, value) {
+ this.dirtyStorageFor(key);
+ this.collection.set(null);
+ this.vals.set(key, value);
+ return this;
+ }
+ delete(key) {
+ this.dirtyStorageFor(key);
+ this.collection.set(null);
+ return this.vals.delete(key);
+ }
+ clear() {
+ this.storages.forEach((s$9) => s$9.set(null));
+ this.collection.set(null);
+ this.vals.clear();
+ }
+};
+Object.setPrototypeOf(SignalMap.prototype, Map.prototype);
+
+//#endregion
+//#region node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/dist/object.ts.js
+/**
+* Implementation based of tracked-built-ins' TrackedObject
+* https://github.com/tracked-tools/tracked-built-ins/blob/master/addon/src/-private/object.js
+*/
+var SignalObjectImpl = class SignalObjectImpl {
+ static fromEntries(entries) {
+ return new SignalObjectImpl(Object.fromEntries(entries));
+ }
+ #storages = new Map();
+ #collection = createStorage();
+ constructor(obj = {}) {
+ let proto = Object.getPrototypeOf(obj);
+ let descs = Object.getOwnPropertyDescriptors(obj);
+ let clone = Object.create(proto);
+ for (let prop in descs) {
+ Object.defineProperty(clone, prop, descs[prop]);
+ }
+ let self = this;
+ return new Proxy(clone, {
+ get(target, prop, receiver) {
+ self.#readStorageFor(prop);
+ return Reflect.get(target, prop, receiver);
+ },
+ has(target, prop) {
+ self.#readStorageFor(prop);
+ return prop in target;
+ },
+ ownKeys(target) {
+ self.#collection.get();
+ return Reflect.ownKeys(target);
+ },
+ set(target, prop, value, receiver) {
+ let result = Reflect.set(target, prop, value, receiver);
+ self.#dirtyStorageFor(prop);
+ self.#dirtyCollection();
+ return result;
+ },
+ deleteProperty(target, prop) {
+ if (prop in target) {
+ delete target[prop];
+ self.#dirtyStorageFor(prop);
+ self.#dirtyCollection();
+ }
+ return true;
+ },
+ getPrototypeOf() {
+ return SignalObjectImpl.prototype;
+ }
+ });
+ }
+ #readStorageFor(key) {
+ let storage = this.#storages.get(key);
+ if (storage === undefined) {
+ storage = createStorage();
+ this.#storages.set(key, storage);
+ }
+ storage.get();
+ }
+ #dirtyStorageFor(key) {
+ const storage = this.#storages.get(key);
+ if (storage) {
+ storage.set(null);
+ }
+ }
+ #dirtyCollection() {
+ this.#collection.set(null);
+ }
+};
+/**
+* Create a reactive Object, backed by Signals, using a Proxy.
+* This allows dynamic creation and deletion of signals using the object primitive
+* APIs that most folks are familiar with -- the only difference is instantiation.
+* ```js
+* const obj = new SignalObject({ foo: 123 });
+*
+* obj.foo // 123
+* obj.foo = 456
+* obj.foo // 456
+* obj.bar = 2
+* obj.bar // 2
+* ```
+*/
+const SignalObject = SignalObjectImpl;
+function signalObject(obj) {
+ return new SignalObject(obj);
+}
+
+//#endregion
+//#region node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/dist/set.ts.js
+var SignalSet = class {
+ collection = createStorage();
+ storages = new Map();
+ vals;
+ storageFor(key) {
+ const storages = this.storages;
+ let storage = storages.get(key);
+ if (storage === undefined) {
+ storage = createStorage();
+ storages.set(key, storage);
+ }
+ return storage;
+ }
+ dirtyStorageFor(key) {
+ const storage = this.storages.get(key);
+ if (storage) {
+ storage.set(null);
+ }
+ }
+ constructor(existing) {
+ this.vals = new Set(existing);
+ }
+ has(value) {
+ this.storageFor(value).get();
+ return this.vals.has(value);
+ }
+ entries() {
+ this.collection.get();
+ return this.vals.entries();
+ }
+ keys() {
+ this.collection.get();
+ return this.vals.keys();
+ }
+ values() {
+ this.collection.get();
+ return this.vals.values();
+ }
+ forEach(fn) {
+ this.collection.get();
+ this.vals.forEach(fn);
+ }
+ get size() {
+ this.collection.get();
+ return this.vals.size;
+ }
+ [Symbol.iterator]() {
+ this.collection.get();
+ return this.vals[Symbol.iterator]();
+ }
+ get [Symbol.toStringTag]() {
+ return this.vals[Symbol.toStringTag];
+ }
+ add(value) {
+ this.dirtyStorageFor(value);
+ this.collection.set(null);
+ this.vals.add(value);
+ return this;
+ }
+ delete(value) {
+ this.dirtyStorageFor(value);
+ this.collection.set(null);
+ return this.vals.delete(value);
+ }
+ clear() {
+ this.storages.forEach((s$9) => s$9.set(null));
+ this.collection.set(null);
+ this.vals.clear();
+ }
+};
+Object.setPrototypeOf(SignalSet.prototype, Set.prototype);
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.js
+function create() {
+ return new A2uiMessageProcessor({
+ arrayCtor: SignalArray,
+ mapCtor: SignalMap,
+ objCtor: SignalObject,
+ setCtor: SignalSet
+ });
+}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/schemas/server_to_client_with_standard_catalog.json
+var server_to_client_with_standard_catalog_default = {
+ title: "A2UI Message Schema",
+ description: "Describes a JSON payload for an A2UI (Agent to UI) message, which is used to dynamically construct and update user interfaces. A message MUST contain exactly ONE of the action properties: 'beginRendering', 'surfaceUpdate', 'dataModelUpdate', or 'deleteSurface'.",
+ type: "object",
+ additionalProperties: false,
+ properties: {
+ "beginRendering": {
+ "type": "object",
+ "description": "Signals the client to begin rendering a surface with a root component and specific styles.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be rendered."
+ },
+ "root": {
+ "type": "string",
+ "description": "The ID of the root component to render."
+ },
+ "styles": {
+ "type": "object",
+ "description": "Styling information for the UI.",
+ "additionalProperties": false,
+ "properties": {
+ "font": {
+ "type": "string",
+ "description": "The primary font for the UI."
+ },
+ "primaryColor": {
+ "type": "string",
+ "description": "The primary UI color as a hexadecimal code (e.g., '#00BFFF').",
+ "pattern": "^#[0-9a-fA-F]{6}$"
+ }
+ }
+ }
+ },
+ "required": ["root", "surfaceId"]
+ },
+ "surfaceUpdate": {
+ "type": "object",
+ "description": "Updates a surface with a new set of components.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be updated. If you are adding a new surface this *must* be a new, unique identified that has never been used for any existing surfaces shown."
+ },
+ "components": {
+ "type": "array",
+ "description": "A list containing all UI components for the surface.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "description": "Represents a *single* component in a UI widget tree. This component could be one of many supported types.",
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The unique identifier for this component."
+ },
+ "weight": {
+ "type": "number",
+ "description": "The relative weight of this component within a Row or Column. This corresponds to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column."
+ },
+ "component": {
+ "type": "object",
+ "description": "A wrapper object that MUST contain exactly one key, which is the name of the component type (e.g., 'Heading'). The value is an object containing the properties for that specific component.",
+ "additionalProperties": false,
+ "properties": {
+ "Text": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "text": {
+ "type": "object",
+ "description": "The text content to display. This can be a literal string or a reference to a value in the data model ('path', e.g., '/doc/title'). While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "usageHint": {
+ "type": "string",
+ "description": "A hint for the base text style. One of:\n- `h1`: Largest heading.\n- `h2`: Second largest heading.\n- `h3`: Third largest heading.\n- `h4`: Fourth largest heading.\n- `h5`: Fifth largest heading.\n- `caption`: Small text for captions.\n- `body`: Standard body text.",
+ "enum": [
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "caption",
+ "body"
+ ]
+ }
+ },
+ "required": ["text"]
+ },
+ "Image": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the image to display. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/thumbnail/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "fit": {
+ "type": "string",
+ "description": "Specifies how the image should be resized to fit its container. This corresponds to the CSS 'object-fit' property.",
+ "enum": [
+ "contain",
+ "cover",
+ "fill",
+ "none",
+ "scale-down"
+ ]
+ },
+ "usageHint": {
+ "type": "string",
+ "description": "A hint for the image size and style. One of:\n- `icon`: Small square icon.\n- `avatar`: Circular avatar image.\n- `smallFeature`: Small feature image.\n- `mediumFeature`: Medium feature image.\n- `largeFeature`: Large feature image.\n- `header`: Full-width, full bleed, header image.",
+ "enum": [
+ "icon",
+ "avatar",
+ "smallFeature",
+ "mediumFeature",
+ "largeFeature",
+ "header"
+ ]
+ }
+ },
+ "required": ["url"]
+ },
+ "Icon": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": { "name": {
+ "type": "object",
+ "description": "The name of the icon to display. This can be a literal string or a reference to a value in the data model ('path', e.g. '/form/submit').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string",
+ "enum": [
+ "accountCircle",
+ "add",
+ "arrowBack",
+ "arrowForward",
+ "attachFile",
+ "calendarToday",
+ "call",
+ "camera",
+ "check",
+ "close",
+ "delete",
+ "download",
+ "edit",
+ "event",
+ "error",
+ "favorite",
+ "favoriteOff",
+ "folder",
+ "help",
+ "home",
+ "info",
+ "locationOn",
+ "lock",
+ "lockOpen",
+ "mail",
+ "menu",
+ "moreVert",
+ "moreHoriz",
+ "notificationsOff",
+ "notifications",
+ "payment",
+ "person",
+ "phone",
+ "photo",
+ "print",
+ "refresh",
+ "search",
+ "send",
+ "settings",
+ "share",
+ "shoppingCart",
+ "star",
+ "starHalf",
+ "starOff",
+ "upload",
+ "visibility",
+ "visibilityOff",
+ "warning"
+ ]
+ },
+ "path": { "type": "string" }
+ }
+ } },
+ "required": ["name"]
+ },
+ "Video": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": { "url": {
+ "type": "object",
+ "description": "The URL of the video to display. This can be a literal string or a reference to a value in the data model ('path', e.g. '/video/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ } },
+ "required": ["url"]
+ },
+ "AudioPlayer": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the audio to be played. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/song/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "description": {
+ "type": "object",
+ "description": "A description of the audio, such as a title or summary. This can be a literal string or a reference to a value in the data model ('path', e.g. '/song/title').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ }
+ },
+ "required": ["url"]
+ },
+ "Row": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": { "type": "string" },
+ "dataBinding": { "type": "string" }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "distribution": {
+ "type": "string",
+ "description": "Defines the arrangement of children along the main axis (horizontally). This corresponds to the CSS 'justify-content' property.",
+ "enum": [
+ "center",
+ "end",
+ "spaceAround",
+ "spaceBetween",
+ "spaceEvenly",
+ "start"
+ ]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis (vertically). This corresponds to the CSS 'align-items' property.",
+ "enum": [
+ "start",
+ "center",
+ "end",
+ "stretch"
+ ]
+ }
+ },
+ "required": ["children"]
+ },
+ "Column": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": { "type": "string" },
+ "dataBinding": { "type": "string" }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "distribution": {
+ "type": "string",
+ "description": "Defines the arrangement of children along the main axis (vertically). This corresponds to the CSS 'justify-content' property.",
+ "enum": [
+ "start",
+ "center",
+ "end",
+ "spaceBetween",
+ "spaceAround",
+ "spaceEvenly"
+ ]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis (horizontally). This corresponds to the CSS 'align-items' property.",
+ "enum": [
+ "center",
+ "end",
+ "start",
+ "stretch"
+ ]
+ }
+ },
+ "required": ["children"]
+ },
+ "List": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": { "type": "string" },
+ "dataBinding": { "type": "string" }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "direction": {
+ "type": "string",
+ "description": "The direction in which the list items are laid out.",
+ "enum": ["vertical", "horizontal"]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis.",
+ "enum": [
+ "start",
+ "center",
+ "end",
+ "stretch"
+ ]
+ }
+ },
+ "required": ["children"]
+ },
+ "Card": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": { "child": {
+ "type": "string",
+ "description": "The ID of the component to be rendered inside the card."
+ } },
+ "required": ["child"]
+ },
+ "Tabs": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": { "tabItems": {
+ "type": "array",
+ "description": "An array of objects, where each object defines a tab with a title and a child component.",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "title": {
+ "type": "object",
+ "description": "The tab title. Defines the value as either a literal value or a path to data model value (e.g. '/options/title').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "child": { "type": "string" }
+ },
+ "required": ["title", "child"]
+ }
+ } },
+ "required": ["tabItems"]
+ },
+ "Divider": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": { "axis": {
+ "type": "string",
+ "description": "The orientation of the divider.",
+ "enum": ["horizontal", "vertical"]
+ } }
+ },
+ "Modal": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "entryPointChild": {
+ "type": "string",
+ "description": "The ID of the component that opens the modal when interacted with (e.g., a button)."
+ },
+ "contentChild": {
+ "type": "string",
+ "description": "The ID of the component to be displayed inside the modal."
+ }
+ },
+ "required": ["entryPointChild", "contentChild"]
+ },
+ "Button": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "child": {
+ "type": "string",
+ "description": "The ID of the component to display in the button, typically a Text component."
+ },
+ "primary": {
+ "type": "boolean",
+ "description": "Indicates if this button should be styled as the primary action."
+ },
+ "action": {
+ "type": "object",
+ "description": "The client-side action to be dispatched when the button is clicked. It includes the action's name and an optional context payload.",
+ "additionalProperties": false,
+ "properties": {
+ "name": { "type": "string" },
+ "context": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "key": { "type": "string" },
+ "value": {
+ "type": "object",
+ "description": "Defines the value to be included in the context as either a literal value or a path to a data model value (e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "path": { "type": "string" },
+ "literalString": { "type": "string" },
+ "literalNumber": { "type": "number" },
+ "literalBoolean": { "type": "boolean" }
+ }
+ }
+ },
+ "required": ["key", "value"]
+ }
+ }
+ },
+ "required": ["name"]
+ }
+ },
+ "required": ["child", "action"]
+ },
+ "CheckBox": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text to display next to the checkbox. Defines the value as either a literal value or a path to data model ('path', e.g. '/option/label').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "value": {
+ "type": "object",
+ "description": "The current state of the checkbox (true for checked, false for unchecked). This can be a literal boolean ('literalBoolean') or a reference to a value in the data model ('path', e.g. '/filter/open').",
+ "additionalProperties": false,
+ "properties": {
+ "literalBoolean": { "type": "boolean" },
+ "path": { "type": "string" }
+ }
+ }
+ },
+ "required": ["label", "value"]
+ },
+ "TextField": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text label for the input field. This can be a literal string or a reference to a value in the data model ('path, e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "text": {
+ "type": "object",
+ "description": "The value of the text field. This can be a literal string or a reference to a value in the data model ('path', e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "textFieldType": {
+ "type": "string",
+ "description": "The type of input field to display.",
+ "enum": [
+ "date",
+ "longText",
+ "number",
+ "shortText",
+ "obscured"
+ ]
+ },
+ "validationRegexp": {
+ "type": "string",
+ "description": "A regular expression used for client-side validation of the input."
+ }
+ },
+ "required": ["label"]
+ },
+ "DateTimeInput": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "object",
+ "description": "The selected date and/or time value. This can be a literal string ('literalString') or a reference to a value in the data model ('path', e.g. '/user/dob').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "enableDate": {
+ "type": "boolean",
+ "description": "If true, allows the user to select a date."
+ },
+ "enableTime": {
+ "type": "boolean",
+ "description": "If true, allows the user to select a time."
+ },
+ "outputFormat": {
+ "type": "string",
+ "description": "The desired format for the output string after a date or time is selected."
+ }
+ },
+ "required": ["value"]
+ },
+ "MultipleChoice": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "selections": {
+ "type": "object",
+ "description": "The currently selected values for the component. This can be a literal array of strings or a path to an array in the data model('path', e.g. '/hotel/options').",
+ "additionalProperties": false,
+ "properties": {
+ "literalArray": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "path": { "type": "string" }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of available options for the user to choose from.",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text to display for this option. This can be a literal string or a reference to a value in the data model (e.g. '/option/label').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": { "type": "string" },
+ "path": { "type": "string" }
+ }
+ },
+ "value": {
+ "type": "string",
+ "description": "The value to be associated with this option when selected."
+ }
+ },
+ "required": ["label", "value"]
+ }
+ },
+ "maxAllowedSelections": {
+ "type": "integer",
+ "description": "The maximum number of options that the user is allowed to select."
+ }
+ },
+ "required": ["selections", "options"]
+ },
+ "Slider": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "object",
+ "description": "The current value of the slider. This can be a literal number ('literalNumber') or a reference to a value in the data model ('path', e.g. '/restaurant/cost').",
+ "additionalProperties": false,
+ "properties": {
+ "literalNumber": { "type": "number" },
+ "path": { "type": "string" }
+ }
+ },
+ "minValue": {
+ "type": "number",
+ "description": "The minimum value of the slider."
+ },
+ "maxValue": {
+ "type": "number",
+ "description": "The maximum value of the slider."
+ }
+ },
+ "required": ["value"]
+ }
+ }
+ }
+ },
+ "required": ["id", "component"]
+ }
+ }
+ },
+ "required": ["surfaceId", "components"]
+ },
+ "dataModelUpdate": {
+ "type": "object",
+ "description": "Updates the data model for a surface.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface this data model update applies to."
+ },
+ "path": {
+ "type": "string",
+ "description": "An optional path to a location within the data model (e.g., '/user/name'). If omitted, or set to '/', the entire data model will be replaced."
+ },
+ "contents": {
+ "type": "array",
+ "description": "An array of data entries. Each entry must contain a 'key' and exactly one corresponding typed 'value*' property.",
+ "items": {
+ "type": "object",
+ "description": "A single data entry. Exactly one 'value*' property should be provided alongside the key.",
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "type": "string",
+ "description": "The key for this data entry."
+ },
+ "valueString": { "type": "string" },
+ "valueNumber": { "type": "number" },
+ "valueBoolean": { "type": "boolean" },
+ "valueMap": {
+ "description": "Represents a map as an adjacency list.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "description": "One entry in the map. Exactly one 'value*' property should be provided alongside the key.",
+ "additionalProperties": false,
+ "properties": {
+ "key": { "type": "string" },
+ "valueString": { "type": "string" },
+ "valueNumber": { "type": "number" },
+ "valueBoolean": { "type": "boolean" }
+ },
+ "required": ["key"]
+ }
+ }
+ },
+ "required": ["key"]
+ }
+ }
+ },
+ "required": ["contents", "surfaceId"]
+ },
+ "deleteSurface": {
+ "type": "object",
+ "description": "Signals the client to delete the surface identified by 'surfaceId'.",
+ "additionalProperties": false,
+ "properties": { "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be deleted."
+ } },
+ "required": ["surfaceId"]
+ }
+ }
+};
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/core.js
+const Data = {
+ createSignalA2uiMessageProcessor: create,
+ A2uiMessageProcessor,
+ Guards: guards_exports
+};
+const Schemas = { A2UIClientEventMessage: server_to_client_with_standard_catalog_default };
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/custom-element.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+const t = (t$7) => (e$14, o$14) => {
+ void 0 !== o$14 ? o$14.addInitializer((() => {
+ customElements.define(t$7, e$14);
+ })) : customElements.define(t$7, e$14);
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const o$8 = {
+ attribute: !0,
+ type: String,
+ converter: u,
+ reflect: !1,
+ hasChanged: f$2
+}, r$7 = (t$7 = o$8, e$14, r$11) => {
+ const { kind: n$11, metadata: i$10 } = r$11;
+ let s$9 = globalThis.litPropertyMetadata.get(i$10);
+ if (void 0 === s$9 && globalThis.litPropertyMetadata.set(i$10, s$9 = new Map()), "setter" === n$11 && ((t$7 = Object.create(t$7)).wrapped = !0), s$9.set(r$11.name, t$7), "accessor" === n$11) {
+ const { name: o$14 } = r$11;
+ return {
+ set(r$12) {
+ const n$12 = e$14.get.call(this);
+ e$14.set.call(this, r$12), this.requestUpdate(o$14, n$12, t$7);
+ },
+ init(e$15) {
+ return void 0 !== e$15 && this.C(o$14, void 0, t$7, e$15), e$15;
+ }
+ };
+ }
+ if ("setter" === n$11) {
+ const { name: o$14 } = r$11;
+ return function(r$12) {
+ const n$12 = this[o$14];
+ e$14.call(this, r$12), this.requestUpdate(o$14, n$12, t$7);
+ };
+ }
+ throw Error("Unsupported decorator location: " + n$11);
+};
+function n(t$7) {
+ return (e$14, o$14) => "object" == typeof o$14 ? r$7(t$7, e$14, o$14) : ((t$8, e$15, o$15) => {
+ const r$11 = e$15.hasOwnProperty(o$15);
+ return e$15.constructor.createProperty(o$15, t$8), r$11 ? Object.getOwnPropertyDescriptor(e$15, o$15) : void 0;
+ })(t$7, e$14, o$14);
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ function r(r$11) {
+ return n({
+ ...r$11,
+ state: !0,
+ attribute: !1
+ });
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/event-options.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+function t$2(t$7) {
+ return (n$11, o$14) => {
+ const c$7 = "function" == typeof n$11 ? n$11 : n$11[o$14];
+ Object.assign(c$7, t$7);
+ };
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/base.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+const e$6 = (e$14, t$7, c$7) => (c$7.configurable = !0, c$7.enumerable = !0, Reflect.decorate && "object" != typeof t$7 && Object.defineProperty(e$14, t$7, c$7), c$7);
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ function e$3(e$14, r$11) {
+ return (n$11, s$9, i$10) => {
+ const o$14 = (t$7) => t$7.renderRoot?.querySelector(e$14) ?? null;
+ if (r$11) {
+ const { get: e$15, set: r$12 } = "object" == typeof s$9 ? n$11 : i$10 ?? (() => {
+ const t$7 = Symbol();
+ return {
+ get() {
+ return this[t$7];
+ },
+ set(e$16) {
+ this[t$7] = e$16;
+ }
+ };
+ })();
+ return e$6(n$11, s$9, { get() {
+ let t$7 = e$15.call(this);
+ return void 0 === t$7 && (t$7 = o$14(this), (null !== t$7 || this.hasUpdated) && r$12.call(this, t$7)), t$7;
+ } });
+ }
+ return e$6(n$11, s$9, { get() {
+ return o$14(this);
+ } });
+ };
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-all.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+let e$7;
+function r$6(r$11) {
+ return (n$11, o$14) => e$6(n$11, o$14, { get() {
+ return (this.renderRoot ?? (e$7 ??= document.createDocumentFragment())).querySelectorAll(r$11);
+ } });
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-async.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+function r$5(r$11) {
+ return (n$11, e$14) => e$6(n$11, e$14, { async get() {
+ return await this.updateComplete, this.renderRoot?.querySelector(r$11) ?? null;
+ } });
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ function o$7(o$14) {
+ return (e$14, n$11) => {
+ const { slot: r$11, selector: s$9 } = o$14 ?? {}, c$7 = "slot" + (r$11 ? `[name=${r$11}]` : ":not([name])");
+ return e$6(e$14, n$11, { get() {
+ const t$7 = this.renderRoot?.querySelector(c$7), e$15 = t$7?.assignedElements(o$14) ?? [];
+ return void 0 === s$9 ? e$15 : e$15.filter(((t$8) => t$8.matches(s$9)));
+ } });
+ };
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ function n$5(n$11) {
+ return (o$14, r$11) => {
+ const { slot: e$14 } = n$11 ?? {}, s$9 = "slot" + (e$14 ? `[name=${e$14}]` : ":not([name])");
+ return e$6(o$14, r$11, { get() {
+ const t$7 = this.renderRoot?.querySelector(s$9);
+ return t$7?.assignedNodes(n$11) ?? [];
+ } });
+ };
+}
+
+//#endregion
+//#region node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/lib/signal-watcher.js
+/**
+* @license
+* Copyright 2023 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const i$6 = Symbol("SignalWatcherBrand"), s$1 = new FinalizationRegistry((({ watcher: t$7, signal: i$10 }) => {
+ t$7.unwatch(i$10);
+})), h$3 = new WeakMap();
+function e$5(e$14) {
+ return !0 === e$14[i$6] ? (console.warn("SignalWatcher should not be applied to the same class more than once."), e$14) : class extends e$14 {
+ constructor() {
+ super(...arguments), this._$St = new Signal.State(0), this._$Si = !1, this._$So = !0, this._$Sh = new Set();
+ }
+ _$Sl() {
+ if (void 0 !== this._$Su) return;
+ this._$Sv = new Signal.Computed((() => {
+ this._$St.get(), super.performUpdate();
+ }));
+ const i$10 = this._$Su = new Signal.subtle.Watcher((function() {
+ const t$7 = h$3.get(this);
+ void 0 !== t$7 && (!1 === t$7._$Si && t$7.requestUpdate(), this.watch());
+ }));
+ h$3.set(i$10, this), s$1.register(this, {
+ watcher: i$10,
+ signal: this._$Sv
+ }), i$10.watch(this._$Sv);
+ }
+ _$Sp() {
+ void 0 !== this._$Su && (this._$Su.unwatch(this._$Sv), this._$Sv = void 0, this._$Su = void 0);
+ }
+ performUpdate() {
+ this.isUpdatePending && (this._$Sl(), this._$Si = !0, this._$St.set(this._$St.get() + 1), this._$Si = !1, this._$Sv.get());
+ }
+ update(t$7) {
+ try {
+ this._$So ? (this._$So = !1, super.update(t$7)) : this._$Sh.forEach(((t$8) => t$8.commit()));
+ } finally {
+ this.isUpdatePending = !1, this._$Sh.clear();
+ }
+ }
+ requestUpdate(t$7, i$10, s$9) {
+ this._$So = !0, super.requestUpdate(t$7, i$10, s$9);
+ }
+ connectedCallback() {
+ super.connectedCallback(), this.requestUpdate();
+ }
+ disconnectedCallback() {
+ super.disconnectedCallback(), queueMicrotask((() => {
+ !1 === this.isConnected && this._$Sp();
+ }));
+ }
+ _(t$7) {
+ this._$Sh.add(t$7);
+ const i$10 = this._$So;
+ this.requestUpdate(), this._$So = i$10;
+ }
+ m(t$7) {
+ this._$Sh.delete(t$7);
+ }
+ };
+}
+
+//#endregion
+//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/async-directive.js
+/**
+* @license
+* Copyright 2017 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const s = (i$10, t$7) => {
+ const e$14 = i$10._$AN;
+ if (void 0 === e$14) return !1;
+ for (const i$11 of e$14) i$11._$AO?.(t$7, !1), s(i$11, t$7);
+ return !0;
+}, o$6 = (i$10) => {
+ let t$7, e$14;
+ do {
+ if (void 0 === (t$7 = i$10._$AM)) break;
+ e$14 = t$7._$AN, e$14.delete(i$10), i$10 = t$7;
+ } while (0 === e$14?.size);
+}, r$4 = (i$10) => {
+ for (let t$7; t$7 = i$10._$AM; i$10 = t$7) {
+ let e$14 = t$7._$AN;
+ if (void 0 === e$14) t$7._$AN = e$14 = new Set();
+ else if (e$14.has(i$10)) break;
+ e$14.add(i$10), c$2(t$7);
+ }
+};
+function h$2(i$10) {
+ void 0 !== this._$AN ? (o$6(this), this._$AM = i$10, r$4(this)) : this._$AM = i$10;
+}
+function n$4(i$10, t$7 = !1, e$14 = 0) {
+ const r$11 = this._$AH, h$7 = this._$AN;
+ if (void 0 !== h$7 && 0 !== h$7.size) if (t$7) if (Array.isArray(r$11)) for (let i$11 = e$14; i$11 < r$11.length; i$11++) s(r$11[i$11], !1), o$6(r$11[i$11]);
+ else null != r$11 && (s(r$11, !1), o$6(r$11));
+ else s(this, i$10);
+}
+const c$2 = (i$10) => {
+ i$10.type == t$1.CHILD && (i$10._$AP ??= n$4, i$10._$AQ ??= h$2);
+};
+var f = class extends i$3 {
+ constructor() {
+ super(...arguments), this._$AN = void 0;
+ }
+ _$AT(i$10, t$7, e$14) {
+ super._$AT(i$10, t$7, e$14), r$4(this), this.isConnected = i$10._$AU;
+ }
+ _$AO(i$10, t$7 = !0) {
+ i$10 !== this.isConnected && (this.isConnected = i$10, i$10 ? this.reconnected?.() : this.disconnected?.()), t$7 && (s(this, i$10), o$6(this));
+ }
+ setValue(t$7) {
+ if (f$1(this._$Ct)) this._$Ct._$AI(t$7, this);
+ else {
+ const i$10 = [...this._$Ct._$AH];
+ i$10[this._$Ci] = t$7, this._$Ct._$AI(i$10, this, 0);
+ }
+ }
+ disconnected() {}
+ reconnected() {}
+};
+
+//#endregion
+//#region node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/lib/watch.js
+/**
+* @license
+* Copyright 2023 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ var h$1 = class extends f {
+ _$Sl() {
+ if (void 0 !== this._$Su) return;
+ this._$SW = new Signal.Computed((() => {
+ var i$11;
+ return null === (i$11 = this._$Sj) || void 0 === i$11 ? void 0 : i$11.get();
+ }));
+ const i$10 = this._$Su = new Signal.subtle.Watcher((() => {
+ var t$7;
+ null === (t$7 = this._$SO) || void 0 === t$7 || t$7._(this), i$10.watch();
+ }));
+ i$10.watch(this._$SW);
+ }
+ _$Sp() {
+ var i$10;
+ void 0 !== this._$Su && (this._$Su.unwatch(this._$SW), this._$SW = void 0, this._$Su = void 0, null === (i$10 = this._$SO) || void 0 === i$10 || i$10.m(this));
+ }
+ commit() {
+ this.setValue(Signal.subtle.untrack((() => {
+ var i$10;
+ return null === (i$10 = this._$SW) || void 0 === i$10 ? void 0 : i$10.get();
+ })));
+ }
+ render(i$10) {
+ return Signal.subtle.untrack((() => i$10.get()));
+ }
+ update(i$10, [t$7]) {
+ var h$7, o$14;
+ return null !== (h$7 = this._$SO) && void 0 !== h$7 || (this._$SO = null === (o$14 = i$10.options) || void 0 === o$14 ? void 0 : o$14.host), t$7 !== this._$Sj && void 0 !== this._$Sj && this._$Sp(), this._$Sj = t$7, this._$Sl(), Signal.subtle.untrack((() => this._$SW.get()));
+ }
+ disconnected() {
+ this._$Sp();
+ }
+ reconnected() {
+ this._$Sl();
+ }
+};
+const o$4 = e$1(h$1);
+
+//#endregion
+//#region node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/lib/html-tag.js
+/**
+* @license
+* Copyright 2023 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const m = (o$14) => (t$7, ...m$3) => o$14(t$7, ...m$3.map(((o$15) => o$15 instanceof Signal.State || o$15 instanceof Signal.Computed ? o$4(o$15) : o$15))), l = m(x), r$2 = m(b);
+
+//#endregion
+//#region node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/index.js
+/**
+* @license
+* Copyright 2023 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/ const l$1 = Signal.State, o$5 = Signal.Computed, r$3 = (l$5, o$14) => new Signal.State(l$5, o$14), i$5 = (l$5, o$14) => new Signal.Computed(l$5, o$14);
+
+//#endregion
+//#region node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/map.js
+/**
+* @license
+* Copyright 2021 Google LLC
+* SPDX-License-Identifier: BSD-3-Clause
+*/
+function* o$3(o$14, f$4) {
+ if (void 0 !== o$14) {
+ let i$10 = 0;
+ for (const t$7 of o$14) yield f$4(t$7, i$10++);
+ }
+}
+
+//#endregion
+//#region node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/dist/subtle/microtask-effect.ts.js
+let pending = false;
+let watcher = new Signal.subtle.Watcher(() => {
+ if (!pending) {
+ pending = true;
+ queueMicrotask(() => {
+ pending = false;
+ flushPending();
+ });
+ }
+});
+function flushPending() {
+ for (const signal of watcher.getPending()) {
+ signal.get();
+ }
+ watcher.watch();
+}
+/**
+* ⚠️ WARNING: Nothing unwatches ⚠️
+* This will produce a memory leak.
+*/
+function effect(cb) {
+ let c$7 = new Signal.Computed(() => cb());
+ watcher.watch(c$7);
+ c$7.get();
+ return () => {
+ watcher.unwatch(c$7);
+ };
+}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.js
+const themeContext = n$3("A2UITheme");
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.js
+const structuralStyles = r$1(structuralStyles$1);
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.js
+var ComponentRegistry = class {
+ constructor() {
+ this.registry = new Map();
+ }
+ register(typeName, constructor, tagName) {
+ if (!/^[a-zA-Z0-9]+$/.test(typeName)) {
+ throw new Error(`[Registry] Invalid typeName '${typeName}'. Must be alphanumeric.`);
+ }
+ this.registry.set(typeName, constructor);
+ const actualTagName = tagName || `a2ui-custom-${typeName.toLowerCase()}`;
+ const existingName = customElements.getName(constructor);
+ if (existingName) {
+ if (existingName !== actualTagName) {
+ throw new Error(`Component ${typeName} is already registered as ${existingName}, but requested as ${actualTagName}.`);
+ }
+ return;
+ }
+ if (!customElements.get(actualTagName)) {
+ customElements.define(actualTagName, constructor);
+ }
+ }
+ get(typeName) {
+ return this.registry.get(typeName);
+ }
+};
+const componentRegistry = new ComponentRegistry();
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.js
+var __runInitializers$19 = void 0 && (void 0).__runInitializers || function(thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i$10 = 0; i$10 < initializers.length; i$10++) {
+ value = useValue ? initializers[i$10].call(thisArg, value) : initializers[i$10].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+var __esDecorate$19 = void 0 && (void 0).__esDecorate || function(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f$4) {
+ if (f$4 !== void 0 && typeof f$4 !== "function") throw new TypeError("Function expected");
+ return f$4;
+ }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _$1, done = false;
+ for (var i$10 = decorators.length - 1; i$10 >= 0; i$10--) {
+ var context = {};
+ for (var p$3 in contextIn) context[p$3] = p$3 === "access" ? {} : contextIn[p$3];
+ for (var p$3 in contextIn.access) context.access[p$3] = contextIn.access[p$3];
+ context.addInitializer = function(f$4) {
+ if (done) throw new TypeError("Cannot add initializers after decoration has completed");
+ extraInitializers.push(accept(f$4 || null));
+ };
+ var result = (0, decorators[i$10])(kind === "accessor" ? {
+ get: descriptor.get,
+ set: descriptor.set
+ } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_$1 = accept(result.get)) descriptor.get = _$1;
+ if (_$1 = accept(result.set)) descriptor.set = _$1;
+ if (_$1 = accept(result.init)) initializers.unshift(_$1);
+ } else if (_$1 = accept(result)) {
+ if (kind === "field") initializers.unshift(_$1);
+ else descriptor[key] = _$1;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+let Root = (() => {
+ let _classDecorators = [t("a2ui-root")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = e$5(i$1);
+ let _instanceExtraInitializers = [];
+ let _surfaceId_decorators;
+ let _surfaceId_initializers = [];
+ let _surfaceId_extraInitializers = [];
+ let _component_decorators;
+ let _component_initializers = [];
+ let _component_extraInitializers = [];
+ let _theme_decorators;
+ let _theme_initializers = [];
+ let _theme_extraInitializers = [];
+ let _childComponents_decorators;
+ let _childComponents_initializers = [];
+ let _childComponents_extraInitializers = [];
+ let _processor_decorators;
+ let _processor_initializers = [];
+ let _processor_extraInitializers = [];
+ let _dataContextPath_decorators;
+ let _dataContextPath_initializers = [];
+ let _dataContextPath_extraInitializers = [];
+ let _enableCustomElements_decorators;
+ let _enableCustomElements_initializers = [];
+ let _enableCustomElements_extraInitializers = [];
+ let _set_weight_decorators;
+ var Root$1 = class extends _classSuper {
+ static {
+ _classThis = this;
+ }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _surfaceId_decorators = [n()];
+ _component_decorators = [n()];
+ _theme_decorators = [c$1({ context: themeContext })];
+ _childComponents_decorators = [n({ attribute: false })];
+ _processor_decorators = [n({ attribute: false })];
+ _dataContextPath_decorators = [n()];
+ _enableCustomElements_decorators = [n()];
+ _set_weight_decorators = [n()];
+ __esDecorate$19(this, null, _surfaceId_decorators, {
+ kind: "accessor",
+ name: "surfaceId",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "surfaceId" in obj,
+ get: (obj) => obj.surfaceId,
+ set: (obj, value) => {
+ obj.surfaceId = value;
+ }
+ },
+ metadata: _metadata
+ }, _surfaceId_initializers, _surfaceId_extraInitializers);
+ __esDecorate$19(this, null, _component_decorators, {
+ kind: "accessor",
+ name: "component",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "component" in obj,
+ get: (obj) => obj.component,
+ set: (obj, value) => {
+ obj.component = value;
+ }
+ },
+ metadata: _metadata
+ }, _component_initializers, _component_extraInitializers);
+ __esDecorate$19(this, null, _theme_decorators, {
+ kind: "accessor",
+ name: "theme",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "theme" in obj,
+ get: (obj) => obj.theme,
+ set: (obj, value) => {
+ obj.theme = value;
+ }
+ },
+ metadata: _metadata
+ }, _theme_initializers, _theme_extraInitializers);
+ __esDecorate$19(this, null, _childComponents_decorators, {
+ kind: "accessor",
+ name: "childComponents",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "childComponents" in obj,
+ get: (obj) => obj.childComponents,
+ set: (obj, value) => {
+ obj.childComponents = value;
+ }
+ },
+ metadata: _metadata
+ }, _childComponents_initializers, _childComponents_extraInitializers);
+ __esDecorate$19(this, null, _processor_decorators, {
+ kind: "accessor",
+ name: "processor",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "processor" in obj,
+ get: (obj) => obj.processor,
+ set: (obj, value) => {
+ obj.processor = value;
+ }
+ },
+ metadata: _metadata
+ }, _processor_initializers, _processor_extraInitializers);
+ __esDecorate$19(this, null, _dataContextPath_decorators, {
+ kind: "accessor",
+ name: "dataContextPath",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "dataContextPath" in obj,
+ get: (obj) => obj.dataContextPath,
+ set: (obj, value) => {
+ obj.dataContextPath = value;
+ }
+ },
+ metadata: _metadata
+ }, _dataContextPath_initializers, _dataContextPath_extraInitializers);
+ __esDecorate$19(this, null, _enableCustomElements_decorators, {
+ kind: "accessor",
+ name: "enableCustomElements",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "enableCustomElements" in obj,
+ get: (obj) => obj.enableCustomElements,
+ set: (obj, value) => {
+ obj.enableCustomElements = value;
+ }
+ },
+ metadata: _metadata
+ }, _enableCustomElements_initializers, _enableCustomElements_extraInitializers);
+ __esDecorate$19(this, null, _set_weight_decorators, {
+ kind: "setter",
+ name: "weight",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "weight" in obj,
+ set: (obj, value) => {
+ obj.weight = value;
+ }
+ },
+ metadata: _metadata
+ }, null, _instanceExtraInitializers);
+ __esDecorate$19(null, _classDescriptor = { value: _classThis }, _classDecorators, {
+ kind: "class",
+ name: _classThis.name,
+ metadata: _metadata
+ }, null, _classExtraInitializers);
+ Root$1 = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: _metadata
+ });
+ }
+ #surfaceId_accessor_storage = (__runInitializers$19(this, _instanceExtraInitializers), __runInitializers$19(this, _surfaceId_initializers, null));
+ get surfaceId() {
+ return this.#surfaceId_accessor_storage;
+ }
+ set surfaceId(value) {
+ this.#surfaceId_accessor_storage = value;
+ }
+ #component_accessor_storage = (__runInitializers$19(this, _surfaceId_extraInitializers), __runInitializers$19(this, _component_initializers, null));
+ get component() {
+ return this.#component_accessor_storage;
+ }
+ set component(value) {
+ this.#component_accessor_storage = value;
+ }
+ #theme_accessor_storage = (__runInitializers$19(this, _component_extraInitializers), __runInitializers$19(this, _theme_initializers, void 0));
+ get theme() {
+ return this.#theme_accessor_storage;
+ }
+ set theme(value) {
+ this.#theme_accessor_storage = value;
+ }
+ #childComponents_accessor_storage = (__runInitializers$19(this, _theme_extraInitializers), __runInitializers$19(this, _childComponents_initializers, null));
+ get childComponents() {
+ return this.#childComponents_accessor_storage;
+ }
+ set childComponents(value) {
+ this.#childComponents_accessor_storage = value;
+ }
+ #processor_accessor_storage = (__runInitializers$19(this, _childComponents_extraInitializers), __runInitializers$19(this, _processor_initializers, null));
+ get processor() {
+ return this.#processor_accessor_storage;
+ }
+ set processor(value) {
+ this.#processor_accessor_storage = value;
+ }
+ #dataContextPath_accessor_storage = (__runInitializers$19(this, _processor_extraInitializers), __runInitializers$19(this, _dataContextPath_initializers, ""));
+ get dataContextPath() {
+ return this.#dataContextPath_accessor_storage;
+ }
+ set dataContextPath(value) {
+ this.#dataContextPath_accessor_storage = value;
+ }
+ #enableCustomElements_accessor_storage = (__runInitializers$19(this, _dataContextPath_extraInitializers), __runInitializers$19(this, _enableCustomElements_initializers, false));
+ get enableCustomElements() {
+ return this.#enableCustomElements_accessor_storage;
+ }
+ set enableCustomElements(value) {
+ this.#enableCustomElements_accessor_storage = value;
+ }
+ set weight(weight) {
+ this.#weight = weight;
+ this.style.setProperty("--weight", `${weight}`);
+ }
+ get weight() {
+ return this.#weight;
+ }
+ #weight = (__runInitializers$19(this, _enableCustomElements_extraInitializers), 1);
+ static {
+ this.styles = [structuralStyles, i`
+ :host {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ max-height: 80%;
+ }
+ `];
+ }
+ /**
+ * Holds the cleanup function for our effect.
+ * We need this to stop the effect when the component is disconnected.
+ */
+ #lightDomEffectDisposer = null;
+ willUpdate(changedProperties) {
+ if (changedProperties.has("childComponents")) {
+ if (this.#lightDomEffectDisposer) {
+ this.#lightDomEffectDisposer();
+ }
+ this.#lightDomEffectDisposer = effect(() => {
+ const allChildren = this.childComponents ?? null;
+ const lightDomTemplate = this.renderComponentTree(allChildren);
+ B(lightDomTemplate, this, { host: this });
+ });
+ }
+ }
+ /**
+ * Clean up the effect when the component is removed from the DOM.
+ */
+ disconnectedCallback() {
+ super.disconnectedCallback();
+ if (this.#lightDomEffectDisposer) {
+ this.#lightDomEffectDisposer();
+ }
+ }
+ /**
+ * Turns the SignalMap into a renderable TemplateResult for Lit.
+ */
+ renderComponentTree(components) {
+ if (!components) {
+ return E;
+ }
+ if (!Array.isArray(components)) {
+ return E;
+ }
+ return x` ${o$3(components, (component) => {
+ if (this.enableCustomElements) {
+ const registeredCtor = componentRegistry.get(component.type);
+ const elCtor = registeredCtor || customElements.get(component.type);
+ if (elCtor) {
+ const node = component;
+ const el = new elCtor();
+ el.id = node.id;
+ if (node.slotName) {
+ el.slot = node.slotName;
+ }
+ el.component = node;
+ el.weight = node.weight ?? "initial";
+ el.processor = this.processor;
+ el.surfaceId = this.surfaceId;
+ el.dataContextPath = node.dataContextPath ?? "/";
+ for (const [prop, val] of Object.entries(component.properties)) {
+ el[prop] = val;
+ }
+ return x`${el}`;
+ }
+ }
+ switch (component.type) {
+ case "List": {
+ const node = component;
+ const childComponents = node.properties.children;
+ return x`
" + escapeHtml(token.content) + "";
+};
+default_rules.code_block = function(tokens, idx, options, env, slf) {
+ const token = tokens[idx];
+ return "" + escapeHtml(tokens[idx].content) + "\n";
+};
+default_rules.fence = function(tokens, idx, options, env, slf) {
+ const token = tokens[idx];
+ const info = token.info ? unescapeAll(token.info).trim() : "";
+ let langName = "";
+ let langAttrs = "";
+ if (info) {
+ const arr = info.split(/(\s+)/g);
+ langName = arr[0];
+ langAttrs = arr.slice(2).join("");
+ }
+ let highlighted;
+ if (options.highlight) {
+ highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);
+ } else {
+ highlighted = escapeHtml(token.content);
+ }
+ if (highlighted.indexOf("${highlighted}\n`;
+ }
+ return `${highlighted}\n`;
+};
+default_rules.image = function(tokens, idx, options, env, slf) {
+ const token = tokens[idx];
+ token.attrs[token.attrIndex("alt")][1] = slf.renderInlineAsText(token.children, options, env);
+ return slf.renderToken(tokens, idx, options);
+};
+default_rules.hardbreak = function(tokens, idx, options) {
+ return options.xhtmlOut ? "`):
+*
+* ```javascript
+* var hljs = require('highlight.js') // https://highlightjs.org/
+*
+* // Actual default values
+* var md = require('markdown-it')({
+* highlight: function (str, lang) {
+* if (lang && hljs.getLanguage(lang)) {
+* try {
+* return '' +
+* hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +
+* '
';
+* } catch (__) {}
+* }
+*
+* return '' + md.utils.escapeHtml(str) + '
';
+* }
+* });
+* ```
+*
+**/
+function MarkdownIt(presetName, options) {
+ if (!(this instanceof MarkdownIt)) {
+ return new MarkdownIt(presetName, options);
+ }
+ if (!options) {
+ if (!isString$1(presetName)) {
+ options = presetName || {};
+ presetName = "default";
+ }
+ }
+ /**
+ * MarkdownIt#inline -> ParserInline
+ *
+ * Instance of [[ParserInline]]. You may need it to add new rules when
+ * writing plugins. For simple rules control use [[MarkdownIt.disable]] and
+ * [[MarkdownIt.enable]].
+ **/
+ this.inline = new parser_inline_default();
+ /**
+ * MarkdownIt#block -> ParserBlock
+ *
+ * Instance of [[ParserBlock]]. You may need it to add new rules when
+ * writing plugins. For simple rules control use [[MarkdownIt.disable]] and
+ * [[MarkdownIt.enable]].
+ **/
+ this.block = new parser_block_default();
+ /**
+ * MarkdownIt#core -> Core
+ *
+ * Instance of [[Core]] chain executor. You may need it to add new rules when
+ * writing plugins. For simple rules control use [[MarkdownIt.disable]] and
+ * [[MarkdownIt.enable]].
+ **/
+ this.core = new parser_core_default();
+ /**
+ * MarkdownIt#renderer -> Renderer
+ *
+ * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering
+ * rules for new token types, generated by plugins.
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * var md = require('markdown-it')();
+ *
+ * function myToken(tokens, idx, options, env, self) {
+ * //...
+ * return result;
+ * };
+ *
+ * md.renderer.rules['my_token'] = myToken
+ * ```
+ *
+ * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs).
+ **/
+ this.renderer = new renderer_default();
+ /**
+ * MarkdownIt#linkify -> LinkifyIt
+ *
+ * [linkify-it](https://github.com/markdown-it/linkify-it) instance.
+ * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.mjs)
+ * rule.
+ **/
+ this.linkify = new linkify_it_default();
+ /**
+ * MarkdownIt#validateLink(url) -> Boolean
+ *
+ * Link validation function. CommonMark allows too much in links. By default
+ * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas
+ * except some embedded image types.
+ *
+ * You can change this behaviour:
+ *
+ * ```javascript
+ * var md = require('markdown-it')();
+ * // enable everything
+ * md.validateLink = function () { return true; }
+ * ```
+ **/
+ this.validateLink = validateLink;
+ /**
+ * MarkdownIt#normalizeLink(url) -> String
+ *
+ * Function used to encode link url to a machine-readable format,
+ * which includes url-encoding, punycode, etc.
+ **/
+ this.normalizeLink = normalizeLink;
+ /**
+ * MarkdownIt#normalizeLinkText(url) -> String
+ *
+ * Function used to decode link url to a human-readable format`
+ **/
+ this.normalizeLinkText = normalizeLinkText;
+ /**
+ * MarkdownIt#utils -> utils
+ *
+ * Assorted utility functions, useful to write plugins. See details
+ * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.mjs).
+ **/
+ this.utils = utils_exports$1;
+ /**
+ * MarkdownIt#helpers -> helpers
+ *
+ * Link components parser functions, useful to write plugins. See details
+ * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).
+ **/
+ this.helpers = assign$1({}, helpers_exports);
+ this.options = {};
+ this.configure(presetName);
+ if (options) {
+ this.set(options);
+ }
+}
+/** chainable
+* MarkdownIt.set(options)
+*
+* Set parser options (in the same format as in constructor). Probably, you
+* will never need it, but you can change options after constructor call.
+*
+* ##### Example
+*
+* ```javascript
+* var md = require('markdown-it')()
+* .set({ html: true, breaks: true })
+* .set({ typographer, true });
+* ```
+*
+* __Note:__ To achieve the best possible performance, don't modify a
+* `markdown-it` instance options on the fly. If you need multiple configurations
+* it's best to create multiple instances and initialize each with separate
+* config.
+**/
+MarkdownIt.prototype.set = function(options) {
+ assign$1(this.options, options);
+ return this;
+};
+/** chainable, internal
+* MarkdownIt.configure(presets)
+*
+* Batch load of all options and compenent settings. This is internal method,
+* and you probably will not need it. But if you will - see available presets
+* and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)
+*
+* We strongly recommend to use presets instead of direct config loads. That
+* will give better compatibility with next versions.
+**/
+MarkdownIt.prototype.configure = function(presets) {
+ const self = this;
+ if (isString$1(presets)) {
+ const presetName = presets;
+ presets = config[presetName];
+ if (!presets) {
+ throw new Error("Wrong `markdown-it` preset \"" + presetName + "\", check name");
+ }
+ }
+ if (!presets) {
+ throw new Error("Wrong `markdown-it` preset, can't be empty");
+ }
+ if (presets.options) {
+ self.set(presets.options);
+ }
+ if (presets.components) {
+ Object.keys(presets.components).forEach(function(name) {
+ if (presets.components[name].rules) {
+ self[name].ruler.enableOnly(presets.components[name].rules);
+ }
+ if (presets.components[name].rules2) {
+ self[name].ruler2.enableOnly(presets.components[name].rules2);
+ }
+ });
+ }
+ return this;
+};
+/** chainable
+* MarkdownIt.enable(list, ignoreInvalid)
+* - list (String|Array): rule name or list of rule names to enable
+* - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.
+*
+* Enable list or rules. It will automatically find appropriate components,
+* containing rules with given names. If rule not found, and `ignoreInvalid`
+* not set - throws exception.
+*
+* ##### Example
+*
+* ```javascript
+* var md = require('markdown-it')()
+* .enable(['sub', 'sup'])
+* .disable('smartquotes');
+* ```
+**/
+MarkdownIt.prototype.enable = function(list$1, ignoreInvalid) {
+ let result = [];
+ if (!Array.isArray(list$1)) {
+ list$1 = [list$1];
+ }
+ [
+ "core",
+ "block",
+ "inline"
+ ].forEach(function(chain) {
+ result = result.concat(this[chain].ruler.enable(list$1, true));
+ }, this);
+ result = result.concat(this.inline.ruler2.enable(list$1, true));
+ const missed = list$1.filter(function(name) {
+ return result.indexOf(name) < 0;
+ });
+ if (missed.length && !ignoreInvalid) {
+ throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + missed);
+ }
+ return this;
+};
+/** chainable
+* MarkdownIt.disable(list, ignoreInvalid)
+* - list (String|Array): rule name or list of rule names to disable.
+* - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.
+*
+* The same as [[MarkdownIt.enable]], but turn specified rules off.
+**/
+MarkdownIt.prototype.disable = function(list$1, ignoreInvalid) {
+ let result = [];
+ if (!Array.isArray(list$1)) {
+ list$1 = [list$1];
+ }
+ [
+ "core",
+ "block",
+ "inline"
+ ].forEach(function(chain) {
+ result = result.concat(this[chain].ruler.disable(list$1, true));
+ }, this);
+ result = result.concat(this.inline.ruler2.disable(list$1, true));
+ const missed = list$1.filter(function(name) {
+ return result.indexOf(name) < 0;
+ });
+ if (missed.length && !ignoreInvalid) {
+ throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + missed);
+ }
+ return this;
+};
+/** chainable
+* MarkdownIt.use(plugin, params)
+*
+* Load specified plugin with given params into current parser instance.
+* It's just a sugar to call `plugin(md, params)` with curring.
+*
+* ##### Example
+*
+* ```javascript
+* var iterator = require('markdown-it-for-inline');
+* var md = require('markdown-it')()
+* .use(iterator, 'foo_replace', 'text', function (tokens, idx) {
+* tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');
+* });
+* ```
+**/
+MarkdownIt.prototype.use = function(plugin) {
+ const args = [this].concat(Array.prototype.slice.call(arguments, 1));
+ plugin.apply(plugin, args);
+ return this;
+};
+/** internal
+* MarkdownIt.parse(src, env) -> Array
+* - src (String): source string
+* - env (Object): environment sandbox
+*
+* Parse input string and return list of block tokens (special token type
+* "inline" will contain list of inline tokens). You should not call this
+* method directly, until you write custom renderer (for example, to produce
+* AST).
+*
+* `env` is used to pass data between "distributed" rules and return additional
+* metadata like reference info, needed for the renderer. It also can be used to
+* inject data in specific cases. Usually, you will be ok to pass `{}`,
+* and then pass updated object to renderer.
+**/
+MarkdownIt.prototype.parse = function(src, env) {
+ if (typeof src !== "string") {
+ throw new Error("Input data should be a String");
+ }
+ const state = new this.core.State(src, this, env);
+ this.core.process(state);
+ return state.tokens;
+};
+/**
+* MarkdownIt.render(src [, env]) -> String
+* - src (String): source string
+* - env (Object): environment sandbox
+*
+* Render markdown string into html. It does all magic for you :).
+*
+* `env` can be used to inject additional metadata (`{}` by default).
+* But you will not need it with high probability. See also comment
+* in [[MarkdownIt.parse]].
+**/
+MarkdownIt.prototype.render = function(src, env) {
+ env = env || {};
+ return this.renderer.render(this.parse(src, env), this.options, env);
+};
+/** internal
+* MarkdownIt.parseInline(src, env) -> Array
+* - src (String): source string
+* - env (Object): environment sandbox
+*
+* The same as [[MarkdownIt.parse]] but skip all block rules. It returns the
+* block tokens list with the single `inline` element, containing parsed inline
+* tokens in `children` property. Also updates `env` object.
+**/
+MarkdownIt.prototype.parseInline = function(src, env) {
+ const state = new this.core.State(src, this, env);
+ state.inlineMode = true;
+ this.core.process(state);
+ return state.tokens;
+};
+/**
+* MarkdownIt.renderInline(src [, env]) -> String
+* - src (String): source string
+* - env (Object): environment sandbox
+*
+* Similar to [[MarkdownIt.render]] but for single paragraph content. Result
+* will NOT be wrapped into `` tags.
+**/
+MarkdownIt.prototype.renderInline = function(src, env) {
+ env = env || {};
+ return this.renderer.render(this.parseInline(src, env), this.options, env);
+};
+var lib_default = MarkdownIt;
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.js
+/**
+* This is only safe for (and intended to be used for) text node positions. If
+* you are using attribute position, then this is only safe if the attribute
+* value is surrounded by double-quotes, and is unsafe otherwise (because the
+* value could break out of the attribute value and e.g. add another attribute).
+*/
+function escapeNodeText(str) {
+ const frag = document.createElement("div");
+ B(x`${str}`, frag);
+ return frag.innerHTML.replaceAll(//gim, "");
+}
+function unescapeNodeText(str) {
+ if (!str) {
+ return "";
+ }
+ const frag = document.createElement("textarea");
+ frag.innerHTML = str;
+ return frag.value;
+}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.js
+var MarkdownDirective = class extends i$3 {
+ #markdownIt = lib_default({ highlight: (str, lang) => {
+ switch (lang) {
+ case "html": {
+ const iframe = document.createElement("iframe");
+ iframe.classList.add("html-view");
+ iframe.srcdoc = str;
+ iframe.sandbox = "";
+ return iframe.innerHTML;
+ }
+ default: return escapeNodeText(str);
+ }
+ } });
+ #lastValue = null;
+ #lastTagClassMap = null;
+ update(_part, [value, tagClassMap]) {
+ if (this.#lastValue === value && JSON.stringify(tagClassMap) === this.#lastTagClassMap) {
+ return T;
+ }
+ this.#lastValue = value;
+ this.#lastTagClassMap = JSON.stringify(tagClassMap);
+ return this.render(value, tagClassMap);
+ }
+ #originalClassMap = new Map();
+ #applyTagClassMap(tagClassMap) {
+ Object.entries(tagClassMap).forEach(([tag]) => {
+ let tokenName;
+ switch (tag) {
+ case "p":
+ tokenName = "paragraph";
+ break;
+ case "h1":
+ case "h2":
+ case "h3":
+ case "h4":
+ case "h5":
+ case "h6":
+ tokenName = "heading";
+ break;
+ case "ul":
+ tokenName = "bullet_list";
+ break;
+ case "ol":
+ tokenName = "ordered_list";
+ break;
+ case "li":
+ tokenName = "list_item";
+ break;
+ case "a":
+ tokenName = "link";
+ break;
+ case "strong":
+ tokenName = "strong";
+ break;
+ case "em":
+ tokenName = "em";
+ break;
+ }
+ if (!tokenName) {
+ return;
+ }
+ const key = `${tokenName}_open`;
+ this.#markdownIt.renderer.rules[key] = (tokens, idx, options, _env, self) => {
+ const token = tokens[idx];
+ const tokenClasses = tagClassMap[token.tag] ?? [];
+ for (const clazz of tokenClasses) {
+ token.attrJoin("class", clazz);
+ }
+ return self.renderToken(tokens, idx, options);
+ };
+ });
+ }
+ #unapplyTagClassMap() {
+ for (const [key] of this.#originalClassMap) {
+ delete this.#markdownIt.renderer.rules[key];
+ }
+ this.#originalClassMap.clear();
+ }
+ /**
+ * Renders the markdown string to HTML using MarkdownIt.
+ *
+ * Note: MarkdownIt doesn't enable HTML in its output, so we render the
+ * value directly without further sanitization.
+ * @see https://github.com/markdown-it/markdown-it/blob/master/docs/security.md
+ */
+ render(value, tagClassMap) {
+ if (tagClassMap) {
+ this.#applyTagClassMap(tagClassMap);
+ }
+ const htmlString = this.#markdownIt.render(value);
+ this.#unapplyTagClassMap();
+ return o$1(htmlString);
+ }
+};
+const markdown = e$1(MarkdownDirective);
+const markdownItStandalone = lib_default();
+function renderMarkdownToHtmlString(value) {
+ return markdownItStandalone.render(value);
+}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.js
+var __esDecorate$1 = void 0 && (void 0).__esDecorate || function(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f$4) {
+ if (f$4 !== void 0 && typeof f$4 !== "function") throw new TypeError("Function expected");
+ return f$4;
+ }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _$1, done = false;
+ for (var i$10 = decorators.length - 1; i$10 >= 0; i$10--) {
+ var context = {};
+ for (var p$3 in contextIn) context[p$3] = p$3 === "access" ? {} : contextIn[p$3];
+ for (var p$3 in contextIn.access) context.access[p$3] = contextIn.access[p$3];
+ context.addInitializer = function(f$4) {
+ if (done) throw new TypeError("Cannot add initializers after decoration has completed");
+ extraInitializers.push(accept(f$4 || null));
+ };
+ var result = (0, decorators[i$10])(kind === "accessor" ? {
+ get: descriptor.get,
+ set: descriptor.set
+ } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_$1 = accept(result.get)) descriptor.get = _$1;
+ if (_$1 = accept(result.set)) descriptor.set = _$1;
+ if (_$1 = accept(result.init)) initializers.unshift(_$1);
+ } else if (_$1 = accept(result)) {
+ if (kind === "field") initializers.unshift(_$1);
+ else descriptor[key] = _$1;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers$1 = void 0 && (void 0).__runInitializers || function(thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i$10 = 0; i$10 < initializers.length; i$10++) {
+ value = useValue ? initializers[i$10].call(thisArg, value) : initializers[i$10].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+let Text = (() => {
+ let _classDecorators = [t("a2ui-text")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _text_decorators;
+ let _text_initializers = [];
+ let _text_extraInitializers = [];
+ let _usageHint_decorators;
+ let _usageHint_initializers = [];
+ let _usageHint_extraInitializers = [];
+ var Text$1 = class extends _classSuper {
+ static {
+ _classThis = this;
+ }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _text_decorators = [n()];
+ _usageHint_decorators = [n({
+ reflect: true,
+ attribute: "usage-hint"
+ })];
+ __esDecorate$1(this, null, _text_decorators, {
+ kind: "accessor",
+ name: "text",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "text" in obj,
+ get: (obj) => obj.text,
+ set: (obj, value) => {
+ obj.text = value;
+ }
+ },
+ metadata: _metadata
+ }, _text_initializers, _text_extraInitializers);
+ __esDecorate$1(this, null, _usageHint_decorators, {
+ kind: "accessor",
+ name: "usageHint",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "usageHint" in obj,
+ get: (obj) => obj.usageHint,
+ set: (obj, value) => {
+ obj.usageHint = value;
+ }
+ },
+ metadata: _metadata
+ }, _usageHint_initializers, _usageHint_extraInitializers);
+ __esDecorate$1(null, _classDescriptor = { value: _classThis }, _classDecorators, {
+ kind: "class",
+ name: _classThis.name,
+ metadata: _metadata
+ }, null, _classExtraInitializers);
+ Text$1 = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: _metadata
+ });
+ }
+ #text_accessor_storage = __runInitializers$1(this, _text_initializers, null);
+ get text() {
+ return this.#text_accessor_storage;
+ }
+ set text(value) {
+ this.#text_accessor_storage = value;
+ }
+ #usageHint_accessor_storage = (__runInitializers$1(this, _text_extraInitializers), __runInitializers$1(this, _usageHint_initializers, null));
+ get usageHint() {
+ return this.#usageHint_accessor_storage;
+ }
+ set usageHint(value) {
+ this.#usageHint_accessor_storage = value;
+ }
+ static {
+ this.styles = [structuralStyles, i`
+ :host {
+ display: block;
+ flex: var(--weight);
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5 {
+ line-height: inherit;
+ font: inherit;
+ }
+ `];
+ }
+ #renderText() {
+ let textValue = null;
+ if (this.text && typeof this.text === "object") {
+ if ("literalString" in this.text && this.text.literalString) {
+ textValue = this.text.literalString;
+ } else if ("literal" in this.text && this.text.literal !== undefined) {
+ textValue = this.text.literal;
+ } else if (this.text && "path" in this.text && this.text.path) {
+ if (!this.processor || !this.component) {
+ return x`(no model)`;
+ }
+ const value = this.processor.getData(this.component, this.text.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (value !== null && value !== undefined) {
+ textValue = value.toString();
+ }
+ }
+ }
+ if (textValue === null || textValue === undefined) {
+ return x`(empty)`;
+ }
+ let markdownText = textValue;
+ switch (this.usageHint) {
+ case "h1":
+ markdownText = `# ${markdownText}`;
+ break;
+ case "h2":
+ markdownText = `## ${markdownText}`;
+ break;
+ case "h3":
+ markdownText = `### ${markdownText}`;
+ break;
+ case "h4":
+ markdownText = `#### ${markdownText}`;
+ break;
+ case "h5":
+ markdownText = `##### ${markdownText}`;
+ break;
+ case "caption":
+ markdownText = `*${markdownText}*`;
+ break;
+ default: break;
+ }
+ return x`${markdown(markdownText, appendToAll(this.theme.markdown, [
+ "ol",
+ "ul",
+ "li"
+ ], {}))}`;
+ }
+ #areHintedStyles(styles) {
+ if (typeof styles !== "object") return false;
+ if (Array.isArray(styles)) return false;
+ if (!styles) return false;
+ const expected = [
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "caption",
+ "body"
+ ];
+ return expected.every((v$2) => v$2 in styles);
+ }
+ #getAdditionalStyles() {
+ let additionalStyles = {};
+ const styles = this.theme.additionalStyles?.Text;
+ if (!styles) return additionalStyles;
+ if (this.#areHintedStyles(styles)) {
+ const hint = this.usageHint ?? "body";
+ additionalStyles = styles[hint];
+ } else {
+ additionalStyles = styles;
+ }
+ return additionalStyles;
+ }
+ render() {
+ const classes = merge(this.theme.components.Text.all, this.usageHint ? this.theme.components.Text[this.usageHint] : {});
+ return x`
+ ${this.#renderText()}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers$1(this, _usageHint_extraInitializers);
+ }
+ static {
+ __runInitializers$1(_classThis, _classExtraInitializers);
+ }
+ };
+ return Text$1 = _classThis;
+})();
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.js
+var __esDecorate = void 0 && (void 0).__esDecorate || function(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f$4) {
+ if (f$4 !== void 0 && typeof f$4 !== "function") throw new TypeError("Function expected");
+ return f$4;
+ }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _$1, done = false;
+ for (var i$10 = decorators.length - 1; i$10 >= 0; i$10--) {
+ var context = {};
+ for (var p$3 in contextIn) context[p$3] = p$3 === "access" ? {} : contextIn[p$3];
+ for (var p$3 in contextIn.access) context.access[p$3] = contextIn.access[p$3];
+ context.addInitializer = function(f$4) {
+ if (done) throw new TypeError("Cannot add initializers after decoration has completed");
+ extraInitializers.push(accept(f$4 || null));
+ };
+ var result = (0, decorators[i$10])(kind === "accessor" ? {
+ get: descriptor.get,
+ set: descriptor.set
+ } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_$1 = accept(result.get)) descriptor.get = _$1;
+ if (_$1 = accept(result.set)) descriptor.set = _$1;
+ if (_$1 = accept(result.init)) initializers.unshift(_$1);
+ } else if (_$1 = accept(result)) {
+ if (kind === "field") initializers.unshift(_$1);
+ else descriptor[key] = _$1;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = void 0 && (void 0).__runInitializers || function(thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i$10 = 0; i$10 < initializers.length; i$10++) {
+ value = useValue ? initializers[i$10].call(thisArg, value) : initializers[i$10].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+let Video = (() => {
+ let _classDecorators = [t("a2ui-video")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _url_decorators;
+ let _url_initializers = [];
+ let _url_extraInitializers = [];
+ var Video$1 = class extends _classSuper {
+ static {
+ _classThis = this;
+ }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _url_decorators = [n()];
+ __esDecorate(this, null, _url_decorators, {
+ kind: "accessor",
+ name: "url",
+ static: false,
+ private: false,
+ access: {
+ has: (obj) => "url" in obj,
+ get: (obj) => obj.url,
+ set: (obj, value) => {
+ obj.url = value;
+ }
+ },
+ metadata: _metadata
+ }, _url_initializers, _url_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, {
+ kind: "class",
+ name: _classThis.name,
+ metadata: _metadata
+ }, null, _classExtraInitializers);
+ Video$1 = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: _metadata
+ });
+ }
+ #url_accessor_storage = __runInitializers(this, _url_initializers, null);
+ get url() {
+ return this.#url_accessor_storage;
+ }
+ set url(value) {
+ this.#url_accessor_storage = value;
+ }
+ static {
+ this.styles = [structuralStyles, i`
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ video {
+ display: block;
+ width: 100%;
+ }
+ `];
+ }
+ #renderVideo() {
+ if (!this.url) {
+ return E;
+ }
+ if (this.url && typeof this.url === "object") {
+ if ("literalString" in this.url) {
+ return x``;
+ } else if ("literal" in this.url) {
+ return x``;
+ } else if (this.url && "path" in this.url && this.url.path) {
+ if (!this.processor || !this.component) {
+ return x`(no processor)`;
+ }
+ const videoUrl = this.processor.getData(this.component, this.url.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (!videoUrl) {
+ return x`Invalid video URL`;
+ }
+ if (typeof videoUrl !== "string") {
+ return x`Invalid video URL`;
+ }
+ return x``;
+ }
+ }
+ return x`(empty)`;
+ }
+ render() {
+ return x`
+ ${this.#renderVideo()}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _url_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Video$1 = _classThis;
+})();
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.js
+function registerCustomComponents() {}
+
+//#endregion
+//#region vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.js
+/**
+* Type-safely retrieves a custom element constructor using the tagName map.
+* @param tagName The tag name to look up (must exist in HTMLElementTagNameMap).
+* @returns The specific constructor type or undefined.
+*/
+function instanceOf(tagName) {
+ const ctor = customElements.get(tagName);
+ if (!ctor) {
+ console.warn("No element definition for", tagName);
+ return;
+ }
+ return new ctor();
+}
+
+//#endregion
+//#region apps/macos/Sources/Clawdis/Resources/CanvasA2UI/bootstrap.js
+const empty = Object.freeze({});
+const emptyClasses = () => ({});
+const textHintStyles = () => ({
+ h1: {},
+ h2: {},
+ h3: {},
+ h4: {},
+ h5: {},
+ body: {},
+ caption: {}
+});
+const clawdisTheme = {
+ components: {
+ AudioPlayer: emptyClasses(),
+ Button: emptyClasses(),
+ Card: emptyClasses(),
+ Column: emptyClasses(),
+ CheckBox: {
+ container: emptyClasses(),
+ element: emptyClasses(),
+ label: emptyClasses()
+ },
+ DateTimeInput: {
+ container: emptyClasses(),
+ element: emptyClasses(),
+ label: emptyClasses()
+ },
+ Divider: emptyClasses(),
+ Image: {
+ all: emptyClasses(),
+ icon: emptyClasses(),
+ avatar: emptyClasses(),
+ smallFeature: emptyClasses(),
+ mediumFeature: emptyClasses(),
+ largeFeature: emptyClasses(),
+ header: emptyClasses()
+ },
+ Icon: emptyClasses(),
+ List: emptyClasses(),
+ Modal: {
+ backdrop: emptyClasses(),
+ element: emptyClasses()
+ },
+ MultipleChoice: {
+ container: emptyClasses(),
+ element: emptyClasses(),
+ label: emptyClasses()
+ },
+ Row: emptyClasses(),
+ Slider: {
+ container: emptyClasses(),
+ element: emptyClasses(),
+ label: emptyClasses()
+ },
+ Tabs: {
+ container: emptyClasses(),
+ element: emptyClasses(),
+ controls: {
+ all: emptyClasses(),
+ selected: emptyClasses()
+ }
+ },
+ Text: {
+ all: emptyClasses(),
+ h1: emptyClasses(),
+ h2: emptyClasses(),
+ h3: emptyClasses(),
+ h4: emptyClasses(),
+ h5: emptyClasses(),
+ caption: emptyClasses(),
+ body: emptyClasses()
+ },
+ TextField: {
+ container: emptyClasses(),
+ element: emptyClasses(),
+ label: emptyClasses()
+ },
+ Video: emptyClasses()
+ },
+ elements: {
+ a: emptyClasses(),
+ audio: emptyClasses(),
+ body: emptyClasses(),
+ button: emptyClasses(),
+ h1: emptyClasses(),
+ h2: emptyClasses(),
+ h3: emptyClasses(),
+ h4: emptyClasses(),
+ h5: emptyClasses(),
+ iframe: emptyClasses(),
+ input: emptyClasses(),
+ p: emptyClasses(),
+ pre: emptyClasses(),
+ textarea: emptyClasses(),
+ video: emptyClasses()
+ },
+ markdown: {
+ p: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ ul: [],
+ ol: [],
+ li: [],
+ a: [],
+ strong: [],
+ em: []
+ },
+ additionalStyles: {
+ Card: {
+ background: "linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03))",
+ border: "1px solid rgba(255,255,255,.09)",
+ borderRadius: "14px",
+ padding: "14px",
+ boxShadow: "0 10px 30px rgba(0,0,0,.35)"
+ },
+ Column: { gap: "10px" },
+ Row: {
+ gap: "10px",
+ alignItems: "center"
+ },
+ Divider: { opacity: "0.25" },
+ Button: {
+ background: "linear-gradient(135deg, #22c55e 0%, #06b6d4 100%)",
+ border: "0",
+ borderRadius: "12px",
+ padding: "10px 14px",
+ color: "#071016",
+ fontWeight: "650",
+ cursor: "pointer",
+ boxShadow: "0 10px 25px rgba(6, 182, 212, 0.18)"
+ },
+ Text: {
+ ...textHintStyles(),
+ h1: {
+ fontSize: "20px",
+ fontWeight: "750",
+ margin: "0 0 6px 0"
+ },
+ h2: {
+ fontSize: "16px",
+ fontWeight: "700",
+ margin: "0 0 6px 0"
+ },
+ body: {
+ fontSize: "13px",
+ lineHeight: "1.4"
+ },
+ caption: { opacity: "0.8" }
+ },
+ TextField: {
+ display: "grid",
+ gap: "6px"
+ },
+ Image: { borderRadius: "12px" }
+ }
+};
+var ClawdisA2UIHost = class extends i$1 {
+ static properties = { surfaces: { state: true } };
+ #processor = Data.createSignalA2uiMessageProcessor();
+ #themeProvider = new i$2(this, {
+ context: themeContext,
+ initialValue: clawdisTheme
+ });
+ surfaces = [];
+ static styles = i`
+ :host {
+ display: block;
+ height: 100%;
+ box-sizing: border-box;
+ padding: 12px;
+ }
+
+ #surfaces {
+ display: grid;
+ grid-template-columns: 1fr;
+ gap: 12px;
+ height: 100%;
+ overflow: auto;
+ padding-bottom: 24px;
+ }
+ `;
+ connectedCallback() {
+ super.connectedCallback();
+ globalThis.clawdisA2UI = {
+ applyMessages: (messages) => this.applyMessages(messages),
+ reset: () => this.reset(),
+ getSurfaces: () => Array.from(this.#processor.getSurfaces().keys())
+ };
+ this.#syncSurfaces();
+ }
+ applyMessages(messages) {
+ if (!Array.isArray(messages)) {
+ throw new Error("A2UI: expected messages array");
+ }
+ this.#processor.processMessages(messages);
+ this.#syncSurfaces();
+ return {
+ ok: true,
+ surfaces: this.surfaces.map(([id]) => id)
+ };
+ }
+ reset() {
+ this.#processor.clearSurfaces();
+ this.#syncSurfaces();
+ return { ok: true };
+ }
+ #syncSurfaces() {
+ this.surfaces = Array.from(this.#processor.getSurfaces().entries());
+ }
+ render() {
+ if (this.surfaces.length === 0) {
+ return x`
+ Canvas (A2UI)
+ Waiting for A2UI messages…
+ `;
+ }
+ return x`
+ ${c(this.surfaces, ([surfaceId]) => surfaceId, ([surfaceId, surface]) => x` `)}
+ `;
+ }
+};
+customElements.define("clawdis-a2ui-host", ClawdisA2UIHost);
+
+//#endregion
\ No newline at end of file
diff --git a/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/bootstrap.js b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/bootstrap.js
new file mode 100644
index 0000000000..dac4e9c6e6
--- /dev/null
+++ b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/bootstrap.js
@@ -0,0 +1,197 @@
+import { html, css, LitElement } from "lit";
+import { repeat } from "lit/directives/repeat.js";
+import { ContextProvider } from "@lit/context";
+
+import { v0_8 } from "@a2ui/lit";
+import "@a2ui/lit/ui";
+import { themeContext } from "@clawdis/a2ui-theme-context";
+
+const empty = Object.freeze({});
+const emptyClasses = () => ({});
+const textHintStyles = () => ({ h1: {}, h2: {}, h3: {}, h4: {}, h5: {}, body: {}, caption: {} });
+
+const clawdisTheme = {
+ components: {
+ AudioPlayer: emptyClasses(),
+ Button: emptyClasses(),
+ Card: emptyClasses(),
+ Column: emptyClasses(),
+ CheckBox: { container: emptyClasses(), element: emptyClasses(), label: emptyClasses() },
+ DateTimeInput: { container: emptyClasses(), element: emptyClasses(), label: emptyClasses() },
+ Divider: emptyClasses(),
+ Image: {
+ all: emptyClasses(),
+ icon: emptyClasses(),
+ avatar: emptyClasses(),
+ smallFeature: emptyClasses(),
+ mediumFeature: emptyClasses(),
+ largeFeature: emptyClasses(),
+ header: emptyClasses(),
+ },
+ Icon: emptyClasses(),
+ List: emptyClasses(),
+ Modal: { backdrop: emptyClasses(), element: emptyClasses() },
+ MultipleChoice: { container: emptyClasses(), element: emptyClasses(), label: emptyClasses() },
+ Row: emptyClasses(),
+ Slider: { container: emptyClasses(), element: emptyClasses(), label: emptyClasses() },
+ Tabs: { container: emptyClasses(), element: emptyClasses(), controls: { all: emptyClasses(), selected: emptyClasses() } },
+ Text: {
+ all: emptyClasses(),
+ h1: emptyClasses(),
+ h2: emptyClasses(),
+ h3: emptyClasses(),
+ h4: emptyClasses(),
+ h5: emptyClasses(),
+ caption: emptyClasses(),
+ body: emptyClasses(),
+ },
+ TextField: { container: emptyClasses(), element: emptyClasses(), label: emptyClasses() },
+ Video: emptyClasses(),
+ },
+ elements: {
+ a: emptyClasses(),
+ audio: emptyClasses(),
+ body: emptyClasses(),
+ button: emptyClasses(),
+ h1: emptyClasses(),
+ h2: emptyClasses(),
+ h3: emptyClasses(),
+ h4: emptyClasses(),
+ h5: emptyClasses(),
+ iframe: emptyClasses(),
+ input: emptyClasses(),
+ p: emptyClasses(),
+ pre: emptyClasses(),
+ textarea: emptyClasses(),
+ video: emptyClasses(),
+ },
+ markdown: {
+ p: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ ul: [],
+ ol: [],
+ li: [],
+ a: [],
+ strong: [],
+ em: [],
+ },
+ additionalStyles: {
+ Card: {
+ background: "linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03))",
+ border: "1px solid rgba(255,255,255,.09)",
+ borderRadius: "14px",
+ padding: "14px",
+ boxShadow: "0 10px 30px rgba(0,0,0,.35)",
+ },
+ Column: { gap: "10px" },
+ Row: { gap: "10px", alignItems: "center" },
+ Divider: { opacity: "0.25" },
+ Button: {
+ background: "linear-gradient(135deg, #22c55e 0%, #06b6d4 100%)",
+ border: "0",
+ borderRadius: "12px",
+ padding: "10px 14px",
+ color: "#071016",
+ fontWeight: "650",
+ cursor: "pointer",
+ boxShadow: "0 10px 25px rgba(6, 182, 212, 0.18)",
+ },
+ Text: {
+ ...textHintStyles(),
+ h1: { fontSize: "20px", fontWeight: "750", margin: "0 0 6px 0" },
+ h2: { fontSize: "16px", fontWeight: "700", margin: "0 0 6px 0" },
+ body: { fontSize: "13px", lineHeight: "1.4" },
+ caption: { opacity: "0.8" },
+ },
+ TextField: { display: "grid", gap: "6px" },
+ Image: { borderRadius: "12px" },
+ },
+};
+
+class ClawdisA2UIHost extends LitElement {
+ static properties = {
+ surfaces: { state: true },
+ };
+
+ #processor = v0_8.Data.createSignalA2uiMessageProcessor();
+ #themeProvider = new ContextProvider(this, {
+ context: themeContext,
+ initialValue: clawdisTheme,
+ });
+
+ surfaces = [];
+
+ static styles = css`
+ :host {
+ display: block;
+ height: 100%;
+ box-sizing: border-box;
+ padding: 12px;
+ }
+
+ #surfaces {
+ display: grid;
+ grid-template-columns: 1fr;
+ gap: 12px;
+ height: 100%;
+ overflow: auto;
+ padding-bottom: 24px;
+ }
+ `;
+
+ connectedCallback() {
+ super.connectedCallback();
+ globalThis.clawdisA2UI = {
+ applyMessages: (messages) => this.applyMessages(messages),
+ reset: () => this.reset(),
+ getSurfaces: () => Array.from(this.#processor.getSurfaces().keys()),
+ };
+ this.#syncSurfaces();
+ }
+
+ applyMessages(messages) {
+ if (!Array.isArray(messages)) {
+ throw new Error("A2UI: expected messages array");
+ }
+ this.#processor.processMessages(messages);
+ this.#syncSurfaces();
+ return { ok: true, surfaces: this.surfaces.map(([id]) => id) };
+ }
+
+ reset() {
+ this.#processor.clearSurfaces();
+ this.#syncSurfaces();
+ return { ok: true };
+ }
+
+ #syncSurfaces() {
+ this.surfaces = Array.from(this.#processor.getSurfaces().entries());
+ }
+
+ render() {
+ if (this.surfaces.length === 0) {
+ return html`
+ Canvas (A2UI)
+ Waiting for A2UI messages…
+ `;
+ }
+
+ return html`
+ ${repeat(
+ this.surfaces,
+ ([surfaceId]) => surfaceId,
+ ([surfaceId, surface]) => html` `
+ )}
+ `;
+ }
+}
+
+customElements.define("clawdis-a2ui-host", ClawdisA2UIHost);
diff --git a/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/index.html b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/index.html
new file mode 100644
index 0000000000..1ede523166
--- /dev/null
+++ b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Canvas
+
+
+
+
+
+
+
+
diff --git a/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/rolldown.config.mjs b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/rolldown.config.mjs
new file mode 100644
index 0000000000..1ee9418477
--- /dev/null
+++ b/apps/macos/Sources/Clawdis/Resources/CanvasA2UI/rolldown.config.mjs
@@ -0,0 +1,33 @@
+import path from "node:path";
+import { defineConfig } from "rolldown";
+
+const here = path.dirname(new URL(import.meta.url).pathname);
+const repoRoot = path.resolve(here, "../../../../../..");
+const fromHere = (p) => path.resolve(here, p);
+
+const a2uiLitDist = path.resolve(repoRoot, "vendor/a2ui/renderers/lit/dist/src");
+const a2uiThemeContext = path.resolve(a2uiLitDist, "0.8/ui/context/theme.js");
+
+export default defineConfig({
+ input: fromHere("bootstrap.js"),
+ treeshake: false,
+ resolve: {
+ alias: {
+ "@a2ui/lit": path.resolve(a2uiLitDist, "index.js"),
+ "@a2ui/lit/ui": path.resolve(a2uiLitDist, "0.8/ui/ui.js"),
+ "@clawdis/a2ui-theme-context": a2uiThemeContext,
+ "@lit/context": path.resolve(repoRoot, "node_modules/@lit/context/index.js"),
+ "@lit/context/": path.resolve(repoRoot, "node_modules/@lit/context/"),
+ "@lit-labs/signals": path.resolve(repoRoot, "node_modules/@lit-labs/signals/index.js"),
+ "@lit-labs/signals/": path.resolve(repoRoot, "node_modules/@lit-labs/signals/"),
+ lit: path.resolve(repoRoot, "node_modules/lit/index.js"),
+ "lit/": path.resolve(repoRoot, "node_modules/lit/"),
+ },
+ },
+ output: {
+ file: fromHere("a2ui.bundle.js"),
+ format: "esm",
+ inlineDynamicImports: true,
+ sourcemap: false,
+ },
+});
diff --git a/apps/macos/Sources/ClawdisCLI/ClawdisCLI.swift b/apps/macos/Sources/ClawdisCLI/ClawdisCLI.swift
index 90cea7ae1b..a77c09e5d5 100644
--- a/apps/macos/Sources/ClawdisCLI/ClawdisCLI.swift
+++ b/apps/macos/Sources/ClawdisCLI/ClawdisCLI.swift
@@ -248,6 +248,8 @@ struct ClawdisCLI {
return ParsedCLIRequest(
request: .canvasShow(session: session, path: target, placement: placement),
kind: .generic)
+ case "a2ui":
+ return try self.parseCanvasA2UI(args: &args)
case "hide":
var session = "main"
while !args.isEmpty {
@@ -288,6 +290,44 @@ struct ClawdisCLI {
}
}
+ private static func parseCanvasA2UI(args: inout [String]) throws -> ParsedCLIRequest {
+ guard let sub = args.popFirst() else { throw CLIError.help }
+ switch sub {
+ case "push":
+ var session = "main"
+ var jsonlPath: String?
+ while !args.isEmpty {
+ let arg = args.removeFirst()
+ switch arg {
+ case "--session": session = args.popFirst() ?? session
+ case "--jsonl": jsonlPath = args.popFirst()
+ default: break
+ }
+ }
+ guard let jsonlPath else { throw CLIError.help }
+ let jsonl = try String(contentsOfFile: jsonlPath, encoding: .utf8)
+ return ParsedCLIRequest(
+ request: .canvasA2UI(session: session, command: .pushJSONL, jsonl: jsonl),
+ kind: .generic)
+
+ case "reset":
+ var session = "main"
+ while !args.isEmpty {
+ let arg = args.removeFirst()
+ switch arg {
+ case "--session": session = args.popFirst() ?? session
+ default: break
+ }
+ }
+ return ParsedCLIRequest(
+ request: .canvasA2UI(session: session, command: .reset, jsonl: nil),
+ kind: .generic)
+
+ default:
+ throw CLIError.help
+ }
+ }
+
private static func parseCamera(args: inout [String]) throws -> ParsedCLIRequest {
guard let sub = args.popFirst() else { throw CLIError.help }
switch sub {
@@ -473,8 +513,10 @@ struct ClawdisCLI {
clawdis-mac node invoke --node --command [--params-json ]
Canvas:
- clawdis-mac canvas show [--session ] [--target ]
+ clawdis-mac canvas show [--session ] [--target ]
[--x --y ] [--width --height ]
+ clawdis-mac canvas a2ui push --jsonl [--session ]
+ clawdis-mac canvas a2ui reset [--session ]
clawdis-mac canvas hide [--session ]
clawdis-mac canvas eval --js [--session ]
clawdis-mac canvas snapshot [--out ] [--session ]
diff --git a/apps/macos/Sources/ClawdisIPC/IPC.swift b/apps/macos/Sources/ClawdisIPC/IPC.swift
index f03ed4a988..2d592b2178 100644
--- a/apps/macos/Sources/ClawdisIPC/IPC.swift
+++ b/apps/macos/Sources/ClawdisIPC/IPC.swift
@@ -60,13 +60,15 @@ public struct CanvasPlacement: Codable, Sendable {
public enum CanvasShowStatus: String, Codable, Sendable {
/// Panel was shown, but no navigation occurred (no target passed and session already existed).
case shown
- /// Target was an http(s) URL.
+ /// Target was a direct URL (http(s) or file).
case web
/// Local canvas target resolved to an existing file.
case ok
/// Local canvas target did not resolve to a file (404 page).
case notFound
- /// Local canvas root ("/") has no index, so the welcome page is shown.
+ /// Local canvas root ("/") has no index, so the built-in A2UI shell is shown.
+ case a2uiShell
+ /// Legacy fallback when the built-in shell isn't available (dev misconfiguration).
case welcome
}
@@ -96,6 +98,13 @@ public struct CanvasShowResult: Codable, Sendable {
}
}
+// MARK: - Canvas A2UI
+
+public enum CanvasA2UICommand: String, Codable, Sendable {
+ case pushJSONL
+ case reset
+}
+
public enum Request: Sendable {
case notify(
title: String,
@@ -117,6 +126,7 @@ public enum Request: Sendable {
case canvasHide(session: String)
case canvasEval(session: String, javaScript: String)
case canvasSnapshot(session: String, outPath: String?)
+ case canvasA2UI(session: String, command: CanvasA2UICommand, jsonl: String?)
case nodeList
case nodeInvoke(nodeId: String, command: String, paramsJSON: String?)
case cameraSnap(facing: CameraFacing?, maxWidth: Int?, quality: Double?, outPath: String?)
@@ -151,6 +161,8 @@ extension Request: Codable {
case path
case javaScript
case outPath
+ case canvasA2UICommand
+ case jsonl
case facing
case maxWidth
case quality
@@ -173,6 +185,7 @@ extension Request: Codable {
case canvasHide
case canvasEval
case canvasSnapshot
+ case canvasA2UI
case nodeList
case nodeInvoke
case cameraSnap
@@ -237,6 +250,12 @@ extension Request: Codable {
try container.encode(session, forKey: .session)
try container.encodeIfPresent(outPath, forKey: .outPath)
+ case let .canvasA2UI(session, command, jsonl):
+ try container.encode(Kind.canvasA2UI, forKey: .type)
+ try container.encode(session, forKey: .session)
+ try container.encode(command, forKey: .canvasA2UICommand)
+ try container.encodeIfPresent(jsonl, forKey: .jsonl)
+
case .nodeList:
try container.encode(Kind.nodeList, forKey: .type)
@@ -321,6 +340,12 @@ extension Request: Codable {
let outPath = try container.decodeIfPresent(String.self, forKey: .outPath)
self = .canvasSnapshot(session: session, outPath: outPath)
+ case .canvasA2UI:
+ let session = try container.decode(String.self, forKey: .session)
+ let command = try container.decode(CanvasA2UICommand.self, forKey: .canvasA2UICommand)
+ let jsonl = try container.decodeIfPresent(String.self, forKey: .jsonl)
+ self = .canvasA2UI(session: session, command: command, jsonl: jsonl)
+
case .nodeList:
self = .nodeList
diff --git a/apps/macos/Tests/ClawdisIPCTests/ControlRequestHandlerTests.swift b/apps/macos/Tests/ClawdisIPCTests/ControlRequestHandlerTests.swift
index 9ac3d09435..353f72e7f7 100644
--- a/apps/macos/Tests/ClawdisIPCTests/ControlRequestHandlerTests.swift
+++ b/apps/macos/Tests/ClawdisIPCTests/ControlRequestHandlerTests.swift
@@ -161,5 +161,13 @@ struct ControlRequestHandlerTests {
}
#expect(snap.ok == false)
#expect(snap.message == "Canvas disabled by user")
+
+ let a2ui = try await Self.withDefaultOverride(pauseDefaultsKey, value: false) {
+ try await Self.withDefaultOverride(canvasEnabledKey, value: false) {
+ try await ControlRequestHandler.process(request: .canvasA2UI(session: "s", command: .reset, jsonl: nil))
+ }
+ }
+ #expect(a2ui.ok == false)
+ #expect(a2ui.message == "Canvas disabled by user")
}
}
diff --git a/docs/mac/canvas.md b/docs/mac/canvas.md
index c7b396b87a..604f041d3f 100644
--- a/docs/mac/canvas.md
+++ b/docs/mac/canvas.md
@@ -39,9 +39,17 @@ Routing model:
Directory listings are not served.
-When `/` has no `index.html` yet, the handler serves a built-in welcome page with:
-- The resolved on-disk session directory path.
-- A short “create index.html” hint.
+When `/` has no `index.html` yet, the handler serves a **built-in A2UI shell** (bundled with the macOS app).
+This gives the agent a ready-to-render UI surface without requiring any on-disk HTML.
+
+If the A2UI shell resources are missing (dev misconfiguration), Canvas falls back to a simple built-in welcome page.
+
+### Reserved built-in paths
+
+The scheme handler serves bundled assets under:
+- `clawdis-canvas:///__clawdis__/a2ui/...`
+
+This is reserved for app-owned assets (not session content) and is backed by `Bundle.module` resources.
### Suggested on-disk location
@@ -82,6 +90,26 @@ This should be modeled after `WebChatManager`/`WebChatWindowController` but targ
Related:
- For “invoke the agent again from UI” flows, prefer the macOS deep link scheme (`clawdis://agent?...`) so *any* UI surface (Canvas, WebChat, native views) can trigger a new agent run. See `docs/clawdis-mac.md`.
+## Agent commands (current)
+
+`clawdis-mac` exposes Canvas via the control socket. For agent use, prefer `--json` so you can read the structured `CanvasShowResult` (including `status`).
+
+- `clawdis-mac canvas show [--session ] [--target <...>] [--x/--y/--width/--height]`
+ - Local targets map into the session directory via the custom scheme (directory targets resolve `index.html|index.htm`).
+ - If `/` has no index file, Canvas shows the built-in A2UI shell and returns `status: "a2uiShell"`.
+- `clawdis-mac canvas hide [--session ]`
+- `clawdis-mac canvas eval --js [--session ]`
+- `clawdis-mac canvas snapshot [--out ] [--session ]`
+
+### Canvas A2UI
+
+Canvas includes a built-in A2UI renderer (Lit-based). The agent can drive it with JSONL “message” objects:
+
+- `clawdis-mac canvas a2ui push --jsonl [--session ]`
+- `clawdis-mac canvas a2ui reset [--session ]`
+
+`push` expects a JSONL file where **each line is a single JSON object** (parsed and forwarded to the in-page A2UI renderer).
+
## Triggering agent runs from Canvas (deep links)
Canvas can trigger new agent runs via the macOS app deep-link scheme:
diff --git a/vendor/a2ui/.gemini/GEMINI.md b/vendor/a2ui/.gemini/GEMINI.md
new file mode 100644
index 0000000000..06d0faf3d4
--- /dev/null
+++ b/vendor/a2ui/.gemini/GEMINI.md
@@ -0,0 +1,94 @@
+# A2UI Gemini Agent Guide
+
+This document serves as a guide for using the Gemini agent within the A2UI repository. It outlines the repository's structure, explains the core concepts of the A2UI protocol, and provides instructions for running the various demos and keeping this guide up-to-date.
+
+## Repository Structure
+
+The A2UI repository is organized into several key directories:
+
+- `specification/0.8/docs/`: Contains the primary human-readable documentation for the A2UI protocol.
+ - `a2ui_protocol.md`: The foundational specification document. This is the best place to start to understand the protocol's fundamental goals.
+- `specification/0.8/json/`: Contains the formal JSON schema definitions for the protocol.
+ - `server_to_client.json`: Defines the schema for messages sent from the server to the client.
+ - `client_to_server.json`: Defines the schema for event messages sent from the client to the server.
+- `a2a_agents/python/`: Contains Python code relating to server-side integration of A2UI
+ - `a2ui_extension/`: Python implementation of the A2UI A2A extension.
+ - `adk/samples/`: Contains demo applications that showcase the A2UI protocol in action using the ADK framework.
+- `web/`: Contains the web-based client implementations (using Lit and Vite) for the samples, including a shared library (`renderers/lit`).
+- `angular/`: Contains an alternative web-based client implementation using Angular.
+- `eval/`: Contains a Genkit-based framework for evaluating LLM performance in generating A2UI responses.
+
+## A2UI Specification Overview
+
+The A2UI protocol is a JSONL-based, streaming UI protocol designed to be easily generated by Large Language Models (LLMs). It enables a server to stream a platform-agnostic, abstract UI definition to a client, which then renders it progressively using a native widget set.
+
+### Core Concepts
+
+The core concepts of the A2UI protocol are detailed in the main specification document. Rather than duplicating the content here, you should refer to the authoritative source:
+
+- **A2UI Protocol Specification**: `@docs/a2ui_protocol.md`
+
+This document covers the design philosophy, architecture, data flow, and core concepts of the protocol.
+
+### Schemas
+
+The formal, machine-readable definitions of the protocol are maintained as JSON schemas:
+
+- **Server-to-Client Schema**: `@specification/0.8/json/server_to_client.json`
+- **Server-to-Client Schema, with standard catalog**: `@specification/0.8/json/server_to_client_with_standard_catalog.json`
+- **Client-to-Server Schema**: `@specification/0.8/json/client_to_server.json`
+
+## Running the Demos
+
+There are three demos available in the `a2a_samples/` directory. Each demo has a corresponding web client in the `web/` and `angular/` directories. To run a demo, you will need to start both the server and the client.
+
+### Running a Demo Server
+
+To run a demo server, navigate to the demo's directory and run the `__main__.py` script. For example, to run the contact lookup demo:
+
+```bash
+cd a2a_samples/a2ui_contact_lookup
+python -m __main__
+```
+
+### Running a Demo Client (Lit)
+
+To run a demo client, navigate to the corresponding client directory in `web/` and start the development server. For example, to run the contact lookup client:
+
+```bash
+cd web/contact
+npm install
+npm run dev
+```
+
+### Running a Demo Client (Angular)
+
+To run a demo client, navigate to the `angular/` directory and start the development server with the project name. For example, to run the contact lookup client:
+
+```bash
+cd angular
+npm install
+npm start -- contact
+```
+
+## Renderers
+
+There are three renderers available for A2UI:
+
+- **Web (Lit)**: Located in `renderers/lit`, this is the primary web renderer used by the demos in `web/`.
+- **Angular**: Located in `angular/projects/lib`, this is an alternative web renderer for Angular applications.
+- **Flutter**: The Flutter renderer is in a separate repository: [https://github.com/flutter/genui](https://github.com/flutter/genui)
+
+## Keeping This Guide Updated
+
+This document is intended to be a living guide for the repository. As the repository evolves, it's important to keep this file up-to-date. When making changes to the repository, please consider the following:
+
+- **New Demos or Clients**: If you add a new demo or client, add it to the "Running the Demos" section.
+- **Specification Changes**: If you make significant changes to the A2UI protocol, ensure that the "A2UI Specification Overview" section is updated to reflect the changes, and that any linked documents are also updated.
+- **Repository Structure Changes**: If you change the directory structure of the repository, update the "Repository Structure" section.
+
+To get this file back in sync, you can run the following commands:
+
+1. List all the files in the entire repo with `git ls-tree main --name-only -r`
+2. Read the ~50 most important files in the list, potentially in batches.
+3. Update this file.
diff --git a/vendor/a2ui/.github/workflows/docs.yml b/vendor/a2ui/.github/workflows/docs.yml
new file mode 100644
index 0000000000..6fa94765e0
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/docs.yml
@@ -0,0 +1,79 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Docs Build and Deploy
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - ".github/workflows/docs.yml"
+ - "requirements-docs.txt"
+ - "mkdocs.yml"
+ - "docs/**"
+ pull_request:
+ branches:
+ - main
+ paths:
+ - ".github/workflows/docs.yml"
+ - "requirements-docs.txt"
+ - "mkdocs.yml"
+ - "docs/**"
+
+jobs:
+ build_and_deploy:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ actions: read
+
+ if: github.repository == 'google/A2UI'
+
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v5
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ fetch-depth: 0
+
+ - name: Configure Git Credentials
+ run: |
+ git config --global user.name github-actions[bot]
+ git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com
+
+ - name: Setup Python
+ uses: actions/setup-python@v6
+ with:
+ python-version: 3.13
+
+ - name: Restore pip cache
+ uses: actions/cache@v4
+ with:
+ key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements-docs.txt') }}
+ path: ~/.cache/pip
+ restore-keys: |
+ ${{ runner.os }}-pip-
+
+ - name: Install documentation dependencies
+ run: pip install -r requirements-docs.txt
+
+ - name: Build Documentation (PR Check)
+ if: github.event_name == 'pull_request'
+ run: mkdocs build
+
+ - name: Deploy development version from main branch
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
+ run: |
+ mkdocs gh-deploy
diff --git a/vendor/a2ui/.github/workflows/editor_build.yml b/vendor/a2ui/.github/workflows/editor_build.yml
new file mode 100644
index 0000000000..6db6310db2
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/editor_build.yml
@@ -0,0 +1,55 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Editor build
+
+on:
+ push:
+ paths:
+ - 'tools/editor/**'
+ - 'renderers/lit/**'
+ - '.github/workflows/editor_build.yml'
+ pull_request:
+ paths:
+ - 'tools/editor/**'
+ - 'renderers/lit/**'
+ - '.github/workflows/editor_build.yml'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: Install lib's deps
+ working-directory: ./renderers/lit
+ run: npm ci
+
+ - name: Build lib
+ working-directory: ./renderers/lit
+ run: npm run build
+
+ - name: Install editor deps
+ working-directory: ./tools/editor
+ run: npm install
+
+ - name: Build editor
+ working-directory: ./tools/editor
+ run: npm run build
diff --git a/vendor/a2ui/.github/workflows/inspector_build.yml b/vendor/a2ui/.github/workflows/inspector_build.yml
new file mode 100644
index 0000000000..2876af56d1
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/inspector_build.yml
@@ -0,0 +1,56 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Inspector build
+
+on:
+ push:
+ branches: [ main ]
+ paths:
+ - 'tools/inspector/**'
+ - 'renderers/lit/**'
+ - '.github/workflows/inspector_build.yml'
+ pull_request:
+ paths:
+ - 'tools/inspector/**'
+ - 'renderers/lit/**'
+ - '.github/workflows/inspector_build.yml'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: Install lib's deps
+ working-directory: ./renderers/lit
+ run: npm ci
+
+ - name: Build lib
+ working-directory: ./renderers/lit
+ run: npm run build
+
+ - name: Install inspector deps
+ working-directory: ./tools/inspector
+ run: npm install
+
+ - name: Build inspector
+ working-directory: ./tools/inspector
+ run: npm run build
diff --git a/vendor/a2ui/.github/workflows/java_build_and_test.yml b/vendor/a2ui/.github/workflows/java_build_and_test.yml
new file mode 100644
index 0000000000..3a89421cc7
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/java_build_and_test.yml
@@ -0,0 +1,48 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Java sample build and test
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - 'a2a_agents/java/**'
+ pull_request:
+ paths:
+ - 'a2a_agents/java/**'
+
+jobs:
+ build-and-test:
+ name: Build and test Java agent sample
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ java-version: '21'
+ distribution: 'temurin'
+
+ - name: Build with Maven
+ working-directory: a2a_agents/java
+ run: mvn clean install
+
+ - name: Run Tests
+ working-directory: a2a_agents/java
+ run: mvn test
diff --git a/vendor/a2ui/.github/workflows/lit_samples_build.yml b/vendor/a2ui/.github/workflows/lit_samples_build.yml
new file mode 100644
index 0000000000..80aa5957a5
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/lit_samples_build.yml
@@ -0,0 +1,54 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Lit samples build
+
+on:
+ push:
+ branches: [ main ]
+ paths-ignore:
+ - 'samples/agent/adk/**'
+ pull_request:
+ paths-ignore:
+ - 'samples/agent/adk/**'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: Install lib's deps
+ working-directory: ./renderers/lit
+ run: npm i
+
+ - name: Build lib
+ working-directory: ./renderers/lit
+ run: npm run build
+
+ - name: Install all lit samples workspaces' dependencies
+ working-directory: ./samples/client/lit
+ run: npm install --workspaces
+
+ - name: Build all lit samples workspaces
+ working-directory: ./samples/client/lit
+ run: npm run build --workspaces
+
+
diff --git a/vendor/a2ui/.github/workflows/ng_build_and_test.yml b/vendor/a2ui/.github/workflows/ng_build_and_test.yml
new file mode 100644
index 0000000000..3602989436
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/ng_build_and_test.yml
@@ -0,0 +1,72 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Angular build and test
+
+on:
+ push:
+ branches: [ main ]
+ paths-ignore:
+ - 'samples/agent/adk/**'
+ pull_request:
+ paths-ignore:
+ - 'samples/agent/adk/**'
+
+jobs:
+ build-and-test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: Install web lib deps
+ working-directory: ./renderers/lit
+ run: npm i
+
+ - name: Build web lib
+ working-directory: ./renderers/lit
+ run: npm run build
+
+ - name: Install renderer deps
+ working-directory: ./renderers/angular
+ run: npm i
+
+ - name: Build Angular renderer
+ working-directory: ./renderers/angular
+ run: npm run build
+
+ - name: Install top-level deps
+ working-directory: ./samples/client/angular
+ run: npm i
+
+ - name: Build contact sample
+ working-directory: ./samples/client/angular
+ run: npm run build contact
+
+ - name: Build restaurant sample
+ working-directory: ./samples/client/angular
+ run: npm run build restaurant
+
+ - name: Build Rizzchart sample
+ working-directory: ./samples/client/angular
+ run: npm run build rizzcharts
+
+ - name: Build Orchestrator
+ working-directory: ./samples/client/angular
+ run: npm run build orchestrator
diff --git a/vendor/a2ui/.github/workflows/python_samples_build.yml b/vendor/a2ui/.github/workflows/python_samples_build.yml
new file mode 100644
index 0000000000..82763b4913
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/python_samples_build.yml
@@ -0,0 +1,62 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Build python samples
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - 'samples/agent/adk/**'
+ - 'a2a_agents/python/a2ui_extension/**'
+ pull_request:
+ paths:
+ - 'samples/agent/adk/**'
+ - 'a2a_agents/python/a2ui_extension/**'
+
+jobs:
+ build:
+ name: Build samples
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+
+ - name: Install `uv` globally
+ run: |
+ python -m pip install --upgrade pip
+ pip install uv
+
+ - name: Build contact_lookup
+ working-directory: samples/agent/adk/contact_lookup
+ run: uv build .
+
+ - name: Build orchestrator
+ working-directory: samples/agent/adk/orchestrator
+ run: uv build .
+
+ - name: Build restaurant_finder
+ working-directory: samples/agent/adk/restaurant_finder
+ run: uv build .
+
+ - name: Build rizzcharts
+ working-directory: samples/agent/adk/rizzcharts
+ run: uv build .
diff --git a/vendor/a2ui/.github/workflows/web_build_and_test.yml b/vendor/a2ui/.github/workflows/web_build_and_test.yml
new file mode 100644
index 0000000000..6bc6a4043e
--- /dev/null
+++ b/vendor/a2ui/.github/workflows/web_build_and_test.yml
@@ -0,0 +1,50 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Lit renderer build and test
+
+on:
+ push:
+ branches: [ main ]
+ paths:
+ - 'renderers/lit/**'
+ - '.github/workflows/web_build_and_test.yml'
+ pull_request:
+ paths:
+ - 'renderers/lit/**'
+ - '.github/workflows/web_build_and_test.yml'
+
+jobs:
+ build-and-test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: Install Lit renderer dependencies
+ working-directory: ./renderers/lit
+ run: npm i
+
+ - name: Build Lit renderer
+ working-directory: ./renderers/lit
+ run: npm run build
+
+ - name: Run Lit renderer tests
+ working-directory: ./renderers/lit
+ run: npm test
diff --git a/vendor/a2ui/.gitignore b/vendor/a2ui/.gitignore
new file mode 100644
index 0000000000..ae0b85df0e
--- /dev/null
+++ b/vendor/a2ui/.gitignore
@@ -0,0 +1,16 @@
+node_modules
+.DS_Store
+.wireit
+dist
+.env
+.idx
+.vscode
+__pycache__
+*.pyc
+.angular
+
+# MkDocs build output
+site/
+
+# Python virtual environment
+.venv/
diff --git a/vendor/a2ui/CONTRIBUTING.md b/vendor/a2ui/CONTRIBUTING.md
new file mode 100644
index 0000000000..861f61f22c
--- /dev/null
+++ b/vendor/a2ui/CONTRIBUTING.md
@@ -0,0 +1,49 @@
+# How to contribute to A2UI
+
+We'd love to accept your patches and contributions to this project.
+
+## Before you begin
+
+### Sign our Contributor License Agreement
+
+Contributions to this project must be accompanied by a
+[Contributor License Agreement](https://cla.developers.google.com/about) (CLA).
+You (or your employer) retain the copyright to your contribution; this simply
+gives us permission to use and redistribute your contributions as part of the
+project.
+
+If you or your current employer have already signed the Google CLA (even if it
+was for a different project), you probably don't need to do it again.
+
+Visit to see your current agreements or to
+sign a new one.
+
+### Review our community guidelines
+
+This project follows
+[Google's Open Source Community Guidelines](https://opensource.google/conduct/).
+
+## Contribution process
+
+### Code reviews
+
+All submissions, including submissions by project members, require review. We
+use GitHub pull requests for this purpose. Consult
+[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
+information on using pull requests.
+
+### Contributor Guide
+
+You may follow these steps to contribute:
+
+1. **Fork the official repository.** This will create a copy of the official repository in your own account.
+2. **Sync the branches.** This will ensure that your copy of the repository is up-to-date with the latest changes from the official repository.
+3. **Work on your forked repository's feature branch.** This is where you will make your changes to the code.
+4. **Commit your updates on your forked repository's feature branch.** This will save your changes to your copy of the repository.
+5. **Submit a pull request to the official repository's main branch.** This will request that your changes be merged into the official repository.
+6. **Resolve any linting errors.** This will ensure that your changes are formatted correctly.
+
+Here are some additional things to keep in mind during the process:
+
+- **Test your changes.** Before you submit a pull request, make sure that your changes work as expected.
+- **Be patient.** It may take some time for your pull request to be reviewed and merged.
diff --git a/vendor/a2ui/LICENSE b/vendor/a2ui/LICENSE
new file mode 100644
index 0000000000..f4f87bd4ed
--- /dev/null
+++ b/vendor/a2ui/LICENSE
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
\ No newline at end of file
diff --git a/vendor/a2ui/README.md b/vendor/a2ui/README.md
new file mode 100644
index 0000000000..169ffb2fd7
--- /dev/null
+++ b/vendor/a2ui/README.md
@@ -0,0 +1,162 @@
+# A2UI: Agent-to-User Interface
+
+A2UI is an open-source project, complete with a format
+optimized for representing updateable agent-generated
+UIs and an initial set of renderers, that allows agents
+to generate or populate rich user interfaces.
+
+
+
+*A gallery of A2UI rendered cards, showing a variety of UI compositions that A2UI can achieve.*
+
+## ⚠️ Status: Early Stage Public Preview
+
+> **Note:** A2UI is currently in **v0.8 (Public Preview)**. The specification and
+implementations are functional but are still evolving. We are opening the project to
+foster collaboration, gather feedback, and solicit contributions (e.g., on client renderers).
+Expect changes.
+
+## Summary
+
+Generative AI excels at creating text and code, but agents can struggle to
+present rich, interactive interfaces to users, especially when those agents
+are remote or running across trust boundaries.
+
+**A2UI** is an open standard and set of libraries that allows agents to
+"speak UI." Agents send a declarative JSON format describing the *intent* of
+the UI. The client application then renders this using its own native
+component library (Flutter, Angular, Lit, etc.).
+
+This approach ensures that agent-generated UIs are
+**safe like data, but expressive like code**.
+
+## High-Level Philosophy
+
+A2UI was designed to address the specific challenges of interoperable,
+cross-platform, generative or template-based UI responses from agents.
+
+The project's core philosophies:
+
+* **Security first**: Running arbitrary code generated by an LLM may present a
+security risk. A2UI is a declarative data format, not executable
+code. Your client application maintains a "catalog" of trusted, pre-approved
+UI components (e.g., Card, Button, TextField), and the agent can only request
+to render components from that catalog.
+* **LLM-friendly and incrementally updateable**: The UI is represented as a flat
+list of components with ID references which is easy for LLMs to generate
+incrementally, allowing for progressive rendering and a responsive user
+experience. An agent can efficiently make incremental changes to the UI based
+on new user requests as the conversation progresses.
+* **Framework-agnostic and portable**: A2UI separates the UI structure from
+the UI implementation. The agent sends a description of the component tree
+and its associated data model. Your client application is responsible for
+mapping these abstract descriptions to its native widgets—be it web components,
+Flutter widgets, React components, SwiftUI views or something else entirely.
+The same A2UI JSON payload from an agent can be rendered on multiple different
+clients built on top of different frameworks.
+* **Flexibility**: A2UI also features an open registry pattern that allows
+developers to map server-side types to custom client implementations, from
+native mobile widgets to React components. By registering a "Smart Wrapper,"
+you can connect any existing UI component—including secure iframe containers
+for legacy content—to A2UI's data binding and event system. Crucially, this
+places security firmly in the developer's hands, enabling them to enforce
+strict sandboxing policies and "trust ladders" directly within their custom
+component logic rather than relying solely on the core system.
+
+## Use Cases
+
+Some of the use cases include:
+
+* **Dynamic Data Collection:** An agent generates a bespoke form (date pickers,
+sliders, inputs) based on the specific context of a conversation (e.g.,
+booking a specialized reservation).
+* **Remote Sub-Agents:** An orchestrator agent delegates a task to a
+remote specialized agent (e.g., a travel booking agent) which returns a
+UI payload to be rendered inside the main chat window.
+* **Adaptive Workflows:** Enterprise agents that generate approval
+dashboards or data visualizations on the fly based on the user's query.
+
+## Architecture
+
+The A2UI flow disconnects the generation of UI from the execution of UI:
+
+1. **Generation:** An Agent (using Gemini or another LLM) generates or uses
+a pre-generated `A2UI Response`, a JSON payload describing the composition
+of UI components and their properties.
+2. **Transport:** This message is sent to the client application
+(via A2A, AG UI, etc.).
+3. **Resolution:** The Client's **A2UI Renderer** parses the JSON.
+4. **Rendering:** The Renderer maps the abstract components
+(e.g., `type: 'text-field'`) to the concrete implementation in the client's codebase.
+
+## Dependencies
+
+A2UI is designed to be a lightweight format, but it fits into a larger ecosystem:
+
+* **Transports:** Compatible with **A2A Protocol** and **AG UI**.
+* **LLMs:** Can be generated by any model capable of generating JSON output.
+* **Host Frameworks:** Requires a host application built in a supported framework
+(currently: Web or Flutter).
+
+## Getting Started
+
+The best way to understand A2UI is to run the samples.
+
+### Prerequisites
+
+* Node.js (for web clients)
+* Python (for agent samples)
+* A valid [Gemini API Key](https://aistudio.google.com/) is required for the samples.
+
+### Running the Restaurant Finder Demo
+
+1. **Clone the repository:**
+
+ ```bash
+ git clone https://github.com/google/A2UI.git
+ cd A2UI
+ ```
+
+2. **Set your API Key:**
+
+ ```bash
+ export GEMINI_API_KEY="your_gemini_api_key"
+ ```
+
+3. **Run the Agent (Backend):**
+
+ ```bash
+ cd samples/agent/adk/restaurant_finder
+ uv run .
+ ```
+
+4. **Run the Client (Frontend):**
+ Open a new terminal window:
+
+ ```bash
+ cd samples/client/lit/shell
+ npm install
+ npm run dev
+ ```
+
+For Flutter developers, check out the [GenUI SDK](https://github.com/flutter/genui),
+which uses A2UI under the hood.
+
+CopilotKit has a public [A2UI Widget Builder](https://go.copilotkit.ai/A2UI-widget-builder)
+to try out as well.
+
+## Roadmap
+
+We hope to work with the community on the following:
+
+* **Spec Stabilization:** Moving towards a v1.0 specification.
+* **More Renderers:** Adding official support for React, Jetpack Compose, iOS (SwiftUI), and more.
+* **Additional Transports:** Support for REST and more.
+* **Additional Agent Frameworks:** Genkit, LangGraph, and more.
+
+## Contribute
+
+A2UI is an **Apache 2.0** licensed project. We believe the future of UI is agentic,
+and we want to work with you to help build it.
+
+See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to get started.
diff --git a/vendor/a2ui/mkdocs.yaml b/vendor/a2ui/mkdocs.yaml
new file mode 100644
index 0000000000..06b2943598
--- /dev/null
+++ b/vendor/a2ui/mkdocs.yaml
@@ -0,0 +1,184 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+site_name: A2UI
+site_url: https://a2ui.org/
+site_description: A2UI, a streaming protocol for Agent-Driven User Interfaces
+site_author: Google
+site_dir: site
+
+extra:
+ analytics:
+ provider: google
+ property: G-YX9TPV8DCC
+ consent:
+ title: Cookie consent
+ description: >-
+ We use cookies to recognize repeated visits and preferences,
+ as well as to measure the effectiveness of our documentation and
+ whether users find the information they need. With your consent,
+ you're helping us to make our documentation better.
+
+# Navigation
+nav:
+ - Home: index.md
+ - Introduction & FAQ:
+ - What is A2UI?: introduction/what-is-a2ui.md
+ - Who is it For?: introduction/who-is-it-for.md
+ - How Can I Use It?: introduction/how-to-use.md
+ - Where is it Used?: introduction/where-is-it-used.md
+ - Agent UI Ecosystem: introduction/agent-ui-ecosystem.md
+ - Quickstart: quickstart.md
+ - A2UI Composer ⭐: composer.md
+ - Developer Guides:
+ - Client Setup: guides/client-setup.md
+ - Agent Development: guides/agent-development.md
+ - Custom Components: guides/custom-components.md
+ - Theming & Styling: guides/theming.md
+ - Core Concepts:
+ - Overview: concepts/overview.md
+ - Data Flow: concepts/data-flow.md
+ - Components & Structure: concepts/components.md
+ - Data Binding: concepts/data-binding.md
+ - Specifications:
+ - v0.8 (Stable):
+ - A2UI Specification: specification/v0.8-a2ui.md
+ - A2A Extension: specification/v0.8-a2a-extension.md
+ - v0.9 (Draft):
+ - A2UI Specification: specification/v0.9-a2ui.md
+ - Evolution Guide: specification/v0.9-evolution-guide.md
+ - Renderers (Clients): renderers.md
+ - Transports (Message Passing): transports.md
+ - Agents (Server-side): agents.md
+ - Community: community.md
+ - Roadmap: roadmap.md
+ - Reference:
+ - Component Reference: reference/components.md
+ - Message Reference: reference/messages.md
+
+# Repository
+repo_name: google/A2UI
+repo_url: https://github.com/google/A2UI
+
+# Copyright
+copyright: Copyright Google 2025 | Terms | Privacy | Manage cookies
+
+# Custom CSS
+extra_css:
+ - stylesheets/custom.css
+
+
+# Configuration
+theme:
+ name: material
+ font:
+ text: Google Sans
+ code: Roboto Mono
+ logo: assets/A2UI_light.svg
+ favicon: assets/A2UI_dark.svg
+ icon:
+ repo: fontawesome/brands/github
+ # view: material/pencil-box-multiple
+ admonition:
+ note: fontawesome/solid/note-sticky
+ abstract: fontawesome/solid/book
+ info: fontawesome/solid/circle-info
+ tip: fontawesome/solid/bullhorn
+ success: fontawesome/solid/check
+ question: fontawesome/solid/circle-question
+ warning: fontawesome/solid/triangle-exclamation
+ failure: fontawesome/solid/bomb
+ danger: fontawesome/solid/skull
+ bug: fontawesome/solid/robot
+ example: fontawesome/solid/flask
+ quote: fontawesome/solid/quote-left
+ palette:
+ - scheme: default
+ primary: teal
+ accent: light blue
+ toggle:
+ icon: material/brightness-7
+ name: Switch to dark mode
+
+ - scheme: slate
+ primary: teal
+ accent: light blue
+ toggle:
+ icon: material/brightness-4
+ name: Switch to light mode
+
+ features:
+ - announce.dismiss
+ - content.action.view
+ - content.code.annotate
+ - content.code.copy
+ - content.code.select
+ - content.tabs.link
+ - navigation.footer
+ - navigation.indexes
+ - navigation.instant
+ - navigation.instant.progress
+ - navigation.path
+ - navigation.top
+ - navigation.tracking
+ - toc.follow
+
+# Extensions
+markdown_extensions:
+ - meta
+ - footnotes
+ - admonition
+ - attr_list
+ - md_in_html
+ - pymdownx.details
+ - pymdownx.emoji:
+ emoji_index: !!python/name:material.extensions.emoji.twemoji
+ emoji_generator: !!python/name:material.extensions.emoji.to_svg
+ - pymdownx.highlight:
+ anchor_linenums: true
+ line_spans: __span
+ pygments_lang_class: true
+ - pymdownx.inlinehilite
+ - pymdownx.snippets:
+ url_download: true
+ dedent_subsections: true
+ - pymdownx.superfences:
+ custom_fences:
+ - name: mermaid
+ class: mermaid
+ format: !!python/name:mermaid2.fence_mermaid
+ - pymdownx.tabbed:
+ alternate_style: true
+ slugify: !!python/object/apply:pymdownx.slugs.slugify
+ kwds:
+ case: lower
+ - pymdownx.tasklist:
+ custom_checkbox: true
+ - toc:
+ permalink: true
+
+# Plugins
+plugins:
+ - search
+ - macros
+ # - include-markdown
+ # - mermaid2
+ # - llmstxt:
+ # full_output: llms-full.txt
+ # sections:
+ # "Specification":
+ # - a2ui_protocol.md
+ # - redirects:
+ # redirect_maps:
+ # "index.md": "a2ui_protocol.md"
diff --git a/vendor/a2ui/renderers/angular/.npmrc b/vendor/a2ui/renderers/angular/.npmrc
new file mode 100644
index 0000000000..06b0eef7e3
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/.npmrc
@@ -0,0 +1,2 @@
+@a2ui:registry=https://us-npm.pkg.dev/oss-exit-gate-prod/a2ui--npm/
+//us-npm.pkg.dev/oss-exit-gate-prod/a2ui--npm/:always-auth=true
diff --git a/vendor/a2ui/renderers/angular/README.md b/vendor/a2ui/renderers/angular/README.md
new file mode 100644
index 0000000000..8afc14b199
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/README.md
@@ -0,0 +1,9 @@
+Angular implementation of A2UI.
+
+Important: The sample code provided is for demonstration purposes and illustrates the mechanics of A2UI and the Agent-to-Agent (A2A) protocol. When building production applications, it is critical to treat any agent operating outside of your direct control as a potentially untrusted entity.
+
+All operational data received from an external agent—including its AgentCard, messages, artifacts, and task statuses—should be handled as untrusted input. For example, a malicious agent could provide crafted data in its fields (e.g., name, skills.description) that, if used without sanitization to construct prompts for a Large Language Model (LLM), could expose your application to prompt injection attacks.
+
+Similarly, any UI definition or data stream received must be treated as untrusted. Malicious agents could attempt to spoof legitimate interfaces to deceive users (phishing), inject malicious scripts via property values (XSS), or generate excessive layout complexity to degrade client performance (DoS). If your application supports optional embedded content (such as iframes or web views), additional care must be taken to prevent exposure to malicious external sites.
+
+Developer Responsibility: Failure to properly validate data and strictly sandbox rendered content can introduce severe vulnerabilities. Developers are responsible for implementing appropriate security measures—such as input sanitization, Content Security Policies (CSP), strict isolation for optional embedded content, and secure credential handling—to protect their systems and users.
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/angular/angular.json b/vendor/a2ui/renderers/angular/angular.json
new file mode 100644
index 0000000000..6fc268bef1
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/angular.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+ "version": 1,
+ "projects": {
+ "lib": {
+ "projectType": "library",
+ "root": ".",
+ "sourceRoot": "./src",
+ "prefix": "lib",
+ "architect": {
+ "build": {
+ "builder": "@angular/build:ng-packagr",
+ "configurations": {
+ "production": {
+ "tsConfig": "./tsconfig.lib.prod.json"
+ },
+ "development": {
+ "tsConfig": "./tsconfig.lib.json"
+ }
+ },
+ "defaultConfiguration": "production"
+ },
+ "test": {
+ "builder": "@angular/build:karma",
+ "options": {
+ "tsConfig": "./tsconfig.spec.json"
+ }
+ }
+ }
+ }
+ },
+ "cli": {
+ "analytics": false
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/ng-package.json b/vendor/a2ui/renderers/angular/ng-package.json
new file mode 100644
index 0000000000..a9b884a2de
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/ng-package.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
+ "dest": "./dist",
+ "lib": {
+ "entryFile": "src/public-api.ts"
+ },
+ "allowedNonPeerDependencies": ["markdown-it", "@a2ui/lit"]
+}
diff --git a/vendor/a2ui/renderers/angular/package-lock.json b/vendor/a2ui/renderers/angular/package-lock.json
new file mode 100644
index 0000000000..220c019daf
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/package-lock.json
@@ -0,0 +1,14264 @@
+{
+ "name": "@a2ui/angular",
+ "version": "0.8.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@a2ui/angular",
+ "version": "0.8.1",
+ "dependencies": {
+ "@a2ui/lit": "file:../lit",
+ "markdown-it": "^14.1.0",
+ "tslib": "^2.3.0"
+ },
+ "devDependencies": {
+ "@angular/build": "^21.0.2",
+ "@angular/cli": "^21.0.2",
+ "@angular/compiler": "^21.0.0",
+ "@angular/compiler-cli": "^21.0.3",
+ "@angular/core": "^21.0.0",
+ "@types/express": "^5.0.1",
+ "@types/jasmine": "~5.1.0",
+ "@types/markdown-it": "^14.1.2",
+ "@types/node": "^20.17.19",
+ "@types/uuid": "^10.0.0",
+ "@vitest/browser": "^4.0.15",
+ "cypress": "^15.6.0",
+ "google-artifactregistry-auth": "^3.5.0",
+ "jasmine-core": "~5.9.0",
+ "jsdom": "^27.2.0",
+ "karma": "^6.4.4",
+ "karma-chrome-launcher": "^3.2.0",
+ "karma-coverage": "^2.2.1",
+ "karma-jasmine": "^5.1.0",
+ "karma-jasmine-html-reporter": "^2.1.0",
+ "ng-packagr": "^21.0.0",
+ "playwright": "^1.56.1",
+ "prettier": "^3.6.2",
+ "sass": "^1.93.2",
+ "tslib": "^2.8.1",
+ "typescript": "~5.9.2",
+ "vitest": "^4.0.15"
+ },
+ "peerDependencies": {
+ "@angular/common": "^21.0.0",
+ "@angular/core": "^21.0.0",
+ "@angular/platform-browser": "^21.0.0"
+ }
+ },
+ "../lit": {
+ "name": "@a2ui/lit",
+ "version": "0.8.1",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@lit-labs/signals": "^0.1.3",
+ "@lit/context": "^1.1.4",
+ "lit": "^3.3.1",
+ "markdown-it": "^14.1.0",
+ "signal-utils": "^0.21.1"
+ },
+ "devDependencies": {
+ "@types/markdown-it": "^14.1.2",
+ "@types/node": "^24.10.1",
+ "google-artifactregistry-auth": "^3.5.0",
+ "typescript": "^5.8.3",
+ "wireit": "^0.15.0-pre.2"
+ }
+ },
+ "node_modules/@a2ui/lit": {
+ "resolved": "../lit",
+ "link": true
+ },
+ "node_modules/@acemir/cssom": {
+ "version": "0.9.28",
+ "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.28.tgz",
+ "integrity": "sha512-LuS6IVEivI75vKN8S04qRD+YySP0RmU/cV8UNukhQZvprxF+76Z43TNo/a08eCodaGhT1Us8etqS1ZRY9/Or0A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@algolia/abtesting": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.6.1.tgz",
+ "integrity": "sha512-wV/gNRkzb7sI9vs1OneG129hwe3Q5zPj7zigz3Ps7M5Lpo2hSorrOnXNodHEOV+yXE/ks4Pd+G3CDFIjFTWhMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-abtesting": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.40.1.tgz",
+ "integrity": "sha512-cxKNATPY5t+Mv8XAVTI57altkaPH+DZi4uMrnexPxPHODMljhGYY+GDZyHwv9a+8CbZHcY372OkxXrDMZA4Lnw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-analytics": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.40.1.tgz",
+ "integrity": "sha512-XP008aMffJCRGAY8/70t+hyEyvqqV7YKm502VPu0+Ji30oefrTn2al7LXkITz7CK6I4eYXWRhN6NaIUi65F1OA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-common": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz",
+ "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-insights": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.40.1.tgz",
+ "integrity": "sha512-RTLjST/t+lsLMouQ4zeLJq2Ss+UNkLGyNVu+yWHanx6kQ3LT5jv8UvPwyht9s7R6jCPnlSI77WnL80J32ZuyJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-personalization": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.40.1.tgz",
+ "integrity": "sha512-2FEK6bUomBzEYkTKzD0iRs7Ljtjb45rKK/VSkyHqeJnG+77qx557IeSO0qVFE3SfzapNcoytTofnZum0BQ6r3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-query-suggestions": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.40.1.tgz",
+ "integrity": "sha512-Nju4NtxAvXjrV2hHZNLKVJLXjOlW6jAXHef/CwNzk1b2qIrCWDO589ELi5ZHH1uiWYoYyBXDQTtHmhaOVVoyXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-search": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.40.1.tgz",
+ "integrity": "sha512-Mw6pAUF121MfngQtcUb5quZVqMC68pSYYjCRZkSITC085S3zdk+h/g7i6FxnVdbSU6OztxikSDMh1r7Z+4iPlA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/ingestion": {
+ "version": "1.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.40.1.tgz",
+ "integrity": "sha512-z+BPlhs45VURKJIxsR99NNBWpUEEqIgwt10v/fATlNxc4UlXvALdOsWzaFfe89/lbP5Bu4+mbO59nqBC87ZM/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/monitoring": {
+ "version": "1.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.40.1.tgz",
+ "integrity": "sha512-VJMUMbO0wD8Rd2VVV/nlFtLJsOAQvjnVNGkMkspFiFhpBA7s/xJOb+fJvvqwKFUjbKTUA7DjiSi1ljSMYBasXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/recommend": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.40.1.tgz",
+ "integrity": "sha512-ehvJLadKVwTp9Scg9NfzVSlBKH34KoWOQNTaN8i1Ac64AnO6iH2apJVSP6GOxssaghZ/s8mFQsDH3QIZoluFHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/requester-browser-xhr": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.40.1.tgz",
+ "integrity": "sha512-PbidVsPurUSQIr6X9/7s34mgOMdJnn0i6p+N6Ab+lsNhY5eiu+S33kZEpZwkITYBCIbhzDLOvb7xZD3gDi+USA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/requester-fetch": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.40.1.tgz",
+ "integrity": "sha512-ThZ5j6uOZCF11fMw9IBkhigjOYdXGXQpj6h4k+T9UkZrF2RlKcPynFzDeRgaLdpYk8Yn3/MnFbwUmib7yxj5Lw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/requester-node-http": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.40.1.tgz",
+ "integrity": "sha512-H1gYPojO6krWHnUXu/T44DrEun/Wl95PJzMXRcM/szstNQczSbwq6wIFJPI9nyE95tarZfUNU3rgorT+wZ6iCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@angular-devkit/architect": {
+ "version": "0.2100.2",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2100.2.tgz",
+ "integrity": "sha512-zSMF82F2wb6b6mvqmDFQyGiKaeFGcgfpXAg7M+ihlJF+GG47H3pNEUzO8+Be5GPoAtpSv0VVoXBwURU2SOnV/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "21.0.2",
+ "rxjs": "7.8.2"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@angular-devkit/core": {
+ "version": "21.0.2",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.0.2.tgz",
+ "integrity": "sha512-ePttMRRua9kv7df6fu2i5jTVJr5bzqwrKBBEtdXnWqOrYLUnU0G6XIpyGYVM6SyqpTwkTPlVsXZo5e8Lq356tg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "8.17.1",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.3",
+ "rxjs": "7.8.2",
+ "source-map": "0.7.6"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular-devkit/schematics": {
+ "version": "21.0.2",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.0.2.tgz",
+ "integrity": "sha512-mFKWTI56D5VmqyIonEK6myIdlGVJpxtxLW44uB1/jiVj7vUSnJCRFHSPH8syaIJ4/Y1B/T4kPTYCx/KEwnO/Ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "21.0.2",
+ "jsonc-parser": "3.3.1",
+ "magic-string": "0.30.19",
+ "ora": "9.0.0",
+ "rxjs": "7.8.2"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@angular/build": {
+ "version": "21.0.2",
+ "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.0.2.tgz",
+ "integrity": "sha512-5ZW4GZxAUXV7Vin+c42wKf6HhkYsexeUSb45K+f6aQVxLAwCEegJWwfQ6bReDw1ANDzXIA1Osh4zcsgOQ58EDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "2.3.0",
+ "@angular-devkit/architect": "0.2100.2",
+ "@babel/core": "7.28.4",
+ "@babel/helper-annotate-as-pure": "7.27.3",
+ "@babel/helper-split-export-declaration": "7.24.7",
+ "@inquirer/confirm": "5.1.19",
+ "@vitejs/plugin-basic-ssl": "2.1.0",
+ "beasties": "0.3.5",
+ "browserslist": "^4.26.0",
+ "esbuild": "0.26.0",
+ "https-proxy-agent": "7.0.6",
+ "istanbul-lib-instrument": "6.0.3",
+ "jsonc-parser": "3.3.1",
+ "listr2": "9.0.5",
+ "magic-string": "0.30.19",
+ "mrmime": "2.0.1",
+ "parse5-html-rewriting-stream": "8.0.0",
+ "picomatch": "4.0.3",
+ "piscina": "5.1.3",
+ "rolldown": "1.0.0-beta.47",
+ "sass": "1.93.2",
+ "semver": "7.7.3",
+ "source-map-support": "0.5.21",
+ "tinyglobby": "0.2.15",
+ "undici": "7.16.0",
+ "vite": "7.2.2",
+ "watchpack": "2.4.4"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "optionalDependencies": {
+ "lmdb": "3.4.3"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "^21.0.0",
+ "@angular/compiler-cli": "^21.0.0",
+ "@angular/core": "^21.0.0",
+ "@angular/localize": "^21.0.0",
+ "@angular/platform-browser": "^21.0.0",
+ "@angular/platform-server": "^21.0.0",
+ "@angular/service-worker": "^21.0.0",
+ "@angular/ssr": "^21.0.2",
+ "karma": "^6.4.0",
+ "less": "^4.2.0",
+ "ng-packagr": "^21.0.0",
+ "postcss": "^8.4.0",
+ "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0",
+ "tslib": "^2.3.0",
+ "typescript": ">=5.9 <6.0",
+ "vitest": "^4.0.8"
+ },
+ "peerDependenciesMeta": {
+ "@angular/core": {
+ "optional": true
+ },
+ "@angular/localize": {
+ "optional": true
+ },
+ "@angular/platform-browser": {
+ "optional": true
+ },
+ "@angular/platform-server": {
+ "optional": true
+ },
+ "@angular/service-worker": {
+ "optional": true
+ },
+ "@angular/ssr": {
+ "optional": true
+ },
+ "karma": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "ng-packagr": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "tailwindcss": {
+ "optional": true
+ },
+ "vitest": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular/build/node_modules/sass": {
+ "version": "1.93.2",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz",
+ "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/@angular/cli": {
+ "version": "21.0.2",
+ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.0.2.tgz",
+ "integrity": "sha512-SkyI0ZchUF0ZVBXSZDF4s4hMZs8AazLlI2PlpHSt+QXM+UX+1hhAp8F50WYOdOf1a+93VUzstI9um1CQgMHz2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/architect": "0.2100.2",
+ "@angular-devkit/core": "21.0.2",
+ "@angular-devkit/schematics": "21.0.2",
+ "@inquirer/prompts": "7.9.0",
+ "@listr2/prompt-adapter-inquirer": "3.0.5",
+ "@modelcontextprotocol/sdk": "1.24.0",
+ "@schematics/angular": "21.0.2",
+ "@yarnpkg/lockfile": "1.1.0",
+ "algoliasearch": "5.40.1",
+ "ini": "5.0.0",
+ "jsonc-parser": "3.3.1",
+ "listr2": "9.0.5",
+ "npm-package-arg": "13.0.1",
+ "pacote": "21.0.3",
+ "parse5-html-rewriting-stream": "8.0.0",
+ "resolve": "1.22.11",
+ "semver": "7.7.3",
+ "yargs": "18.0.0",
+ "zod": "4.1.13"
+ },
+ "bin": {
+ "ng": "bin/ng.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@angular/common": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.0.3.tgz",
+ "integrity": "sha512-y8U5jlaK5x3fhI7WOsuiwwNYghC5TBDfmqJdQ2YT4RFG0vB4b22RW5RY5GDbQ5La4AAcpcjoqb4zca8auLCe+g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "21.0.3",
+ "rxjs": "^6.5.3 || ^7.4.0"
+ }
+ },
+ "node_modules/@angular/compiler": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.0.3.tgz",
+ "integrity": "sha512-s9IN4Won1lTmO2vUIIMc4zZHQ2A68pYr/BiieM6frYBhRAwtdyqZW0C5TTeRlFhHe+jMlOdbaJwF8OJrFT7drQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@angular/compiler-cli": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.0.3.tgz",
+ "integrity": "sha512-zb8Wl8Knsdp0nDvIljR9Y0T79OgzaJm45MvtTBTl7T9lw9kpJvVf09RfTLNtk7VS8ieDPZgDb2c6gpQRODIjjw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "7.28.4",
+ "@jridgewell/sourcemap-codec": "^1.4.14",
+ "chokidar": "^4.0.0",
+ "convert-source-map": "^1.5.1",
+ "reflect-metadata": "^0.2.0",
+ "semver": "^7.0.0",
+ "tslib": "^2.3.0",
+ "yargs": "^18.0.0"
+ },
+ "bin": {
+ "ng-xi18n": "bundles/src/bin/ng_xi18n.js",
+ "ngc": "bundles/src/bin/ngc.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "21.0.3",
+ "typescript": ">=5.9 <6.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular/core": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.0.3.tgz",
+ "integrity": "sha512-/7a2FyZp5cyjNiwuNLr889KA8DVKSTcTtZJpz57Z9DpmZhPscDOWQqLn9f8jeEwbWllvgrXJi8pKSa78r8JAwA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/compiler": "21.0.3",
+ "rxjs": "^6.5.3 || ^7.4.0",
+ "zone.js": "~0.15.0 || ~0.16.0"
+ },
+ "peerDependenciesMeta": {
+ "@angular/compiler": {
+ "optional": true
+ },
+ "zone.js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular/platform-browser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.0.3.tgz",
+ "integrity": "sha512-vWyornr4mRtB+25d9r15IXBVkKV3TW6rmYBakmPmf8uuYDwgm8fTrFDySFChitRISfvMzR7tGJiYRBQRRp1fSA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@angular/animations": "21.0.3",
+ "@angular/common": "21.0.3",
+ "@angular/core": "21.0.3"
+ },
+ "peerDependenciesMeta": {
+ "@angular/animations": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@asamuzakjp/css-color": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.0.tgz",
+ "integrity": "sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-color-parser": "^3.1.0",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "lru-cache": "^11.2.2"
+ }
+ },
+ "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@asamuzakjp/dom-selector": {
+ "version": "6.7.6",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.6.tgz",
+ "integrity": "sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@asamuzakjp/nwsapi": "^2.3.9",
+ "bidi-js": "^1.0.3",
+ "css-tree": "^3.1.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "lru-cache": "^11.2.4"
+ }
+ },
+ "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": {
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@asamuzakjp/nwsapi": {
+ "version": "2.3.9",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz",
+ "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
+ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.4",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.4",
+ "@babel/types": "^7.28.4",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+ "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
+ "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.5"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.5",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
+ "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+ "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
+ "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/color-helpers": "^5.1.0",
+ "@csstools/css-calc": "^2.1.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+ "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/css-syntax-patches-for-csstree": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz",
+ "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+ "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cypress/request": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz",
+ "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~4.0.4",
+ "http-signature": "~1.4.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "performance-now": "^2.1.0",
+ "qs": "6.14.0",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "^5.0.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@cypress/xvfb": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
+ "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.1.0",
+ "lodash.once": "^4.1.1"
+ }
+ },
+ "node_modules/@cypress/xvfb/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/@emnapi/core": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz",
+ "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.1.0",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz",
+ "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz",
+ "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.26.0.tgz",
+ "integrity": "sha512-hj0sKNCQOOo2fgyII3clmJXP28VhgDfU5iy3GNHlWO76KG6N7x4D9ezH5lJtQTG+1J6MFDAJXC1qsI+W+LvZoA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.26.0.tgz",
+ "integrity": "sha512-C0hkDsYNHZkBtPxxDx177JN90/1MiCpvBNjz1f5yWJo1+5+c5zr8apjastpEG+wtPjo9FFtGG7owSsAxyKiHxA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.26.0.tgz",
+ "integrity": "sha512-DDnoJ5eoa13L8zPh87PUlRd/IyFaIKOlRbxiwcSbeumcJ7UZKdtuMCHa1Q27LWQggug6W4m28i4/O2qiQQ5NZQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.26.0.tgz",
+ "integrity": "sha512-bKDkGXGZnj0T70cRpgmv549x38Vr2O3UWLbjT2qmIkdIWcmlg8yebcFWoT9Dku7b5OV3UqPEuNKRzlNhjwUJ9A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.26.0.tgz",
+ "integrity": "sha512-6Z3naJgOuAIB0RLlJkYc81An3rTlQ/IeRdrU3dOea8h/PvZSgitZV+thNuIccw0MuK1GmIAnAmd5TrMZad8FTQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.26.0.tgz",
+ "integrity": "sha512-OPnYj0zpYW0tHusMefyaMvNYQX5pNQuSsHFTHUBNp3vVXupwqpxofcjVsUx11CQhGVkGeXjC3WLjh91hgBG2xw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.26.0.tgz",
+ "integrity": "sha512-jix2fa6GQeZhO1sCKNaNMjfj5hbOvoL2F5t+w6gEPxALumkpOV/wq7oUBMHBn2hY2dOm+mEV/K+xfZy3mrsxNQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.26.0.tgz",
+ "integrity": "sha512-tccJaH5xHJD/239LjbVvJwf6T4kSzbk6wPFerF0uwWlkw/u7HL+wnAzAH5GB2irGhYemDgiNTp8wJzhAHQ64oA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.26.0.tgz",
+ "integrity": "sha512-JY8NyU31SyRmRpuc5W8PQarAx4TvuYbyxbPIpHAZdr/0g4iBr8KwQBS4kiiamGl2f42BBecHusYCsyxi7Kn8UQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.26.0.tgz",
+ "integrity": "sha512-IMJYN7FSkLttYyTbsbme0Ra14cBO5z47kpamo16IwggzzATFY2lcZAwkbcNkWiAduKrTgFJP7fW5cBI7FzcuNQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.26.0.tgz",
+ "integrity": "sha512-XITaGqGVLgk8WOHw8We9Z1L0lbLFip8LyQzKYFKO4zFo1PFaaSKsbNjvkb7O8kEXytmSGRkYpE8LLVpPJpsSlw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.26.0.tgz",
+ "integrity": "sha512-MkggfbDIczStUJwq9wU7gQ7kO33d8j9lWuOCDifN9t47+PeI+9m2QVh51EI/zZQ1spZtFMC1nzBJ+qNGCjJnsg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.26.0.tgz",
+ "integrity": "sha512-fUYup12HZWAeccNLhQ5HwNBPr4zXCPgUWzEq2Rfw7UwqwfQrFZ0SR/JljaURR8xIh9t+o1lNUFTECUTmaP7yKA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.26.0.tgz",
+ "integrity": "sha512-MzRKhM0Ip+//VYwC8tialCiwUQ4G65WfALtJEFyU0GKJzfTYoPBw5XNWf0SLbCUYQbxTKamlVwPmcw4DgZzFxg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.26.0.tgz",
+ "integrity": "sha512-QhCc32CwI1I4Jrg1enCv292sm3YJprW8WHHlyxJhae/dVs+KRWkbvz2Nynl5HmZDW/m9ZxrXayHzjzVNvQMGQA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.26.0.tgz",
+ "integrity": "sha512-1D6vi6lfI18aNT1aTf2HV+RIlm6fxtlAp8eOJ4mmnbYmZ4boz8zYDar86sIYNh0wmiLJEbW/EocaKAX6Yso2fw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.26.0.tgz",
+ "integrity": "sha512-rnDcepj7LjrKFvZkx+WrBv6wECeYACcFjdNPvVPojCPJD8nHpb3pv3AuR9CXgdnjH1O23btICj0rsp0L9wAnHA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.26.0.tgz",
+ "integrity": "sha512-FSWmgGp0mDNjEXXFcsf12BmVrb+sZBBBlyh3LwB/B9ac3Kkc8x5D2WimYW9N7SUkolui8JzVnVlWh7ZmjCpnxw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.26.0.tgz",
+ "integrity": "sha512-0QfciUDFryD39QoSPUDshj4uNEjQhp73+3pbSAaxjV2qGOEDsM67P7KbJq7LzHoVl46oqhIhJ1S+skKGR7lMXA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.26.0.tgz",
+ "integrity": "sha512-vmAK+nHhIZWImwJ3RNw9hX3fU4UGN/OqbSE0imqljNbUQC3GvVJ1jpwYoTfD6mmXmQaxdJY6Hn4jQbLGJKg5Yw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.26.0.tgz",
+ "integrity": "sha512-GPXF7RMkJ7o9bTyUsnyNtrFMqgM3X+uM/LWw4CeHIjqc32fm0Ir6jKDnWHpj8xHFstgWDUYseSABK9KCkHGnpg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.26.0.tgz",
+ "integrity": "sha512-nUHZ5jEYqbBthbiBksbmHTlbb5eElyVfs/s1iHQ8rLBq1eWsd5maOnDpCocw1OM8kFK747d1Xms8dXJHtduxSw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.26.0.tgz",
+ "integrity": "sha512-TMg3KCTCYYaVO+R6P5mSORhcNDDlemUVnUbb8QkboUtOhb5JWKAzd5uMIMECJQOxHZ/R+N8HHtDF5ylzLfMiLw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.26.0.tgz",
+ "integrity": "sha512-apqYgoAUd6ZCb9Phcs8zN32q6l0ZQzQBdVXOofa6WvHDlSOhwCWgSfVQabGViThS40Y1NA4SCvQickgZMFZRlA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.26.0.tgz",
+ "integrity": "sha512-FGJAcImbJNZzLWu7U6WB0iKHl4RuY4TsXEwxJPl9UZLS47agIZuILZEX3Pagfw7I4J3ddflomt9f0apfaJSbaw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.26.0.tgz",
+ "integrity": "sha512-WAckBKaVnmFqbEhbymrPK7M086DQMpL1XoRbpmN0iW8k5JSXjDRQBhcZNa0VweItknLq9eAeCL34jK7/CDcw7A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/ansi": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz",
+ "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/checkbox": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz",
+ "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/confirm": {
+ "version": "5.1.19",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.19.tgz",
+ "integrity": "sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.0",
+ "@inquirer/type": "^3.0.9"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/core": {
+ "version": "10.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz",
+ "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
+ "cli-width": "^4.1.0",
+ "mute-stream": "^2.0.0",
+ "signal-exit": "^4.1.0",
+ "wrap-ansi": "^6.2.0",
+ "yoctocolors-cjs": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/editor": {
+ "version": "4.2.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz",
+ "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/external-editor": "^1.0.3",
+ "@inquirer/type": "^3.0.10"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/expand": {
+ "version": "4.0.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz",
+ "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/external-editor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz",
+ "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chardet": "^2.1.1",
+ "iconv-lite": "^0.7.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/figures": {
+ "version": "1.0.15",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz",
+ "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/input": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz",
+ "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/number": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz",
+ "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/password": {
+ "version": "4.0.23",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz",
+ "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/prompts": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.9.0.tgz",
+ "integrity": "sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/checkbox": "^4.3.0",
+ "@inquirer/confirm": "^5.1.19",
+ "@inquirer/editor": "^4.2.21",
+ "@inquirer/expand": "^4.0.21",
+ "@inquirer/input": "^4.2.5",
+ "@inquirer/number": "^3.0.21",
+ "@inquirer/password": "^4.0.21",
+ "@inquirer/rawlist": "^4.1.9",
+ "@inquirer/search": "^3.2.0",
+ "@inquirer/select": "^4.4.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/rawlist": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz",
+ "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/search": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz",
+ "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/select": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz",
+ "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^1.0.2",
+ "@inquirer/core": "^10.3.2",
+ "@inquirer/figures": "^1.0.15",
+ "@inquirer/type": "^3.0.10",
+ "yoctocolors-cjs": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/type": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz",
+ "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@isaacs/balanced-match": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
+ "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@isaacs/brace-expansion": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+ "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@isaacs/balanced-match": "^4.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@listr2/prompt-adapter-inquirer": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.5.tgz",
+ "integrity": "sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/type": "^3.0.8"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@inquirer/prompts": ">= 3 < 8",
+ "listr2": "9.0.5"
+ }
+ },
+ "node_modules/@lmdb/lmdb-darwin-arm64": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.3.tgz",
+ "integrity": "sha512-zR6Y45VNtW5s+A+4AyhrJk0VJKhXdkLhrySCpCu7PSdnakebsOzNxf58p5Xoq66vOSuueGAxlqDAF49HwdrSTQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-darwin-x64": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.3.tgz",
+ "integrity": "sha512-nfGm5pQksBGfaj9uMbjC0YyQreny/Pl7mIDtHtw6g7WQuCgeLullr9FNRsYyKplaEJBPrCVpEjpAznxTBIrXBw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.3.tgz",
+ "integrity": "sha512-Kjqomp7i0rgSbYSUmv9JnXpS55zYT/YcW3Bdf9oqOTjcH0/8tFAP8MLhu/i9V2pMKIURDZk63Ww49DTK0T3c/Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-arm64": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.3.tgz",
+ "integrity": "sha512-uX9eaPqWb740wg5D3TCvU/js23lSRSKT7lJrrQ8IuEG/VLgpPlxO3lHDywU44yFYdGS7pElBn6ioKFKhvALZlw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-linux-x64": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.3.tgz",
+ "integrity": "sha512-7/8l20D55CfwdMupkc3fNxNJdn4bHsti2X0cp6PwiXlLeSFvAfWs5kCCx+2Cyje4l4GtN//LtKWjTru/9hDJQg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-win32-arm64": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.3.tgz",
+ "integrity": "sha512-yWVR0e5Gl35EGJBsAuqPOdjtUYuN8CcTLKrqpQFoM+KsMadViVCulhKNhkcjSGJB88Am5bRPjMro4MBB9FS23Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@lmdb/lmdb-win32-x64": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.3.tgz",
+ "integrity": "sha512-1JdBkcO0Vrua4LUgr4jAe4FUyluwCeq/pDkBrlaVjX3/BBWP1TzVjCL+TibWNQtPAL1BITXPAhlK5Ru4FBd/hg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@modelcontextprotocol/sdk": {
+ "version": "1.24.0",
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.24.0.tgz",
+ "integrity": "sha512-D8h5KXY2vHFW8zTuxn2vuZGN0HGrQ5No6LkHwlEA9trVgNdPL3TF1dSqKA7Dny6BbBYKSW/rOBDXdC8KJAjUCg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.17.1",
+ "ajv-formats": "^3.0.1",
+ "content-type": "^1.0.5",
+ "cors": "^2.8.5",
+ "cross-spawn": "^7.0.5",
+ "eventsource": "^3.0.2",
+ "eventsource-parser": "^3.0.0",
+ "express": "^5.0.1",
+ "express-rate-limit": "^7.5.0",
+ "jose": "^6.1.1",
+ "pkce-challenge": "^5.0.0",
+ "raw-body": "^3.0.0",
+ "zod": "^3.25 || ^4.0",
+ "zod-to-json-schema": "^3.25.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@cfworker/json-schema": "^4.1.1",
+ "zod": "^3.25 || ^4.0"
+ },
+ "peerDependenciesMeta": {
+ "@cfworker/json-schema": {
+ "optional": true
+ },
+ "zod": {
+ "optional": false
+ }
+ }
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
+ "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
+ "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
+ "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
+ "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
+ "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
+ "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@napi-rs/nice": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz",
+ "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "optionalDependencies": {
+ "@napi-rs/nice-android-arm-eabi": "1.1.1",
+ "@napi-rs/nice-android-arm64": "1.1.1",
+ "@napi-rs/nice-darwin-arm64": "1.1.1",
+ "@napi-rs/nice-darwin-x64": "1.1.1",
+ "@napi-rs/nice-freebsd-x64": "1.1.1",
+ "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1",
+ "@napi-rs/nice-linux-arm64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-arm64-musl": "1.1.1",
+ "@napi-rs/nice-linux-ppc64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-riscv64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-s390x-gnu": "1.1.1",
+ "@napi-rs/nice-linux-x64-gnu": "1.1.1",
+ "@napi-rs/nice-linux-x64-musl": "1.1.1",
+ "@napi-rs/nice-openharmony-arm64": "1.1.1",
+ "@napi-rs/nice-win32-arm64-msvc": "1.1.1",
+ "@napi-rs/nice-win32-ia32-msvc": "1.1.1",
+ "@napi-rs/nice-win32-x64-msvc": "1.1.1"
+ }
+ },
+ "node_modules/@napi-rs/nice-android-arm-eabi": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz",
+ "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-android-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz",
+ "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-darwin-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz",
+ "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-darwin-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz",
+ "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-freebsd-x64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz",
+ "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm-gnueabihf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz",
+ "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz",
+ "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz",
+ "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-ppc64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz",
+ "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-riscv64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz",
+ "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-s390x-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz",
+ "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-x64-gnu": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz",
+ "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-x64-musl": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz",
+ "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-openharmony-arm64": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz",
+ "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-arm64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz",
+ "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-ia32-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz",
+ "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-x64-msvc": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz",
+ "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.0.tgz",
+ "integrity": "sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.7.1",
+ "@emnapi/runtime": "^1.7.1",
+ "@tybys/wasm-util": "^0.10.1"
+ }
+ },
+ "node_modules/@npmcli/agent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz",
+ "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.1",
+ "lru-cache": "^11.2.1",
+ "socks-proxy-agent": "^8.0.3"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/agent/node_modules/lru-cache": {
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz",
+ "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/git": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz",
+ "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/promise-spawn": "^9.0.0",
+ "ini": "^6.0.0",
+ "lru-cache": "^11.2.1",
+ "npm-pick-manifest": "^11.0.1",
+ "proc-log": "^6.0.0",
+ "promise-retry": "^2.0.1",
+ "semver": "^7.3.5",
+ "which": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/@npmcli/promise-spawn": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz",
+ "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "which": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/ini": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz",
+ "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/lru-cache": {
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/which": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz",
+ "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/installed-package-contents": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz",
+ "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-bundled": "^4.0.0",
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "bin/index.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/node-gyp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz",
+ "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/package-json": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz",
+ "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^7.0.0",
+ "glob": "^13.0.0",
+ "hosted-git-info": "^9.0.0",
+ "json-parse-even-better-errors": "^5.0.0",
+ "proc-log": "^6.0.0",
+ "semver": "^7.5.3",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/glob": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
+ "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.1.1",
+ "minipass": "^7.1.2",
+ "path-scurry": "^2.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/minimatch": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
+ "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/brace-expansion": "^5.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@npmcli/package-json/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/promise-spawn": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.3.tgz",
+ "integrity": "sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "which": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/promise-spawn/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@npmcli/promise-spawn/node_modules/which": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@npmcli/redact": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",
+ "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/run-script": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz",
+ "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/node-gyp": "^5.0.0",
+ "@npmcli/package-json": "^7.0.0",
+ "@npmcli/promise-spawn": "^9.0.0",
+ "node-gyp": "^12.1.0",
+ "proc-log": "^6.0.0",
+ "which": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/run-script/node_modules/@npmcli/promise-spawn": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz",
+ "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "which": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/run-script/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@npmcli/run-script/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/run-script/node_modules/which": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz",
+ "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@oxc-project/types": {
+ "version": "0.96.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.96.0.tgz",
+ "integrity": "sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ }
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher/node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/@parcel/watcher/node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.29",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
+ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.47.tgz",
+ "integrity": "sha512-vPP9/MZzESh9QtmvQYojXP/midjgkkc1E4AdnPPAzQXo668ncHJcVLKjJKzoBdsQmaIvNjrMdsCwES8vTQHRQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.47.tgz",
+ "integrity": "sha512-Lc3nrkxeaDVCVl8qR3qoxh6ltDZfkQ98j5vwIr5ALPkgjZtDK4BGCrrBoLpGVMg+csWcaqUbwbKwH5yvVa0oOw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.47.tgz",
+ "integrity": "sha512-eBYxQDwP0O33plqNVqOtUHqRiSYVneAknviM5XMawke3mwMuVlAsohtOqEjbCEl/Loi/FWdVeks5WkqAkzkYWQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.47.tgz",
+ "integrity": "sha512-Ns+kgp2+1Iq/44bY/Z30DETUSiHY7ZuqaOgD5bHVW++8vme9rdiWsN4yG4rRPXkdgzjvQ9TDHmZZKfY4/G11AA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.47.tgz",
+ "integrity": "sha512-4PecgWCJhTA2EFOlptYJiNyVP2MrVP4cWdndpOu3WmXqWqZUmSubhb4YUAIxAxnXATlGjC1WjxNPhV7ZllNgdA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.47.tgz",
+ "integrity": "sha512-CyIunZ6D9U9Xg94roQI1INt/bLkOpPsZjZZkiaAZ0r6uccQdICmC99M9RUPlMLw/qg4yEWLlQhG73W/mG437NA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.47.tgz",
+ "integrity": "sha512-doozc/Goe7qRCSnzfJbFINTHsMktqmZQmweull6hsZZ9sjNWQ6BWQnbvOlfZJe4xE5NxM1NhPnY5Giqnl3ZrYQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.47.tgz",
+ "integrity": "sha512-fodvSMf6Aqwa0wEUSTPewmmZOD44rc5Tpr5p9NkwQ6W1SSpUKzD3SwpJIgANDOhwiYhDuiIaYPGB7Ujkx1q0UQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.47.tgz",
+ "integrity": "sha512-Rxm5hYc0mGjwLh5sjlGmMygxAaV2gnsx7CNm2lsb47oyt5UQyPDZf3GP/ct8BEcwuikdqzsrrlIp8+kCSvMFNQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.47.tgz",
+ "integrity": "sha512-YakuVe+Gc87jjxazBL34hbr8RJpRuFBhun7NEqoChVDlH5FLhLXjAPHqZd990TVGVNkemourf817Z8u2fONS8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.47.tgz",
+ "integrity": "sha512-ak2GvTFQz3UAOw8cuQq8pWE+TNygQB6O47rMhvevvTzETh7VkHRFtRUwJynX5hwzFvQMP6G0az5JrBGuwaMwYQ==",
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.0.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.47.tgz",
+ "integrity": "sha512-o5BpmBnXU+Cj+9+ndMcdKjhZlPb79dVPBZnWwMnI4RlNSSq5yOvFZqvfPYbyacvnW03Na4n5XXQAPhu3RydZ0w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-ia32-msvc": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.47.tgz",
+ "integrity": "sha512-FVOmfyYehNE92IfC9Kgs913UerDog2M1m+FADJypKz0gmRg3UyTt4o1cZMCAl7MiR89JpM9jegNO1nXuP1w1vw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.47.tgz",
+ "integrity": "sha512-by/70F13IUE101Bat0oeH8miwWX5mhMFPk1yjCdxoTNHTyTdLgb0THNaebRM6AP7Kz+O3O2qx87sruYuF5UxHg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.47.tgz",
+ "integrity": "sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/plugin-json": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz",
+ "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
+ "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz",
+ "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz",
+ "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz",
+ "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz",
+ "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz",
+ "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz",
+ "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz",
+ "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz",
+ "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz",
+ "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz",
+ "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz",
+ "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz",
+ "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz",
+ "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz",
+ "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz",
+ "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz",
+ "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz",
+ "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz",
+ "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz",
+ "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz",
+ "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz",
+ "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz",
+ "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/wasm-node": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.53.3.tgz",
+ "integrity": "sha512-mB8z32H6kz4kVjn+tfTGcrXBae7rIeAvm/g6itsE3IqcXpjSRRvk1/EOWDEi5wL8NNmxXiH71t4jtNfr128zpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/@schematics/angular": {
+ "version": "21.0.2",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.0.2.tgz",
+ "integrity": "sha512-JzFHwSNmagzmfBJVSfoJc2i4TqmlXv0iyrVke3vP2b+/CqOBhuDLQSkkdiC+8zI0qJFzgDHn2RlCd0WaIwLfiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "21.0.2",
+ "@angular-devkit/schematics": "21.0.2",
+ "jsonc-parser": "3.3.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@sigstore/bundle": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz",
+ "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.5.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@sigstore/core": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.0.0.tgz",
+ "integrity": "sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@sigstore/protobuf-specs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz",
+ "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/@sigstore/sign": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz",
+ "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^4.0.0",
+ "@sigstore/core": "^3.0.0",
+ "@sigstore/protobuf-specs": "^0.5.0",
+ "make-fetch-happen": "^15.0.2",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@sigstore/tuf": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz",
+ "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.5.0",
+ "tuf-js": "^4.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@sigstore/verify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz",
+ "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^4.0.0",
+ "@sigstore/core": "^3.0.0",
+ "@sigstore/protobuf-specs": "^0.5.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@standard-schema/spec": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
+ "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tufjs/canonical-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz",
+ "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@tufjs/models": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.0.0.tgz",
+ "integrity": "sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/canonical-json": "2.0.0",
+ "minimatch": "^9.0.5"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@tufjs/models/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@tufjs/models/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.6",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
+ "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/chai": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
+ "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.19",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
+ "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/express": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz",
+ "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^5.0.0",
+ "@types/serve-static": "^2"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz",
+ "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
+ "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/jasmine": {
+ "version": "5.1.13",
+ "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.13.tgz",
+ "integrity": "sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "14.1.2",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
+ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/linkify-it": "^5",
+ "@types/mdurl": "^2"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.19.26",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.26.tgz",
+ "integrity": "sha512-0l6cjgF0XnihUpndDhk+nyD3exio3iKaYROSgvh/qSevPXax3L8p5DBRFjbvalnwatGgHEQn2R88y2fA3g4irg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/qs": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/send": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
+ "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz",
+ "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/sinonjs__fake-timers": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz",
+ "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/sizzle": {
+ "version": "2.3.10",
+ "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz",
+ "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/tmp": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz",
+ "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/uuid": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
+ "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@vitejs/plugin-basic-ssl": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz",
+ "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^6.0.0 || ^7.0.0"
+ }
+ },
+ "node_modules/@vitest/browser": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.0.15.tgz",
+ "integrity": "sha512-zedtczX688KehaIaAv7m25CeDLb0gBtAOa2Oi1G1cqvSO5aLSVfH6lpZMJLW8BKYuWMxLQc9/5GYoM+jgvGIrw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/mocker": "4.0.15",
+ "@vitest/utils": "4.0.15",
+ "magic-string": "^0.30.21",
+ "pixelmatch": "7.1.0",
+ "pngjs": "^7.0.0",
+ "sirv": "^3.0.2",
+ "tinyrainbow": "^3.0.3",
+ "ws": "^8.18.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "vitest": "4.0.15"
+ }
+ },
+ "node_modules/@vitest/browser/node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/@vitest/expect": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.15.tgz",
+ "integrity": "sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.0.0",
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "4.0.15",
+ "@vitest/utils": "4.0.15",
+ "chai": "^6.2.1",
+ "tinyrainbow": "^3.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/mocker": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.15.tgz",
+ "integrity": "sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "4.0.15",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.21"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^6.0.0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/mocker/node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/@vitest/pretty-format": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.15.tgz",
+ "integrity": "sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyrainbow": "^3.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.15.tgz",
+ "integrity": "sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/utils": "4.0.15",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.15.tgz",
+ "integrity": "sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.0.15",
+ "magic-string": "^0.30.21",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot/node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/@vitest/spy": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.15.tgz",
+ "integrity": "sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.15.tgz",
+ "integrity": "sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.0.15",
+ "tinyrainbow": "^3.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@yarnpkg/lockfile": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/abbrev": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",
+ "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/accepts/node_modules/mime-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/algoliasearch": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.40.1.tgz",
+ "integrity": "sha512-iUNxcXUNg9085TJx0HJLjqtDE0r1RZ0GOGrt8KNQqQT5ugu8lZsHuMUYW/e0lHhq6xBvmktU9Bw4CXP9VQeKrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/abtesting": "1.6.1",
+ "@algolia/client-abtesting": "5.40.1",
+ "@algolia/client-analytics": "5.40.1",
+ "@algolia/client-common": "5.40.1",
+ "@algolia/client-insights": "5.40.1",
+ "@algolia/client-personalization": "5.40.1",
+ "@algolia/client-query-suggestions": "5.40.1",
+ "@algolia/client-search": "5.40.1",
+ "@algolia/ingestion": "1.40.1",
+ "@algolia/monitoring": "1.40.1",
+ "@algolia/recommend": "5.40.1",
+ "@algolia/requester-browser-xhr": "5.40.1",
+ "@algolia/requester-fetch": "5.40.1",
+ "@algolia/requester-node-http": "5.40.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz",
+ "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/anymatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "node_modules/assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/aws4": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz",
+ "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/base64id": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^4.5.0 || >= 5.9"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.9.5",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz",
+ "integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
+ "node_modules/bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "node_modules/beasties": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz",
+ "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "css-select": "^6.0.0",
+ "css-what": "^7.0.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "htmlparser2": "^10.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.49",
+ "postcss-media-query-parser": "^0.2.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/bidi-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
+ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "require-from-string": "^2.0.2"
+ }
+ },
+ "node_modules/bignumber.js": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
+ "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/blob-util": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz",
+ "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/body-parser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
+ "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "^3.1.2",
+ "content-type": "^1.0.5",
+ "debug": "^4.4.3",
+ "http-errors": "^2.0.0",
+ "iconv-lite": "^0.7.0",
+ "on-finished": "^2.4.1",
+ "qs": "^6.14.0",
+ "raw-body": "^3.0.1",
+ "type-is": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "20.0.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz",
+ "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^5.0.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^13.0.0",
+ "lru-cache": "^11.1.0",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^2.0.1",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^7.0.2",
+ "ssri": "^13.0.0",
+ "unique-filename": "^5.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/cacache/node_modules/glob": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
+ "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.1.1",
+ "minipass": "^7.1.2",
+ "path-scurry": "^2.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/cacache/node_modules/minimatch": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
+ "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/brace-expansion": "^5.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/ssri": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz",
+ "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/cachedir": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz",
+ "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001760",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz",
+ "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/chai": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz",
+ "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz",
+ "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz",
+ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.3.0.tgz",
+ "integrity": "sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-table3": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz",
+ "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "colors": "1.4.0"
+ }
+ },
+ "node_modules/cli-truncate": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz",
+ "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "slice-ansi": "^7.1.0",
+ "string-width": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/cli-truncate/node_modules/string-width": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz",
+ "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
+ "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+ "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/common-tags": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+ "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/connect/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/connect/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/connect/node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/connect/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/connect/node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/connect/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
+ "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.6.0"
+ }
+ },
+ "node_modules/copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-what": "^3.14.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz",
+ "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^7.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "nth-check": "^2.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
+ "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.12.2",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz",
+ "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssstyle": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.4.tgz",
+ "integrity": "sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@asamuzakjp/css-color": "^4.1.0",
+ "@csstools/css-syntax-patches-for-csstree": "1.0.14",
+ "css-tree": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/custom-event": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+ "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cypress": {
+ "version": "15.7.1",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.7.1.tgz",
+ "integrity": "sha512-U3sYnJ+Cnpgr6IPycxsznTg//mGVXfPGeGV+om7VQCyp5XyVkhG4oPr3X3hTq1+OB0Om0O5DxusYmt7cbvwqMQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@cypress/request": "^3.0.9",
+ "@cypress/xvfb": "^1.2.4",
+ "@types/sinonjs__fake-timers": "8.1.1",
+ "@types/sizzle": "^2.3.2",
+ "@types/tmp": "^0.2.3",
+ "arch": "^2.2.0",
+ "blob-util": "^2.0.2",
+ "bluebird": "^3.7.2",
+ "buffer": "^5.7.1",
+ "cachedir": "^2.3.0",
+ "chalk": "^4.1.0",
+ "ci-info": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-table3": "0.6.1",
+ "commander": "^6.2.1",
+ "common-tags": "^1.8.0",
+ "dayjs": "^1.10.4",
+ "debug": "^4.3.4",
+ "enquirer": "^2.3.6",
+ "eventemitter2": "6.4.7",
+ "execa": "4.1.0",
+ "executable": "^4.1.1",
+ "extract-zip": "2.0.1",
+ "figures": "^3.2.0",
+ "fs-extra": "^9.1.0",
+ "hasha": "5.2.2",
+ "is-installed-globally": "~0.4.0",
+ "listr2": "^3.8.3",
+ "lodash": "^4.17.21",
+ "log-symbols": "^4.0.0",
+ "minimist": "^1.2.8",
+ "ospath": "^1.2.2",
+ "pretty-bytes": "^5.6.0",
+ "process": "^0.11.10",
+ "proxy-from-env": "1.0.0",
+ "request-progress": "^3.0.0",
+ "supports-color": "^8.1.1",
+ "systeminformation": "5.27.7",
+ "tmp": "~0.2.4",
+ "tree-kill": "1.2.2",
+ "untildify": "^4.0.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "cypress": "bin/cypress"
+ },
+ "engines": {
+ "node": "^20.1.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/cypress/node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cypress/node_modules/cli-truncate": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "slice-ansi": "^3.0.0",
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cypress/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cypress/node_modules/listr2": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
+ "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cli-truncate": "^2.1.0",
+ "colorette": "^2.0.16",
+ "log-update": "^4.0.0",
+ "p-map": "^4.0.0",
+ "rfdc": "^1.3.0",
+ "rxjs": "^7.5.1",
+ "through": "^2.3.8",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "enquirer": ">= 2.3.0 < 3"
+ },
+ "peerDependenciesMeta": {
+ "enquirer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cypress/node_modules/listr2/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/cypress/node_modules/log-update": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
+ "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^4.3.0",
+ "cli-cursor": "^3.1.0",
+ "slice-ansi": "^4.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cypress/node_modules/log-update/node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/cypress/node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cypress/node_modules/slice-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cypress/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz",
+ "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^15.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/date-format": {
+ "version": "4.0.14",
+ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz",
+ "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.19",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/dependency-graph": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz",
+ "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/di": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+ "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/dom-serialize": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+ "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "custom-event": "~1.0.0",
+ "ent": "~2.2.0",
+ "extend": "^3.0.0",
+ "void-elements": "^2.0.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.267",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
+ "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/engine.io": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz",
+ "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
+ "accepts": "~1.3.4",
+ "base64id": "2.0.0",
+ "cookie": "~0.7.2",
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/engine.io/node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/engine.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io/node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/engine.io/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/enquirer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/ent": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz",
+ "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "punycode": "^1.4.1",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.26.0.tgz",
+ "integrity": "sha512-3Hq7jri+tRrVWha+ZeIVhl4qJRha/XjRNSopvTsOaCvfPHrflTYTcUFcEjMKdxofsXXsdc4zjg5NOTnL4Gl57Q==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.26.0",
+ "@esbuild/android-arm": "0.26.0",
+ "@esbuild/android-arm64": "0.26.0",
+ "@esbuild/android-x64": "0.26.0",
+ "@esbuild/darwin-arm64": "0.26.0",
+ "@esbuild/darwin-x64": "0.26.0",
+ "@esbuild/freebsd-arm64": "0.26.0",
+ "@esbuild/freebsd-x64": "0.26.0",
+ "@esbuild/linux-arm": "0.26.0",
+ "@esbuild/linux-arm64": "0.26.0",
+ "@esbuild/linux-ia32": "0.26.0",
+ "@esbuild/linux-loong64": "0.26.0",
+ "@esbuild/linux-mips64el": "0.26.0",
+ "@esbuild/linux-ppc64": "0.26.0",
+ "@esbuild/linux-riscv64": "0.26.0",
+ "@esbuild/linux-s390x": "0.26.0",
+ "@esbuild/linux-x64": "0.26.0",
+ "@esbuild/netbsd-arm64": "0.26.0",
+ "@esbuild/netbsd-x64": "0.26.0",
+ "@esbuild/openbsd-arm64": "0.26.0",
+ "@esbuild/openbsd-x64": "0.26.0",
+ "@esbuild/openharmony-arm64": "0.26.0",
+ "@esbuild/sunos-x64": "0.26.0",
+ "@esbuild/win32-arm64": "0.26.0",
+ "@esbuild/win32-ia32": "0.26.0",
+ "@esbuild/win32-x64": "0.26.0"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/eventemitter2": {
+ "version": "6.4.7",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
+ "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/eventsource": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+ "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eventsource-parser": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/eventsource-parser": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz",
+ "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/executable": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
+ "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/expect-type": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz",
+ "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/exponential-backoff": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/express": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
+ "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "^2.0.0",
+ "body-parser": "^2.2.1",
+ "content-disposition": "^1.0.0",
+ "content-type": "^1.0.5",
+ "cookie": "^0.7.1",
+ "cookie-signature": "^1.2.1",
+ "debug": "^4.4.0",
+ "depd": "^2.0.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "finalhandler": "^2.1.0",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "merge-descriptors": "^2.0.0",
+ "mime-types": "^3.0.0",
+ "on-finished": "^2.4.1",
+ "once": "^1.4.0",
+ "parseurl": "^1.3.3",
+ "proxy-addr": "^2.0.7",
+ "qs": "^6.14.0",
+ "range-parser": "^1.2.1",
+ "router": "^2.2.0",
+ "send": "^1.1.0",
+ "serve-static": "^2.2.0",
+ "statuses": "^2.0.1",
+ "type-is": "^2.0.1",
+ "vary": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/express-rate-limit": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz",
+ "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/express-rate-limit"
+ },
+ "peerDependencies": {
+ "express": ">= 4.11"
+ }
+ },
+ "node_modules/express/node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/mime-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
+ "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "on-finished": "^2.4.1",
+ "parseurl": "^1.3.3",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/find-cache-directory": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-directory/-/find-cache-directory-6.0.0.tgz",
+ "integrity": "sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-up-simple": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
+ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
+ "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gaxios": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
+ "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^7.0.1",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.9",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/gaxios/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/gcp-metadata": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz",
+ "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "gaxios": "^6.1.1",
+ "google-logging-utils": "^0.0.2",
+ "json-bigint": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-dirs/node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/google-artifactregistry-auth": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/google-artifactregistry-auth/-/google-artifactregistry-auth-3.5.0.tgz",
+ "integrity": "sha512-SIvVBPjVr0KvYFEJEZXKfELt8nvXwTKl6IHyOT7pTHBlS8Ej2UuTOJeKWYFim/JztSjUyna9pKQxa3VhTA12Fg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "google-auth-library": "^9.14.0",
+ "js-yaml": "^4.1.0",
+ "yargs": "^17.1.1"
+ },
+ "bin": {
+ "artifactregistry-auth": "src/main.js"
+ }
+ },
+ "node_modules/google-artifactregistry-auth/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/google-artifactregistry-auth/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/google-artifactregistry-auth/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/google-artifactregistry-auth/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/google-auth-library": {
+ "version": "9.15.1",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz",
+ "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "gaxios": "^6.1.1",
+ "gcp-metadata": "^6.1.0",
+ "gtoken": "^7.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/google-logging-utils": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz",
+ "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/gtoken": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "gaxios": "^6.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasha": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
+ "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz",
+ "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^11.1.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-encoding": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/htmlparser2": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz",
+ "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.1",
+ "entities": "^6.0.0"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/http-signature": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz",
+ "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^2.0.2",
+ "sshpk": "^1.18.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ignore-walk": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz",
+ "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minimatch": "^10.0.3"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/ignore-walk/node_modules/minimatch": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
+ "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/brace-expansion": "^5.0.0"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
+ "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz",
+ "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/injection-js": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.6.1.tgz",
+ "integrity": "sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ }
+ },
+ "node_modules/ip-address": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/isbinaryfile": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+ "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/gjtorikian/"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
+ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
+ "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jasmine-core": {
+ "version": "5.9.0",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.9.0.tgz",
+ "integrity": "sha512-OMUvF1iI6+gSRYOhMrH4QYothVLN9C3EJ6wm4g7zLJlnaTl8zbaPOr0bTw70l7QxkoM7sVFOWo83u9B2Fe2Zng==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jose": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz",
+ "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsdom": {
+ "version": "27.3.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.3.0.tgz",
+ "integrity": "sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@acemir/cssom": "^0.9.28",
+ "@asamuzakjp/dom-selector": "^6.7.6",
+ "cssstyle": "^5.3.4",
+ "data-urls": "^6.0.0",
+ "decimal.js": "^10.6.0",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.6",
+ "is-potential-custom-element-name": "^1.0.1",
+ "parse5": "^8.0.0",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^6.0.0",
+ "w3c-xmlserializer": "^5.0.0",
+ "webidl-conversions": "^8.0.0",
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^15.1.0",
+ "ws": "^8.18.3",
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "canvas": "^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/tldts": {
+ "version": "7.0.19",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.19.tgz",
+ "integrity": "sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^7.0.19"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/jsdom/node_modules/tldts-core": {
+ "version": "7.0.19",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz",
+ "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsdom/node_modules/tough-cookie": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz",
+ "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tldts": "^7.0.5"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz",
+ "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+ "dev": true,
+ "license": "(AFL-2.1 OR BSD-3-Clause)"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
+ "dev": true,
+ "engines": [
+ "node >= 0.2.0"
+ ],
+ "license": "MIT"
+ },
+ "node_modules/jsprim": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
+ "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.4.0",
+ "verror": "1.10.0"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-equal-constant-time": "^1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jwa": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/karma": {
+ "version": "6.4.4",
+ "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz",
+ "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@colors/colors": "1.5.0",
+ "body-parser": "^1.19.0",
+ "braces": "^3.0.2",
+ "chokidar": "^3.5.1",
+ "connect": "^3.7.0",
+ "di": "^0.0.1",
+ "dom-serialize": "^2.2.1",
+ "glob": "^7.1.7",
+ "graceful-fs": "^4.2.6",
+ "http-proxy": "^1.18.1",
+ "isbinaryfile": "^4.0.8",
+ "lodash": "^4.17.21",
+ "log4js": "^6.4.1",
+ "mime": "^2.5.2",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.5",
+ "qjobs": "^1.2.0",
+ "range-parser": "^1.2.1",
+ "rimraf": "^3.0.2",
+ "socket.io": "^4.7.2",
+ "source-map": "^0.6.1",
+ "tmp": "^0.2.1",
+ "ua-parser-js": "^0.7.30",
+ "yargs": "^16.1.1"
+ },
+ "bin": {
+ "karma": "bin/karma"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/karma-chrome-launcher": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz",
+ "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "which": "^1.2.1"
+ }
+ },
+ "node_modules/karma-chrome-launcher/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/karma-coverage": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz",
+ "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.2.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.1",
+ "istanbul-reports": "^3.0.5",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/karma-coverage/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/karma-jasmine": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz",
+ "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jasmine-core": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "karma": "^6.0.0"
+ }
+ },
+ "node_modules/karma-jasmine-html-reporter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz",
+ "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "jasmine-core": "^4.0.0 || ^5.0.0",
+ "karma": "^6.0.0",
+ "karma-jasmine": "^5.0.0"
+ }
+ },
+ "node_modules/karma-jasmine/node_modules/jasmine-core": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz",
+ "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/karma/node_modules/body-parser": {
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz",
+ "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "~1.2.0",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "on-finished": "~2.4.1",
+ "qs": "~6.14.0",
+ "raw-body": "~2.5.3",
+ "type-is": "~1.6.18",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/karma/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/karma/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/karma/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/karma/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/karma/node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/karma/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/karma/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/karma/node_modules/raw-body": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/karma/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/karma/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/karma/node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/karma/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/karma/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/karma/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/less": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/less/-/less-4.4.2.tgz",
+ "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "copy-anything": "^2.0.1",
+ "parse-node-version": "^1.0.1",
+ "tslib": "^2.3.0"
+ },
+ "bin": {
+ "lessc": "bin/lessc"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "optionalDependencies": {
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "source-map": "~0.6.0"
+ }
+ },
+ "node_modules/less/node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/less/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/less/node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/less/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/less/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "node_modules/listr2": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz",
+ "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cli-truncate": "^5.0.0",
+ "colorette": "^2.0.20",
+ "eventemitter3": "^5.0.1",
+ "log-update": "^6.1.0",
+ "rfdc": "^1.4.1",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/listr2/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/listr2/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/listr2/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/listr2/node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/listr2/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/listr2/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/listr2/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/lmdb": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.3.tgz",
+ "integrity": "sha512-GWV1kVi6uhrXWqe+3NXWO73OYe8fto6q8JMo0HOpk1vf8nEyFWgo4CSNJpIFzsOxOrysVUlcO48qRbQfmKd1gA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "msgpackr": "^1.11.2",
+ "node-addon-api": "^6.1.0",
+ "node-gyp-build-optional-packages": "5.2.2",
+ "ordered-binary": "^1.5.3",
+ "weak-lru-cache": "^1.2.2"
+ },
+ "bin": {
+ "download-lmdb-prebuilds": "bin/download-prebuilds.js"
+ },
+ "optionalDependencies": {
+ "@lmdb/lmdb-darwin-arm64": "3.4.3",
+ "@lmdb/lmdb-darwin-x64": "3.4.3",
+ "@lmdb/lmdb-linux-arm": "3.4.3",
+ "@lmdb/lmdb-linux-arm64": "3.4.3",
+ "@lmdb/lmdb-linux-x64": "3.4.3",
+ "@lmdb/lmdb-win32-arm64": "3.4.3",
+ "@lmdb/lmdb-win32-x64": "3.4.3"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
+ "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^7.0.0",
+ "cli-cursor": "^5.0.0",
+ "slice-ansi": "^7.1.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/log-update/node_modules/onetime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-function": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/log4js": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz",
+ "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "date-format": "^4.0.14",
+ "debug": "^4.3.4",
+ "flatted": "^3.2.7",
+ "rfdc": "^1.3.0",
+ "streamroller": "^3.1.5"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.19",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
+ "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-fetch-happen": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.3.tgz",
+ "integrity": "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/agent": "^4.0.0",
+ "cacache": "^20.0.1",
+ "http-cache-semantics": "^4.1.1",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^5.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^1.0.0",
+ "proc-log": "^6.0.0",
+ "promise-retry": "^2.0.1",
+ "ssri": "^13.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/ssri": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz",
+ "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
+ "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.4.0",
+ "linkify-it": "^5.0.0",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.1.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
+ "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
+ "license": "MIT"
+ },
+ "node_modules/media-typer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minipass-collect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
+ "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minipass-fetch": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.0.tgz",
+ "integrity": "sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^3.0.1"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-flush/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-pipeline/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/msgpackr": {
+ "version": "1.11.5",
+ "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz",
+ "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "optionalDependencies": {
+ "msgpackr-extract": "^3.0.2"
+ }
+ },
+ "node_modules/msgpackr-extract": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
+ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "node-gyp-build-optional-packages": "5.2.2"
+ },
+ "bin": {
+ "download-msgpackr-prebuilds": "bin/download-prebuilds.js"
+ },
+ "optionalDependencies": {
+ "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
+ }
+ },
+ "node_modules/mute-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
+ "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/needle": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz",
+ "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/needle/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/ng-packagr": {
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-21.0.0.tgz",
+ "integrity": "sha512-2lMGkmS91FyP+p/Tzmu49hY+p1PDgHBNM+Fce8yrzZo8/EbybNPBYfJnwFfl0lwGmqpYLevH2oh12+ikKCLv9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.3.0",
+ "@rollup/plugin-json": "^6.1.0",
+ "@rollup/wasm-node": "^4.24.0",
+ "ajv": "^8.17.1",
+ "ansi-colors": "^4.1.3",
+ "browserslist": "^4.26.0",
+ "chokidar": "^4.0.1",
+ "commander": "^14.0.0",
+ "dependency-graph": "^1.0.0",
+ "esbuild": "^0.27.0",
+ "find-cache-directory": "^6.0.0",
+ "injection-js": "^2.4.0",
+ "jsonc-parser": "^3.3.1",
+ "less": "^4.2.0",
+ "ora": "^9.0.0",
+ "piscina": "^5.0.0",
+ "postcss": "^8.4.47",
+ "rollup-plugin-dts": "^6.2.0",
+ "rxjs": "^7.8.1",
+ "sass": "^1.81.0",
+ "tinyglobby": "^0.2.12"
+ },
+ "bin": {
+ "ng-packagr": "src/cli/main.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ },
+ "optionalDependencies": {
+ "rollup": "^4.24.0"
+ },
+ "peerDependencies": {
+ "@angular/compiler-cli": "^21.0.0-next || ^21.0.0",
+ "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0",
+ "tslib": "^2.3.0",
+ "typescript": ">=5.9 <6.0"
+ },
+ "peerDependenciesMeta": {
+ "tailwindcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz",
+ "integrity": "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/android-arm": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.1.tgz",
+ "integrity": "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/android-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz",
+ "integrity": "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/android-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.1.tgz",
+ "integrity": "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz",
+ "integrity": "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz",
+ "integrity": "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz",
+ "integrity": "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz",
+ "integrity": "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-arm": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz",
+ "integrity": "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz",
+ "integrity": "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz",
+ "integrity": "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz",
+ "integrity": "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz",
+ "integrity": "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz",
+ "integrity": "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz",
+ "integrity": "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz",
+ "integrity": "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/linux-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz",
+ "integrity": "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz",
+ "integrity": "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz",
+ "integrity": "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz",
+ "integrity": "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz",
+ "integrity": "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz",
+ "integrity": "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz",
+ "integrity": "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz",
+ "integrity": "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz",
+ "integrity": "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/@esbuild/win32-x64": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz",
+ "integrity": "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/commander": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz",
+ "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/ng-packagr/node_modules/esbuild": {
+ "version": "0.27.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz",
+ "integrity": "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.1",
+ "@esbuild/android-arm": "0.27.1",
+ "@esbuild/android-arm64": "0.27.1",
+ "@esbuild/android-x64": "0.27.1",
+ "@esbuild/darwin-arm64": "0.27.1",
+ "@esbuild/darwin-x64": "0.27.1",
+ "@esbuild/freebsd-arm64": "0.27.1",
+ "@esbuild/freebsd-x64": "0.27.1",
+ "@esbuild/linux-arm": "0.27.1",
+ "@esbuild/linux-arm64": "0.27.1",
+ "@esbuild/linux-ia32": "0.27.1",
+ "@esbuild/linux-loong64": "0.27.1",
+ "@esbuild/linux-mips64el": "0.27.1",
+ "@esbuild/linux-ppc64": "0.27.1",
+ "@esbuild/linux-riscv64": "0.27.1",
+ "@esbuild/linux-s390x": "0.27.1",
+ "@esbuild/linux-x64": "0.27.1",
+ "@esbuild/netbsd-arm64": "0.27.1",
+ "@esbuild/netbsd-x64": "0.27.1",
+ "@esbuild/openbsd-arm64": "0.27.1",
+ "@esbuild/openbsd-x64": "0.27.1",
+ "@esbuild/openharmony-arm64": "0.27.1",
+ "@esbuild/sunos-x64": "0.27.1",
+ "@esbuild/win32-arm64": "0.27.1",
+ "@esbuild/win32-ia32": "0.27.1",
+ "@esbuild/win32-x64": "0.27.1"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
+ "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/node-gyp": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.1.0.tgz",
+ "integrity": "sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^15.0.0",
+ "nopt": "^9.0.0",
+ "proc-log": "^6.0.0",
+ "semver": "^7.3.5",
+ "tar": "^7.5.2",
+ "tinyglobby": "^0.2.12",
+ "which": "^6.0.0"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/node-gyp-build-optional-packages": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
+ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.1"
+ },
+ "bin": {
+ "node-gyp-build-optional-packages": "bin.js",
+ "node-gyp-build-optional-packages-optional": "optional.js",
+ "node-gyp-build-optional-packages-test": "build-test.js"
+ }
+ },
+ "node_modules/node-gyp/node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/node-gyp/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/node-gyp/node_modules/which": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz",
+ "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
+ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nopt": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz",
+ "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^4.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-bundled": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz",
+ "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm-install-checks": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz",
+ "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "semver": "^7.1.1"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-normalize-package-bin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz",
+ "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm-package-arg": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.1.tgz",
+ "integrity": "sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^9.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-packlist": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.3.tgz",
+ "integrity": "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "ignore-walk": "^8.0.0",
+ "proc-log": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-packlist/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-pick-manifest": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz",
+ "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-install-checks": "^8.0.0",
+ "npm-normalize-package-bin": "^5.0.0",
+ "npm-package-arg": "^13.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
+ "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-registry-fetch": {
+ "version": "19.1.1",
+ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz",
+ "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/redact": "^4.0.0",
+ "jsonparse": "^1.3.1",
+ "make-fetch-happen": "^15.0.0",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^5.0.0",
+ "minizlib": "^3.0.1",
+ "npm-package-arg": "^13.0.0",
+ "proc-log": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/obug": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
+ "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/sxzz",
+ "https://opencollective.com/debug"
+ ],
+ "license": "MIT"
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz",
+ "integrity": "sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^5.6.2",
+ "cli-cursor": "^5.0.0",
+ "cli-spinners": "^3.2.0",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.1.0",
+ "log-symbols": "^7.0.1",
+ "stdin-discarder": "^0.2.2",
+ "string-width": "^8.1.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/log-symbols": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz",
+ "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/onetime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-function": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/string-width": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz",
+ "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/ordered-binary": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz",
+ "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/ospath": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
+ "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/p-map": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz",
+ "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pacote": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.3.tgz",
+ "integrity": "sha512-itdFlanxO0nmQv4ORsvA9K1wv40IPfB9OmWqfaJWvoJ30VKyHsqNgDVeG+TVhI7Gk7XW8slUy7cA9r6dF5qohw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^7.0.0",
+ "@npmcli/installed-package-contents": "^3.0.0",
+ "@npmcli/package-json": "^7.0.0",
+ "@npmcli/promise-spawn": "^8.0.0",
+ "@npmcli/run-script": "^10.0.0",
+ "cacache": "^20.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^7.0.2",
+ "npm-package-arg": "^13.0.0",
+ "npm-packlist": "^10.0.1",
+ "npm-pick-manifest": "^11.0.1",
+ "npm-registry-fetch": "^19.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "sigstore": "^4.0.0",
+ "ssri": "^12.0.0",
+ "tar": "^7.4.3"
+ },
+ "bin": {
+ "pacote": "bin/index.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz",
+ "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-html-rewriting-stream": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-8.0.0.tgz",
+ "integrity": "sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0",
+ "parse5": "^8.0.0",
+ "parse5-sax-parser": "^8.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-html-rewriting-stream/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/parse5-sax-parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-8.0.0.tgz",
+ "integrity": "sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse5": "^8.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
+ "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/piscina": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.3.tgz",
+ "integrity": "sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.x"
+ },
+ "optionalDependencies": {
+ "@napi-rs/nice": "^1.0.4"
+ }
+ },
+ "node_modules/pixelmatch": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz",
+ "integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "pngjs": "^7.0.0"
+ },
+ "bin": {
+ "pixelmatch": "bin/pixelmatch"
+ }
+ },
+ "node_modules/pkce-challenge": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
+ "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz",
+ "integrity": "sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up-simple": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/playwright": {
+ "version": "1.57.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz",
+ "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.57.0"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.57.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz",
+ "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz",
+ "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.19.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/prettier": {
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
+ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/pretty-bytes": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/proc-log": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz",
+ "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/promise-retry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
+ "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/pump": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qjobs": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
+ "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.9"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
+ "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.7.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/reflect-metadata": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
+ "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/request-progress": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
+ "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "throttleit": "^1.0.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/resolve": {
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/restore-cursor/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/rfdc": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rolldown": {
+ "version": "1.0.0-beta.47",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.47.tgz",
+ "integrity": "sha512-Mid74GckX1OeFAOYz9KuXeWYhq3xkXbMziYIC+ULVdUzPTG9y70OBSBQDQn9hQP8u/AfhuYw1R0BSg15nBI4Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@oxc-project/types": "=0.96.0",
+ "@rolldown/pluginutils": "1.0.0-beta.47"
+ },
+ "bin": {
+ "rolldown": "bin/cli.mjs"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "optionalDependencies": {
+ "@rolldown/binding-android-arm64": "1.0.0-beta.47",
+ "@rolldown/binding-darwin-arm64": "1.0.0-beta.47",
+ "@rolldown/binding-darwin-x64": "1.0.0-beta.47",
+ "@rolldown/binding-freebsd-x64": "1.0.0-beta.47",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.47",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.47",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.47",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.47",
+ "@rolldown/binding-linux-x64-musl": "1.0.0-beta.47",
+ "@rolldown/binding-openharmony-arm64": "1.0.0-beta.47",
+ "@rolldown/binding-wasm32-wasi": "1.0.0-beta.47",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.47",
+ "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.47",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.47"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz",
+ "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.53.3",
+ "@rollup/rollup-android-arm64": "4.53.3",
+ "@rollup/rollup-darwin-arm64": "4.53.3",
+ "@rollup/rollup-darwin-x64": "4.53.3",
+ "@rollup/rollup-freebsd-arm64": "4.53.3",
+ "@rollup/rollup-freebsd-x64": "4.53.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.53.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.53.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.53.3",
+ "@rollup/rollup-linux-arm64-musl": "4.53.3",
+ "@rollup/rollup-linux-loong64-gnu": "4.53.3",
+ "@rollup/rollup-linux-ppc64-gnu": "4.53.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.53.3",
+ "@rollup/rollup-linux-riscv64-musl": "4.53.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.53.3",
+ "@rollup/rollup-linux-x64-gnu": "4.53.3",
+ "@rollup/rollup-linux-x64-musl": "4.53.3",
+ "@rollup/rollup-openharmony-arm64": "4.53.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.53.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.53.3",
+ "@rollup/rollup-win32-x64-gnu": "4.53.3",
+ "@rollup/rollup-win32-x64-msvc": "4.53.3",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup-plugin-dts": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.3.0.tgz",
+ "integrity": "sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==",
+ "dev": true,
+ "license": "LGPL-3.0-only",
+ "dependencies": {
+ "magic-string": "^0.30.21"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/Swatinem"
+ },
+ "optionalDependencies": {
+ "@babel/code-frame": "^7.27.1"
+ },
+ "peerDependencies": {
+ "rollup": "^3.29.4 || ^4",
+ "typescript": "^4.5 || ^5.0"
+ }
+ },
+ "node_modules/rollup-plugin-dts/node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/router": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "depd": "^2.0.0",
+ "is-promise": "^4.0.0",
+ "parseurl": "^1.3.3",
+ "path-to-regexp": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
+ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sass": {
+ "version": "1.95.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.95.1.tgz",
+ "integrity": "sha512-uPoDh5NIEZV4Dp5GBodkmNY9tSQfXY02pmCcUo+FR1P+x953HGkpw+vV28D4IqYB6f8webZtwoSaZaiPtpTeMg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz",
+ "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "optional": true
+ },
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
+ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.5",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "mime-types": "^3.0.1",
+ "ms": "^2.1.3",
+ "on-finished": "^2.4.1",
+ "range-parser": "^1.2.1",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/send/node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/send/node_modules/mime-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
+ "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "parseurl": "^1.3.3",
+ "send": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sigstore": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.0.0.tgz",
+ "integrity": "sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^4.0.0",
+ "@sigstore/core": "^3.0.0",
+ "@sigstore/protobuf-specs": "^0.5.0",
+ "@sigstore/sign": "^4.0.0",
+ "@sigstore/tuf": "^4.0.0",
+ "@sigstore/verify": "^3.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/sirv": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz",
+ "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "is-fullwidth-code-point": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socket.io": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz",
+ "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.6.0",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io/node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/socket.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io/node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.22",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
+ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/sshpk": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
+ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ },
+ "bin": {
+ "sshpk-conv": "bin/sshpk-conv",
+ "sshpk-sign": "bin/sshpk-sign",
+ "sshpk-verify": "bin/sshpk-verify"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ssri": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
+ "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/stackback": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/std-env": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
+ "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/stdin-discarder": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/streamroller": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz",
+ "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "date-format": "^4.0.14",
+ "debug": "^4.3.4",
+ "fs-extra": "^8.1.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/streamroller/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/streamroller/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "license": "MIT",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/streamroller/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/systeminformation": {
+ "version": "5.27.7",
+ "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.27.7.tgz",
+ "integrity": "sha512-saaqOoVEEFaux4v0K8Q7caiauRwjXC4XbD2eH60dxHXbpKxQ8kH9Rf7Jh+nryKpOUSEFxtCdBlSUx0/lO6rwRg==",
+ "dev": true,
+ "license": "MIT",
+ "os": [
+ "darwin",
+ "linux",
+ "win32",
+ "freebsd",
+ "openbsd",
+ "netbsd",
+ "sunos",
+ "android"
+ ],
+ "bin": {
+ "systeminformation": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "funding": {
+ "type": "Buy me a coffee",
+ "url": "https://www.buymeacoffee.com/systeminfo"
+ }
+ },
+ "node_modules/tar": {
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz",
+ "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/throttleit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz",
+ "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tinybench": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
+ "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tinyexec": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz",
+ "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyrainbow": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz",
+ "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tldts": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
+ "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^6.1.86"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
+ "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tmp": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
+ "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tldts": "^6.1.32"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz",
+ "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/tr46/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/tuf-js": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.0.0.tgz",
+ "integrity": "sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/models": "4.0.0",
+ "debug": "^4.4.1",
+ "make-fetch-happen": "^15.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+ "dev": true,
+ "license": "Unlicense"
+ },
+ "node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "content-type": "^1.0.5",
+ "media-typer": "^1.1.0",
+ "mime-types": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/type-is/node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/type-is/node_modules/mime-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/ua-parser-js": {
+ "version": "0.7.41",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz",
+ "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "ua-parser-js": "script/cli.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+ "license": "MIT"
+ },
+ "node_modules/undici": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz",
+ "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.18.1"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unique-filename": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz",
+ "integrity": "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^6.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-6.0.0.tgz",
+ "integrity": "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz",
+ "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/validate-npm-package-name": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.2.tgz",
+ "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz",
+ "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.6",
+ "rollup": "^4.43.0",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "lightningcss": "^1.21.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/esbuild": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
+ }
+ },
+ "node_modules/vitest": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.15.tgz",
+ "integrity": "sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/expect": "4.0.15",
+ "@vitest/mocker": "4.0.15",
+ "@vitest/pretty-format": "4.0.15",
+ "@vitest/runner": "4.0.15",
+ "@vitest/snapshot": "4.0.15",
+ "@vitest/spy": "4.0.15",
+ "@vitest/utils": "4.0.15",
+ "es-module-lexer": "^1.7.0",
+ "expect-type": "^1.2.2",
+ "magic-string": "^0.30.21",
+ "obug": "^2.1.1",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3",
+ "std-env": "^3.10.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^1.0.2",
+ "tinyglobby": "^0.2.15",
+ "tinyrainbow": "^3.0.3",
+ "vite": "^6.0.0 || ^7.0.0",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@opentelemetry/api": "^1.9.0",
+ "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
+ "@vitest/browser-playwright": "4.0.15",
+ "@vitest/browser-preview": "4.0.15",
+ "@vitest/browser-webdriverio": "4.0.15",
+ "@vitest/ui": "4.0.15",
+ "happy-dom": "*",
+ "jsdom": "*"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@types/node": {
+ "optional": true
+ },
+ "@vitest/browser-playwright": {
+ "optional": true
+ },
+ "@vitest/browser-preview": {
+ "optional": true
+ },
+ "@vitest/browser-webdriverio": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vitest/node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+ "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
+ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
+ "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/weak-lru-cache": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz",
+ "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/webidl-conversions": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz",
+ "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz",
+ "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "^6.0.0",
+ "webidl-conversions": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/why-is-node-running": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+ "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "siginfo": "^2.0.0",
+ "stackback": "0.0.2"
+ },
+ "bin": {
+ "why-is-node-running": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yargs": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
+ "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^9.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "string-width": "^7.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^22.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/yargs/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yargs/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
+ "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yoctocolors-cjs": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz",
+ "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "4.1.13",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz",
+ "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-to-json-schema": {
+ "version": "3.25.0",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
+ "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
+ "dev": true,
+ "license": "ISC",
+ "peerDependencies": {
+ "zod": "^3.25 || ^4"
+ }
+ }
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/package.json b/vendor/a2ui/renderers/angular/package.json
new file mode 100644
index 0000000000..cf95c82724
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "@a2ui/angular",
+ "version": "0.8.1",
+ "scripts": {
+ "build": "ng build"
+ },
+ "dependencies": {
+ "@a2ui/lit": "file:../lit",
+ "markdown-it": "^14.1.0",
+ "tslib": "^2.3.0"
+ },
+ "peerDependencies": {
+ "@angular/common": "^21.0.0",
+ "@angular/core": "^21.0.0",
+ "@angular/platform-browser": "^21.0.0"
+ },
+ "devDependencies": {
+ "@angular/build": "^21.0.2",
+ "@angular/cli": "^21.0.2",
+ "@angular/compiler": "^21.0.0",
+ "@angular/compiler-cli": "^21.0.3",
+ "@angular/core": "^21.0.0",
+ "@types/express": "^5.0.1",
+ "@types/jasmine": "~5.1.0",
+ "@types/markdown-it": "^14.1.2",
+ "@types/node": "^20.17.19",
+ "@types/uuid": "^10.0.0",
+ "@vitest/browser": "^4.0.15",
+ "cypress": "^15.6.0",
+ "google-artifactregistry-auth": "^3.5.0",
+ "jasmine-core": "~5.9.0",
+ "jsdom": "^27.2.0",
+ "karma": "^6.4.4",
+ "karma-chrome-launcher": "^3.2.0",
+ "karma-coverage": "^2.2.1",
+ "karma-jasmine": "^5.1.0",
+ "karma-jasmine-html-reporter": "^2.1.0",
+ "ng-packagr": "^21.0.0",
+ "playwright": "^1.56.1",
+ "prettier": "^3.6.2",
+ "sass": "^1.93.2",
+ "tslib": "^2.8.1",
+ "typescript": "~5.9.2",
+ "vitest": "^4.0.15"
+ },
+ "sideEffects": false,
+ "prettier": {
+ "printWidth": 100,
+ "singleQuote": true,
+ "overrides": [
+ {
+ "files": "*.html",
+ "options": {
+ "parser": "angular"
+ }
+ }
+ ]
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/audio.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/audio.ts
new file mode 100644
index 0000000000..a93a1f6880
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/audio.ts
@@ -0,0 +1,50 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Primitives } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-audio',
+ template: `
+ @let resolvedUrl = this.resolvedUrl();
+
+ @if (resolvedUrl) {
+
+
+
+ }
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ audio {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ }
+ `
+})
+export class Audio extends DynamicComponent {
+ readonly url = input.required();
+ protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/button.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/button.ts
new file mode 100644
index 0000000000..2fcb34697a
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/button.ts
@@ -0,0 +1,56 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, input } from '@angular/core';
+import { Types } from '@a2ui/lit/0.8';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Renderer } from '../rendering/renderer';
+
+@Component({
+ selector: 'a2ui-button',
+ imports: [Renderer],
+ template: `
+
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ }
+ `,
+})
+export class Button extends DynamicComponent {
+ readonly action = input.required();
+
+ protected handleClick() {
+ const action = this.action();
+
+ if (action) {
+ super.sendAction(action);
+ }
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/card.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/card.ts
new file mode 100644
index 0000000000..a98407c94f
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/card.ts
@@ -0,0 +1,57 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, ViewEncapsulation } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Renderer } from '../rendering/renderer';
+import { Types } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-card',
+ imports: [Renderer],
+ encapsulation: ViewEncapsulation.None,
+ styles: `
+ a2ui-card {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ a2ui-card > section {
+ height: 100%;
+ width: 100%;
+ min-height: 0;
+ overflow: auto;
+ }
+
+ a2ui-card > section > * {
+ height: 100%;
+ width: 100%;
+ }
+ `,
+ template: `
+ @let properties = component().properties;
+ @let children = properties.children || [properties.child];
+
+
+ @for (child of children; track child) {
+
+ }
+
+ `,
+})
+export class Card extends DynamicComponent { }
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/checkbox.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/checkbox.ts
new file mode 100644
index 0000000000..e1d47344a1
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/checkbox.ts
@@ -0,0 +1,73 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Primitives } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-checkbox',
+ template: `
+
+
+
+
+
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ input {
+ display: block;
+ width: 100%;
+ }
+ `,
+})
+export class Checkbox extends DynamicComponent {
+ readonly value = input.required();
+ readonly label = input.required();
+
+ protected inputChecked = computed(() => super.resolvePrimitive(this.value()) ?? false);
+ protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));
+ protected inputId = super.getUniqueId('a2ui-checkbox');
+
+ protected handleChange(event: Event) {
+ const path = this.value()?.path;
+
+ if (!(event.target instanceof HTMLInputElement) || !path) {
+ return;
+ }
+
+ this.processor.setData(this.component(), path, event.target.checked, this.surfaceId());
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/column.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/column.ts
new file mode 100644
index 0000000000..ab4a8e3e40
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/column.ts
@@ -0,0 +1,96 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { Types } from '@a2ui/lit/0.8';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Renderer } from '../rendering/renderer';
+
+@Component({
+ selector: 'a2ui-column',
+ imports: [Renderer],
+ styles: `
+ :host {
+ display: flex;
+ flex: var(--weight);
+ }
+
+ section {
+ display: flex;
+ flex-direction: column;
+ min-width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ }
+
+ .align-start {
+ align-items: start;
+ }
+
+ .align-center {
+ align-items: center;
+ }
+
+ .align-end {
+ align-items: end;
+ }
+
+ .align-stretch {
+ align-items: stretch;
+ }
+
+ .distribute-start {
+ justify-content: start;
+ }
+
+ .distribute-center {
+ justify-content: center;
+ }
+
+ .distribute-end {
+ justify-content: end;
+ }
+
+ .distribute-spaceBetween {
+ justify-content: space-between;
+ }
+
+ .distribute-spaceAround {
+ justify-content: space-around;
+ }
+
+ .distribute-spaceEvenly {
+ justify-content: space-evenly;
+ }
+ `,
+ template: `
+
+ @for (child of component().properties.children; track child) {
+
+ }
+
+ `,
+})
+export class Column extends DynamicComponent {
+ readonly alignment = input('stretch');
+ readonly distribution = input('start');
+
+ protected readonly classes = computed(() => ({
+ ...this.theme.components.Column,
+ [`align-${this.alignment()}`]: true,
+ [`distribute-${this.distribution()}`]: true,
+ }));
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/datetime-input.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/datetime-input.ts
new file mode 100644
index 0000000000..e17ca806e7
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/datetime-input.ts
@@ -0,0 +1,127 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { computed, Component, input } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Primitives } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-datetime-input',
+ template: `
+
+
+
+
+
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ input {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ }
+ `,
+})
+export class DatetimeInput extends DynamicComponent {
+ readonly value = input.required();
+ readonly enableDate = input.required();
+ readonly enableTime = input.required();
+ protected readonly inputId = super.getUniqueId('a2ui-datetime-input');
+
+ protected inputType = computed(() => {
+ const enableDate = this.enableDate();
+ const enableTime = this.enableTime();
+
+ if (enableDate && enableTime) {
+ return 'datetime-local';
+ } else if (enableDate) {
+ return 'date';
+ } else if (enableTime) {
+ return 'time';
+ }
+
+ return 'datetime-local';
+ });
+
+ protected label = computed(() => {
+ // TODO: this should likely be passed from the model.
+ const inputType = this.inputType();
+
+ if (inputType === 'date') {
+ return 'Date';
+ } else if (inputType === 'time') {
+ return 'Time';
+ }
+
+ return 'Date & Time';
+ });
+
+ protected inputValue = computed(() => {
+ const inputType = this.inputType();
+ const parsed = super.resolvePrimitive(this.value()) || '';
+ const date = parsed ? new Date(parsed) : null;
+
+ if (!date || isNaN(date.getTime())) {
+ return '';
+ }
+
+ const year = this.padNumber(date.getFullYear());
+ const month = this.padNumber(date.getMonth());
+ const day = this.padNumber(date.getDate());
+ const hours = this.padNumber(date.getHours());
+ const minutes = this.padNumber(date.getMinutes());
+
+ // Browsers are picky with what format they allow for the `value` attribute of date/time inputs.
+ // We need to parse it out of the provided value. Note that we don't use `toISOString`,
+ // because the resulting value is relative to UTC.
+ if (inputType === 'date') {
+ return `${year}-${month}-${day}`;
+ } else if (inputType === 'time') {
+ return `${hours}:${minutes}`;
+ }
+
+ return `${year}-${month}-${day}T${hours}:${minutes}`;
+ });
+
+ protected handleInput(event: Event) {
+ const path = this.value()?.path;
+
+ if (!(event.target instanceof HTMLInputElement) || !path) {
+ return;
+ }
+
+ this.processor.setData(this.component(), path, event.target.value, this.surfaceId());
+ }
+
+ private padNumber(value: number) {
+ return value.toString().padStart(2, '0');
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/default.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/default.ts
new file mode 100644
index 0000000000..10c1146f71
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/default.ts
@@ -0,0 +1,185 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { inputBinding } from '@angular/core';
+import { Types } from '@a2ui/lit/0.8';
+import { Catalog } from '../rendering/catalog';
+import { Row } from './row';
+import { Column } from './column';
+import { Text } from './text';
+
+export const DEFAULT_CATALOG: Catalog = {
+ Row: {
+ type: () => Row,
+ bindings: (node) => {
+ const properties = (node as Types.RowNode).properties;
+ return [
+ inputBinding('alignment', () => properties.alignment ?? 'stretch'),
+ inputBinding('distribution', () => properties.distribution ?? 'start'),
+ ];
+ },
+ },
+
+ Column: {
+ type: () => Column,
+ bindings: (node) => {
+ const properties = (node as Types.ColumnNode).properties;
+ return [
+ inputBinding('alignment', () => properties.alignment ?? 'stretch'),
+ inputBinding('distribution', () => properties.distribution ?? 'start'),
+ ];
+ },
+ },
+
+ List: {
+ type: () => import('./list').then((r) => r.List),
+ bindings: (node) => {
+ const properties = (node as Types.ListNode).properties;
+ return [inputBinding('direction', () => properties.direction ?? 'vertical')];
+ },
+ },
+
+ Card: () => import('./card').then((r) => r.Card),
+
+ Image: {
+ type: () => import('./image').then((r) => r.Image),
+ bindings: (node) => {
+ const properties = (node as Types.ImageNode).properties;
+ return [
+ inputBinding('url', () => properties.url),
+ inputBinding('usageHint', () => properties.usageHint),
+ ];
+ },
+ },
+
+ Icon: {
+ type: () => import('./icon').then((r) => r.Icon),
+ bindings: (node) => {
+ const properties = (node as Types.IconNode).properties;
+ return [inputBinding('name', () => properties.name)];
+ },
+ },
+
+ Video: {
+ type: () => import('./video').then((r) => r.Video),
+ bindings: (node) => {
+ const properties = (node as Types.VideoNode).properties;
+ return [inputBinding('url', () => properties.url)];
+ },
+ },
+
+ AudioPlayer: {
+ type: () => import('./audio').then((r) => r.Audio),
+ bindings: (node) => {
+ const properties = (node as Types.AudioPlayerNode).properties;
+ return [inputBinding('url', () => properties.url)];
+ },
+ },
+
+ Text: {
+ type: () => Text,
+ bindings: (node) => {
+ const properties = (node as Types.TextNode).properties;
+ return [
+ inputBinding('text', () => properties.text),
+ inputBinding('usageHint', () => properties.usageHint || null),
+ ];
+ },
+ },
+
+ Button: {
+ type: () => import('./button').then((r) => r.Button),
+ bindings: (node) => {
+ const properties = (node as Types.ButtonNode).properties;
+ return [inputBinding('action', () => properties.action)];
+ },
+ },
+
+ Divider: () => import('./divider').then((r) => r.Divider),
+
+ MultipleChoice: {
+ type: () => import('./multiple-choice').then((r) => r.MultipleChoice),
+ bindings: (node) => {
+ const properties = (node as Types.MultipleChoiceNode).properties;
+ return [
+ inputBinding('options', () => properties.options || []),
+ inputBinding('value', () => properties.selections),
+ inputBinding('description', () => 'Select an item'), // TODO: this should be defined in the properties
+ ];
+ },
+ },
+
+ TextField: {
+ type: () => import('./text-field').then((r) => r.TextField),
+ bindings: (node) => {
+ const properties = (node as Types.TextFieldNode).properties;
+ return [
+ inputBinding('text', () => properties.text ?? null),
+ inputBinding('label', () => properties.label),
+ inputBinding('inputType', () => properties.type),
+ ];
+ },
+ },
+
+ DateTimeInput: {
+ type: () => import('./datetime-input').then((r) => r.DatetimeInput),
+ bindings: (node) => {
+ const properties = (node as Types.DateTimeInputNode).properties;
+ return [
+ inputBinding('enableDate', () => properties.enableDate),
+ inputBinding('enableTime', () => properties.enableTime),
+ inputBinding('value', () => properties.value),
+ ];
+ },
+ },
+
+ CheckBox: {
+ type: () => import('./checkbox').then((r) => r.Checkbox),
+ bindings: (node) => {
+ const properties = (node as Types.CheckboxNode).properties;
+ return [
+ inputBinding('label', () => properties.label),
+ inputBinding('value', () => properties.value),
+ ];
+ },
+ },
+
+ Slider: {
+ type: () => import('./slider').then((r) => r.Slider),
+ bindings: (node) => {
+ const properties = (node as Types.SliderNode).properties;
+ return [
+ inputBinding('value', () => properties.value),
+ inputBinding('minValue', () => properties.minValue),
+ inputBinding('maxValue', () => properties.maxValue),
+ inputBinding('label', () => ''), // TODO: this should be defined in the properties
+ ];
+ },
+ },
+
+ Tabs: {
+ type: () => import('./tabs').then((r) => r.Tabs),
+ bindings: (node) => {
+ const properties = (node as Types.TabsNode).properties;
+ return [inputBinding('tabs', () => properties.tabItems)];
+ },
+ },
+
+ Modal: {
+ type: () => import('./modal').then((r) => r.Modal),
+ bindings: () => [],
+ },
+};
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/divider.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/divider.ts
new file mode 100644
index 0000000000..440e7df336
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/divider.ts
@@ -0,0 +1,37 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+
+@Component({
+ selector: 'a2ui-divider',
+ template: '
',
+ styles: `
+ :host {
+ display: block;
+ min-height: 0;
+ overflow: auto;
+ }
+
+ hr {
+ height: 1px;
+ background: #ccc;
+ border: none;
+ }
+ `,
+})
+export class Divider extends DynamicComponent {}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/icon.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/icon.ts
new file mode 100644
index 0000000000..addc7fedd1
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/icon.ts
@@ -0,0 +1,44 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Primitives } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-icon',
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+ `,
+ template: `
+ @let resolvedName = this.resolvedName();
+
+ @if (resolvedName) {
+
+
+
+ }
+ `,
+})
+export class Icon extends DynamicComponent {
+ readonly name = input.required();
+ protected readonly resolvedName = computed(() => this.resolvePrimitive(this.name()));
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/image.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/image.ts
new file mode 100644
index 0000000000..8dcf0bd876
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/image.ts
@@ -0,0 +1,62 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { Primitives, Styles, Types } from '@a2ui/lit/0.8';
+import { DynamicComponent } from '../rendering/dynamic-component';
+
+@Component({
+ selector: 'a2ui-image',
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ img {
+ display: block;
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ }
+ `,
+ template: `
+ @let resolvedUrl = this.resolvedUrl();
+
+ @if (resolvedUrl) {
+
+
+
+ }
+ `,
+})
+export class Image extends DynamicComponent {
+ readonly url = input.required();
+ readonly usageHint = input.required();
+
+ protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));
+
+ protected classes = computed(() => {
+ const usageHint = this.usageHint();
+
+ return Styles.merge(
+ this.theme.components.Image.all,
+ usageHint ? this.theme.components.Image[usageHint] : {},
+ );
+ });
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/list.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/list.ts
new file mode 100644
index 0000000000..dde63ec831
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/list.ts
@@ -0,0 +1,63 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, input } from '@angular/core';
+import { Types } from '@a2ui/lit/0.8';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Renderer } from '../rendering/renderer';
+
+@Component({
+ selector: 'a2ui-list',
+ imports: [Renderer],
+ host: {
+ '[attr.direction]': 'direction()',
+ },
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ :host([direction='vertical']) section {
+ display: grid;
+ }
+
+ :host([direction='horizontal']) section {
+ display: flex;
+ max-width: 100%;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ scrollbar-width: none;
+
+ > ::slotted(*) {
+ flex: 1 0 fit-content;
+ max-width: min(80%, 400px);
+ }
+ }
+ `,
+ template: `
+
+ @for (child of component().properties.children; track child) {
+
+ }
+
+ `,
+})
+export class List extends DynamicComponent {
+ readonly direction = input<'vertical' | 'horizontal'>('vertical');
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/modal.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/modal.ts
new file mode 100644
index 0000000000..50953064bc
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/modal.ts
@@ -0,0 +1,113 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, signal, viewChild, ElementRef, effect } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Types } from '@a2ui/lit/0.8';
+import { Renderer } from '../rendering';
+
+@Component({
+ selector: 'a2ui-modal',
+ imports: [Renderer],
+ template: `
+ @if (showDialog()) {
+
+ } @else {
+
+
+
+ }
+ `,
+ styles: `
+ dialog {
+ padding: 0;
+ border: none;
+ background: none;
+
+ & section {
+ & .controls {
+ display: flex;
+ justify-content: end;
+ margin-bottom: 4px;
+
+ & button {
+ padding: 0;
+ background: none;
+ width: 20px;
+ height: 20px;
+ pointer: cursor;
+ border: none;
+ cursor: pointer;
+ }
+ }
+ }
+ }
+ `,
+})
+export class Modal extends DynamicComponent {
+ protected readonly showDialog = signal(false);
+ protected readonly dialog = viewChild>('dialog');
+
+ constructor() {
+ super();
+
+ effect(() => {
+ const dialog = this.dialog();
+
+ if (dialog && !dialog.nativeElement.open) {
+ dialog.nativeElement.showModal();
+ }
+ });
+ }
+
+ protected handleDialogClick(event: MouseEvent) {
+ if (event.target instanceof HTMLDialogElement) {
+ this.closeDialog();
+ }
+ }
+
+ protected closeDialog() {
+ const dialog = this.dialog();
+
+ if (!dialog) {
+ return;
+ }
+
+ if (!dialog.nativeElement.open) {
+ dialog.nativeElement.close();
+ }
+
+ this.showDialog.set(false);
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/multiple-choice.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/multiple-choice.ts
new file mode 100644
index 0000000000..538eb5bb9f
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/multiple-choice.ts
@@ -0,0 +1,77 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Primitives } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-multiple-choice',
+ template: `
+
+
+
+
+
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ select {
+ width: 100%;
+ box-sizing: border-box;
+ }
+ `,
+})
+export class MultipleChoice extends DynamicComponent {
+ readonly options = input.required<{ label: Primitives.StringValue; value: string }[]>();
+ readonly value = input.required();
+ readonly description = input.required();
+
+ protected readonly selectId = super.getUniqueId('a2ui-multiple-choice');
+ protected selectValue = computed(() => super.resolvePrimitive(this.value()));
+
+ protected handleChange(event: Event) {
+ const path = this.value()?.path;
+
+ if (!(event.target instanceof HTMLSelectElement) || !event.target.value || !path) {
+ return;
+ }
+
+ this.processor.setData(
+ this.component(),
+ this.processor.resolvePath(path, this.component().dataContextPath),
+ event.target.value,
+ );
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/row.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/row.ts
new file mode 100644
index 0000000000..38fb0d8382
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/row.ts
@@ -0,0 +1,100 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Renderer } from '../rendering/renderer';
+import { Types } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-row',
+ imports: [Renderer],
+ host: {
+ '[attr.alignment]': 'alignment()',
+ '[attr.distribution]': 'distribution()',
+ },
+ styles: `
+ :host {
+ display: flex;
+ flex: var(--weight);
+ }
+
+ section {
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+ min-height: 100%;
+ box-sizing: border-box;
+ }
+
+ .align-start {
+ align-items: start;
+ }
+
+ .align-center {
+ align-items: center;
+ }
+
+ .align-end {
+ align-items: end;
+ }
+
+ .align-stretch {
+ align-items: stretch;
+ }
+
+ .distribute-start {
+ justify-content: start;
+ }
+
+ .distribute-center {
+ justify-content: center;
+ }
+
+ .distribute-end {
+ justify-content: end;
+ }
+
+ .distribute-spaceBetween {
+ justify-content: space-between;
+ }
+
+ .distribute-spaceAround {
+ justify-content: space-around;
+ }
+
+ .distribute-spaceEvenly {
+ justify-content: space-evenly;
+ }
+ `,
+ template: `
+
+ @for (child of component().properties.children; track child) {
+
+ }
+
+ `,
+})
+export class Row extends DynamicComponent {
+ readonly alignment = input('stretch');
+ readonly distribution = input('start');
+
+ protected readonly classes = computed(() => ({
+ ...this.theme.components.Row,
+ [`align-${this.alignment()}`]: true,
+ [`distribute-${this.distribution()}`]: true,
+ }));
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/slider.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/slider.ts
new file mode 100644
index 0000000000..456fe5402e
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/slider.ts
@@ -0,0 +1,73 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { Primitives } from '@a2ui/lit/0.8';
+import { DynamicComponent } from '../rendering/dynamic-component';
+
+@Component({
+ selector: '[a2ui-slider]',
+ template: `
+
+
+
+
+
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ }
+
+ input {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ }
+ `,
+})
+export class Slider extends DynamicComponent {
+ readonly value = input.required();
+ readonly label = input('');
+ readonly minValue = input.required();
+ readonly maxValue = input.required();
+
+ protected readonly inputId = super.getUniqueId('a2ui-slider');
+ protected resolvedValue = computed(() => super.resolvePrimitive(this.value()) ?? 0);
+
+ protected handleInput(event: Event) {
+ const path = this.value()?.path;
+
+ if (!(event.target instanceof HTMLInputElement) || !path) {
+ return;
+ }
+
+ this.processor.setData(this.component(), path, event.target.valueAsNumber, this.surfaceId());
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/surface.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/surface.ts
new file mode 100644
index 0000000000..1de02424dc
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/surface.ts
@@ -0,0 +1,99 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { Types } from '@a2ui/lit/0.8';
+import { Renderer } from '../rendering/renderer';
+
+@Component({
+ selector: 'a2ui-surface',
+ imports: [Renderer],
+ template: `
+ @let surfaceId = this.surfaceId();
+ @let surface = this.surface();
+
+ @if (surfaceId && surface) {
+
+ }
+ `,
+ styles: `
+ :host {
+ display: flex;
+ min-height: 0;
+ max-height: 100%;
+ flex-direction: column;
+ gap: 16px;
+ }
+ `,
+ host: {
+ '[style]': 'styles()',
+ },
+})
+export class Surface {
+ readonly surfaceId = input.required();
+ readonly surface = input.required();
+
+ protected readonly styles = computed(() => {
+ const surface = this.surface();
+ const styles: Record = {};
+
+ if (surface?.styles) {
+ for (const [key, value] of Object.entries(surface.styles)) {
+ switch (key) {
+ // Here we generate a palette from the singular primary color received
+ // from the surface data. We will want the values to range from
+ // 0 <= x <= 100, where 0 = back, 100 = white, and 50 = the primary
+ // color itself. As such we use a color-mix to create the intermediate
+ // values.
+ //
+ // Note: since we use half the range for black to the primary color,
+ // and half the range for primary color to white the mixed values have
+ // to go up double the amount, i.e., a range from black to primary
+ // color needs to fit in 0 -> 50 rather than 0 -> 100.
+ case 'primaryColor': {
+ styles['--p-100'] = '#ffffff';
+ styles['--p-99'] = `color-mix(in srgb, ${value} 2%, white 98%)`;
+ styles['--p-98'] = `color-mix(in srgb, ${value} 4%, white 96%)`;
+ styles['--p-95'] = `color-mix(in srgb, ${value} 10%, white 90%)`;
+ styles['--p-90'] = `color-mix(in srgb, ${value} 20%, white 80%)`;
+ styles['--p-80'] = `color-mix(in srgb, ${value} 40%, white 60%)`;
+ styles['--p-70'] = `color-mix(in srgb, ${value} 60%, white 40%)`;
+ styles['--p-60'] = `color-mix(in srgb, ${value} 80%, white 20%)`;
+ styles['--p-50'] = value;
+ styles['--p-40'] = `color-mix(in srgb, ${value} 80%, black 20%)`;
+ styles['--p-35'] = `color-mix(in srgb, ${value} 70%, black 30%)`;
+ styles['--p-30'] = `color-mix(in srgb, ${value} 60%, black 40%)`;
+ styles['--p-25'] = `color-mix(in srgb, ${value} 50%, black 50%)`;
+ styles['--p-20'] = `color-mix(in srgb, ${value} 40%, black 60%)`;
+ styles['--p-15'] = `color-mix(in srgb, ${value} 30%, black 70%)`;
+ styles['--p-10'] = `color-mix(in srgb, ${value} 20%, black 80%)`;
+ styles['--p-5'] = `color-mix(in srgb, ${value} 10%, black 90%)`;
+ styles['--0'] = '#00000';
+ break;
+ }
+
+ case 'font': {
+ styles['--font-family'] = value;
+ styles['--font-family-flex'] = value;
+ break;
+ }
+ }
+ }
+ }
+
+ return styles;
+ });
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/tabs.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/tabs.ts
new file mode 100644
index 0000000000..f8902da4b7
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/tabs.ts
@@ -0,0 +1,72 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input, signal } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Renderer } from '../rendering/renderer';
+import { Styles, Types } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-tabs',
+ imports: [Renderer],
+ template: `
+ @let tabs = this.tabs();
+ @let selectedIndex = this.selectedIndex();
+
+
+
+ @for (tab of tabs; track tab) {
+
+ }
+
+
+
+
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ }
+ `,
+})
+export class Tabs extends DynamicComponent {
+ protected selectedIndex = signal(0);
+ readonly tabs = input.required();
+
+ protected readonly buttonClasses = computed(() => {
+ const selectedIndex = this.selectedIndex();
+
+ return this.tabs().map((_, index) => {
+ return index === selectedIndex
+ ? Styles.merge(
+ this.theme.components.Tabs.controls.all,
+ this.theme.components.Tabs.controls.selected,
+ )
+ : this.theme.components.Tabs.controls.all;
+ });
+ });
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/text-field.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/text-field.ts
new file mode 100644
index 0000000000..3e7ebdf4bc
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/text-field.ts
@@ -0,0 +1,86 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { computed, Component, input } from '@angular/core';
+import { Primitives, Types } from '@a2ui/lit/0.8';
+import { DynamicComponent } from '../rendering/dynamic-component';
+
+@Component({
+ selector: 'a2ui-text-field',
+ styles: `
+ :host {
+ display: flex;
+ flex: var(--weight);
+ }
+
+ section,
+ input,
+ label {
+ box-sizing: border-box;
+ }
+
+ input {
+ display: block;
+ width: 100%;
+ }
+
+ label {
+ display: block;
+ margin-bottom: 4px;
+ }
+ `,
+ template: `
+ @let resolvedLabel = this.resolvedLabel();
+
+
+ @if (resolvedLabel) {
+
+ }
+
+
+
+ `,
+})
+export class TextField extends DynamicComponent {
+ readonly text = input.required();
+ readonly label = input.required();
+ readonly inputType = input.required();
+
+ protected inputValue = computed(() => super.resolvePrimitive(this.text()) || '');
+ protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));
+ protected inputId = super.getUniqueId('a2ui-input');
+
+ protected handleInput(event: Event) {
+ const path = this.text()?.path;
+
+ if (!(event.target instanceof HTMLInputElement) || !path) {
+ return;
+ }
+
+ this.processor.setData(this.component(), path, event.target.value, this.surfaceId());
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/text.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/text.ts
new file mode 100644
index 0000000000..a2bbf93fe6
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/text.ts
@@ -0,0 +1,137 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, inject, input, ViewEncapsulation } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Primitives, Styles, Types } from '@a2ui/lit/0.8';
+import { MarkdownRenderer } from '../data/markdown';
+
+interface HintedStyles {
+ h1: Record;
+ h2: Record;
+ h3: Record;
+ h4: Record;
+ h5: Record;
+ body: Record;
+ caption: Record;
+}
+
+@Component({
+ selector: 'a2ui-text',
+ template: `
+
+ `,
+ encapsulation: ViewEncapsulation.None,
+ styles: `
+ a2ui-text {
+ display: block;
+ flex: var(--weight);
+ }
+
+ a2ui-text h1,
+ a2ui-text h2,
+ a2ui-text h3,
+ a2ui-text h4,
+ a2ui-text h5 {
+ line-height: inherit;
+ font: inherit;
+ }
+ `,
+})
+export class Text extends DynamicComponent {
+ private markdownRenderer = inject(MarkdownRenderer);
+ readonly text = input.required();
+ readonly usageHint = input.required();
+
+ protected resolvedText = computed(() => {
+ const usageHint = this.usageHint();
+ let value = super.resolvePrimitive(this.text());
+
+ if (value == null) {
+ return '(empty)';
+ }
+
+ switch (usageHint) {
+ case 'h1':
+ value = `# ${value}`;
+ break;
+ case 'h2':
+ value = `## ${value}`;
+ break;
+ case 'h3':
+ value = `### ${value}`;
+ break;
+ case 'h4':
+ value = `#### ${value}`;
+ break;
+ case 'h5':
+ value = `##### ${value}`;
+ break;
+ case 'caption':
+ value = `*${value}*`;
+ break;
+ default:
+ value = String(value);
+ break;
+ }
+
+ return this.markdownRenderer.render(
+ value,
+ Styles.appendToAll(this.theme.markdown, ['ol', 'ul', 'li'], {}),
+ );
+ });
+
+ protected classes = computed(() => {
+ const usageHint = this.usageHint();
+
+ return Styles.merge(
+ this.theme.components.Text.all,
+ usageHint ? this.theme.components.Text[usageHint] : {},
+ );
+ });
+
+ protected additionalStyles = computed(() => {
+ const usageHint = this.usageHint();
+ const styles = this.theme.additionalStyles?.Text;
+
+ if (!styles) {
+ return null;
+ }
+
+ let additionalStyles: Record = {};
+
+ if (this.areHintedStyles(styles)) {
+ additionalStyles = styles[usageHint ?? 'body'];
+ } else {
+ additionalStyles = styles;
+ }
+
+ return additionalStyles;
+ });
+
+ private areHintedStyles(styles: unknown): styles is HintedStyles {
+ if (typeof styles !== 'object' || !styles || Array.isArray(styles)) {
+ return false;
+ }
+
+ const expected = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'caption', 'body'];
+ return expected.every((v) => v in styles);
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/catalog/video.ts b/vendor/a2ui/renderers/angular/src/lib/catalog/video.ts
new file mode 100644
index 0000000000..7629c54375
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/catalog/video.ts
@@ -0,0 +1,50 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Component, computed, input } from '@angular/core';
+import { DynamicComponent } from '../rendering/dynamic-component';
+import { Primitives } from '@a2ui/lit/0.8';
+
+@Component({
+ selector: 'a2ui-video',
+ template: `
+ @let resolvedUrl = this.resolvedUrl();
+
+ @if (resolvedUrl) {
+
+
+
+ }
+ `,
+ styles: `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ video {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ }
+ `,
+})
+export class Video extends DynamicComponent {
+ readonly url = input.required();
+ protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/config.ts b/vendor/a2ui/renderers/angular/src/lib/config.ts
new file mode 100644
index 0000000000..fd3ef84852
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/config.ts
@@ -0,0 +1,25 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';
+import { Catalog, Theme } from './rendering';
+
+export function provideA2UI(config: { catalog: Catalog; theme: Theme }): EnvironmentProviders {
+ return makeEnvironmentProviders([
+ { provide: Catalog, useValue: config.catalog },
+ { provide: Theme, useValue: config.theme },
+ ]);
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/data/index.ts b/vendor/a2ui/renderers/angular/src/lib/data/index.ts
new file mode 100644
index 0000000000..59c24ba498
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/data/index.ts
@@ -0,0 +1,18 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export * from './processor';
+export * from './types';
diff --git a/vendor/a2ui/renderers/angular/src/lib/data/markdown.ts b/vendor/a2ui/renderers/angular/src/lib/data/markdown.ts
new file mode 100644
index 0000000000..dac3a77d2f
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/data/markdown.ts
@@ -0,0 +1,114 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { inject, Injectable, SecurityContext } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import MarkdownIt from 'markdown-it';
+
+@Injectable({ providedIn: 'root' })
+export class MarkdownRenderer {
+ private originalClassMap = new Map();
+ private sanitizer = inject(DomSanitizer);
+
+ private markdownIt = MarkdownIt({
+ highlight: (str, lang) => {
+ if (lang === 'html') {
+ const iframe = document.createElement('iframe');
+ iframe.classList.add('html-view');
+ iframe.srcdoc = str;
+ iframe.sandbox = '';
+ return iframe.innerHTML;
+ }
+
+ return str;
+ },
+ });
+
+ render(value: string, tagClassMap?: Record) {
+ if (tagClassMap) {
+ this.applyTagClassMap(tagClassMap);
+ }
+ const htmlString = this.markdownIt.render(value);
+ this.unapplyTagClassMap();
+ return this.sanitizer.sanitize(SecurityContext.HTML, htmlString);
+ }
+
+ private applyTagClassMap(tagClassMap: Record) {
+ Object.entries(tagClassMap).forEach(([tag, classes]) => {
+ let tokenName;
+ switch (tag) {
+ case 'p':
+ tokenName = 'paragraph';
+ break;
+ case 'h1':
+ case 'h2':
+ case 'h3':
+ case 'h4':
+ case 'h5':
+ case 'h6':
+ tokenName = 'heading';
+ break;
+ case 'ul':
+ tokenName = 'bullet_list';
+ break;
+ case 'ol':
+ tokenName = 'ordered_list';
+ break;
+ case 'li':
+ tokenName = 'list_item';
+ break;
+ case 'a':
+ tokenName = 'link';
+ break;
+ case 'strong':
+ tokenName = 'strong';
+ break;
+ case 'em':
+ tokenName = 'em';
+ break;
+ }
+
+ if (!tokenName) {
+ return;
+ }
+
+ const key = `${tokenName}_open`;
+ const original = this.markdownIt.renderer.rules[key];
+ this.originalClassMap.set(key, original);
+
+ this.markdownIt.renderer.rules[key] = (tokens, idx, options, env, self) => {
+ const token = tokens[idx];
+ for (const clazz of classes) {
+ token.attrJoin('class', clazz);
+ }
+
+ if (original) {
+ return original.call(this, tokens, idx, options, env, self);
+ } else {
+ return self.renderToken(tokens, idx, options);
+ }
+ };
+ });
+ }
+
+ private unapplyTagClassMap() {
+ for (const [key, original] of this.originalClassMap) {
+ this.markdownIt.renderer.rules[key] = original;
+ }
+
+ this.originalClassMap.clear();
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/data/processor.ts b/vendor/a2ui/renderers/angular/src/lib/data/processor.ts
new file mode 100644
index 0000000000..314a318c55
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/data/processor.ts
@@ -0,0 +1,47 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Data, Types } from '@a2ui/lit/0.8';
+import { Injectable } from '@angular/core';
+import { firstValueFrom, Subject } from 'rxjs';
+
+export interface DispatchedEvent {
+ message: Types.A2UIClientEventMessage;
+ completion: Subject;
+}
+
+@Injectable({ providedIn: 'root' })
+export class MessageProcessor extends Data.A2uiMessageProcessor {
+ readonly events = new Subject();
+
+ override setData(
+ node: Types.AnyComponentNode,
+ relativePath: string,
+ value: Types.DataValue,
+ surfaceId?: Types.SurfaceID | null,
+ ) {
+ // Override setData to convert from optional inputs (which can be null)
+ // to undefined so that this correctly falls back to the default value for
+ // surfaceId.
+ return super.setData(node, relativePath, value, surfaceId ?? undefined);
+ }
+
+ dispatch(message: Types.A2UIClientEventMessage): Promise {
+ const completion = new Subject();
+ this.events.next({ message, completion });
+ return firstValueFrom(completion);
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/data/types.ts b/vendor/a2ui/renderers/angular/src/lib/data/types.ts
new file mode 100644
index 0000000000..1a9d3fd38d
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/data/types.ts
@@ -0,0 +1,29 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Types } from '@a2ui/lit/0.8';
+
+export interface A2TextPayload {
+ kind: 'text';
+ text: string;
+}
+
+export interface A2DataPayload {
+ kind: 'data';
+ data: Types.ServerToClientMessage;
+}
+
+export type A2AServerPayload = Array | { error: string };
diff --git a/vendor/a2ui/renderers/angular/src/lib/rendering/catalog.ts b/vendor/a2ui/renderers/angular/src/lib/rendering/catalog.ts
new file mode 100644
index 0000000000..35735c6ec9
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/rendering/catalog.ts
@@ -0,0 +1,36 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Binding, InjectionToken, Type } from '@angular/core';
+import { DynamicComponent } from './dynamic-component';
+import { Types } from '@a2ui/lit/0.8';
+
+export type CatalogLoader = () =>
+ | Promise>>
+ | Type>;
+
+export type CatalogEntry =
+ | CatalogLoader
+ | {
+ type: CatalogLoader;
+ bindings: (data: T) => Binding[];
+ };
+
+export interface Catalog {
+ [key: string]: CatalogEntry;
+}
+
+export const Catalog = new InjectionToken('Catalog');
diff --git a/vendor/a2ui/renderers/angular/src/lib/rendering/dynamic-component.ts b/vendor/a2ui/renderers/angular/src/lib/rendering/dynamic-component.ts
new file mode 100644
index 0000000000..358ecf349e
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/rendering/dynamic-component.ts
@@ -0,0 +1,100 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Types, Primitives } from '@a2ui/lit/0.8';
+import { Directive, inject, input } from '@angular/core';
+import { MessageProcessor } from '../data';
+import { Theme } from './theming';
+
+let idCounter = 0;
+
+@Directive({
+ host: {
+ '[style.--weight]': 'weight()',
+ },
+})
+export abstract class DynamicComponent {
+ protected readonly processor = inject(MessageProcessor);
+ protected readonly theme = inject(Theme);
+
+ readonly surfaceId = input.required();
+ readonly component = input.required();
+ readonly weight = input.required();
+
+ protected sendAction(action: Types.Action): Promise {
+ const component = this.component();
+ const surfaceId = this.surfaceId() ?? undefined;
+ const context: Record = {};
+
+ if (action.context) {
+ for (const item of action.context) {
+ if (item.value.literalBoolean) {
+ context[item.key] = item.value.literalBoolean;
+ } else if (item.value.literalNumber) {
+ context[item.key] = item.value.literalNumber;
+ } else if (item.value.literalString) {
+ context[item.key] = item.value.literalString;
+ } else if (item.value.path) {
+ const path = this.processor.resolvePath(item.value.path, component.dataContextPath);
+ const value = this.processor.getData(component, path, surfaceId);
+ context[item.key] = value;
+ }
+ }
+ }
+
+ const message: Types.A2UIClientEventMessage = {
+ userAction: {
+ name: action.name,
+ sourceComponentId: component.id,
+ surfaceId: surfaceId!,
+ timestamp: new Date().toISOString(),
+ context,
+ },
+ };
+
+ return this.processor.dispatch(message);
+ }
+
+ protected resolvePrimitive(value: Primitives.StringValue | null): string | null;
+ protected resolvePrimitive(value: Primitives.BooleanValue | null): boolean | null;
+ protected resolvePrimitive(value: Primitives.NumberValue | null): number | null;
+ protected resolvePrimitive(
+ value: Primitives.StringValue | Primitives.BooleanValue | Primitives.NumberValue | null,
+ ) {
+ const component = this.component();
+ const surfaceId = this.surfaceId();
+
+ if (!value || typeof value !== 'object') {
+ return null;
+ } else if (value.literal != null) {
+ return value.literal;
+ } else if (value.path) {
+ return this.processor.getData(component, value.path, surfaceId ?? undefined);
+ } else if ('literalString' in value) {
+ return value.literalString;
+ } else if ('literalNumber' in value) {
+ return value.literalNumber;
+ } else if ('literalBoolean' in value) {
+ return value.literalBoolean;
+ }
+
+ return null;
+ }
+
+ protected getUniqueId(prefix: string) {
+ return `${prefix}-${idCounter++}`;
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/rendering/index.ts b/vendor/a2ui/renderers/angular/src/lib/rendering/index.ts
new file mode 100644
index 0000000000..ff029be964
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/rendering/index.ts
@@ -0,0 +1,20 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export * from './catalog';
+export * from './dynamic-component';
+export * from './renderer';
+export * from './theming';
diff --git a/vendor/a2ui/renderers/angular/src/lib/rendering/renderer.ts b/vendor/a2ui/renderers/angular/src/lib/rendering/renderer.ts
new file mode 100644
index 0000000000..0e456f97f1
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/rendering/renderer.ts
@@ -0,0 +1,109 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import {
+ Binding,
+ ComponentRef,
+ Directive,
+ DOCUMENT,
+ effect,
+ inject,
+ input,
+ inputBinding,
+ OnDestroy,
+ PLATFORM_ID,
+ Type,
+ untracked,
+ ViewContainerRef,
+} from '@angular/core';
+import { Types, Styles } from '@a2ui/lit/0.8';
+import { Catalog } from './catalog';
+import { isPlatformBrowser } from '@angular/common';
+
+@Directive({
+ selector: 'ng-container[a2ui-renderer]',
+})
+export class Renderer implements OnDestroy {
+ private viewContainerRef = inject(ViewContainerRef);
+ private catalog = inject(Catalog);
+ private static hasInsertedStyles = false;
+
+ private currentRef: ComponentRef | null = null;
+ private isDestroyed = false;
+
+ readonly surfaceId = input.required();
+ readonly component = input.required();
+
+ constructor() {
+ effect(() => {
+ const surfaceId = this.surfaceId();
+ const component = this.component();
+ untracked(() => this.render(surfaceId, component));
+ });
+
+ const platformId = inject(PLATFORM_ID);
+ const document = inject(DOCUMENT);
+
+ if (!Renderer.hasInsertedStyles && isPlatformBrowser(platformId)) {
+ const styles = document.createElement('style');
+ styles.textContent = Styles.structuralStyles;
+ document.head.appendChild(styles);
+ Renderer.hasInsertedStyles = true;
+ }
+ }
+
+ ngOnDestroy(): void {
+ this.isDestroyed = true;
+ this.clear();
+ }
+
+ private async render(surfaceId: Types.SurfaceID, component: Types.AnyComponentNode) {
+ const config = this.catalog[component.type];
+ let newComponent: Type | null = null;
+ let componentBindings: Binding[] | null = null;
+
+ if (typeof config === 'function') {
+ newComponent = await config();
+ } else if (typeof config === 'object') {
+ newComponent = await config.type();
+ componentBindings = config.bindings(component as any);
+ }
+
+ this.clear();
+
+ if (newComponent && !this.isDestroyed) {
+ const bindings = [
+ inputBinding('surfaceId', () => surfaceId),
+ inputBinding('component', () => component),
+ inputBinding('weight', () => component.weight ?? 'initial'),
+ ];
+
+ if (componentBindings) {
+ bindings.push(...componentBindings);
+ }
+
+ this.currentRef = this.viewContainerRef.createComponent(newComponent, {
+ bindings,
+ injector: this.viewContainerRef.injector,
+ });
+ }
+ }
+
+ private clear() {
+ this.currentRef?.destroy();
+ this.currentRef = null;
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/src/lib/rendering/theming.ts b/vendor/a2ui/renderers/angular/src/lib/rendering/theming.ts
new file mode 100644
index 0000000000..6c200911e4
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/lib/rendering/theming.ts
@@ -0,0 +1,22 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Types } from '@a2ui/lit/0.8';
+import { InjectionToken } from '@angular/core';
+
+export const Theme = new InjectionToken('Theme');
+
+export type Theme = Types.Theme;
diff --git a/vendor/a2ui/renderers/angular/src/public-api.ts b/vendor/a2ui/renderers/angular/src/public-api.ts
new file mode 100644
index 0000000000..1d68004a56
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/src/public-api.ts
@@ -0,0 +1,21 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export * from './lib/rendering/index';
+export * from './lib/data/index';
+export * from './lib/config';
+export * from './lib/catalog/default';
+export { Surface } from './lib/catalog/surface';
diff --git a/vendor/a2ui/renderers/angular/tsconfig.json b/vendor/a2ui/renderers/angular/tsconfig.json
new file mode 100644
index 0000000000..9f6412a72d
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compileOnSave": false,
+ "compilerOptions": {
+ "strict": true,
+ "noImplicitOverride": true,
+ "noPropertyAccessFromIndexSignature": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "skipLibCheck": true,
+ "isolatedModules": true,
+ "experimentalDecorators": true,
+ "importHelpers": true,
+ "target": "ES2022",
+ "module": "preserve"
+ },
+ "angularCompilerOptions": {
+ "enableI18nLegacyMessageIdFormat": false,
+ "strictInjectionParameters": true,
+ "strictInputAccessModifiers": true,
+ "typeCheckHostBindings": true,
+ "strictTemplates": true
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/tsconfig.lib.json b/vendor/a2ui/renderers/angular/tsconfig.lib.json
new file mode 100644
index 0000000000..6984a0e01f
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/tsconfig.lib.json
@@ -0,0 +1,16 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/lib",
+ "declaration": true,
+ "declarationMap": true,
+ "inlineSources": true,
+ "types": []
+ },
+ "include": [
+ "src/**/*.ts"
+ ],
+ "exclude": [
+ "**/*.spec.ts"
+ ]
+}
diff --git a/vendor/a2ui/renderers/angular/tsconfig.lib.prod.json b/vendor/a2ui/renderers/angular/tsconfig.lib.prod.json
new file mode 100644
index 0000000000..2a2faa884c
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/tsconfig.lib.prod.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.lib.json",
+ "compilerOptions": {
+ "declarationMap": false
+ },
+ "angularCompilerOptions": {
+ "compilationMode": "partial"
+ }
+}
diff --git a/vendor/a2ui/renderers/angular/tsconfig.spec.json b/vendor/a2ui/renderers/angular/tsconfig.spec.json
new file mode 100644
index 0000000000..79ee881a80
--- /dev/null
+++ b/vendor/a2ui/renderers/angular/tsconfig.spec.json
@@ -0,0 +1,12 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/spec",
+ "types": [
+ "jasmine"
+ ]
+ },
+ "include": [
+ "src/**/*.ts"
+ ]
+}
diff --git a/vendor/a2ui/renderers/lit/.npmrc b/vendor/a2ui/renderers/lit/.npmrc
new file mode 100644
index 0000000000..06b0eef7e3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/.npmrc
@@ -0,0 +1,2 @@
+@a2ui:registry=https://us-npm.pkg.dev/oss-exit-gate-prod/a2ui--npm/
+//us-npm.pkg.dev/oss-exit-gate-prod/a2ui--npm/:always-auth=true
diff --git a/vendor/a2ui/renderers/lit/README b/vendor/a2ui/renderers/lit/README
new file mode 100644
index 0000000000..2e908410d4
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/README
@@ -0,0 +1,9 @@
+Lit implementation of A2UI.
+
+Important: The sample code provided is for demonstration purposes and illustrates the mechanics of A2UI and the Agent-to-Agent (A2A) protocol. When building production applications, it is critical to treat any agent operating outside of your direct control as a potentially untrusted entity.
+
+All operational data received from an external agent—including its AgentCard, messages, artifacts, and task statuses—should be handled as untrusted input. For example, a malicious agent could provide crafted data in its fields (e.g., name, skills.description) that, if used without sanitization to construct prompts for a Large Language Model (LLM), could expose your application to prompt injection attacks.
+
+Similarly, any UI definition or data stream received must be treated as untrusted. Malicious agents could attempt to spoof legitimate interfaces to deceive users (phishing), inject malicious scripts via property values (XSS), or generate excessive layout complexity to degrade client performance (DoS). If your application supports optional embedded content (such as iframes or web views), additional care must be taken to prevent exposure to malicious external sites.
+
+Developer Responsibility: Failure to properly validate data and strictly sandbox rendered content can introduce severe vulnerabilities. Developers are responsible for implementing appropriate security measures—such as input sanitization, Content Security Policies (CSP), strict isolation for optional embedded content, and secure credential handling—to protect their systems and users.
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/README.md b/vendor/a2ui/renderers/lit/README.md
new file mode 100644
index 0000000000..2e908410d4
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/README.md
@@ -0,0 +1,9 @@
+Lit implementation of A2UI.
+
+Important: The sample code provided is for demonstration purposes and illustrates the mechanics of A2UI and the Agent-to-Agent (A2A) protocol. When building production applications, it is critical to treat any agent operating outside of your direct control as a potentially untrusted entity.
+
+All operational data received from an external agent—including its AgentCard, messages, artifacts, and task statuses—should be handled as untrusted input. For example, a malicious agent could provide crafted data in its fields (e.g., name, skills.description) that, if used without sanitization to construct prompts for a Large Language Model (LLM), could expose your application to prompt injection attacks.
+
+Similarly, any UI definition or data stream received must be treated as untrusted. Malicious agents could attempt to spoof legitimate interfaces to deceive users (phishing), inject malicious scripts via property values (XSS), or generate excessive layout complexity to degrade client performance (DoS). If your application supports optional embedded content (such as iframes or web views), additional care must be taken to prevent exposure to malicious external sites.
+
+Developer Responsibility: Failure to properly validate data and strictly sandbox rendered content can introduce severe vulnerabilities. Developers are responsible for implementing appropriate security measures—such as input sanitization, Content Security Policies (CSP), strict isolation for optional embedded content, and secure credential handling—to protect their systems and users.
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/.tsbuildinfo b/vendor/a2ui/renderers/lit/dist/.tsbuildinfo
new file mode 100644
index 0000000000..091adf2aee
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/.tsbuildinfo
@@ -0,0 +1 @@
+{"fileNames":["../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/0.8/types/primitives.ts","../src/0.8/types/components.ts","../src/0.8/types/client-event.ts","../src/0.8/types/types.ts","../src/0.8/events/base.ts","../src/0.8/events/a2ui.ts","../src/0.8/events/events.ts","../src/0.8/styles/behavior.ts","../src/0.8/styles/shared.ts","../src/0.8/styles/border.ts","../src/0.8/types/colors.ts","../src/0.8/styles/utils.ts","../src/0.8/styles/colors.ts","../src/0.8/styles/icons.ts","../src/0.8/styles/layout.ts","../src/0.8/styles/opacity.ts","../src/0.8/styles/type.ts","../src/0.8/styles/index.ts","../src/0.8/data/guards.ts","../src/0.8/data/model-processor.ts","../../../../../node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/declarations/array.d.ts","../../../../../node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/declarations/map.d.ts","../../../../../node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/declarations/object.d.ts","../../../../../node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/declarations/set.d.ts","../src/0.8/data/signal-model-processor.ts","../src/0.8/schemas/server_to_client_with_standard_catalog.json","../src/0.8/core.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/directive.d.ts","../../../../../node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/lib/index.d.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/lit-html.d.ts","../../../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/development/lit-element.d.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/is-server.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/index.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/base.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/custom-element.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/property.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/state.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/event-options.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/query.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/query-all.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/query-async.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/query-assigned-nodes.d.ts","../../../../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/decorators.d.ts","../../../../../node_modules/.pnpm/signal-polyfill@0.2.2/node_modules/signal-polyfill/dist/graph.d.ts","../../../../../node_modules/.pnpm/signal-polyfill@0.2.2/node_modules/signal-polyfill/dist/equality.d.ts","../../../../../node_modules/.pnpm/signal-polyfill@0.2.2/node_modules/signal-polyfill/dist/signal.d.ts","../../../../../node_modules/.pnpm/signal-polyfill@0.2.2/node_modules/signal-polyfill/dist/computed.d.ts","../../../../../node_modules/.pnpm/signal-polyfill@0.2.2/node_modules/signal-polyfill/dist/wrapper.d.ts","../../../../../node_modules/.pnpm/signal-polyfill@0.2.2/node_modules/signal-polyfill/dist/index.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/directive.d.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/async-directive.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/async-directive.d.ts","../../../../../node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/development/lib/watch.d.ts","../../../../../node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/development/lib/signal-watcher.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/html.d.ts","../../../../../node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/development/lib/html-tag.d.ts","../../../../../node_modules/.pnpm/@lit-labs+signals@0.1.3/node_modules/@lit-labs/signals/development/index.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/create-context.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/context-request-event.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/controllers/context-consumer.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/value-notifier.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/controllers/context-provider.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/context-root.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/decorators/provide.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/lib/decorators/consume.d.ts","../../../../../node_modules/.pnpm/@lit+context@1.1.6/node_modules/@lit/context/development/index.d.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/directives/map.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/directives/map.d.ts","../../../../../node_modules/.pnpm/signal-utils@0.21.1_signal-polyfill@0.2.2/node_modules/signal-utils/declarations/subtle/microtask-effect.d.ts","../src/0.8/ui/context/theme.ts","../src/0.8/ui/styles.ts","../src/0.8/ui/component-registry.ts","../src/0.8/ui/root.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/directives/class-map.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/directives/class-map.d.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/directives/style-map.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/directives/style-map.d.ts","../src/0.8/ui/audio.ts","../src/0.8/ui/button.ts","../src/0.8/ui/card.ts","../src/0.8/ui/checkbox.ts","../src/0.8/ui/column.ts","../src/0.8/ui/datetime-input.ts","../src/0.8/ui/divider.ts","../src/0.8/ui/icon.ts","../src/0.8/ui/image.ts","../src/0.8/ui/list.ts","../src/0.8/ui/utils/utils.ts","../src/0.8/ui/multiple-choice.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/directives/ref.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/directives/ref.d.ts","../src/0.8/ui/modal.ts","../src/0.8/ui/row.ts","../src/0.8/ui/slider.ts","../src/0.8/ui/surface.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/directives/repeat.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/directives/repeat.d.ts","../src/0.8/ui/tabs.ts","../src/0.8/ui/text-field.ts","../../../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/development/directives/unsafe-html.d.ts","../../../../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/development/directives/unsafe-html.d.ts","../../../../../node_modules/.pnpm/@types+linkify-it@5.0.0/node_modules/@types/linkify-it/index.d.mts","../../../../../node_modules/.pnpm/@types+mdurl@2.0.0/node_modules/@types/mdurl/lib/decode.d.mts","../../../../../node_modules/.pnpm/@types+mdurl@2.0.0/node_modules/@types/mdurl/lib/encode.d.mts","../../../../../node_modules/.pnpm/@types+mdurl@2.0.0/node_modules/@types/mdurl/lib/parse.d.mts","../../../../../node_modules/.pnpm/@types+mdurl@2.0.0/node_modules/@types/mdurl/lib/format.d.mts","../../../../../node_modules/.pnpm/@types+mdurl@2.0.0/node_modules/@types/mdurl/index.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/common/utils.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/helpers/parse_link_destination.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/token.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/rules_inline/state_inline.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/helpers/parse_link_label.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/helpers/parse_link_title.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/helpers/index.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/ruler.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/rules_block/state_block.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/parser_block.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/rules_core/state_core.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/parser_core.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/parser_inline.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/renderer.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/lib/index.d.mts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/index.d.mts","../src/0.8/ui/directives/sanitizer.ts","../src/0.8/ui/directives/markdown.ts","../src/0.8/ui/directives/directives.ts","../src/0.8/ui/text.ts","../src/0.8/ui/video.ts","../src/0.8/ui/custom-components/index.ts","../src/0.8/ui/ui.ts","../src/0.8/index.ts","../src/index.ts","../src/0.8/model.test.ts","../src/0.8/ui/utils/youtube.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/compatibility/iterators.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/globals.typedarray.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/buffer.buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/globals.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/blob.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/console.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/domexception.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/encoding.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/events.d.ts","../../../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../../../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/fetch.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/importmeta.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/messaging.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/navigator.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/performance.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/storage.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/streams.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/web-globals/url.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/assert.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/assert/strict.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/async_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/child_process.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/cluster.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/console.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/constants.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/dgram.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/diagnostics_channel.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/dns.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/dns/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/domain.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/events.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/fs.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/fs/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/http.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/http2.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/https.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/inspector.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/inspector.generated.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/inspector/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/module.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/net.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/os.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/path.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/path/posix.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/path/win32.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/perf_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/process.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/punycode.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/querystring.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/quic.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/readline.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/readline/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/repl.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/sea.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/sqlite.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/stream.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/stream/consumers.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/stream/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/stream/web.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/string_decoder.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/test.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/test/reporters.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/timers/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/tls.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/trace_events.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/tty.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/url.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/util.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/util/types.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/v8.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/vm.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/wasi.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/worker_threads.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/zlib.d.ts","../../../../../node_modules/.pnpm/@types+node@25.0.2/node_modules/@types/node/index.d.ts","../../../../../node_modules/.pnpm/@types+connect@3.4.38/node_modules/@types/connect/index.d.ts","../../../../../node_modules/.pnpm/@types+body-parser@1.19.6/node_modules/@types/body-parser/index.d.ts","../../../../../node_modules/@types/deep-eql/index.d.ts","../../../../../node_modules/assertion-error/index.d.ts","../../../../../node_modules/@types/chai/index.d.ts","../../../../../node_modules/@types/connect/index.d.ts","../../../../../node_modules/@types/estree/index.d.ts","../../../../../node_modules/@types/send/index.d.ts","../../../../../node_modules/@types/qs/index.d.ts","../../../../../node_modules/@types/range-parser/index.d.ts","../../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../../node_modules/@types/http-errors/index.d.ts","../../../../../node_modules/@types/serve-static/index.d.ts","../../../../../node_modules/.pnpm/@types+express-serve-static-core@5.1.0/node_modules/@types/express-serve-static-core/index.d.ts","../../../../../node_modules/.pnpm/@types+serve-static@2.2.0/node_modules/@types/serve-static/index.d.ts","../../../../../node_modules/.pnpm/@types+express@5.0.6/node_modules/@types/express/index.d.ts","../../../../../node_modules/@types/long/index.d.ts","../../../../../node_modules/.pnpm/@types+linkify-it@5.0.0/node_modules/@types/linkify-it/build/index.cjs.d.ts","../../../../../node_modules/.pnpm/@types+mdurl@2.0.0/node_modules/@types/mdurl/build/index.cjs.d.ts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/dist/index.cjs.d.ts","../../../../../node_modules/.pnpm/@types+markdown-it@14.1.2/node_modules/@types/markdown-it/index.d.ts","../../../../../node_modules/@types/mime-types/index.d.ts","../../../../../node_modules/.pnpm/@types+qrcode-terminal@0.12.2/node_modules/@types/qrcode-terminal/index.d.ts","../../../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../../../node_modules/@types/trusted-types/index.d.ts","../../../../../node_modules/.pnpm/@types+ws@8.18.1/node_modules/@types/ws/index.d.ts"],"fileIdsList":[[127,128,129,131,132,133,134,206,269,277,281,284,286,287,288,300],[127,206,269,277,281,284,286,287,288,300],[206,269,277,281,284,286,287,288,300],[95,127,206,269,277,281,284,286,287,288,300],[95,127,128,130,206,269,277,281,284,286,287,288,300],[128,206,269,277,281,284,286,287,288,300],[102,206,269,277,281,284,286,287,288,300],[95,102,206,269,277,281,284,286,287,288,300],[95,102,110,206,269,277,281,284,286,287,288,300],[104,206,269,277,281,284,286,287,288,300],[93,94,206,269,277,281,284,286,287,288,300],[118,122,123,125,206,269,277,281,284,286,287,288,300],[124,206,269,277,281,284,286,287,288,300],[101,122,206,269,277,281,284,286,287,288,300],[118,119,121,206,269,277,281,284,286,287,288,300],[206,269,277,281,283,284,286,287,288,300,325,326],[206,269,277,281,283,284,286,287,288,300,325],[206,269,277,280,281,283,284,286,287,288,300,333,334,335],[206,269,277,281,284,286,287,288,300,327,336,338],[206,269,277,281,284,286,287,288,300,343,344],[191,206,269,277,281,284,286,287,288,300],[206,269,277,281,284,286,287,288,300,345],[176,206,269,277,281,284,286,287,288,300],[178,181,182,206,269,277,281,284,286,287,288,300],[180,206,269,277,281,284,286,287,288,300],[171,177,179,183,186,188,189,190,206,269,277,281,284,286,287,288,300],[179,184,185,191,206,269,277,281,284,286,287,288,300],[184,187,206,269,277,281,284,286,287,288,300],[179,180,184,191,206,269,277,281,284,286,287,288,300],[179,191,206,269,277,281,284,286,287,288,300],[172,173,174,175,206,269,277,281,284,286,287,288,300],[174,206,269,277,281,284,286,287,288,300],[206,266,267,269,277,281,284,286,287,288,300],[206,268,269,277,281,284,286,287,288,300],[269,277,281,284,286,287,288,300],[206,269,277,281,284,286,287,288,300,308],[206,269,270,275,277,280,281,284,286,287,288,290,300,305,317],[206,269,270,271,277,280,281,284,286,287,288,300],[206,269,272,277,281,284,286,287,288,300,318],[206,269,273,274,277,281,284,286,287,288,291,300],[206,269,274,277,281,284,286,287,288,300,305,314],[206,269,275,277,280,281,284,286,287,288,290,300],[206,268,269,276,277,281,284,286,287,288,300],[206,269,277,278,281,284,286,287,288,300],[206,269,277,279,280,281,284,286,287,288,300],[206,268,269,277,280,281,284,286,287,288,300],[206,269,277,280,281,282,284,286,287,288,300,305,317],[206,269,277,280,281,282,284,286,287,288,300,305,308],[206,256,269,277,280,281,283,284,286,287,288,290,300,305,317],[206,269,277,280,281,283,284,286,287,288,290,300,305,314,317],[206,269,277,281,283,284,285,286,287,288,300,305,314,317],[204,205,206,207,208,209,210,211,212,213,214,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324],[206,269,277,280,281,284,286,287,288,300],[206,269,277,281,284,286,288,300],[206,269,277,281,284,286,287,288,289,300,317],[206,269,277,280,281,284,286,287,288,290,300,305],[206,269,277,281,284,286,287,288,291,300],[206,269,277,281,284,286,287,288,292,300],[206,269,277,280,281,284,286,287,288,295,300],[206,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324],[206,269,277,281,284,286,287,288,297,300],[206,269,277,281,284,286,287,288,298,300],[206,269,274,277,281,284,286,287,288,290,300,308],[206,269,277,280,281,284,286,287,288,300,301],[206,269,277,281,284,286,287,288,300,302,318,321],[206,269,277,280,281,284,286,287,288,300,305,307,308],[206,269,277,281,284,286,287,288,300,306,308],[206,269,277,281,284,286,287,288,300,308,318],[206,269,277,281,284,286,287,288,300,309],[206,266,269,277,281,284,286,287,288,300,305,311],[206,269,277,281,284,286,287,288,300,305,310],[206,269,277,280,281,284,286,287,288,300,312,313],[206,269,277,281,284,286,287,288,300,312,313],[206,269,274,277,281,284,286,287,288,290,300,305,314],[206,269,277,281,284,286,287,288,300,315],[206,269,277,281,284,286,287,288,290,300,316],[206,269,277,281,283,284,286,287,288,298,300,317],[206,269,277,281,284,286,287,288,300,318,319],[206,269,274,277,281,284,286,287,288,300,319],[206,269,277,281,284,286,287,288,300,305,320],[206,269,277,281,284,286,287,288,289,300,321],[206,269,277,281,284,286,287,288,300,322],[206,269,272,277,281,284,286,287,288,300],[206,269,274,277,281,284,286,287,288,300],[206,269,277,281,284,286,287,288,300,318],[206,256,269,277,281,284,286,287,288,300],[206,269,277,281,284,286,287,288,300,317],[206,269,277,281,284,286,287,288,300,323],[206,269,277,281,284,286,287,288,295,300],[206,269,277,281,284,286,287,288,300,313],[206,256,269,277,280,281,282,284,286,287,288,295,300,305,308,317,320,321,323],[206,269,277,281,284,286,287,288,300,305,324],[206,269,277,281,283,284,286,287,288,300,337],[206,269,277,280,281,283,284,285,286,287,288,290,300,305,314,317,324,325],[95,98,206,269,277,281,284,286,287,288,300],[96,98,206,269,277,281,284,286,287,288,300],[98,206,269,277,281,284,286,287,288,300],[96,98,120,206,269,277,281,284,286,287,288,300],[96,97,206,269,277,281,284,286,287,288,300],[120,206,269,277,281,284,286,287,288,300],[103,104,105,106,107,108,109,110,111,206,269,277,281,284,286,287,288,300],[96,206,269,277,281,284,286,287,288,300],[143,206,269,277,281,284,286,287,288,300],[136,206,269,277,281,284,286,287,288,300],[159,206,269,277,281,284,286,287,288,300],[165,206,269,277,281,284,286,287,288,300],[145,206,269,277,281,284,286,287,288,300],[169,206,269,277,281,284,286,287,288,300],[95,98,99,100,206,269,277,281,284,286,287,288,300],[113,114,206,269,277,281,284,286,287,288,300],[117,206,269,277,281,284,286,287,288,300],[113,115,116,206,269,277,281,284,286,287,288,300],[206,222,225,228,229,269,277,281,284,286,287,288,300,317],[206,225,269,277,281,284,286,287,288,300,305,317],[206,225,229,269,277,281,284,286,287,288,300,317],[206,269,277,281,284,286,287,288,300,305],[206,219,269,277,281,284,286,287,288,300],[206,223,269,277,281,284,286,287,288,300],[206,221,222,225,269,277,281,284,286,287,288,300,317],[206,269,277,281,284,286,287,288,290,300,314],[206,269,277,281,284,286,287,288,300,325],[206,219,269,277,281,284,286,287,288,300,325],[206,221,225,269,277,281,284,286,287,288,290,300,317],[206,216,217,218,220,224,269,277,280,281,284,286,287,288,300,305,317],[206,225,233,241,269,277,281,284,286,287,288,300],[206,217,223,269,277,281,284,286,287,288,300],[206,225,250,251,269,277,281,284,286,287,288,300],[206,217,220,225,269,277,281,284,286,287,288,300,308,317,325],[206,225,269,277,281,284,286,287,288,300],[206,221,225,269,277,281,284,286,287,288,300,317],[206,216,269,277,281,284,286,287,288,300],[206,219,220,221,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,251,252,253,254,255,269,277,281,284,286,287,288,300],[206,225,243,246,269,277,281,284,286,287,288,300],[206,225,233,234,235,269,277,281,284,286,287,288,300],[206,223,225,234,236,269,277,281,284,286,287,288,300],[206,224,269,277,281,284,286,287,288,300],[206,217,219,225,269,277,281,284,286,287,288,300],[206,225,229,234,236,269,277,281,284,286,287,288,300],[206,229,269,277,281,284,286,287,288,300],[206,223,225,228,269,277,281,284,286,287,288,300,317],[206,217,221,225,233,269,277,281,284,286,287,288,300],[206,225,243,269,277,281,284,286,287,288,300],[206,236,269,277,281,284,286,287,288,300],[206,219,225,250,269,277,281,284,286,287,288,300,308,323,325],[206,269,277,281,284,286,287,288,300,328,329],[206,269,277,281,283,284,286,287,288,300],[206,269,277,280,281,283,284,286,287,288,300,325,333,334,335],[206,269,277,281,284,286,287,288,300,305,325],[206,269,277,281,283,284,286,287,288,300,325,337],[206,269,277,281,284,286,287,288,300,349],[66,69,72,83,84,85,90,91,206,269,277,281,284,286,287,288,300],[66,69,206,269,277,281,284,286,287,288,300],[69,84,206,269,277,281,284,286,287,288,300],[85,86,87,88,89,206,269,277,281,284,286,287,288,300],[67,69,70,206,269,277,281,284,286,287,288,300],[70,71,206,269,277,281,284,286,287,288,300],[92,199,206,269,277,281,284,286,287,288,300],[69,201,206,266,269,277,281,284,286,287,288,300,310],[74,206,269,277,281,284,286,287,288,300],[76,77,206,269,277,281,284,286,287,288,300],[73,75,77,78,79,80,81,82,206,269,277,281,284,286,287,288,300],[76,206,269,277,281,284,286,287,288,300],[66,206,269,277,281,284,286,287,288,300],[66,67,68,206,269,277,281,284,286,287,288,300],[66,85,101,112,140,142,144,146,206,269,277,281,284,286,287,288,300],[67,72,101,112,140,142,144,146,206,269,277,281,284,286,287,288,300],[101,112,140,142,144,146,206,269,277,281,284,286,287,288,300],[69,101,112,140,142,144,146,206,269,277,281,284,286,287,288,300],[199,206,269,277,281,284,286,287,288,300],[69,135,206,269,277,281,284,286,287,288,300],[141,206,269,277,281,284,286,287,288,300],[194,206,269,277,281,284,286,287,288,300],[101,119,170,190,192,193,206,269,277,281,284,286,287,288,300],[101,206,269,277,281,284,286,287,288,300],[66,69,85,101,112,140,142,144,146,200,206,269,277,281,284,286,287,288,300],[101,112,140,142,144,146,160,206,269,277,281,284,286,287,288,300],[66,85,101,112,140,142,144,146,157,206,269,277,281,284,286,287,288,300],[66,69,85,101,112,126,135,137,138,139,140,141,206,269,277,281,284,286,287,288,300],[66,69,85,101,112,140,142,144,146,157,206,269,277,281,284,286,287,288,300],[83,101,206,269,277,281,284,286,287,288,300],[69,85,101,112,142,146,206,269,277,281,284,286,287,288,300],[66,85,101,112,140,142,144,146,166,200,206,269,277,281,284,286,287,288,300],[66,69,85,101,112,140,142,144,146,195,200,206,269,277,281,284,286,287,288,300],[139,141,142,147,148,149,150,151,152,153,154,155,156,157,158,161,162,163,164,167,168,196,197,198,206,269,277,281,284,286,287,288,300],[66,69,85,206,269,277,281,284,286,287,288,300],[200,206,269,277,281,284,286,287,288,300]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4620a7228db1ac759f383caf97f6ac290ff960f5b3a6f0ee354a1c20b8e5964","signature":"77382d4561c41c7f1c217e726d6f6aa38a169200fc7ff50c3c66b15b0b433633"},{"version":"0fc95f4f97c33ab7360008a16c8a85e951af9d796f737cb2c105e0a3a0b21819","signature":"a325961c943ab31bbafff75052014a113a710c2dee441f8b5f377014dd183e08"},{"version":"eb551a5c7695502785d324fdcbca8cf1846f6a1998e0d154382964f4d6188207","signature":"8e6f381ad5ca9cdec7cb174d73cdfe65316b9e8b85d8cb53b17c5919d080c0ba"},{"version":"2f54f34f48de195990a302b2a80449c1ac08d5baed2e1ea971975f9a965d815e","signature":"bd394cc5b0cd7c90bdba53f07e7336bc76c5a20bb1ac80d5a2b7b1740f67455d"},{"version":"fd5c4eb2e87b90a60757e3239935a49cfe3c16d5c2a3b54d4391ce0c328c27a5","signature":"846995ee7c81645f01f3c16fec03735a58765085002ac0e8a9105d8f979cdd48"},{"version":"8ddd7cebc7afc3da3f9d8762a177d40664504ce6b5a16fb49723239116ec6ee3","signature":"02ce9c0384949a1ae6b66261ec44a5f6042c8a7ef2a4beb6770fba99733f5748"},{"version":"45b0306a72fd70f053d007b054054c71c6b98ba69b159f6903f6c59e553f5793","signature":"84b9eaed4481ab613db1c0a25a2a6c7a40ce8d6692a9bb1fd8fa8157da06366b","affectsGlobalScope":true},{"version":"d4a981aa17cdaaa32a844391c0e4a32c50a4e9804daa3b1b7320cf061b93f1d7","signature":"44f7a0dfaac104aab17d3d5a201de0283031acd2a903adb97f2a0e88a5ef5ff7"},{"version":"43332459ecd48794c13ee0b28981c56dfae31eedba7966ac539627652f6f11bd","signature":"1dd0b3bc39f1465d0d4148dd398c81e4feca2ed69f281fff9d95f82ad444272d"},{"version":"83cf8665215a145e6f4f1aa1995d2e41b4036dcf0ee092b59abb3e12ac2432e8","signature":"aa1f5214ce50a5f49ece45b9ae65063ebe6d9d536427d79bb0c80e0c0b04a37f"},{"version":"8478958c5e5b71212671131cab3ca33c11600aa5f44edab3de4382c39ebbdc22","signature":"44129e87211caa9ce0b1f4c2670fcaa294bb0244d6fc17a9191c5ede355a771f"},{"version":"131e19af104b68f823a2df3a5a693edd6f023053d38d22cd2f72d941d296c738","signature":"714b3a67f42223cbc46634320136e4ddf361080ff1c6cc60522e4e157b91d071"},{"version":"17856ce9c5359c3cadee2ca603668960b3886058616736e3dc248ceca9483d96","signature":"355893155b6e80bb1d801e19ecf8b00c1c837681b0876f0571afb9a12325e43f"},{"version":"ace6da2c857bc7fc3b250a9e4dc5f462acd19b0e5be17911f9260335430f07d4","signature":"e952ca3573ffb9a7c857827ef9c4c5d4a1bfb5b637f74ded612c7a8c4c233a29"},{"version":"d6ad2403f155b160afe2935393fb23862655c389228ac06ab340b2fb98194be3","signature":"f5cc6f83ceb23533e2987a93ec5954a12d5160b747cbd1401c99d18864ceb6f5"},{"version":"101be1abb189e58669169dd099eea6d37fc39789bce322fab51047534674293a","signature":"65356322bdafd6fa656c283b03b72b06bbf1f6530dfd580a68deb5e8d21b87c9"},{"version":"a5a58e76fe2f6e64563b3262794d950c3f46b80f0399858491a7148386c4e491","signature":"02bc4043a44104a84dab0d5d55a6bf782a8e9b64af8f3c5c5726ff67488f7e78"},{"version":"b722bc2203f33b0d020c38101987257258e4ca5c7e6ce53b49cddac9250bdb82","signature":"910d59a48f64103da132d9237939e9fe50db6e75387c1f7da13e8c12508f5b89"},{"version":"25c49a7f248a281ddcf75d21bc15ab23a0778d22780077e8937109c431b8f896","signature":"d6b0e607130a8bcc06dfc38a02c2b5606c785c84201c6b02ddd1b9838ffa2797"},{"version":"e5c48fc24668fa028ebfe55d6d2b7d28eab9d1f0e1ab60c9be38e59d62291f80","signature":"d6cef77c354a4c3d39a7465388b4d3d0d5c65ba0a5f82b603502d1928fe31f65"},{"version":"db0906b74ba34c8e2af44aafb6e7663204ed7e388c19ccb6dd5ef6dceda78bf9","impliedFormat":99},{"version":"2ffb859c2f9cb91dbadb510667ecceef2891efa5e50cb7550026a6432682ed65","impliedFormat":99},{"version":"0ce09beaa0983c235e5dd1c8c5d245c398ed80b283bd11053428f1fe0013a660","impliedFormat":99},{"version":"35b3e3d812a457ba8b1d32cd4d4a8487307c45393dbe4c86a2dd2aecfc5f8fa5","impliedFormat":99},{"version":"2902cac5ab51336be68990d1a04321481c48c213b013603497fa74b3da60402e","signature":"4b4d0eda97ae760b0d5b2c9e27aecde67465a3e1f28d81ee6433deaf6ee105db"},"c1046e0dfb0ca32f7d36dedaef4ab86c46bb38809ec7879a81a58488a491ab70",{"version":"487109cf6d966fedc8b9123f9881ffbc6875318538ada4a65025d6a72bb5b191","signature":"8e955595f90c2728320df1c335d8762dd2f390a365a929dc76ffe4162aebebf4"},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"1aa53fff8e30c86e74eceb7514d715efa71c7820e5eb8bce70e2dd1b5a8b13ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"d854b2f06015f4241109d05b4b214d9f1fdd5fb15d2606843a8e0d6cd795a37d","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"cdeae34aca6700620ebf3f27cf7d439c3af97595dd6e2729fa4780483add5680","impliedFormat":99},{"version":"3ff87ea3471b51beaf4aa8fd8f4422862b11d343fdbb55bf383e0f8cc195a445","impliedFormat":99},{"version":"99bdf729529cdbf12e2bf76ea751b662011133dcf9e35abcb3def47bb02f7b0a","impliedFormat":99},{"version":"732fb71ecb695d6f36ddcbb72ebfe4ff6b6491d45101a00fa2b75a26b80d640f","impliedFormat":99},{"version":"039cb05125d7621f8143616c495b8e6b54249c4e64d2754b80ff93867f7f4b01","impliedFormat":99},{"version":"1b81f1fa82ad30af01ab1cae91ccaddc10c48f5916bbd6d282155e44a65d858d","impliedFormat":99},{"version":"a0fc7a02a75802678a67000607f20266cf1a49dc0e787967efe514e31b9ed0c3","impliedFormat":99},{"version":"5ebf098a1d81d400b8af82807cf19893700335cf91a7b9dbd83a5d737af34b11","impliedFormat":99},{"version":"101cf83ac3f9c5e1a7355a02e4fbe988877ef83c4ebec0ff0f02b2af022254a3","impliedFormat":99},{"version":"d017e2fcd44b46ca80cd2b592a6314e75f5caab5bda230f0f4a45e964049a43a","impliedFormat":99},{"version":"a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","impliedFormat":99},{"version":"07be608f316f64514f5cc650b9f10053e31390743c385e64d6c7734ca48b53f5","impliedFormat":99},{"version":"39432baa20744a664f57d01b9de0af90fe70b8af955409c048e656fcfcc42efa","impliedFormat":99},{"version":"b7df6bfab8fc477f016d607ec9ff6dd71ff7b33c8bd3262f6886cb7f1fd39fa9","impliedFormat":99},{"version":"cf6598943fca6f9b06215c442627a0eacddac06547cee9f785f6c2c64e15a723","impliedFormat":99},{"version":"dc24da4a8d1af9a2ea908142e11a09c4574cb4d1135060aeda42a5f016961623","impliedFormat":99},{"version":"77537cefd19cb6912cd4d70abe9f159ded70463db9dfba43d78b96d425c31960","impliedFormat":99},{"version":"25d5a8f05e1c4225f718beca2610465a2f4d317d3f1344dceb342a29af57a1eb","impliedFormat":99},{"version":"c42f9b18f5f559b133cf9b409f678afb30df9c6498865aae9a1abad0f1e727a8","impliedFormat":99},{"version":"eabff483c855b848eefb979dbfb64c8858444c56a2f3ea0e59de026ef03fd089","impliedFormat":99},{"version":"400d9c9e62ba083ec1a47823363d614199780342d3be57d465013eea5066676f","impliedFormat":99},{"version":"f85da7cd171eaf3f3d6d9cb3761205c1087338ab828ec7ee384b06b3cca7364d","impliedFormat":99},{"version":"1308479c593c3d337bd9c438ac1d7164006a9286638cec0b26e3331a978f91d4","impliedFormat":99},{"version":"a8160911097fda939fb60190248ba77c9bf63b6f80969bfaf2a06dfa5dac7820","impliedFormat":99},{"version":"5168146f37ec3a1af1026cf7c0f0654be0081d1a8ba8dce6bf098a1301f32a0e","impliedFormat":99},{"version":"7455f2d44bbd248413e4ab8c3ff847413d9ce327967dba66f0b51880f60fb653","impliedFormat":99},{"version":"9dd82c87281e106bdcb227550251fcc6b55a6eb555152bec5c6ce408345ffc57","affectsGlobalScope":true,"impliedFormat":99},{"version":"38df32d74f5cb92d08a7ace088d631e65fd4ae41fd1098ef74ad8efab03763ac","impliedFormat":99},{"version":"ff169075cb4df455eaa1dc4972416ae6981adca96429ed698a306da3d5a2e241","impliedFormat":99},{"version":"5dd01302b91c8fb2aea381396623c5463c47a41c1b5d675672a075c5d8aa164c","affectsGlobalScope":true,"impliedFormat":99},{"version":"f3731eb0da8be50797a04467e9021082654c55d6cbabaf17a9d505c0ff3033cc","impliedFormat":99},{"version":"6146b370459b8f7e81f61b7dd9022fb06509cc20d34514dc782c9ce538fd8ec9","impliedFormat":99},{"version":"a585baba6d92b7f5052a11c3a5d0bcc73657180bb6066cf70e1b4664df4e8363","impliedFormat":99},{"version":"1aacab8ad3bd52a3a508b9c07bb341d680448fc9ee45591708ded8113c1be517","impliedFormat":99},{"version":"f0d4da8c4cc589095f0c2dc87ba5cd73394c382b54793357b6cf821dbd26c8e4","impliedFormat":99},{"version":"bd4d6d739dd1cb137d25bbf1e6ec32f527b90aa11716fc7bf905b475d8ec583f","impliedFormat":99},{"version":"aaf4664f3932ae884a54f2bd38d0b02af6e6f57d2ab3baa13437de16960c9526","impliedFormat":99},{"version":"6799930dddefea219a3bcf1bc4273f4a52eafd4fc093bcf966af776cdcade26e","signature":"0fdef55c74ab118fe261dc60ba57811df3534ba4f780d5ae43e029fb1815c0b6"},{"version":"ab14a06630678330603110b67a623e4e9ba9e836fb116d229e4232ca096d0a03","signature":"c8cb187d816ef34c1d8e9c81a0813fbd435c9397b8035354e7b2e20554711dd4"},{"version":"15ed825a18eca1e7ed83ae84ab23f42eb32ba5d25cebe0a0f4f9e3fd4291f5de","signature":"99f9b8c69bccfd709eec8984385695fa3b039c5cfe6c387b4db2fa1920853fa6"},{"version":"316946a0a4a5bd67b65e23169164881de6b483a36d2d4691e09794ba764f9319","signature":"e73583a19f78a04f29f795c6e6a435125fbb9a4ef50e06443e408ec00934f6db"},{"version":"7be480358318b60043954553d966b920218598ece0f142c525d5cfcfe37d193d","impliedFormat":99},{"version":"8bb8931e629d9adfac6fe0c067de1a3c2f82b47262f83fa76eb0772ef13808e8","impliedFormat":99},{"version":"fb605fccb30512c9291061c381cba041e06b51d10479d1589441e9468a32363e","impliedFormat":99},{"version":"635052f2979263b7be4665514c303fd56bceabe15d793c6f393fc1214996966a","impliedFormat":99},{"version":"1b9e4008b4d5a38f78252b3d29f29022edf9a1e8c598f2d2f75db756487716af","signature":"d73c8d7ba4b8515fdc950cc6fa10b91f55fabc0e41b47c2d6f3fe4b742c827a0"},{"version":"0572572de5898a223b5228936a696ffff9a7f32fd3f5c9bc4eba2b2e3ad0aeac","signature":"980977017c9076be180a8058dd182bae54bb82160dd60b5b7dda8b280a4e6de3"},{"version":"a2592541ed6c51764159adcc63b663d108a4d7556c71ac07c2ad66d2990559ca","signature":"3b7303058fd7a289ae8670b40ba075b0f42af8a799dad163dbb01fef702a144c"},{"version":"7010db72749a9397d61a09f731f4cca4da77699b9c23c49e49ceeffb5a013bcf","signature":"93436e11c90c5fe84dce49ffc7959c457fe92a45e81bf25678d1e7b5e60059a1"},{"version":"6caca5b4e2445888135d92ec18be1a660337c903d28c48a7b29008ccce13b373","signature":"8f1b6eb506e148f32d3e66d4b16bb803fb756628208278a64753b98fce4336c0"},{"version":"778d365f9c1a82b39e4cc8147b376eba821f9c34b6e7b2b6b1d9c829e38a6c71","signature":"e4a0f3071ac77aa9dede976a20799f567cfa80e3411a226d532965cc776c6ff2"},{"version":"913fb847eccbb3012b2888933f0c344d5687eae71aa3e980c867f9d0d1f35110","signature":"a46cf64bae7e6eec99bb58416100cb723065f176732bd17765823fbf481ef7cf"},{"version":"47be7c853096ed3acced1a9f565c27c2c6de77aebfb30ecd04469b55cc945ec2","signature":"c502b1bdcc1b780e7372a485bdc3fe588f5e2b23ae34218418dedd53cf9d5af5"},{"version":"f8a24edaf86f4270100ed356c9b74ce29268aaeb05c7f808a5d4d1acb39be573","signature":"05fbbd6dba7f639619ed92dbf07980ebdd8b005926771ee21aa4e6cf555372c9"},{"version":"08cd0ab405c777eb715b3ad85fb36601d0ac76e3c6adaf4cc1713ec46c08cacc","signature":"303caabae4766527137e44797b237661bf011bfa06cd696656a6a58703a640b8"},{"version":"d8dc78ec0a3dc3d572241d60114e206eb52c702d8e50cd65e0bff9b55d8b3e2a","signature":"79977acacff453e0f196689a91123bb34f8e05c3faff6362f32a0f362a834b6c"},{"version":"72c0f159ff5284e89a4b70342c655f810272b22afddaef017b726aff4acde373","signature":"3ea8f68206113cdf7d4ea2713e7fbeca53dca01dbb37e838ae93246da0b6e3f7"},{"version":"5ba86f64dbaa08c0c799710953b7277e198c06e36efa9c1103774e7119c6ef7c","impliedFormat":99},{"version":"96f7fedbfb6cd6a4d82c32ccd3550a4017fbf52c288914d13a5fdf3a3d62c120","impliedFormat":99},{"version":"3a421e6546d80f45481c48c4f5faf65c61cf0b58b448a7094cd76802a1f36aca","signature":"8c4d096f9f553faa127a40479e1416e4af1a2433a66fd7922c2b1666a3a9297c"},{"version":"ed6a1d687b4f44bf7da747980ff6be66ffb2190d7c4f38bd0c0b42b778b74df5","signature":"1015fb207a9fb846cf147b48b96daf0c0b33b0d5789c23a011d81b70d16a933e"},{"version":"a73bbde9782ceb299f168dba55ba42a2bf0e6dcf53e5bb3e319bef1113715fc3","signature":"36e78d6da703f5ac3597575cbbd03163295690b04ce76e5e9fa7e5ad6d327820"},{"version":"75651902abcd4e98d079490eae6280e8884ab060e738874c8b3504fd3c1c8a13","signature":"4f70627ec4a7910c384176fd8967c84dafdd94439ece3002ac6348547c4be48b"},{"version":"a4bbe05f59182f4ce279bf92b2fcf9ce52fe1a9feba61867aa97e11eaa1912aa","impliedFormat":99},{"version":"1b9d0b8dbfe4d820b52271376daab06fde5205e840010c63c7b0f53458ece5bc","impliedFormat":99},{"version":"29d5ef7214ee6cd218833441ecd24ab13fd609367b1642504c74e991543eb9cf","signature":"12f5c2f1a99c7e41b86419455a624534cf301c34f1a22d5ec190f5ddfbf2bbe2"},{"version":"b23c7aaf796c000c7a8602c0886714158c734de5856e87aef4177024601cb948","signature":"9b1ccd2e8acbfb68f8803da8e9296435114d14f014e5df1f9b3b312876fa2c66"},{"version":"33b3c0269bf9dd055b94fe52c0e7e26b8a764274f2270a4a3d4a3ee2872165ba","impliedFormat":99},{"version":"d1582f9207d41195866824dd3b7864bd9f6e3f8ec7ef1200f37b3d80c8ea6ba1","impliedFormat":99},{"version":"01f9bade4ea5db62464fed4f6bda2abc928862000baae48a0f54cfffc1af3cc6","impliedFormat":99},{"version":"f1ed4b327880fa467f6b7b8a8f0c0a182901213ec4bc732a1de32a24f959424a","impliedFormat":99},{"version":"1f527f5aa7667cf13cd61a83327ac127bd9be0fe705517bec56abd7f93a3267d","impliedFormat":99},{"version":"930371ee0f953df416ac187dc69f9d469e1808f05023410d8864ddbe4c877731","impliedFormat":99},{"version":"fe0150ce20bc36bcc4250e562b951073a27c3665bf58c5c19defcdcb4c124307","impliedFormat":99},{"version":"1287b82bfb7169da991900975e76543c3c21c42733bee7378e5429cb367e016a","impliedFormat":99},{"version":"14cb75ba862b72eb71e62062abb678eed961d0c3cb5c5509865929187d3bc22b","impliedFormat":99},{"version":"273570ff6139f4a05a8863a933c28a6b5033b6d4dba515d06ad71a3efa766685","impliedFormat":99},{"version":"3cede24c7dbb210a05b2199edb8d37a604fd2000087a92809c5f321b96b9060e","impliedFormat":99},{"version":"56bf46d943e202a7fbdd6de1b00ce794b414b7a640bca3d1bed7e98f983df8c2","impliedFormat":99},{"version":"eb5b855ca3d65fd100bbf97317def7be3ecb5aa27003e931712550dc9d83808f","impliedFormat":99},{"version":"bb7e70394dd1808fb08a28cf74bb5a59d5e8b2e3a79f601cfe4231b6f671a8a8","impliedFormat":99},{"version":"426c7929dba2c15eef2da827c7fea629df1789865eb7774ad4ffeef819944adc","impliedFormat":99},{"version":"a42d343866ab53f3f5f23b0617e7cfcd35bded730962d1392d2b782194ce1478","impliedFormat":99},{"version":"90c0c132340dbfd22e66dd4faa648bbdd0d1bea8c84d24850d75ae02dbc85f8e","impliedFormat":99},{"version":"2f7ae32421d8c12ee799ff5861b49fdd76d9120d152a54e6731cbfb45794c00d","impliedFormat":99},{"version":"da735780043c7b7382319b246c8e39a4fa23e5b053b445404cd377f2d8c3d427","impliedFormat":99},{"version":"d25f105bc9e09d3f491a6860b12cbbad343eb7155428d0e82406b48d4295deff","impliedFormat":99},{"version":"5994371065209ea5a9cb08e454a2cde716ea935269d6801ffd55505563e70590","impliedFormat":99},{"version":"201b08fbbb3e5a5ff55ce6abe225db0f552d0e4c2a832c34851fb66e1858052f","impliedFormat":99},{"version":"a95943b4629fee65ba5f488b11648860e04c2bf1c48b2080621255f8c5a6d088","impliedFormat":99},{"version":"84fa8470a1b177773756d9f4b2e9d80e3d88725aba949b7e9d94a92ca723fb0e","impliedFormat":99},{"version":"f5f060d4b4a0ec3b177023d358efbf370f4065bf653497d9b57b8bbc3d8c9e41","signature":"2f4d80dbcc2492cd76a061c57192d4bebf7a25a160ba83d21babef5f499bda55"},{"version":"bfc4f8091bb3bccc4c8a902bbcc19072fa21c58e6cfb57c77dcf37314e98574c","signature":"f5254db9469f82008bdbffba74d78c00af0cb13090ad730824afb5184604dc62"},{"version":"e3ddfeb2e6ea38b2b7f1fc92d9a9aecd8d1c2decae8f09b39a7313b1ed0d47e0","signature":"923bd0d37bdfe3c1f584524d277f9014e68a6d072c3b699bc8930e22d74be7a1"},{"version":"9df9c6bdb0f9f8f39d1c919093544ba8242a0bf9ece6131e97eb55762d4b819f","signature":"25d42870e338a084db96d7ea7329099f53b6536e029ae8e0c7870c3ab26f4674"},{"version":"6cb42c4809cce8e3be321f22e2bd048c6f216600ce0ccc7f9d6b9ac04aab7989","signature":"151e5fc9a09fe5a9d58052c4b3e0fd10c9812729b6ca6814c571189145d2dc95"},{"version":"9f389287dfa9ce002232fd18bbc2f3d13f2d793ec3f480cfece4afe19deb0d0f","signature":"ab76f499b68730af823b6d86b161597230872b41e9c90f5b46c920c64f6645da"},{"version":"1da272d80775d46083dfc19d086e86bb4e7ae7d04458d36ec8f811f7e37612e1","signature":"3cca325430ad8319a3b986a84763c504d9c369fd951e912098f60e44cf29d20b","affectsGlobalScope":true},{"version":"1ec7715a3b5c1f1b2a773c618d96d8f1581577a847877a51a88fe77cd259e3df","signature":"b36242c9cf8f73f3aaedcc3041f60414a5ee325798160f634d892affbbb54624"},{"version":"67b3397e2b1a89f5fd2ca994b6f24eeae98347c6d4ea3b6100fa3a52088e1812","signature":"a08cb0f2d0a007fe9194def2d7b1e851308640e56de51864c797651b53719d43"},{"version":"9b6efe272e635c61dd59f8d3356521d65a07bf34b1f0d48d555ff248c3a1aa48","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"4504c8eb866a8505b83d83987ac3d4d3454d70c84f180193e2504e85f51c6d8e","signature":"1aa022c675d9ade9fd2c5413fab0d515819d03c8f21400bddeede53b189de3bb"},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"dd0109710de4cd93e245121ab86d8c66d20f3ead80074b68e9c3e349c4f53342","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"cf83d90d5faf27b994c2e79af02e32b555dbfe42cd9bd1571445f2168d1f4e2d","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"0e28335ac43f4d94dd2fe6d9e6fa6813570640839addd10d309d7985f33a6308","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"836b1d038d400811f265b04c758e1ef0fb64d915499a4ef590acc54761875075","affectsGlobalScope":true,"impliedFormat":1},{"version":"961cf7535b9c521cd634055b1b6ac49b94d055f0b573ce7fdc4cfaddab080b7c","impliedFormat":1},{"version":"806a8c6daae69e5695e7200d9eca6bc1e4298f38d90edda3ce67a794da31a24f","impliedFormat":1},{"version":"ac86245c2f31335bfd52cbe7fc760f9fc4f165387875869a478a6d9616a95e72","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"9d96a7ce809392ff2cb99691acf7c62e632fe56897356ba013b689277aca3619","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"27c0a08e343c6a0ae17bd13ba6d44a9758236dc904cd5e4b43456996cd51f520","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"6f80e51ba310608cd71bcdc09a171d7bbfb3b316048601c9ec215ce16a8dcfbc","impliedFormat":1},{"version":"a3bdc774995d56caaac759a424831091bb22450ca3590f34dae53d98323be191","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"2ca2bca6845a7234eff5c3d192727a068fca72ac565f3c819c6b04ccc83dadc0","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"17d06eb5709839c7ce719f0c38ada6f308fb433f2cd6d8c87b35856e07400950","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"6c00f77f0335ae0c18bd45a6c7c9c97c9625fb7e5dd6d5936eadf70718bce52e","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"586eaf66bace2e731cee0ddfbfac326ad74a83c1acfeac4afb2db85ad23226c7","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"d1a14d87cedcf4f0b8173720d6eb29cc02878bf2b6dabf9c9d9cee742f275368","impliedFormat":1},{"version":"e60efae9fe48a2955f66bf4cbf0f082516185b877daf50d9c5e2a009660a7714","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"cd9189eacf0f9143b8830e9d6769335aa6d902c04195f04145bcbf19e7f26fcb","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"f429b61e369208ef7668ebf1dc63176e506fbfaea7b0ecc13d586a5839ebb071","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"f429b61e369208ef7668ebf1dc63176e506fbfaea7b0ecc13d586a5839ebb071","affectsGlobalScope":true,"impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"a109c4289d59d9019cfe1eeab506fe57817ee549499b02a83a7e9d3bdf662d63","impliedFormat":1},{"version":"169cc96316cacf8b489aaab4ac6bcef7b33e8779a8902bce57c737b4aa372d16","impliedFormat":1},{"version":"8f337cd0829439b8eb60ef076f30c0cbf7e2b2490ff4b048cfb98bedeb0b52c6","impliedFormat":1},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[[66,85],[90,92],[139,142],[147,158],[161,164],167,168,[193,203]],"options":{"composite":true,"declaration":true,"declarationMap":true,"inlineSources":false,"module":99,"noFallthroughCasesInSwitch":true,"noUnusedLocals":false,"noUnusedParameters":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"referencedMap":[[135,1],[128,2],[132,3],[129,4],[131,5],[127,3],[134,4],[133,4],[130,6],[93,3],[102,3],[103,7],[106,8],[104,8],[108,8],[111,9],[110,8],[109,8],[107,8],[105,10],[94,3],[95,11],[126,12],[125,13],[123,14],[122,15],[327,16],[326,17],[339,18],[341,19],[343,3],[171,3],[345,20],[192,21],[346,22],[177,23],[183,24],[178,3],[181,25],[182,3],[191,26],[186,27],[188,28],[189,29],[190,30],[184,3],[185,30],[187,30],[180,30],[179,3],[344,3],[176,31],[172,3],[173,3],[175,32],[174,3],[266,33],[267,33],[268,34],[206,35],[269,36],[270,37],[271,38],[204,3],[272,39],[273,40],[274,41],[275,42],[276,43],[277,44],[278,44],[279,45],[280,46],[281,47],[282,48],[207,3],[205,3],[283,49],[284,50],[285,51],[325,52],[286,53],[287,54],[288,53],[289,55],[290,56],[291,57],[292,58],[293,58],[294,58],[295,59],[296,60],[297,61],[298,62],[299,63],[300,64],[301,64],[302,65],[303,3],[304,3],[305,66],[306,67],[307,66],[308,68],[309,69],[310,70],[311,71],[312,72],[313,73],[314,74],[315,75],[316,76],[317,77],[318,78],[319,79],[320,80],[321,81],[322,82],[208,53],[209,3],[210,83],[211,84],[212,3],[213,85],[214,3],[257,86],[258,87],[259,88],[260,88],[261,89],[262,3],[263,36],[264,90],[265,87],[323,91],[324,92],[348,3],[340,93],[97,3],[351,94],[215,3],[99,95],[120,96],[96,97],[143,96],[136,3],[159,98],[165,96],[145,96],[169,96],[100,3],[98,99],[121,100],[112,101],[119,102],[144,103],[137,104],[160,105],[166,106],[146,107],[170,108],[124,97],[101,109],[116,110],[114,3],[113,3],[118,111],[115,110],[117,112],[86,3],[87,3],[88,3],[89,3],[138,3],[64,3],[65,3],[11,3],[12,3],[14,3],[13,3],[2,3],[15,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[3,3],[23,3],[24,3],[4,3],[25,3],[29,3],[26,3],[27,3],[28,3],[30,3],[31,3],[32,3],[5,3],[33,3],[34,3],[35,3],[36,3],[6,3],[40,3],[37,3],[38,3],[39,3],[41,3],[7,3],[42,3],[47,3],[48,3],[43,3],[44,3],[45,3],[46,3],[8,3],[52,3],[49,3],[50,3],[51,3],[53,3],[9,3],[54,3],[55,3],[56,3],[58,3],[57,3],[59,3],[60,3],[10,3],[61,3],[1,3],[62,3],[63,3],[233,113],[245,114],[231,115],[246,116],[255,117],[222,118],[223,119],[221,120],[254,121],[249,122],[253,123],[225,124],[242,125],[224,126],[252,127],[219,128],[220,122],[226,129],[227,3],[232,130],[230,129],[217,131],[256,132],[247,133],[236,134],[235,129],[237,135],[240,136],[234,137],[238,138],[250,121],[228,139],[229,140],[241,141],[218,116],[244,142],[243,129],[239,143],[248,3],[216,3],[251,144],[330,145],[331,146],[328,3],[332,3],[336,147],[337,3],[342,3],[347,3],[334,3],[335,3],[333,148],[338,149],[350,150],[349,3],[329,3],[92,151],[84,152],[85,153],[90,154],[71,155],[70,3],[72,156],[200,157],[202,158],[91,3],[73,3],[75,159],[78,160],[79,3],[83,161],[80,159],[81,3],[74,3],[82,3],[77,162],[68,3],[76,3],[67,163],[66,3],[69,164],[147,165],[148,166],[149,167],[150,165],[151,168],[141,169],[139,170],[198,171],[152,165],[195,172],[194,173],[193,174],[153,167],[154,165],[155,175],[156,167],[161,176],[158,177],[142,178],[162,168],[163,179],[140,180],[164,181],[167,182],[168,179],[196,183],[199,184],[157,185],[203,3],[197,165],[201,186]],"latestChangedDtsFile":"./src/0.8/ui/utils/youtube.d.ts","version":"5.9.3"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/core.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/core.d.ts
new file mode 100644
index 0000000000..ded8a1fabd
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/core.d.ts
@@ -0,0 +1,752 @@
+export * as Events from "./events/events.js";
+export * as Types from "./types/types.js";
+export * as Primitives from "./types/primitives.js";
+export * as Styles from "./styles/index.js";
+import * as Guards from "./data/guards.js";
+import { create as createSignalA2uiMessageProcessor } from "./data/signal-model-processor.js";
+import { A2uiMessageProcessor } from "./data/model-processor.js";
+export declare const Data: {
+ createSignalA2uiMessageProcessor: typeof createSignalA2uiMessageProcessor;
+ A2uiMessageProcessor: typeof A2uiMessageProcessor;
+ Guards: typeof Guards;
+};
+export declare const Schemas: {
+ A2UIClientEventMessage: {
+ title: string;
+ description: string;
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ beginRendering: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ surfaceId: {
+ type: string;
+ description: string;
+ };
+ root: {
+ type: string;
+ description: string;
+ };
+ styles: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ font: {
+ type: string;
+ description: string;
+ };
+ primaryColor: {
+ type: string;
+ description: string;
+ pattern: string;
+ };
+ };
+ };
+ };
+ required: string[];
+ };
+ surfaceUpdate: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ surfaceId: {
+ type: string;
+ description: string;
+ };
+ components: {
+ type: string;
+ description: string;
+ minItems: number;
+ items: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ id: {
+ type: string;
+ description: string;
+ };
+ weight: {
+ type: string;
+ description: string;
+ };
+ component: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ Text: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ text: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ usageHint: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ };
+ required: string[];
+ };
+ Image: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ url: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ fit: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ usageHint: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ };
+ required: string[];
+ };
+ Icon: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ name: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ enum: string[];
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ };
+ required: string[];
+ };
+ Video: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ url: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ };
+ required: string[];
+ };
+ AudioPlayer: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ url: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ description: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ };
+ required: string[];
+ };
+ Row: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ children: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ explicitList: {
+ type: string;
+ items: {
+ type: string;
+ };
+ };
+ template: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ componentId: {
+ type: string;
+ };
+ dataBinding: {
+ type: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ distribution: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ alignment: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ };
+ required: string[];
+ };
+ Column: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ children: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ explicitList: {
+ type: string;
+ items: {
+ type: string;
+ };
+ };
+ template: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ componentId: {
+ type: string;
+ };
+ dataBinding: {
+ type: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ distribution: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ alignment: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ };
+ required: string[];
+ };
+ List: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ children: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ explicitList: {
+ type: string;
+ items: {
+ type: string;
+ };
+ };
+ template: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ componentId: {
+ type: string;
+ };
+ dataBinding: {
+ type: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ direction: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ alignment: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ };
+ required: string[];
+ };
+ Card: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ child: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ Tabs: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ tabItems: {
+ type: string;
+ description: string;
+ items: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ title: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ child: {
+ type: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ required: string[];
+ };
+ Divider: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ axis: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ };
+ };
+ Modal: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ entryPointChild: {
+ type: string;
+ description: string;
+ };
+ contentChild: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ Button: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ child: {
+ type: string;
+ description: string;
+ };
+ primary: {
+ type: string;
+ description: string;
+ };
+ action: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ name: {
+ type: string;
+ };
+ context: {
+ type: string;
+ items: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ key: {
+ type: string;
+ };
+ value: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ path: {
+ type: string;
+ };
+ literalString: {
+ type: string;
+ };
+ literalNumber: {
+ type: string;
+ };
+ literalBoolean: {
+ type: string;
+ };
+ };
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ required: string[];
+ };
+ };
+ required: string[];
+ };
+ CheckBox: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ label: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ value: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalBoolean: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ };
+ required: string[];
+ };
+ TextField: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ label: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ text: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ textFieldType: {
+ type: string;
+ description: string;
+ enum: string[];
+ };
+ validationRegexp: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ DateTimeInput: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ value: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ enableDate: {
+ type: string;
+ description: string;
+ };
+ enableTime: {
+ type: string;
+ description: string;
+ };
+ outputFormat: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ MultipleChoice: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ selections: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalArray: {
+ type: string;
+ items: {
+ type: string;
+ };
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ options: {
+ type: string;
+ description: string;
+ items: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ label: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalString: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ value: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ maxAllowedSelections: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ Slider: {
+ type: string;
+ additionalProperties: boolean;
+ properties: {
+ value: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ literalNumber: {
+ type: string;
+ };
+ path: {
+ type: string;
+ };
+ };
+ };
+ minValue: {
+ type: string;
+ description: string;
+ };
+ maxValue: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ required: string[];
+ };
+ dataModelUpdate: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ surfaceId: {
+ type: string;
+ description: string;
+ };
+ path: {
+ type: string;
+ description: string;
+ };
+ contents: {
+ type: string;
+ description: string;
+ items: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ key: {
+ type: string;
+ description: string;
+ };
+ valueString: {
+ type: string;
+ };
+ valueNumber: {
+ type: string;
+ };
+ valueBoolean: {
+ type: string;
+ };
+ valueMap: {
+ description: string;
+ type: string;
+ items: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ key: {
+ type: string;
+ };
+ valueString: {
+ type: string;
+ };
+ valueNumber: {
+ type: string;
+ };
+ valueBoolean: {
+ type: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+ required: string[];
+ };
+ deleteSurface: {
+ type: string;
+ description: string;
+ additionalProperties: boolean;
+ properties: {
+ surfaceId: {
+ type: string;
+ description: string;
+ };
+ };
+ required: string[];
+ };
+ };
+ };
+};
+//# sourceMappingURL=core.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/core.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/core.d.ts.map
new file mode 100644
index 0000000000..17ef29a9b3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/core.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/0.8/core.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,MAAM,IAAI,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,eAAO,MAAM,IAAI;;;;CAIhB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEnB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/core.js b/vendor/a2ui/renderers/lit/dist/src/0.8/core.js
new file mode 100644
index 0000000000..cf5868f071
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/core.js
@@ -0,0 +1,32 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export * as Events from "./events/events.js";
+export * as Types from "./types/types.js";
+export * as Primitives from "./types/primitives.js";
+export * as Styles from "./styles/index.js";
+import * as Guards from "./data/guards.js";
+import { create as createSignalA2uiMessageProcessor } from "./data/signal-model-processor.js";
+import { A2uiMessageProcessor } from "./data/model-processor.js";
+import A2UIClientEventMessage from "./schemas/server_to_client_with_standard_catalog.json" with { type: "json" };
+export const Data = {
+ createSignalA2uiMessageProcessor,
+ A2uiMessageProcessor,
+ Guards,
+};
+export const Schemas = {
+ A2UIClientEventMessage,
+};
+//# sourceMappingURL=core.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/core.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/core.js.map
new file mode 100644
index 0000000000..f82006baab
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/core.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/0.8/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,MAAM,IAAI,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,sBAAsB,MAAM,uDAAuD,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEjH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,gCAAgC;IAChC,oBAAoB;IACpB,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,sBAAsB;CACvB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.d.ts
new file mode 100644
index 0000000000..afd18ff374
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.d.ts
@@ -0,0 +1,24 @@
+import { ComponentArrayReference, ResolvedAudioPlayer, ResolvedButton, ResolvedCard, ResolvedCheckbox, ResolvedColumn, ResolvedDateTimeInput, ResolvedDivider, ResolvedIcon, ResolvedImage, ResolvedList, ResolvedModal, ResolvedMultipleChoice, ResolvedRow, ResolvedSlider, ResolvedTabs, ResolvedText, ResolvedTextField, ResolvedVideo, ValueMap } from "../types/types";
+export declare function isValueMap(value: unknown): value is ValueMap;
+export declare function isPath(key: string, value: unknown): value is string;
+export declare function isObject(value: unknown): value is Record;
+export declare function isComponentArrayReference(value: unknown): value is ComponentArrayReference;
+export declare function isResolvedAudioPlayer(props: unknown): props is ResolvedAudioPlayer;
+export declare function isResolvedButton(props: unknown): props is ResolvedButton;
+export declare function isResolvedCard(props: unknown): props is ResolvedCard;
+export declare function isResolvedCheckbox(props: unknown): props is ResolvedCheckbox;
+export declare function isResolvedColumn(props: unknown): props is ResolvedColumn;
+export declare function isResolvedDateTimeInput(props: unknown): props is ResolvedDateTimeInput;
+export declare function isResolvedDivider(props: unknown): props is ResolvedDivider;
+export declare function isResolvedImage(props: unknown): props is ResolvedImage;
+export declare function isResolvedIcon(props: unknown): props is ResolvedIcon;
+export declare function isResolvedList(props: unknown): props is ResolvedList;
+export declare function isResolvedModal(props: unknown): props is ResolvedModal;
+export declare function isResolvedMultipleChoice(props: unknown): props is ResolvedMultipleChoice;
+export declare function isResolvedRow(props: unknown): props is ResolvedRow;
+export declare function isResolvedSlider(props: unknown): props is ResolvedSlider;
+export declare function isResolvedTabs(props: unknown): props is ResolvedTabs;
+export declare function isResolvedText(props: unknown): props is ResolvedText;
+export declare function isResolvedTextField(props: unknown): props is ResolvedTextField;
+export declare function isResolvedVideo(props: unknown): props is ResolvedVideo;
+//# sourceMappingURL=guards.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.d.ts.map
new file mode 100644
index 0000000000..7cd5c6652e
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../../src/0.8/data/guards.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,cAAc,EAEd,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEnE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,uBAAuB,CAGlC;AAqCD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAE9B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAOxE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAcpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAQ5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAOxE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAEhC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAOpE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQtE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,sBAAsB,CAEjC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAYD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAOpE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,iBAAiB,CAE5B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.js b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.js
new file mode 100644
index 0000000000..84cfcf0be3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.js
@@ -0,0 +1,153 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export function isValueMap(value) {
+ return isObject(value) && "key" in value;
+}
+export function isPath(key, value) {
+ return key === "path" && typeof value === "string";
+}
+export function isObject(value) {
+ return typeof value === "object" && value !== null && !Array.isArray(value);
+}
+export function isComponentArrayReference(value) {
+ if (!isObject(value))
+ return false;
+ return "explicitList" in value || "template" in value;
+}
+function isStringValue(value) {
+ return (isObject(value) &&
+ ("path" in value ||
+ ("literal" in value && typeof value.literal === "string") ||
+ "literalString" in value));
+}
+function isNumberValue(value) {
+ return (isObject(value) &&
+ ("path" in value ||
+ ("literal" in value && typeof value.literal === "number") ||
+ "literalNumber" in value));
+}
+function isBooleanValue(value) {
+ return (isObject(value) &&
+ ("path" in value ||
+ ("literal" in value && typeof value.literal === "boolean") ||
+ "literalBoolean" in value));
+}
+function isAnyComponentNode(value) {
+ if (!isObject(value))
+ return false;
+ const hasBaseKeys = "id" in value && "type" in value && "properties" in value;
+ if (!hasBaseKeys)
+ return false;
+ return true;
+}
+export function isResolvedAudioPlayer(props) {
+ return isObject(props) && "url" in props && isStringValue(props.url);
+}
+export function isResolvedButton(props) {
+ return (isObject(props) &&
+ "child" in props &&
+ isAnyComponentNode(props.child) &&
+ "action" in props);
+}
+export function isResolvedCard(props) {
+ if (!isObject(props))
+ return false;
+ if (!("child" in props)) {
+ if (!("children" in props)) {
+ return false;
+ }
+ else {
+ return (Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode));
+ }
+ }
+ return isAnyComponentNode(props.child);
+}
+export function isResolvedCheckbox(props) {
+ return (isObject(props) &&
+ "label" in props &&
+ isStringValue(props.label) &&
+ "value" in props &&
+ isBooleanValue(props.value));
+}
+export function isResolvedColumn(props) {
+ return (isObject(props) &&
+ "children" in props &&
+ Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode));
+}
+export function isResolvedDateTimeInput(props) {
+ return isObject(props) && "value" in props && isStringValue(props.value);
+}
+export function isResolvedDivider(props) {
+ // Dividers can have all optional properties, so just checking if
+ // it's an object is enough.
+ return isObject(props);
+}
+export function isResolvedImage(props) {
+ return isObject(props) && "url" in props && isStringValue(props.url);
+}
+export function isResolvedIcon(props) {
+ return isObject(props) && "name" in props && isStringValue(props.name);
+}
+export function isResolvedList(props) {
+ return (isObject(props) &&
+ "children" in props &&
+ Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode));
+}
+export function isResolvedModal(props) {
+ return (isObject(props) &&
+ "entryPointChild" in props &&
+ isAnyComponentNode(props.entryPointChild) &&
+ "contentChild" in props &&
+ isAnyComponentNode(props.contentChild));
+}
+export function isResolvedMultipleChoice(props) {
+ return isObject(props) && "selections" in props;
+}
+export function isResolvedRow(props) {
+ return (isObject(props) &&
+ "children" in props &&
+ Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode));
+}
+export function isResolvedSlider(props) {
+ return isObject(props) && "value" in props && isNumberValue(props.value);
+}
+function isResolvedTabItem(item) {
+ return (isObject(item) &&
+ "title" in item &&
+ isStringValue(item.title) &&
+ "child" in item &&
+ isAnyComponentNode(item.child));
+}
+export function isResolvedTabs(props) {
+ return (isObject(props) &&
+ "tabItems" in props &&
+ Array.isArray(props.tabItems) &&
+ props.tabItems.every(isResolvedTabItem));
+}
+export function isResolvedText(props) {
+ return isObject(props) && "text" in props && isStringValue(props.text);
+}
+export function isResolvedTextField(props) {
+ return isObject(props) && "label" in props && isStringValue(props.label);
+}
+export function isResolvedVideo(props) {
+ return isObject(props) && "url" in props && isStringValue(props.url);
+}
+//# sourceMappingURL=guards.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.js.map
new file mode 100644
index 0000000000..976aa23efc
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/guards.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../../src/0.8/data/guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA4BH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,KAAc;IAChD,OAAO,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,cAAc,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,CAAC,MAAM,IAAI,KAAK;YACd,CAAC,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC;YACzD,eAAe,IAAI,KAAK,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,CAAC,MAAM,IAAI,KAAK;YACd,CAAC,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC;YACzD,eAAe,IAAI,KAAK,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,CAAC,MAAM,IAAI,KAAK;YACd,CAAC,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;YAC1D,gBAAgB,IAAI,KAAK,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,CAAC;IAC9E,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,IAAI,KAAK;QAChB,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,QAAQ,IAAI,KAAK,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC7B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CACzC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,IAAI,KAAK;QAChB,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,OAAO,IAAI,KAAK;QAChB,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,UAAU,IAAI,KAAK;QACnB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,iEAAiE;IACjE,4BAA4B;IAC5B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,UAAU,IAAI,KAAK;QACnB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,iBAAiB,IAAI,KAAK;QAC1B,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC;QACzC,cAAc,IAAI,KAAK;QACvB,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,IAAI,KAAK,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,UAAU,IAAI,KAAK;QACnB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAa;IACtC,OAAO,CACL,QAAQ,CAAC,IAAI,CAAC;QACd,OAAO,IAAI,IAAI;QACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,IAAI,IAAI;QACf,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,UAAU,IAAI,KAAK;QACnB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.d.ts
new file mode 100644
index 0000000000..bedc2dd7a3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.d.ts
@@ -0,0 +1,33 @@
+import { ServerToClientMessage, AnyComponentNode, DataValue, Surface, MessageProcessor } from "../types/types";
+/**
+ * Processes and consolidates A2UIProtocolMessage objects into a structured,
+ * hierarchical model of UI surfaces.
+ */
+export declare class A2uiMessageProcessor implements MessageProcessor {
+ #private;
+ readonly opts: {
+ mapCtor: MapConstructor;
+ arrayCtor: ArrayConstructor;
+ setCtor: SetConstructor;
+ objCtor: ObjectConstructor;
+ };
+ static readonly DEFAULT_SURFACE_ID = "@default";
+ constructor(opts?: {
+ mapCtor: MapConstructor;
+ arrayCtor: ArrayConstructor;
+ setCtor: SetConstructor;
+ objCtor: ObjectConstructor;
+ });
+ getSurfaces(): ReadonlyMap;
+ clearSurfaces(): void;
+ processMessages(messages: ServerToClientMessage[]): void;
+ /**
+ * Retrieves the data for a given component node and a relative path string.
+ * This correctly handles the special `.` path, which refers to the node's
+ * own data context.
+ */
+ getData(node: AnyComponentNode, relativePath: string, surfaceId?: string): DataValue | null;
+ setData(node: AnyComponentNode | null, relativePath: string, value: DataValue, surfaceId?: string): void;
+ resolvePath(path: string, dataContextPath?: string): string;
+}
+//# sourceMappingURL=model-processor.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.d.ts.map
new file mode 100644
index 0000000000..24c428e2b6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"model-processor.d.ts","sourceRoot":"","sources":["../../../../src/0.8/data/model-processor.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAKhB,SAAS,EAIT,OAAO,EAGP,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AA0BxB;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;;IAUzD,QAAQ,CAAC,IAAI,EAAE;QACb,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,OAAO,EAAE,cAAc,CAAC;QACxB,OAAO,EAAE,iBAAiB,CAAC;KAC5B;IAdH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,cAAc;gBASrC,IAAI,GAAE;QACb,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,OAAO,EAAE,cAAc,CAAC;QACxB,OAAO,EAAE,iBAAiB,CAAC;KACwC;IAUvE,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;IAI3C,aAAa;IAIb,eAAe,CAAC,QAAQ,EAAE,qBAAqB,EAAE,GAAG,IAAI;IA6BxD;;;;OAIG;IACH,OAAO,CACL,IAAI,EAAE,gBAAgB,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,SAA0C,GAClD,SAAS,GAAG,IAAI;IAkBnB,OAAO,CACL,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAC7B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,SAAS,EAChB,SAAS,SAA0C,GAClD,IAAI;IAuBP,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM;CAkqB5D"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.js b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.js
new file mode 100644
index 0000000000..c3f60d3a1b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.js
@@ -0,0 +1,628 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { isComponentArrayReference, isObject, isPath, isResolvedAudioPlayer, isResolvedButton, isResolvedCard, isResolvedCheckbox, isResolvedColumn, isResolvedDateTimeInput, isResolvedDivider, isResolvedIcon, isResolvedImage, isResolvedList, isResolvedModal, isResolvedMultipleChoice, isResolvedRow, isResolvedSlider, isResolvedTabs, isResolvedText, isResolvedTextField, isResolvedVideo, } from "./guards.js";
+/**
+ * Processes and consolidates A2UIProtocolMessage objects into a structured,
+ * hierarchical model of UI surfaces.
+ */
+export class A2uiMessageProcessor {
+ static { this.DEFAULT_SURFACE_ID = "@default"; }
+ #mapCtor = Map;
+ #arrayCtor = Array;
+ #setCtor = Set;
+ #objCtor = Object;
+ #surfaces;
+ constructor(opts = { mapCtor: Map, arrayCtor: Array, setCtor: Set, objCtor: Object }) {
+ this.opts = opts;
+ this.#arrayCtor = opts.arrayCtor;
+ this.#mapCtor = opts.mapCtor;
+ this.#setCtor = opts.setCtor;
+ this.#objCtor = opts.objCtor;
+ this.#surfaces = new opts.mapCtor();
+ }
+ getSurfaces() {
+ return this.#surfaces;
+ }
+ clearSurfaces() {
+ this.#surfaces.clear();
+ }
+ processMessages(messages) {
+ for (const message of messages) {
+ if (message.beginRendering) {
+ this.#handleBeginRendering(message.beginRendering, message.beginRendering.surfaceId);
+ }
+ if (message.surfaceUpdate) {
+ this.#handleSurfaceUpdate(message.surfaceUpdate, message.surfaceUpdate.surfaceId);
+ }
+ if (message.dataModelUpdate) {
+ this.#handleDataModelUpdate(message.dataModelUpdate, message.dataModelUpdate.surfaceId);
+ }
+ if (message.deleteSurface) {
+ this.#handleDeleteSurface(message.deleteSurface);
+ }
+ }
+ }
+ /**
+ * Retrieves the data for a given component node and a relative path string.
+ * This correctly handles the special `.` path, which refers to the node's
+ * own data context.
+ */
+ getData(node, relativePath, surfaceId = A2uiMessageProcessor.DEFAULT_SURFACE_ID) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ if (!surface)
+ return null;
+ let finalPath;
+ // The special `.` path means the final path is the node's data context
+ // path and so we return the dataContextPath as-is.
+ if (relativePath === "." || relativePath === "") {
+ finalPath = node.dataContextPath ?? "/";
+ }
+ else {
+ // For all other paths, resolve them against the node's context.
+ finalPath = this.resolvePath(relativePath, node.dataContextPath);
+ }
+ return this.#getDataByPath(surface.dataModel, finalPath);
+ }
+ setData(node, relativePath, value, surfaceId = A2uiMessageProcessor.DEFAULT_SURFACE_ID) {
+ if (!node) {
+ console.warn("No component node set");
+ return;
+ }
+ const surface = this.#getOrCreateSurface(surfaceId);
+ if (!surface)
+ return;
+ let finalPath;
+ // The special `.` path means the final path is the node's data context
+ // path and so we return the dataContextPath as-is.
+ if (relativePath === "." || relativePath === "") {
+ finalPath = node.dataContextPath ?? "/";
+ }
+ else {
+ // For all other paths, resolve them against the node's context.
+ finalPath = this.resolvePath(relativePath, node.dataContextPath);
+ }
+ this.#setDataByPath(surface.dataModel, finalPath, value);
+ }
+ resolvePath(path, dataContextPath) {
+ // If the path is absolute, it overrides any context.
+ if (path.startsWith("/")) {
+ return path;
+ }
+ if (dataContextPath && dataContextPath !== "/") {
+ // Ensure there's exactly one slash between the context and the path.
+ return dataContextPath.endsWith("/")
+ ? `${dataContextPath}${path}`
+ : `${dataContextPath}/${path}`;
+ }
+ // Fallback for no context or root context: make it an absolute path.
+ return `/${path}`;
+ }
+ #parseIfJsonString(value) {
+ if (typeof value !== "string") {
+ return value;
+ }
+ const trimmedValue = value.trim();
+ if ((trimmedValue.startsWith("{") && trimmedValue.endsWith("}")) ||
+ (trimmedValue.startsWith("[") && trimmedValue.endsWith("]"))) {
+ try {
+ // It looks like JSON, attempt to parse it.
+ return JSON.parse(value);
+ }
+ catch (e) {
+ // It looked like JSON but wasn't. Keep the original string.
+ console.warn(`Failed to parse potential JSON string: "${value.substring(0, 50)}..."`, e);
+ return value; // Return original string
+ }
+ }
+ // It's a string, but not JSON-like.
+ return value;
+ }
+ /**
+ * Converts a specific array format [{key: "...", value_string: "..."}, ...]
+ * into a standard Map. It also attempts to parse any string values that
+ * appear to be stringified JSON.
+ */
+ #convertKeyValueArrayToMap(arr) {
+ const map = new this.#mapCtor();
+ for (const item of arr) {
+ if (!isObject(item) || !("key" in item))
+ continue;
+ const key = item.key;
+ // Find the value, which is in a property prefixed with "value".
+ const valueKey = this.#findValueKey(item);
+ if (!valueKey)
+ continue;
+ let value = item[valueKey];
+ // It's a valueMap. We must recursively convert it.
+ if (valueKey === "valueMap" && Array.isArray(value)) {
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ else if (typeof value === "string") {
+ value = this.#parseIfJsonString(value);
+ }
+ this.#setDataByPath(map, key, value);
+ }
+ return map;
+ }
+ #setDataByPath(root, path, value) {
+ // Check if the incoming value is the special key-value array format.
+ if (Array.isArray(value) &&
+ (value.length === 0 || (isObject(value[0]) && "key" in value[0]))) {
+ // Check for "set primitive at path" convention:
+ // path: "/messages/123", contents: [{ key: ".", valueString: "hi" }]
+ if (value.length === 1 && isObject(value[0]) && value[0].key === ".") {
+ const item = value[0];
+ const valueKey = this.#findValueKey(item);
+ if (valueKey) {
+ // Extract the primitive value
+ value = item[valueKey];
+ // We must still process this value in case it's a valueMap or
+ // a JSON string.
+ if (valueKey === "valueMap" && Array.isArray(value)) {
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ else if (typeof value === "string") {
+ value = this.#parseIfJsonString(value);
+ }
+ // Now, `value` is the primitive (e.g., "hi"), and we continue
+ // the function.
+ }
+ else {
+ // Malformed, but fall back to existing behavior.
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ }
+ else {
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ }
+ const segments = this.#normalizePath(path)
+ .split("/")
+ .filter((s) => s);
+ if (segments.length === 0) {
+ // Root data can either be a Map or an Object. If we receive an Object,
+ // however, we will normalize it to a proper Map.
+ if (value instanceof Map || isObject(value)) {
+ // Normalize an Object to a Map.
+ if (!(value instanceof Map) && isObject(value)) {
+ value = new this.#mapCtor(Object.entries(value));
+ }
+ root.clear();
+ for (const [key, v] of value.entries()) {
+ root.set(key, v);
+ }
+ }
+ else {
+ console.error("Cannot set root of DataModel to a non-Map value.");
+ }
+ return;
+ }
+ let current = root;
+ for (let i = 0; i < segments.length - 1; i++) {
+ const segment = segments[i];
+ let target;
+ if (current instanceof Map) {
+ target = current.get(segment);
+ }
+ else if (Array.isArray(current) && /^\d+$/.test(segment)) {
+ target = current[parseInt(segment, 10)];
+ }
+ if (target === undefined ||
+ typeof target !== "object" ||
+ target === null) {
+ target = new this.#mapCtor();
+ if (current instanceof this.#mapCtor) {
+ current.set(segment, target);
+ }
+ else if (Array.isArray(current)) {
+ current[parseInt(segment, 10)] = target;
+ }
+ }
+ current = target;
+ }
+ const finalSegment = segments[segments.length - 1];
+ const storedValue = value;
+ if (current instanceof this.#mapCtor) {
+ current.set(finalSegment, storedValue);
+ }
+ else if (Array.isArray(current) && /^\d+$/.test(finalSegment)) {
+ current[parseInt(finalSegment, 10)] = storedValue;
+ }
+ }
+ /**
+ * Normalizes a path string into a consistent, slash-delimited format.
+ * Converts bracket notation and dot notation in a two-pass.
+ * e.g., "bookRecommendations[0].title" -> "/bookRecommendations/0/title"
+ * e.g., "book.0.title" -> "/book/0/title"
+ */
+ #normalizePath(path) {
+ // 1. Replace all bracket accessors `[index]` with dot accessors `.index`
+ const dotPath = path.replace(/\[(\d+)\]/g, ".$1");
+ // 2. Split by dots
+ const segments = dotPath.split(".");
+ // 3. Join with slashes and ensure it starts with a slash
+ return "/" + segments.filter((s) => s.length > 0).join("/");
+ }
+ #getDataByPath(root, path) {
+ const segments = this.#normalizePath(path)
+ .split("/")
+ .filter((s) => s);
+ let current = root;
+ for (const segment of segments) {
+ if (current === undefined || current === null)
+ return null;
+ if (current instanceof Map) {
+ current = current.get(segment);
+ }
+ else if (Array.isArray(current) && /^\d+$/.test(segment)) {
+ current = current[parseInt(segment, 10)];
+ }
+ else if (isObject(current)) {
+ current = current[segment];
+ }
+ else {
+ // If we need to traverse deeper but `current` is a primitive, the path is invalid.
+ return null;
+ }
+ }
+ return current;
+ }
+ #getOrCreateSurface(surfaceId) {
+ let surface = this.#surfaces.get(surfaceId);
+ if (!surface) {
+ surface = new this.#objCtor({
+ rootComponentId: null,
+ componentTree: null,
+ dataModel: new this.#mapCtor(),
+ components: new this.#mapCtor(),
+ styles: new this.#objCtor(),
+ });
+ this.#surfaces.set(surfaceId, surface);
+ }
+ return surface;
+ }
+ #handleBeginRendering(message, surfaceId) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ surface.rootComponentId = message.root;
+ surface.styles = message.styles ?? {};
+ this.#rebuildComponentTree(surface);
+ }
+ #handleSurfaceUpdate(message, surfaceId) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ for (const component of message.components) {
+ surface.components.set(component.id, component);
+ }
+ this.#rebuildComponentTree(surface);
+ }
+ #handleDataModelUpdate(message, surfaceId) {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ const path = message.path ?? "/";
+ this.#setDataByPath(surface.dataModel, path, message.contents);
+ this.#rebuildComponentTree(surface);
+ }
+ #handleDeleteSurface(message) {
+ this.#surfaces.delete(message.surfaceId);
+ }
+ /**
+ * Starts at the root component of the surface and builds out the tree
+ * recursively. This process involves resolving all properties of the child
+ * components, and expanding on any explicit children lists or templates
+ * found in the structure.
+ *
+ * @param surface The surface to be built.
+ */
+ #rebuildComponentTree(surface) {
+ if (!surface.rootComponentId) {
+ surface.componentTree = null;
+ return;
+ }
+ // Track visited nodes to avoid circular references.
+ const visited = new this.#setCtor();
+ surface.componentTree = this.#buildNodeRecursive(surface.rootComponentId, surface, visited, "/", "" // Initial idSuffix.
+ );
+ }
+ /** Finds a value key in a map. */
+ #findValueKey(value) {
+ return Object.keys(value).find((k) => k.startsWith("value"));
+ }
+ /**
+ * Builds out the nodes recursively.
+ */
+ #buildNodeRecursive(baseComponentId, surface, visited, dataContextPath, idSuffix = "") {
+ const fullId = `${baseComponentId}${idSuffix}`; // Construct the full ID
+ const { components } = surface;
+ if (!components.has(baseComponentId)) {
+ return null;
+ }
+ if (visited.has(fullId)) {
+ throw new Error(`Circular dependency for component "${fullId}".`);
+ }
+ visited.add(fullId);
+ const componentData = components.get(baseComponentId);
+ const componentProps = componentData.component ?? {};
+ const componentType = Object.keys(componentProps)[0];
+ const unresolvedProperties = componentProps[componentType];
+ // Manually build the resolvedProperties object by resolving each value in
+ // the component's properties.
+ const resolvedProperties = new this.#objCtor();
+ if (isObject(unresolvedProperties)) {
+ for (const [key, value] of Object.entries(unresolvedProperties)) {
+ resolvedProperties[key] = this.#resolvePropertyValue(value, surface, visited, dataContextPath, idSuffix);
+ }
+ }
+ visited.delete(fullId);
+ // Now that we have the resolved properties in place we can go ahead and
+ // ensure that they meet expectations in terms of types and so forth,
+ // casting them into the specific shape for usage.
+ const baseNode = {
+ id: fullId,
+ dataContextPath,
+ weight: componentData.weight ?? "initial",
+ };
+ switch (componentType) {
+ case "Text":
+ if (!isResolvedText(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Text",
+ properties: resolvedProperties,
+ });
+ case "Image":
+ if (!isResolvedImage(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Image",
+ properties: resolvedProperties,
+ });
+ case "Icon":
+ if (!isResolvedIcon(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Icon",
+ properties: resolvedProperties,
+ });
+ case "Video":
+ if (!isResolvedVideo(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Video",
+ properties: resolvedProperties,
+ });
+ case "AudioPlayer":
+ if (!isResolvedAudioPlayer(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "AudioPlayer",
+ properties: resolvedProperties,
+ });
+ case "Row":
+ if (!isResolvedRow(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Row",
+ properties: resolvedProperties,
+ });
+ case "Column":
+ if (!isResolvedColumn(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Column",
+ properties: resolvedProperties,
+ });
+ case "List":
+ if (!isResolvedList(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "List",
+ properties: resolvedProperties,
+ });
+ case "Card":
+ if (!isResolvedCard(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Card",
+ properties: resolvedProperties,
+ });
+ case "Tabs":
+ if (!isResolvedTabs(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Tabs",
+ properties: resolvedProperties,
+ });
+ case "Divider":
+ if (!isResolvedDivider(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Divider",
+ properties: resolvedProperties,
+ });
+ case "Modal":
+ if (!isResolvedModal(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Modal",
+ properties: resolvedProperties,
+ });
+ case "Button":
+ if (!isResolvedButton(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Button",
+ properties: resolvedProperties,
+ });
+ case "CheckBox":
+ if (!isResolvedCheckbox(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "CheckBox",
+ properties: resolvedProperties,
+ });
+ case "TextField":
+ if (!isResolvedTextField(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "TextField",
+ properties: resolvedProperties,
+ });
+ case "DateTimeInput":
+ if (!isResolvedDateTimeInput(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "DateTimeInput",
+ properties: resolvedProperties,
+ });
+ case "MultipleChoice":
+ if (!isResolvedMultipleChoice(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "MultipleChoice",
+ properties: resolvedProperties,
+ });
+ case "Slider":
+ if (!isResolvedSlider(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Slider",
+ properties: resolvedProperties,
+ });
+ default:
+ // Catch-all for other custom component types.
+ return new this.#objCtor({
+ ...baseNode,
+ type: componentType,
+ properties: resolvedProperties,
+ });
+ }
+ }
+ /**
+ * Recursively resolves an individual property value. If a property indicates
+ * a child node (a string that matches a component ID), an explicitList of
+ * children, or a template, these will be built out here.
+ */
+ #resolvePropertyValue(value, surface, visited, dataContextPath, idSuffix = "") {
+ // 1. If it's a string that matches a component ID, build that node.
+ if (typeof value === "string" && surface.components.has(value)) {
+ return this.#buildNodeRecursive(value, surface, visited, dataContextPath, idSuffix);
+ }
+ // 2. If it's a ComponentArrayReference (e.g., a `children` property),
+ // resolve the list and return an array of nodes.
+ if (isComponentArrayReference(value)) {
+ if (value.explicitList) {
+ return value.explicitList.map((id) => this.#buildNodeRecursive(id, surface, visited, dataContextPath, idSuffix));
+ }
+ if (value.template) {
+ const fullDataPath = this.resolvePath(value.template.dataBinding, dataContextPath);
+ const data = this.#getDataByPath(surface.dataModel, fullDataPath);
+ const template = value.template;
+ // Handle Array data.
+ if (Array.isArray(data)) {
+ return data.map((_, index) => {
+ // Create a synthetic ID based on the template ID and the
+ // full index path of the data (e.g., template-id:0:1)
+ const parentIndices = dataContextPath
+ .split("/")
+ .filter((segment) => /^\d+$/.test(segment));
+ const newIndices = [...parentIndices, index];
+ const newSuffix = `:${newIndices.join(":")}`;
+ const childDataContextPath = `${fullDataPath}/${index}`;
+ return this.#buildNodeRecursive(template.componentId, // baseId
+ surface, visited, childDataContextPath, newSuffix // new suffix
+ );
+ });
+ }
+ // Handle Map data.
+ const mapCtor = this.#mapCtor;
+ if (data instanceof mapCtor) {
+ return Array.from(data.keys(), (key) => {
+ const newSuffix = `:${key}`;
+ const childDataContextPath = `${fullDataPath}/${key}`;
+ return this.#buildNodeRecursive(template.componentId, // baseId
+ surface, visited, childDataContextPath, newSuffix // new suffix
+ );
+ });
+ }
+ // Return empty array if the data is not ready yet.
+ return new this.#arrayCtor();
+ }
+ }
+ // 3. If it's a plain array, resolve each of its items.
+ if (Array.isArray(value)) {
+ return value.map((item) => this.#resolvePropertyValue(item, surface, visited, dataContextPath, idSuffix));
+ }
+ // 4. If it's a plain object, resolve each of its properties.
+ if (isObject(value)) {
+ const newObj = new this.#objCtor();
+ for (const [key, propValue] of Object.entries(value)) {
+ // Special case for paths. Here we might get /item/ or ./ on the front
+ // of the path which isn't what we want. In this case we check the
+ // dataContextPath and if 1) it's not the default and 2) we also see the
+ // path beginning with /item/ or ./we trim it.
+ let propertyValue = propValue;
+ if (isPath(key, propValue) && dataContextPath !== "/") {
+ propertyValue = propValue
+ .replace(/^\.?\/item/, "")
+ .replace(/^\.?\/text/, "")
+ .replace(/^\.?\/label/, "")
+ .replace(/^\.?\//, "");
+ newObj[key] = propertyValue;
+ continue;
+ }
+ newObj[key] = this.#resolvePropertyValue(propertyValue, surface, visited, dataContextPath, idSuffix);
+ }
+ return newObj;
+ }
+ // 5. Otherwise, it's a primitive value.
+ return value;
+ }
+}
+//# sourceMappingURL=model-processor.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.js.map
new file mode 100644
index 0000000000..68587e71db
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/model-processor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"model-processor.js","sourceRoot":"","sources":["../../../../src/0.8/data/model-processor.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.d.ts
new file mode 100644
index 0000000000..80515df594
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.d.ts
@@ -0,0 +1,3 @@
+import { A2uiMessageProcessor } from "./model-processor.js";
+export declare function create(): A2uiMessageProcessor;
+//# sourceMappingURL=signal-model-processor.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.d.ts.map
new file mode 100644
index 0000000000..f183977808
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"signal-model-processor.d.ts","sourceRoot":"","sources":["../../../../src/0.8/data/signal-model-processor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D,wBAAgB,MAAM,yBAOrB"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.js b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.js
new file mode 100644
index 0000000000..69675accc7
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.js
@@ -0,0 +1,29 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { A2uiMessageProcessor } from "./model-processor.js";
+import { SignalArray } from "signal-utils/array";
+import { SignalMap } from "signal-utils/map";
+import { SignalObject } from "signal-utils/object";
+import { SignalSet } from "signal-utils/set";
+export function create() {
+ return new A2uiMessageProcessor({
+ arrayCtor: SignalArray,
+ mapCtor: SignalMap,
+ objCtor: SignalObject,
+ setCtor: SignalSet,
+ });
+}
+//# sourceMappingURL=signal-model-processor.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.js.map
new file mode 100644
index 0000000000..f9918f9ef8
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/data/signal-model-processor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"signal-model-processor.js","sourceRoot":"","sources":["../../../../src/0.8/data/signal-model-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,MAAM;IACpB,OAAO,IAAI,oBAAoB,CAAC;QAC9B,SAAS,EAAE,WAA0C;QACrD,OAAO,EAAE,SAAsC;QAC/C,OAAO,EAAE,YAA4C;QACrD,OAAO,EAAE,SAAsC;KAChD,CAAC,CAAC;AACL,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.d.ts
new file mode 100644
index 0000000000..43f59b0d22
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.d.ts
@@ -0,0 +1,12 @@
+import { Action } from "../types/components.js";
+import { AnyComponentNode } from "../types/types.js";
+import { BaseEventDetail } from "./base.js";
+type Namespace = "a2ui";
+export interface A2UIAction extends BaseEventDetail<`${Namespace}.action`> {
+ readonly action: Action;
+ readonly dataContextPath: string;
+ readonly sourceComponentId: string;
+ readonly sourceComponent: AnyComponentNode | null;
+}
+export {};
+//# sourceMappingURL=a2ui.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.d.ts.map
new file mode 100644
index 0000000000..e7e212b51f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"a2ui.d.ts","sourceRoot":"","sources":["../../../../src/0.8/events/a2ui.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,SAAS,GAAG,MAAM,CAAC;AAExB,MAAM,WAAW,UAAW,SAAQ,eAAe,CAAC,GAAG,SAAS,SAAS,CAAC;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACnD"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.js b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.js
new file mode 100644
index 0000000000..29c47d65ce
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export {};
+//# sourceMappingURL=a2ui.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.js.map
new file mode 100644
index 0000000000..caf9c6cd23
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/a2ui.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"a2ui.js","sourceRoot":"","sources":["../../../../src/0.8/events/a2ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.d.ts
new file mode 100644
index 0000000000..d37639d600
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.d.ts
@@ -0,0 +1,4 @@
+export interface BaseEventDetail {
+ readonly eventType: EventType;
+}
+//# sourceMappingURL=base.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.d.ts.map
new file mode 100644
index 0000000000..b3d5113110
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/0.8/events/base.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,MAAM;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.js b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.js
new file mode 100644
index 0000000000..2671cae688
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export {};
+//# sourceMappingURL=base.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.js.map
new file mode 100644
index 0000000000..3e77eefd70
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/base.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/0.8/events/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.d.ts
new file mode 100644
index 0000000000..a74a77759f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.d.ts
@@ -0,0 +1,20 @@
+import type * as A2UI from "./a2ui.js";
+import { BaseEventDetail } from "./base.js";
+type EnforceEventTypeMatch>> = {
+ [K in keyof T]: T[K] extends BaseEventDetail ? EventType extends K ? T[K] : never : never;
+};
+export type StateEventDetailMap = EnforceEventTypeMatch<{
+ "a2ui.action": A2UI.A2UIAction;
+}>;
+export declare class StateEvent extends CustomEvent {
+ readonly payload: StateEventDetailMap[T];
+ static eventName: string;
+ constructor(payload: StateEventDetailMap[T]);
+}
+declare global {
+ interface HTMLElementEventMap {
+ a2uiaction: StateEvent<"a2ui.action">;
+ }
+}
+export {};
+//# sourceMappingURL=events.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.d.ts.map
new file mode 100644
index 0000000000..c493725d2d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/0.8/events/events.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAQ5C,KAAK,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,IAC1E;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,SAAS,CAAC,GACzD,SAAS,SAAS,CAAC,GACjB,CAAC,CAAC,CAAC,CAAC,GACJ,KAAK,GACP,KAAK;CACV,CAAC;AAEJ,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;IACtD,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;CAChC,CAAC,CAAC;AAEH,qBAAa,UAAU,CACrB,CAAC,SAAS,MAAM,mBAAmB,CACnC,SAAQ,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAG/B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAFpD,MAAM,CAAC,SAAS,SAAgB;gBAEX,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;CAGrD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,mBAAmB;QAC3B,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;KACvC;CACF"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.js b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.js
new file mode 100644
index 0000000000..7e5d22d12b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.js
@@ -0,0 +1,28 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+const eventInit = {
+ bubbles: true,
+ cancelable: true,
+ composed: true,
+};
+export class StateEvent extends CustomEvent {
+ static { this.eventName = "a2uiaction"; }
+ constructor(payload) {
+ super(StateEvent.eventName, { detail: payload, ...eventInit });
+ this.payload = payload;
+ }
+}
+//# sourceMappingURL=events.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.js.map
new file mode 100644
index 0000000000..af911b2596
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/events/events.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/0.8/events/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;CACf,CAAC;AAeF,MAAM,OAAO,UAEX,SAAQ,WAAmC;aACpC,cAAS,GAAG,YAAY,CAAC;IAEhC,YAAqB,OAA+B;QAClD,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QAD5C,YAAO,GAAP,OAAO,CAAwB;IAEpD,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/index.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/index.d.ts
new file mode 100644
index 0000000000..d1401cd6fa
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/index.d.ts
@@ -0,0 +1,3 @@
+export * from "./core.js";
+export * as UI from "./ui/ui.js";
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/index.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/index.d.ts.map
new file mode 100644
index 0000000000..c8add36643
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/0.8/index.ts"],"names":[],"mappings":"AAgBA,cAAc,WAAW,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/index.js b/vendor/a2ui/renderers/lit/dist/src/0.8/index.js
new file mode 100644
index 0000000000..c6ca891abc
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/index.js
@@ -0,0 +1,18 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export * from "./core.js";
+export * as UI from "./ui/ui.js";
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/index.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/index.js.map
new file mode 100644
index 0000000000..4d647be179
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/0.8/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,WAAW,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.d.ts
new file mode 100644
index 0000000000..55b156ae7e
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.d.ts
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=model.test.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.d.ts.map
new file mode 100644
index 0000000000..7813e5e473
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"model.test.d.ts","sourceRoot":"","sources":["../../../src/0.8/model.test.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.js b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.js
new file mode 100644
index 0000000000..50f33cfc41
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.js
@@ -0,0 +1,1201 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import assert from "node:assert";
+import { describe, it, beforeEach } from "node:test";
+import { v0_8 } from "@a2ui/lit";
+// Helper function to strip reactivity for clean comparisons.
+const toPlainObject = (value) => {
+ if (value instanceof Map) {
+ return Object.fromEntries(Array.from(value.entries(), ([k, v]) => [k, toPlainObject(v)]));
+ }
+ if (Array.isArray(value)) {
+ return value.map(toPlainObject);
+ }
+ if (v0_8.Data.Guards.isObject(value) &&
+ value.constructor.name === "SignalObject") {
+ const obj = {};
+ for (const key in value) {
+ if (Object.prototype.hasOwnProperty.call(value, key)) {
+ obj[key] = toPlainObject(value[key]);
+ }
+ }
+ return obj;
+ }
+ return value;
+};
+describe("A2uiMessageProcessor", () => {
+ let processor = new v0_8.Data.A2uiMessageProcessor();
+ beforeEach(() => {
+ processor = new v0_8.Data.A2uiMessageProcessor();
+ });
+ describe("Basic Initialization and State", () => {
+ it("should start with no surfaces", () => {
+ assert.strictEqual(processor.getSurfaces().size, 0);
+ });
+ it("should clear surfaces when clearSurfaces is called", () => {
+ processor.processMessages([
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ assert.strictEqual(processor.getSurfaces().size, 1);
+ processor.clearSurfaces();
+ assert.strictEqual(processor.getSurfaces().size, 0);
+ });
+ });
+ describe("Message Processing", () => {
+ it("should handle `beginRendering` by creating a default surface", () => {
+ processor.processMessages([
+ {
+ beginRendering: {
+ root: "comp-a",
+ styles: { color: "blue" },
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ const surfaces = processor.getSurfaces();
+ assert.strictEqual(surfaces.size, 1);
+ const defaultSurface = surfaces.get("@default");
+ assert.ok(defaultSurface, "Default surface should exist");
+ assert.strictEqual(defaultSurface.rootComponentId, "comp-a");
+ assert.deepStrictEqual(defaultSurface.styles, { color: "blue" });
+ });
+ it("should handle `surfaceUpdate` by adding components", () => {
+ const messages = [
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "comp-a",
+ component: {
+ Text: { text: { literalString: "Hi" } },
+ },
+ },
+ ],
+ },
+ },
+ ];
+ processor.processMessages(messages);
+ const surface = processor.getSurfaces().get("@default");
+ if (!surface) {
+ assert.fail("No default surface");
+ }
+ assert.strictEqual(surface.components.size, 1);
+ assert.ok(surface.components.has("comp-a"));
+ });
+ it("should handle `deleteSurface`", () => {
+ processor.processMessages([
+ {
+ beginRendering: { root: "root", surfaceId: "to-delete" },
+ },
+ { deleteSurface: { surfaceId: "to-delete" } },
+ ]);
+ assert.strictEqual(processor.getSurfaces().has("to-delete"), false);
+ });
+ });
+ describe("Data Model Updates", () => {
+ it("should update data at a specified path", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/user",
+ contents: [{ key: "name", valueString: "Alice" }],
+ },
+ },
+ ]);
+ const name = processor.getData({ dataContextPath: "/" }, "/user/name");
+ assert.strictEqual(name, "Alice");
+ });
+ it("should replace the entire data model when path is not provided", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ { key: "user", valueString: JSON.stringify({ name: "Bob" }) },
+ ],
+ },
+ },
+ ]);
+ const user = processor.getData({ dataContextPath: "/" }, "/user");
+ assert.deepStrictEqual(toPlainObject(user), { name: "Bob" });
+ });
+ it("should create nested structures when setting data", () => {
+ const component = { dataContextPath: "/" };
+ // Note: setData is a public method that does not use the key-value format
+ processor.setData(component, "/a/b/c", "value");
+ const data = processor.getData(component, "/a/b/c");
+ assert.strictEqual(data, "value");
+ });
+ it("should handle paths correctly", () => {
+ const path1 = processor.resolvePath("/a/b/c", "/value");
+ const path2 = processor.resolvePath("a/b/c", "/value/");
+ const path3 = processor.resolvePath("a/b/c", "/value");
+ assert.strictEqual(path1, "/a/b/c");
+ assert.strictEqual(path2, "/value/a/b/c");
+ assert.strictEqual(path3, "/value/a/b/c");
+ });
+ it("should correctly parse nested valueMap structures", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/data",
+ contents: [
+ {
+ key: "users", // /data/users
+ valueMap: [
+ {
+ key: "user1", // /data/users/user1
+ valueMap: [
+ {
+ key: "firstName",
+ valueString: "Alice",
+ },
+ {
+ key: "lastName",
+ valueString: "Doe",
+ },
+ ],
+ },
+ {
+ key: "user2", // /data/users/user2
+ valueMap: [
+ {
+ key: "firstName",
+ valueString: "John",
+ },
+ {
+ key: "lastName",
+ valueString: "Doe",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ]);
+ const info = processor.getData({ dataContextPath: "/" }, "/data/users");
+ // The expected result is a Map of Maps.
+ const expected = new Map([
+ [
+ "user1",
+ new Map([
+ ["firstName", "Alice"],
+ ["lastName", "Doe"],
+ ]),
+ ],
+ [
+ "user2",
+ new Map([
+ ["firstName", "John"],
+ ["lastName", "Doe"],
+ ]),
+ ],
+ ]);
+ assert.deepEqual(info, expected);
+ });
+ it("should additively update a Map using numeric-string keys (like timestamps)", () => {
+ // 1. First, establish the /messages path as a Map.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/messages",
+ contents: [
+ // Sending an empty key-value array creates an empty Map at the path.
+ ],
+ },
+ },
+ ]);
+ const key1 = "1700000000001";
+ const message1 = "Hello";
+ // 2. Add the first message.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: `/messages/${key1}`,
+ contents: [
+ {
+ key: ".",
+ valueString: message1,
+ },
+ ],
+ },
+ },
+ ]);
+ let messagesData = processor.getData({ dataContextPath: "/" }, "/messages");
+ // Check that it's a Map and has the first item.
+ assertIsDataMap(messagesData);
+ assert.strictEqual(messagesData.size, 1);
+ assert.strictEqual(messagesData.get(key1), message1);
+ const key2 = "1700000000002";
+ const message2 = "World";
+ // 3. Add the second message. This is where the old logic would fail.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: `/messages/${key2}`,
+ contents: [
+ {
+ key: ".",
+ valueString: message2,
+ },
+ ],
+ },
+ },
+ ]);
+ messagesData = processor.getData({ dataContextPath: "/" }, "/messages");
+ // 4. Check that the Map was additively updated and now has both items.
+ assertIsDataMap(messagesData);
+ assert.strictEqual(messagesData.size, 2, "Map should have 2 items total");
+ assert.strictEqual(messagesData.get(key1), message1, "First item correct");
+ assert.strictEqual(messagesData.get(key2), message2, "Second item correct");
+ });
+ });
+ describe("Component Tree Building", () => {
+ it("should build a simple parent-child tree", () => {
+ processor.processMessages([
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ Column: { children: { explicitList: ["child"] } },
+ },
+ },
+ {
+ id: "child",
+ component: {
+ Text: { text: { literalString: "Hello" } },
+ },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ assert.strictEqual(plainTree.id, "root");
+ assert.strictEqual(plainTree.type, "Column");
+ assert.strictEqual(plainTree.properties.children.length, 1);
+ assert.strictEqual(plainTree.properties.children[0].id, "child");
+ assert.strictEqual(plainTree.properties.children[0].type, "Text");
+ });
+ it("should throw an error on circular dependencies", () => {
+ // First, load the components
+ processor.processMessages([
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ { id: "a", component: { Card: { child: "b" } } },
+ { id: "b", component: { Card: { child: "a" } } },
+ ],
+ },
+ },
+ ]);
+ // Now, try to render, which triggers the tree build
+ assert.throws(() => {
+ processor.processMessages([
+ {
+ beginRendering: {
+ root: "a",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ }, new Error(`Circular dependency for component "a".`));
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ assert.strictEqual(tree, null, "Tree should be null due to circular dependency");
+ });
+ it("should correctly expand a template with `dataBinding`", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ assert.strictEqual(plainTree.properties.children.length, 2);
+ // Check first generated child.
+ const child1 = plainTree.properties.children[0];
+ assert.strictEqual(child1.id, "item-template:0");
+ assert.strictEqual(child1.type, "Text");
+ assert.strictEqual(child1.dataContextPath, "/items/0");
+ assert.deepStrictEqual(child1.properties.text, { path: "name" });
+ // Check second generated child.
+ const child2 = plainTree.properties.children[1];
+ assert.strictEqual(child2.id, "item-template:1");
+ assert.strictEqual(child2.type, "Text");
+ assert.strictEqual(child2.dataContextPath, "/items/1");
+ assert.deepStrictEqual(child2.properties.text, { path: "name" });
+ });
+ it("should rebuild the tree when data for a template arrives later", () => {
+ processor.processMessages([
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ let tree = processor.getSurfaces().get("@default")?.componentTree;
+ assert.strictEqual(toPlainObject(tree).properties.children.length, 0, "Children should be empty before data arrives");
+ // Now, the data arrives.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ ]);
+ tree = processor.getSurfaces().get("@default")?.componentTree;
+ assert.strictEqual(toPlainObject(tree).properties.children.length, 2, "Children should be populated after data arrives");
+ });
+ it("should trim relative paths within a data context (./item)", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ // These paths would are typical when a databinding is used.
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "./item/name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ const child1 = plainTree.properties.children[0];
+ const child2 = plainTree.properties.children[1];
+ // The processor should have trimmed `/item` and `./` from the path
+ // because we are inside a data context.
+ assert.deepEqual(child1.properties.text, { path: "name" });
+ assert.deepEqual(child2.properties.text, { path: "name" });
+ });
+ it("should trim relative paths within a data context (./name)", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ // These paths would are typical when a databinding is used.
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "./name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ const child1 = plainTree.properties.children[0];
+ const child2 = plainTree.properties.children[1];
+ // The processor should have trimmed `./` from the path
+ // because we are inside a data context.
+ assert.deepEqual(child1.properties.text, { path: "name" });
+ assert.deepEqual(child2.properties.text, { path: "name" });
+ });
+ });
+ describe("Data Normalization and Parsing", () => {
+ it("should correctly handle and parse the key-value array data format at the root", () => {
+ const messages = [
+ {
+ dataModelUpdate: {
+ surfaceId: "test-surface",
+ path: "/",
+ contents: [
+ { key: "title", valueString: "My Title" },
+ {
+ key: "items",
+ valueString: '[{"id": 1}, {"id": 2}]',
+ },
+ ],
+ },
+ },
+ ];
+ processor.processMessages(messages);
+ const component = { dataContextPath: "/" };
+ const title = processor.getData(component, "/title", "test-surface");
+ const items = processor.getData(component, "/items", "test-surface");
+ assert.strictEqual(title, "My Title");
+ assert.deepStrictEqual(toPlainObject(items), [{ id: 1 }, { id: 2 }]);
+ });
+ it("should fallback to a string if stringified JSON is invalid", () => {
+ const invalidJSON = '[{"id": 1}, {"id": 2}'; // Missing closing bracket
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [{ key: "badData", valueString: invalidJSON }],
+ },
+ },
+ ]);
+ const component = { dataContextPath: "/" };
+ const badData = processor.getData(component, "/badData");
+ assert.strictEqual(badData, invalidJSON);
+ });
+ });
+ describe("Complex Template Scenarios", () => {
+ it("should correctly expand a template with dataBinding to a Map (from valueMap)", () => {
+ const messages = [
+ {
+ beginRendering: {
+ surfaceId: "default",
+ root: "root-column",
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "default",
+ components: [
+ {
+ id: "root-column",
+ component: {
+ Column: {
+ children: {
+ explicitList: ["title-heading", "item-list"],
+ },
+ },
+ },
+ },
+ {
+ id: "title-heading",
+ component: {
+ Text: {
+ text: {
+ literalString: "Top Restaurants",
+ },
+ },
+ usageHint: "h1",
+ },
+ },
+ {
+ id: "item-list",
+ component: {
+ List: {
+ direction: "vertical",
+ children: {
+ template: {
+ componentId: "item-card-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "item-card-template",
+ component: {
+ Card: {
+ child: "card-layout",
+ },
+ },
+ },
+ {
+ id: "card-layout",
+ component: {
+ Row: {
+ children: {
+ explicitList: ["template-image", "card-details"],
+ },
+ },
+ },
+ },
+ {
+ id: "template-image",
+ weight: 1,
+ component: {
+ Image: {
+ url: {
+ path: "imageUrl",
+ },
+ },
+ },
+ },
+ {
+ id: "card-details",
+ weight: 2,
+ component: {
+ Column: {
+ children: {
+ explicitList: [
+ "template-name",
+ "template-rating",
+ "template-detail",
+ "template-link",
+ "template-book-button",
+ ],
+ },
+ },
+ },
+ },
+ {
+ id: "template-name",
+ component: {
+ Text: {
+ text: {
+ path: "name",
+ },
+ },
+ usageHint: "h3",
+ },
+ },
+ {
+ id: "template-rating",
+ component: {
+ Text: {
+ text: {
+ path: "rating",
+ },
+ },
+ },
+ },
+ {
+ id: "template-detail",
+ component: {
+ Text: {
+ text: {
+ path: "detail",
+ },
+ },
+ },
+ },
+ {
+ id: "template-link",
+ component: {
+ Text: {
+ text: {
+ path: "infoLink",
+ },
+ },
+ },
+ },
+ {
+ id: "template-book-button",
+ component: {
+ Button: {
+ child: "book-now-text",
+ action: {
+ name: "book_restaurant",
+ context: [
+ {
+ key: "restaurantName",
+ value: {
+ path: "name",
+ },
+ },
+ {
+ key: "imageUrl",
+ value: {
+ path: "imageUrl",
+ },
+ },
+ {
+ key: "address",
+ value: {
+ path: "address",
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ id: "book-now-text",
+ component: {
+ Text: {
+ text: {
+ literalString: "Book Now",
+ },
+ },
+ },
+ },
+ ],
+ },
+ },
+ {
+ dataModelUpdate: {
+ surfaceId: "default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueMap: [
+ {
+ key: "item1",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 1",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString: "Spicy and savory hand-pulled noodles.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString: "http://www.example.com/static/shrimpchowmein.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 1",
+ },
+ ],
+ },
+ {
+ key: "item2",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 2",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString: "Authentic and real.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString: "http://www.example.com/static/mapotofu.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 2",
+ },
+ ],
+ },
+ {
+ key: "item3",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 3",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString: "Modern food with a farm-to-table approach.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString: "http://www.example.com/static/beefbroccoli.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 3",
+ },
+ ],
+ },
+ {
+ key: "item4",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 4",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★★",
+ },
+ {
+ key: "detail",
+ valueString: "Upscale dining.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString: "http://www.example.com/static/springrolls.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 4",
+ },
+ ],
+ },
+ {
+ key: "item5",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 5",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString: "Famous for its noodles.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString: "http://www.example.com/static/kungpao.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 5",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ];
+ processor.processMessages(messages);
+ const tree = processor.getSurfaces().get("default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ // 1. Find the "item-list" component (the List)
+ const itemList = plainTree.properties.children[1];
+ assert.strictEqual(itemList.id, "item-list");
+ // 2. Check that it expanded 5 children from the Map
+ const templateChildren = itemList.properties.children;
+ assert.strictEqual(templateChildren.length, 5);
+ // 3. Check the first generated child for correct key-based ID and data context
+ const child1 = templateChildren[0];
+ assert.strictEqual(child1.id, "item-card-template:item1");
+ assert.strictEqual(child1.dataContextPath, "/items/item1");
+ // 4. Go deeper to check the data binding on a nested component
+ // Path: Card -> Row -> Column -> Heading
+ const child1NameHeading = child1.properties.child.properties.children[1].properties.children[0];
+ assert.strictEqual(child1NameHeading.id, "template-name:item1");
+ assert.strictEqual(child1NameHeading.dataContextPath, "/items/item1");
+ assert.deepStrictEqual(child1NameHeading.properties.text, {
+ path: "name",
+ });
+ // 5. Check the second generated child
+ const child2 = templateChildren[1];
+ assert.strictEqual(child2.id, "item-card-template:item2");
+ assert.strictEqual(child2.dataContextPath, "/items/item2");
+ });
+ it("should correctly expand nested templates with layered data contexts", () => {
+ const messages = [
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "days",
+ // The correct way to send an array of objects is as a stringified JSON.
+ valueString: JSON.stringify([
+ {
+ title: "Day 1",
+ activities: ["Morning Walk", "Museum Visit"],
+ },
+ {
+ title: "Day 2",
+ activities: ["Market Trip"],
+ },
+ ]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "day-list",
+ dataBinding: "/days",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "day-list",
+ component: {
+ Column: {
+ children: { explicitList: ["day-title", "activity-list"] },
+ },
+ },
+ },
+ {
+ id: "day-title",
+ component: {
+ Text: { text: { path: "title" }, usageHint: "h1" },
+ },
+ },
+ {
+ id: "activity-list",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "activity-text",
+ dataBinding: "activities",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "activity-text",
+ component: { Text: { text: { path: "." } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ];
+ processor.processMessages(messages);
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ // Assert Day 1 structure
+ const day1 = plainTree.properties.children[0];
+ assert.strictEqual(day1.dataContextPath, "/days/0");
+ const day1Activities = day1.properties.children[1].properties.children;
+ assert.strictEqual(day1Activities.length, 2);
+ assert.strictEqual(day1Activities[0].id, "activity-text:0:0");
+ assert.strictEqual(day1Activities[0].dataContextPath, "/days/0/activities/0");
+ assert.deepStrictEqual(day1.properties.children[0].properties.text, {
+ path: "title",
+ });
+ assert.deepStrictEqual(day1Activities[0].properties.text, { path: "." });
+ // Assert Day 2 structure
+ const day2 = plainTree.properties.children[1];
+ assert.strictEqual(day2.dataContextPath, "/days/1");
+ const day2Activities = day2.properties.children[1].properties.children;
+ assert.strictEqual(day2Activities.length, 1);
+ assert.strictEqual(day2Activities[0].id, "activity-text:1:0");
+ assert.strictEqual(day2Activities[0].dataContextPath, "/days/1/activities/0");
+ assert.deepStrictEqual(day2.properties.children[0].properties.text, {
+ path: "title",
+ });
+ assert.deepStrictEqual(day2Activities[0].properties.text, { path: "." });
+ });
+ it("should correctly bind to primitive values in an array using path: '.'", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "tags",
+ valueString: JSON.stringify(["travel", "paris", "guide"]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ Row: {
+ children: {
+ template: { componentId: "tag", dataBinding: "/tags" },
+ },
+ },
+ },
+ },
+ { id: "tag", component: { Text: { text: { path: "." } } } },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ const children = plainTree.properties.children;
+ assert.strictEqual(children.length, 3);
+ assert.strictEqual(children[0].dataContextPath, "/tags/0");
+ assert.deepEqual(children[0].properties.text, { path: "." });
+ assert.strictEqual(children[1].dataContextPath, "/tags/1");
+ assert.deepEqual(children[1].properties.text, { path: "." });
+ });
+ });
+ describe("Multi-Surface Interaction", () => {
+ it("should keep data and components for different surfaces separate", () => {
+ processor.processMessages([
+ // Surface A
+ {
+ dataModelUpdate: {
+ surfaceId: "A",
+ path: "/",
+ contents: [{ key: "name", valueString: "Surface A Data" }],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "A",
+ components: [
+ {
+ id: "comp-a",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ { beginRendering: { root: "comp-a", surfaceId: "A" } },
+ // Surface B
+ {
+ dataModelUpdate: {
+ surfaceId: "B",
+ path: "/",
+ contents: [{ key: "name", valueString: "Surface B Data" }],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "B",
+ components: [
+ {
+ id: "comp-b",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ { beginRendering: { root: "comp-b", surfaceId: "B" } },
+ ]);
+ const surfaces = processor.getSurfaces();
+ assert.strictEqual(surfaces.size, 2);
+ const surfaceA = surfaces.get("A");
+ const surfaceB = surfaces.get("B");
+ assert.ok(surfaceA && surfaceB, "Both surfaces should exist");
+ // Check Surface A
+ assert.ok(surfaceA, "Surface A exists.");
+ assert.strictEqual(surfaceA.components.size, 1);
+ assert.ok(surfaceA.components.has("comp-a"));
+ assert.deepStrictEqual(toPlainObject(surfaceA.dataModel), {
+ name: "Surface A Data",
+ });
+ assert.deepStrictEqual(toPlainObject(surfaceA.componentTree).properties.text, { path: "/name" });
+ // Check Surface B
+ assert.ok(surfaceB, "Surface B exists.");
+ assert.strictEqual(surfaceB.components.size, 1);
+ assert.ok(surfaceB.components.has("comp-b"));
+ assert.deepStrictEqual(toPlainObject(surfaceB.dataModel), {
+ name: "Surface B Data",
+ });
+ assert.deepStrictEqual(toPlainObject(surfaceB.componentTree).properties.text, { path: "/name" });
+ });
+ });
+});
+function assertIsDataMap(obj) {
+ assert.ok(obj instanceof Map, `Data should be a DataMap`);
+}
+//# sourceMappingURL=model.test.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.js.map
new file mode 100644
index 0000000000..d466edff58
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/model.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"model.test.js","sourceRoot":"","sources":["../../../src/0.8/model.test.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/schemas/server_to_client_with_standard_catalog.json b/vendor/a2ui/renderers/lit/dist/src/0.8/schemas/server_to_client_with_standard_catalog.json
new file mode 100644
index 0000000000..5f66460959
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/schemas/server_to_client_with_standard_catalog.json
@@ -0,0 +1,827 @@
+{
+ "title": "A2UI Message Schema",
+ "description": "Describes a JSON payload for an A2UI (Agent to UI) message, which is used to dynamically construct and update user interfaces. A message MUST contain exactly ONE of the action properties: 'beginRendering', 'surfaceUpdate', 'dataModelUpdate', or 'deleteSurface'.",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "beginRendering": {
+ "type": "object",
+ "description": "Signals the client to begin rendering a surface with a root component and specific styles.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be rendered."
+ },
+ "root": {
+ "type": "string",
+ "description": "The ID of the root component to render."
+ },
+ "styles": {
+ "type": "object",
+ "description": "Styling information for the UI.",
+ "additionalProperties": false,
+ "properties": {
+ "font": {
+ "type": "string",
+ "description": "The primary font for the UI."
+ },
+ "primaryColor": {
+ "type": "string",
+ "description": "The primary UI color as a hexadecimal code (e.g., '#00BFFF').",
+ "pattern": "^#[0-9a-fA-F]{6}$"
+ }
+ }
+ }
+ },
+ "required": ["root", "surfaceId"]
+ },
+ "surfaceUpdate": {
+ "type": "object",
+ "description": "Updates a surface with a new set of components.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be updated. If you are adding a new surface this *must* be a new, unique identified that has never been used for any existing surfaces shown."
+ },
+ "components": {
+ "type": "array",
+ "description": "A list containing all UI components for the surface.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "description": "Represents a *single* component in a UI widget tree. This component could be one of many supported types.",
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The unique identifier for this component."
+ },
+ "weight": {
+ "type": "number",
+ "description": "The relative weight of this component within a Row or Column. This corresponds to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column."
+ },
+ "component": {
+ "type": "object",
+ "description": "A wrapper object that MUST contain exactly one key, which is the name of the component type (e.g., 'Heading'). The value is an object containing the properties for that specific component.",
+ "additionalProperties": false,
+ "properties": {
+ "Text": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "text": {
+ "type": "object",
+ "description": "The text content to display. This can be a literal string or a reference to a value in the data model ('path', e.g., '/doc/title'). While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "usageHint": {
+ "type": "string",
+ "description": "A hint for the base text style. One of:\n- `h1`: Largest heading.\n- `h2`: Second largest heading.\n- `h3`: Third largest heading.\n- `h4`: Fourth largest heading.\n- `h5`: Fifth largest heading.\n- `caption`: Small text for captions.\n- `body`: Standard body text.",
+ "enum": [
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "caption",
+ "body"
+ ]
+ }
+ },
+ "required": ["text"]
+ },
+ "Image": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the image to display. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/thumbnail/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "fit": {
+ "type": "string",
+ "description": "Specifies how the image should be resized to fit its container. This corresponds to the CSS 'object-fit' property.",
+ "enum": [
+ "contain",
+ "cover",
+ "fill",
+ "none",
+ "scale-down"
+ ]
+ },
+ "usageHint": {
+ "type": "string",
+ "description": "A hint for the image size and style. One of:\n- `icon`: Small square icon.\n- `avatar`: Circular avatar image.\n- `smallFeature`: Small feature image.\n- `mediumFeature`: Medium feature image.\n- `largeFeature`: Large feature image.\n- `header`: Full-width, full bleed, header image.",
+ "enum": [
+ "icon",
+ "avatar",
+ "smallFeature",
+ "mediumFeature",
+ "largeFeature",
+ "header"
+ ]
+ }
+ },
+ "required": ["url"]
+ },
+ "Icon": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "object",
+ "description": "The name of the icon to display. This can be a literal string or a reference to a value in the data model ('path', e.g. '/form/submit').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string",
+ "enum": [
+ "accountCircle",
+ "add",
+ "arrowBack",
+ "arrowForward",
+ "attachFile",
+ "calendarToday",
+ "call",
+ "camera",
+ "check",
+ "close",
+ "delete",
+ "download",
+ "edit",
+ "event",
+ "error",
+ "favorite",
+ "favoriteOff",
+ "folder",
+ "help",
+ "home",
+ "info",
+ "locationOn",
+ "lock",
+ "lockOpen",
+ "mail",
+ "menu",
+ "moreVert",
+ "moreHoriz",
+ "notificationsOff",
+ "notifications",
+ "payment",
+ "person",
+ "phone",
+ "photo",
+ "print",
+ "refresh",
+ "search",
+ "send",
+ "settings",
+ "share",
+ "shoppingCart",
+ "star",
+ "starHalf",
+ "starOff",
+ "upload",
+ "visibility",
+ "visibilityOff",
+ "warning"
+ ]
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["name"]
+ },
+ "Video": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the video to display. This can be a literal string or a reference to a value in the data model ('path', e.g. '/video/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["url"]
+ },
+ "AudioPlayer": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the audio to be played. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/song/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "description": {
+ "type": "object",
+ "description": "A description of the audio, such as a title or summary. This can be a literal string or a reference to a value in the data model ('path', e.g. '/song/title').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["url"]
+ },
+ "Row": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "type": "string"
+ },
+ "dataBinding": {
+ "type": "string"
+ }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "distribution": {
+ "type": "string",
+ "description": "Defines the arrangement of children along the main axis (horizontally). This corresponds to the CSS 'justify-content' property.",
+ "enum": [
+ "center",
+ "end",
+ "spaceAround",
+ "spaceBetween",
+ "spaceEvenly",
+ "start"
+ ]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis (vertically). This corresponds to the CSS 'align-items' property.",
+ "enum": ["start", "center", "end", "stretch"]
+ }
+ },
+ "required": ["children"]
+ },
+ "Column": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "type": "string"
+ },
+ "dataBinding": {
+ "type": "string"
+ }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "distribution": {
+ "type": "string",
+ "description": "Defines the arrangement of children along the main axis (vertically). This corresponds to the CSS 'justify-content' property.",
+ "enum": [
+ "start",
+ "center",
+ "end",
+ "spaceBetween",
+ "spaceAround",
+ "spaceEvenly"
+ ]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis (horizontally). This corresponds to the CSS 'align-items' property.",
+ "enum": ["center", "end", "start", "stretch"]
+ }
+ },
+ "required": ["children"]
+ },
+ "List": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "type": "string"
+ },
+ "dataBinding": {
+ "type": "string"
+ }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "direction": {
+ "type": "string",
+ "description": "The direction in which the list items are laid out.",
+ "enum": ["vertical", "horizontal"]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis.",
+ "enum": ["start", "center", "end", "stretch"]
+ }
+ },
+ "required": ["children"]
+ },
+ "Card": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "child": {
+ "type": "string",
+ "description": "The ID of the component to be rendered inside the card."
+ }
+ },
+ "required": ["child"]
+ },
+ "Tabs": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "tabItems": {
+ "type": "array",
+ "description": "An array of objects, where each object defines a tab with a title and a child component.",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "title": {
+ "type": "object",
+ "description": "The tab title. Defines the value as either a literal value or a path to data model value (e.g. '/options/title').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "child": {
+ "type": "string"
+ }
+ },
+ "required": ["title", "child"]
+ }
+ }
+ },
+ "required": ["tabItems"]
+ },
+ "Divider": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "axis": {
+ "type": "string",
+ "description": "The orientation of the divider.",
+ "enum": ["horizontal", "vertical"]
+ }
+ }
+ },
+ "Modal": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "entryPointChild": {
+ "type": "string",
+ "description": "The ID of the component that opens the modal when interacted with (e.g., a button)."
+ },
+ "contentChild": {
+ "type": "string",
+ "description": "The ID of the component to be displayed inside the modal."
+ }
+ },
+ "required": ["entryPointChild", "contentChild"]
+ },
+ "Button": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "child": {
+ "type": "string",
+ "description": "The ID of the component to display in the button, typically a Text component."
+ },
+ "primary": {
+ "type": "boolean",
+ "description": "Indicates if this button should be styled as the primary action."
+ },
+ "action": {
+ "type": "object",
+ "description": "The client-side action to be dispatched when the button is clicked. It includes the action's name and an optional context payload.",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "context": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "object",
+ "description": "Defines the value to be included in the context as either a literal value or a path to a data model value (e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "literalString": {
+ "type": "string"
+ },
+ "literalNumber": {
+ "type": "number"
+ },
+ "literalBoolean": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "required": ["key", "value"]
+ }
+ }
+ },
+ "required": ["name"]
+ }
+ },
+ "required": ["child", "action"]
+ },
+ "CheckBox": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text to display next to the checkbox. Defines the value as either a literal value or a path to data model ('path', e.g. '/option/label').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "value": {
+ "type": "object",
+ "description": "The current state of the checkbox (true for checked, false for unchecked). This can be a literal boolean ('literalBoolean') or a reference to a value in the data model ('path', e.g. '/filter/open').",
+ "additionalProperties": false,
+ "properties": {
+ "literalBoolean": {
+ "type": "boolean"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["label", "value"]
+ },
+ "TextField": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text label for the input field. This can be a literal string or a reference to a value in the data model ('path, e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "object",
+ "description": "The value of the text field. This can be a literal string or a reference to a value in the data model ('path', e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "textFieldType": {
+ "type": "string",
+ "description": "The type of input field to display.",
+ "enum": [
+ "date",
+ "longText",
+ "number",
+ "shortText",
+ "obscured"
+ ]
+ },
+ "validationRegexp": {
+ "type": "string",
+ "description": "A regular expression used for client-side validation of the input."
+ }
+ },
+ "required": ["label"]
+ },
+ "DateTimeInput": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "object",
+ "description": "The selected date and/or time value. This can be a literal string ('literalString') or a reference to a value in the data model ('path', e.g. '/user/dob').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "enableDate": {
+ "type": "boolean",
+ "description": "If true, allows the user to select a date."
+ },
+ "enableTime": {
+ "type": "boolean",
+ "description": "If true, allows the user to select a time."
+ },
+ "outputFormat": {
+ "type": "string",
+ "description": "The desired format for the output string after a date or time is selected."
+ }
+ },
+ "required": ["value"]
+ },
+ "MultipleChoice": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "selections": {
+ "type": "object",
+ "description": "The currently selected values for the component. This can be a literal array of strings or a path to an array in the data model('path', e.g. '/hotel/options').",
+ "additionalProperties": false,
+ "properties": {
+ "literalArray": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of available options for the user to choose from.",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text to display for this option. This can be a literal string or a reference to a value in the data model (e.g. '/option/label').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "value": {
+ "type": "string",
+ "description": "The value to be associated with this option when selected."
+ }
+ },
+ "required": ["label", "value"]
+ }
+ },
+ "maxAllowedSelections": {
+ "type": "integer",
+ "description": "The maximum number of options that the user is allowed to select."
+ }
+ },
+ "required": ["selections", "options"]
+ },
+ "Slider": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "object",
+ "description": "The current value of the slider. This can be a literal number ('literalNumber') or a reference to a value in the data model ('path', e.g. '/restaurant/cost').",
+ "additionalProperties": false,
+ "properties": {
+ "literalNumber": {
+ "type": "number"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "minValue": {
+ "type": "number",
+ "description": "The minimum value of the slider."
+ },
+ "maxValue": {
+ "type": "number",
+ "description": "The maximum value of the slider."
+ }
+ },
+ "required": ["value"]
+ }
+ }
+ }
+ },
+ "required": ["id", "component"]
+ }
+ }
+ },
+ "required": ["surfaceId", "components"]
+ },
+ "dataModelUpdate": {
+ "type": "object",
+ "description": "Updates the data model for a surface.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface this data model update applies to."
+ },
+ "path": {
+ "type": "string",
+ "description": "An optional path to a location within the data model (e.g., '/user/name'). If omitted, or set to '/', the entire data model will be replaced."
+ },
+ "contents": {
+ "type": "array",
+ "description": "An array of data entries. Each entry must contain a 'key' and exactly one corresponding typed 'value*' property.",
+ "items": {
+ "type": "object",
+ "description": "A single data entry. Exactly one 'value*' property should be provided alongside the key.",
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "type": "string",
+ "description": "The key for this data entry."
+ },
+ "valueString": {
+ "type": "string"
+ },
+ "valueNumber": {
+ "type": "number"
+ },
+ "valueBoolean": {
+ "type": "boolean"
+ },
+ "valueMap": {
+ "description": "Represents a map as an adjacency list.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "description": "One entry in the map. Exactly one 'value*' property should be provided alongside the key.",
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "valueString": {
+ "type": "string"
+ },
+ "valueNumber": {
+ "type": "number"
+ },
+ "valueBoolean": {
+ "type": "boolean"
+ }
+ },
+ "required": ["key"]
+ }
+ }
+ },
+ "required": ["key"]
+ }
+ }
+ },
+ "required": ["contents", "surfaceId"]
+ },
+ "deleteSurface": {
+ "type": "object",
+ "description": "Signals the client to delete the surface identified by 'surfaceId'.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be deleted."
+ }
+ },
+ "required": ["surfaceId"]
+ }
+ }
+}
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.d.ts
new file mode 100644
index 0000000000..8f0abec3f6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.d.ts
@@ -0,0 +1,2 @@
+export declare const behavior: string;
+//# sourceMappingURL=behavior.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.d.ts.map
new file mode 100644
index 0000000000..3e785880b5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/behavior.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,QAAQ,QA0BpB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.js
new file mode 100644
index 0000000000..3298b3bc0f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.js
@@ -0,0 +1,54 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+const opacityBehavior = `
+ &:not([disabled]) {
+ cursor: pointer;
+ opacity: var(--opacity, 0);
+ transition: opacity var(--speed, 0.2s) cubic-bezier(0, 0, 0.3, 1);
+
+ &:hover,
+ &:focus {
+ opacity: 1;
+ }
+ }`;
+export const behavior = `
+ ${new Array(21)
+ .fill(0)
+ .map((_, idx) => {
+ return `.behavior-ho-${idx * 5} {
+ --opacity: ${idx / 20};
+ ${opacityBehavior}
+ }`;
+})
+ .join("\n")}
+
+ .behavior-o-s {
+ overflow: scroll;
+ }
+
+ .behavior-o-a {
+ overflow: auto;
+ }
+
+ .behavior-o-h {
+ overflow: hidden;
+ }
+
+ .behavior-sw-n {
+ scrollbar-width: none;
+ }
+`;
+//# sourceMappingURL=behavior.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.js.map
new file mode 100644
index 0000000000..e4a93b23ca
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/behavior.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"behavior.js","sourceRoot":"","sources":["../../../../src/0.8/styles/behavior.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,eAAe,GAAG;;;;;;;;;;IAUpB,CAAC;AAEL,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,IAAI,KAAK,CAAC,EAAE,CAAC;KACZ,IAAI,CAAC,CAAC,CAAC;KACP,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACd,OAAO,gBAAgB,GAAG,GAAG,CAAC;uBACb,GAAG,GAAG,EAAE;YACnB,eAAe;UACjB,CAAC;AACP,CAAC,CAAC;KACD,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;CAiBd,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.d.ts
new file mode 100644
index 0000000000..f346a49d1a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.d.ts
@@ -0,0 +1,2 @@
+export declare const border: string;
+//# sourceMappingURL=border.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.d.ts.map
new file mode 100644
index 0000000000..a19330ab24
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"border.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/border.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,MAAM,QAuBlB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.js
new file mode 100644
index 0000000000..b39415e5fe
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.js
@@ -0,0 +1,41 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { grid } from "./shared.js";
+export const border = `
+ ${new Array(25)
+ .fill(0)
+ .map((_, idx) => {
+ return `
+ .border-bw-${idx} { border-width: ${idx}px; }
+ .border-btw-${idx} { border-top-width: ${idx}px; }
+ .border-bbw-${idx} { border-bottom-width: ${idx}px; }
+ .border-blw-${idx} { border-left-width: ${idx}px; }
+ .border-brw-${idx} { border-right-width: ${idx}px; }
+
+ .border-ow-${idx} { outline-width: ${idx}px; }
+ .border-br-${idx} { border-radius: ${idx * grid}px; overflow: hidden;}`;
+})
+ .join("\n")}
+
+ .border-br-50pc {
+ border-radius: 50%;
+ }
+
+ .border-bs-s {
+ border-style: solid;
+ }
+`;
+//# sourceMappingURL=border.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.js.map
new file mode 100644
index 0000000000..499599e925
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/border.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"border.js","sourceRoot":"","sources":["../../../../src/0.8/styles/border.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,IAAI,KAAK,CAAC,EAAE,CAAC;KACZ,IAAI,CAAC,CAAC,CAAC;KACP,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACd,OAAO;qBACQ,GAAG,oBAAoB,GAAG;sBACzB,GAAG,wBAAwB,GAAG;sBAC9B,GAAG,2BAA2B,GAAG;sBACjC,GAAG,yBAAyB,GAAG;sBAC/B,GAAG,0BAA0B,GAAG;;qBAEjC,GAAG,qBAAqB,GAAG;qBAC3B,GAAG,qBAAqB,GAAG,GAAG,IAAI,wBAAwB,CAAC;AAC5E,CAAC,CAAC;KACD,IAAI,CAAC,IAAI,CAAC;;;;;;;;;CASd,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.d.ts
new file mode 100644
index 0000000000..14a5a466de
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.d.ts
@@ -0,0 +1,2 @@
+export declare const colors: string[];
+//# sourceMappingURL=colors.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.d.ts.map
new file mode 100644
index 0000000000..68b7b7d632
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/colors.ts"],"names":[],"mappings":"AAmFA,eAAO,MAAM,MAAM,UAgBlB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.js
new file mode 100644
index 0000000000..1f721b9a4d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.js
@@ -0,0 +1,80 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { shades } from "../types/colors.js";
+import { toProp } from "./utils.js";
+const color = (src) => `
+ ${src
+ .map((key) => {
+ const inverseKey = getInverseKey(key);
+ return `.color-bc-${key} { border-color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`;
+})
+ .join("\n")}
+
+ ${src
+ .map((key) => {
+ const inverseKey = getInverseKey(key);
+ const vals = [
+ `.color-bgc-${key} { background-color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`,
+ `.color-bbgc-${key}::backdrop { background-color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`,
+ ];
+ for (let o = 0.1; o < 1; o += 0.1) {
+ vals.push(`.color-bbgc-${key}_${(o * 100).toFixed(0)}::backdrop {
+ background-color: light-dark(oklch(from var(${toProp(key)}) l c h / calc(alpha * ${o.toFixed(1)})), oklch(from var(${toProp(inverseKey)}) l c h / calc(alpha * ${o.toFixed(1)})) );
+ }
+ `);
+ }
+ return vals.join("\n");
+})
+ .join("\n")}
+
+ ${src
+ .map((key) => {
+ const inverseKey = getInverseKey(key);
+ return `.color-c-${key} { color: light-dark(var(${toProp(key)}), var(${toProp(inverseKey)})); }`;
+})
+ .join("\n")}
+ `;
+const getInverseKey = (key) => {
+ const match = key.match(/^([a-z]+)(\d+)$/);
+ if (!match)
+ return key;
+ const [, prefix, shadeStr] = match;
+ const shade = parseInt(shadeStr, 10);
+ const target = 100 - shade;
+ const inverseShade = shades.reduce((prev, curr) => Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev);
+ return `${prefix}${inverseShade}`;
+};
+const keyFactory = (prefix) => {
+ return shades.map((v) => `${prefix}${v}`);
+};
+export const colors = [
+ color(keyFactory("p")),
+ color(keyFactory("s")),
+ color(keyFactory("t")),
+ color(keyFactory("n")),
+ color(keyFactory("nv")),
+ color(keyFactory("e")),
+ `
+ .color-bgc-transparent {
+ background-color: transparent;
+ }
+
+ :host {
+ color-scheme: var(--color-scheme);
+ }
+ `,
+];
+//# sourceMappingURL=colors.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.js.map
new file mode 100644
index 0000000000..d5cacd48b1
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/colors.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../../src/0.8/styles/colors.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.d.ts
new file mode 100644
index 0000000000..194e46fced
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.d.ts
@@ -0,0 +1,11 @@
+/**
+ * CSS classes for Google Symbols.
+ *
+ * Usage:
+ *
+ * ```html
+ *
+ * ```
+ */
+export declare const icons = "\n .g-icon {\n font-family: \"Material Symbols Outlined\", \"Google Symbols\";\n font-weight: normal;\n font-style: normal;\n font-display: optional;\n font-size: 20px;\n width: 1em;\n height: 1em;\n user-select: none;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n overflow: hidden;\n\n font-variation-settings: \"FILL\" 0, \"wght\" 300, \"GRAD\" 0, \"opsz\" 48,\n \"ROND\" 100;\n\n &.filled {\n font-variation-settings: \"FILL\" 1, \"wght\" 300, \"GRAD\" 0, \"opsz\" 48,\n \"ROND\" 100;\n }\n\n &.filled-heavy {\n font-variation-settings: \"FILL\" 1, \"wght\" 700, \"GRAD\" 0, \"opsz\" 48,\n \"ROND\" 100;\n }\n }\n";
+//# sourceMappingURL=icons.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.d.ts.map
new file mode 100644
index 0000000000..3e4e633269
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/icons.ts"],"names":[],"mappings":"AAgBA;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,k5BAkCjB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.js
new file mode 100644
index 0000000000..cfd0e770fa
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.js
@@ -0,0 +1,60 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+/**
+ * CSS classes for Google Symbols.
+ *
+ * Usage:
+ *
+ * ```html
+ *
+ * ```
+ */
+export const icons = `
+ .g-icon {
+ font-family: "Material Symbols Outlined", "Google Symbols";
+ font-weight: normal;
+ font-style: normal;
+ font-display: optional;
+ font-size: 20px;
+ width: 1em;
+ height: 1em;
+ user-select: none;
+ line-height: 1;
+ letter-spacing: normal;
+ text-transform: none;
+ display: inline-block;
+ white-space: nowrap;
+ word-wrap: normal;
+ direction: ltr;
+ -webkit-font-feature-settings: "liga";
+ -webkit-font-smoothing: antialiased;
+ overflow: hidden;
+
+ font-variation-settings: "FILL" 0, "wght" 300, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+
+ &.filled {
+ font-variation-settings: "FILL" 1, "wght" 300, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+ }
+
+ &.filled-heavy {
+ font-variation-settings: "FILL" 1, "wght" 700, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+ }
+ }
+`;
+//# sourceMappingURL=icons.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.js.map
new file mode 100644
index 0000000000..bbb6dff8e4
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/icons.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../src/0.8/styles/icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCpB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.d.ts
new file mode 100644
index 0000000000..0648b1552b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.d.ts
@@ -0,0 +1,3 @@
+export * from "./utils.js";
+export declare const structuralStyles: string;
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.d.ts.map
new file mode 100644
index 0000000000..2f5d3a5e54
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/index.ts"],"names":[],"mappings":"AAwBA,cAAc,YAAY,CAAC;AAE3B,eAAO,MAAM,gBAAgB,EAAE,MAUlB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.js
new file mode 100644
index 0000000000..3371bca5a0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.js
@@ -0,0 +1,35 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { behavior } from "./behavior.js";
+import { border } from "./border.js";
+import { colors } from "./colors.js";
+import { icons } from "./icons.js";
+import { layout } from "./layout.js";
+import { opacity } from "./opacity.js";
+import { type } from "./type.js";
+export * from "./utils.js";
+export const structuralStyles = [
+ behavior,
+ border,
+ colors,
+ icons,
+ layout,
+ opacity,
+ type,
+]
+ .flat(Infinity)
+ .join("\n");
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.js.map
new file mode 100644
index 0000000000..eb0f8b65e3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/0.8/styles/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,cAAc,YAAY,CAAC;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,QAAQ;IACR,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,IAAI;CACL;KACE,IAAI,CAAC,QAAQ,CAAC;KACd,IAAI,CAAC,IAAI,CAAC,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.d.ts
new file mode 100644
index 0000000000..732b9232d6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.d.ts
@@ -0,0 +1,2 @@
+export declare const layout: string;
+//# sourceMappingURL=layout.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.d.ts.map
new file mode 100644
index 0000000000..ae54723eea
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/layout.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,MAAM,QAwNlB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.js
new file mode 100644
index 0000000000..47ebd61498
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.js
@@ -0,0 +1,232 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { grid } from "./shared.js";
+export const layout = `
+ :host {
+ ${new Array(16)
+ .fill(0)
+ .map((_, idx) => {
+ return `--g-${idx + 1}: ${(idx + 1) * grid}px;`;
+})
+ .join("\n")}
+ }
+
+ ${new Array(49)
+ .fill(0)
+ .map((_, index) => {
+ const idx = index - 24;
+ const lbl = idx < 0 ? `n${Math.abs(idx)}` : idx.toString();
+ return `
+ .layout-p-${lbl} { --padding: ${idx * grid}px; padding: var(--padding); }
+ .layout-pt-${lbl} { padding-top: ${idx * grid}px; }
+ .layout-pr-${lbl} { padding-right: ${idx * grid}px; }
+ .layout-pb-${lbl} { padding-bottom: ${idx * grid}px; }
+ .layout-pl-${lbl} { padding-left: ${idx * grid}px; }
+
+ .layout-m-${lbl} { --margin: ${idx * grid}px; margin: var(--margin); }
+ .layout-mt-${lbl} { margin-top: ${idx * grid}px; }
+ .layout-mr-${lbl} { margin-right: ${idx * grid}px; }
+ .layout-mb-${lbl} { margin-bottom: ${idx * grid}px; }
+ .layout-ml-${lbl} { margin-left: ${idx * grid}px; }
+
+ .layout-t-${lbl} { top: ${idx * grid}px; }
+ .layout-r-${lbl} { right: ${idx * grid}px; }
+ .layout-b-${lbl} { bottom: ${idx * grid}px; }
+ .layout-l-${lbl} { left: ${idx * grid}px; }`;
+})
+ .join("\n")}
+
+ ${new Array(25)
+ .fill(0)
+ .map((_, idx) => {
+ return `
+ .layout-g-${idx} { gap: ${idx * grid}px; }`;
+})
+ .join("\n")}
+
+ ${new Array(8)
+ .fill(0)
+ .map((_, idx) => {
+ return `
+ .layout-grd-col${idx + 1} { grid-template-columns: ${"1fr "
+ .repeat(idx + 1)
+ .trim()}; }`;
+})
+ .join("\n")}
+
+ .layout-pos-a {
+ position: absolute;
+ }
+
+ .layout-pos-rel {
+ position: relative;
+ }
+
+ .layout-dsp-none {
+ display: none;
+ }
+
+ .layout-dsp-block {
+ display: block;
+ }
+
+ .layout-dsp-grid {
+ display: grid;
+ }
+
+ .layout-dsp-iflex {
+ display: inline-flex;
+ }
+
+ .layout-dsp-flexvert {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .layout-dsp-flexhor {
+ display: flex;
+ flex-direction: row;
+ }
+
+ .layout-fw-w {
+ flex-wrap: wrap;
+ }
+
+ .layout-al-fs {
+ align-items: start;
+ }
+
+ .layout-al-fe {
+ align-items: end;
+ }
+
+ .layout-al-c {
+ align-items: center;
+ }
+
+ .layout-as-n {
+ align-self: normal;
+ }
+
+ .layout-js-c {
+ justify-self: center;
+ }
+
+ .layout-sp-c {
+ justify-content: center;
+ }
+
+ .layout-sp-ev {
+ justify-content: space-evenly;
+ }
+
+ .layout-sp-bt {
+ justify-content: space-between;
+ }
+
+ .layout-sp-s {
+ justify-content: start;
+ }
+
+ .layout-sp-e {
+ justify-content: end;
+ }
+
+ .layout-ji-e {
+ justify-items: end;
+ }
+
+ .layout-r-none {
+ resize: none;
+ }
+
+ .layout-fs-c {
+ field-sizing: content;
+ }
+
+ .layout-fs-n {
+ field-sizing: none;
+ }
+
+ .layout-flx-0 {
+ flex: 0 0 auto;
+ }
+
+ .layout-flx-1 {
+ flex: 1 0 auto;
+ }
+
+ .layout-c-s {
+ contain: strict;
+ }
+
+ /** Widths **/
+
+ ${new Array(10)
+ .fill(0)
+ .map((_, idx) => {
+ const weight = (idx + 1) * 10;
+ return `.layout-w-${weight} { width: ${weight}%; max-width: ${weight}%; }`;
+})
+ .join("\n")}
+
+ ${new Array(16)
+ .fill(0)
+ .map((_, idx) => {
+ const weight = idx * grid;
+ return `.layout-wp-${idx} { width: ${weight}px; }`;
+})
+ .join("\n")}
+
+ /** Heights **/
+
+ ${new Array(10)
+ .fill(0)
+ .map((_, idx) => {
+ const height = (idx + 1) * 10;
+ return `.layout-h-${height} { height: ${height}%; }`;
+})
+ .join("\n")}
+
+ ${new Array(16)
+ .fill(0)
+ .map((_, idx) => {
+ const height = idx * grid;
+ return `.layout-hp-${idx} { height: ${height}px; }`;
+})
+ .join("\n")}
+
+ .layout-el-cv {
+ & img,
+ & video {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ margin: 0;
+ }
+ }
+
+ .layout-ar-sq {
+ aspect-ratio: 1 / 1;
+ }
+
+ .layout-ex-fb {
+ margin: calc(var(--padding) * -1) 0 0 calc(var(--padding) * -1);
+ width: calc(100% + var(--padding) * 2);
+ height: calc(100% + var(--padding) * 2);
+ }
+`;
+//# sourceMappingURL=layout.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.js.map
new file mode 100644
index 0000000000..2dc10ac379
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/layout.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../src/0.8/styles/layout.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.d.ts
new file mode 100644
index 0000000000..ae816f35fb
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.d.ts
@@ -0,0 +1,2 @@
+export declare const opacity: string;
+//# sourceMappingURL=opacity.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.d.ts.map
new file mode 100644
index 0000000000..aaacdf9026
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"opacity.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/opacity.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,OAAO,QAOnB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.js
new file mode 100644
index 0000000000..5e20b2fb4b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.js
@@ -0,0 +1,24 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export const opacity = `
+ ${new Array(21)
+ .fill(0)
+ .map((_, idx) => {
+ return `.opacity-el-${idx * 5} { opacity: ${idx / 20}; }`;
+})
+ .join("\n")}
+`;
+//# sourceMappingURL=opacity.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.js.map
new file mode 100644
index 0000000000..8d9abdbdf5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/opacity.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"opacity.js","sourceRoot":"","sources":["../../../../src/0.8/styles/opacity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,IAAI,KAAK,CAAC,EAAE,CAAC;KACZ,IAAI,CAAC,CAAC,CAAC;KACP,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACd,OAAO,eAAe,GAAG,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE,KAAK,CAAC;AAC5D,CAAC,CAAC;KACD,IAAI,CAAC,IAAI,CAAC;CACd,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.d.ts
new file mode 100644
index 0000000000..6515ca0ab0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.d.ts
@@ -0,0 +1,2 @@
+export declare const grid = 4;
+//# sourceMappingURL=shared.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.d.ts.map
new file mode 100644
index 0000000000..1312919902
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/shared.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,IAAI,IAAI,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.js
new file mode 100644
index 0000000000..4638435363
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export const grid = 4;
+//# sourceMappingURL=shared.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.js.map
new file mode 100644
index 0000000000..ffa9d021e0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/shared.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/0.8/styles/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.d.ts
new file mode 100644
index 0000000000..e42797061f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.d.ts
@@ -0,0 +1,2 @@
+export declare const type: string;
+//# sourceMappingURL=type.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.d.ts.map
new file mode 100644
index 0000000000..81b9fedc2a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/type.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,IAAI,QA2IhB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.js
new file mode 100644
index 0000000000..233d3aae7a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.js
@@ -0,0 +1,156 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export const type = `
+ :host {
+ --default-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ --default-font-family-mono: "Courier New", Courier, monospace;
+ }
+
+ .typography-f-s {
+ font-family: var(--font-family, var(--default-font-family));
+ font-optical-sizing: auto;
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0;
+ }
+
+ .typography-f-sf {
+ font-family: var(--font-family-flex, var(--default-font-family));
+ font-optical-sizing: auto;
+ }
+
+ .typography-f-c {
+ font-family: var(--font-family-mono, var(--default-font-family));
+ font-optical-sizing: auto;
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0;
+ }
+
+ .typography-v-r {
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0, "ROND" 100;
+ }
+
+ .typography-ta-s {
+ text-align: start;
+ }
+
+ .typography-ta-c {
+ text-align: center;
+ }
+
+ .typography-fs-n {
+ font-style: normal;
+ }
+
+ .typography-fs-i {
+ font-style: italic;
+ }
+
+ .typography-sz-ls {
+ font-size: 11px;
+ line-height: 16px;
+ }
+
+ .typography-sz-lm {
+ font-size: 12px;
+ line-height: 16px;
+ }
+
+ .typography-sz-ll {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-bs {
+ font-size: 12px;
+ line-height: 16px;
+ }
+
+ .typography-sz-bm {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-bl {
+ font-size: 16px;
+ line-height: 24px;
+ }
+
+ .typography-sz-ts {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-tm {
+ font-size: 16px;
+ line-height: 24px;
+ }
+
+ .typography-sz-tl {
+ font-size: 22px;
+ line-height: 28px;
+ }
+
+ .typography-sz-hs {
+ font-size: 24px;
+ line-height: 32px;
+ }
+
+ .typography-sz-hm {
+ font-size: 28px;
+ line-height: 36px;
+ }
+
+ .typography-sz-hl {
+ font-size: 32px;
+ line-height: 40px;
+ }
+
+ .typography-sz-ds {
+ font-size: 36px;
+ line-height: 44px;
+ }
+
+ .typography-sz-dm {
+ font-size: 45px;
+ line-height: 52px;
+ }
+
+ .typography-sz-dl {
+ font-size: 57px;
+ line-height: 64px;
+ }
+
+ .typography-ws-p {
+ white-space: pre-line;
+ }
+
+ .typography-ws-nw {
+ white-space: nowrap;
+ }
+
+ .typography-td-none {
+ text-decoration: none;
+ }
+
+ /** Weights **/
+
+ ${new Array(9)
+ .fill(0)
+ .map((_, idx) => {
+ const weight = (idx + 1) * 100;
+ return `.typography-w-${weight} { font-weight: ${weight}; }`;
+})
+ .join("\n")}
+`;
+//# sourceMappingURL=type.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.js.map
new file mode 100644
index 0000000000..69b71e54f7
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/type.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../src/0.8/styles/type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoIhB,IAAI,KAAK,CAAC,CAAC,CAAC;KACX,IAAI,CAAC,CAAC,CAAC;KACP,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACd,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/B,OAAO,iBAAiB,MAAM,mBAAmB,MAAM,KAAK,CAAC;AAC/D,CAAC,CAAC;KACD,IAAI,CAAC,IAAI,CAAC;CACd,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.d.ts
new file mode 100644
index 0000000000..74c7938db1
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.d.ts
@@ -0,0 +1,6 @@
+import { ColorPalettes } from "../types/colors.js";
+export declare function merge(...classes: Array>): Record;
+export declare function appendToAll(target: Record, exclusions: string[], ...classes: Array>): Record;
+export declare function createThemeStyles(palettes: ColorPalettes): Record;
+export declare function toProp(key: string): string;
+//# sourceMappingURL=utils.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.d.ts.map
new file mode 100644
index 0000000000..64b8331b8b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/0.8/styles/utils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,wBAAgB,KAAK,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,2BAkB/D;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAChC,UAAU,EAAE,MAAM,EAAE,EACpB,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,4BAwC3C;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,UAMjC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.js b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.js
new file mode 100644
index 0000000000..ef0a26a324
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.js
@@ -0,0 +1,81 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export function merge(...classes) {
+ const styles = {};
+ for (const clazz of classes) {
+ for (const [key, val] of Object.entries(clazz)) {
+ const prefix = key.split("-").with(-1, "").join("-");
+ const existingKeys = Object.keys(styles).filter((key) => key.startsWith(prefix));
+ for (const existingKey of existingKeys) {
+ delete styles[existingKey];
+ }
+ styles[key] = val;
+ }
+ }
+ return styles;
+}
+export function appendToAll(target, exclusions, ...classes) {
+ const updatedTarget = structuredClone(target);
+ // Step through each of the new blocks we've been handed.
+ for (const clazz of classes) {
+ // For each of the items in the list, create the prefix value, e.g., for
+ // typography-f-s reduce to typography-f-. This will allow us to find any
+ // and all matches across the target that have the same prefix and swap them
+ // out for the updated item.
+ for (const key of Object.keys(clazz)) {
+ const prefix = key.split("-").with(-1, "").join("-");
+ // Now we have the prefix step through all iteme in the target, and
+ // replace the value in the array when we find it.
+ for (const [tagName, classesToAdd] of Object.entries(updatedTarget)) {
+ if (exclusions.includes(tagName)) {
+ continue;
+ }
+ let found = false;
+ for (let t = 0; t < classesToAdd.length; t++) {
+ if (classesToAdd[t].startsWith(prefix)) {
+ found = true;
+ // In theory we should be able to break after finding a single
+ // entry here because we shouldn't have items with the same prefix
+ // in the array, but for safety we'll run to the end of the array
+ // and ensure we've captured all possible items with the prefix.
+ classesToAdd[t] = key;
+ }
+ }
+ if (!found) {
+ classesToAdd.push(key);
+ }
+ }
+ }
+ }
+ return updatedTarget;
+}
+export function createThemeStyles(palettes) {
+ const styles = {};
+ for (const palette of Object.values(palettes)) {
+ for (const [key, val] of Object.entries(palette)) {
+ const prop = toProp(key);
+ styles[prop] = val;
+ }
+ }
+ return styles;
+}
+export function toProp(key) {
+ if (key.startsWith("nv")) {
+ return `--nv-${key.slice(2)}`;
+ }
+ return `--${key[0]}-${key.slice(1)}`;
+}
+//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.js.map
new file mode 100644
index 0000000000..0225c49266
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/styles/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/0.8/styles/utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.d.ts
new file mode 100644
index 0000000000..b2d1c3a384
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.d.ts
@@ -0,0 +1,66 @@
+/**
+ * A message from the client describing its capabilities, such as the component
+ * catalog it supports. Exactly ONE of the properties in this object must be
+ * set.
+ */
+export type ClientCapabilitiesUri = string;
+export type ClientCapabilitiesDynamic = {
+ components: {
+ [key: string]: unknown;
+ };
+ styles: {
+ [key: string]: unknown;
+ };
+};
+export type ClientCapabilities = {
+ catalogUri: ClientCapabilitiesUri;
+} | {
+ dynamicCatalog: ClientCapabilitiesDynamic;
+};
+/**
+ * A message sent from the client to the server. Exactly ONE of the properties
+ * in this object must be set.
+ */
+export interface ClientToServerMessage {
+ userAction?: UserAction;
+ clientUiCapabilities?: ClientCapabilities;
+ error?: ClientError;
+ /** Demo content */
+ request?: unknown;
+}
+/**
+ * Represents a user-initiated action, sent from the client to the server.
+ */
+export interface UserAction {
+ /**
+ * The name of the action.
+ */
+ name: string;
+ /**
+ * The ID of the surface.
+ */
+ surfaceId: string;
+ /**
+ * The ID of the component that triggered the event.
+ */
+ sourceComponentId: string;
+ /**
+ * An ISO timestamp of when the event occurred.
+ */
+ timestamp: string;
+ /**
+ * A JSON object containing the key-value pairs from the component's
+ * `action.context`, after resolving all data bindings.
+ */
+ context?: {
+ [k: string]: unknown;
+ };
+}
+/**
+ * A message from the client indicating an error occurred, for example,
+ * during UI rendering.
+ */
+export interface ClientError {
+ [k: string]: unknown;
+}
+//# sourceMappingURL=client-event.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.d.ts.map
new file mode 100644
index 0000000000..ab7eabf12f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"client-event.d.ts","sourceRoot":"","sources":["../../../../src/0.8/types/client-event.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AAEH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B;IAAE,UAAU,EAAE,qBAAqB,CAAA;CAAE,GACrC;IAAE,cAAc,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;IAC1C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.js b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.js
new file mode 100644
index 0000000000..9d293f62b8
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export {};
+//# sourceMappingURL=client-event.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.js.map
new file mode 100644
index 0000000000..76330b7fa3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/client-event.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"client-event.js","sourceRoot":"","sources":["../../../../src/0.8/types/client-event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.d.ts
new file mode 100644
index 0000000000..6ddf780ac5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.d.ts
@@ -0,0 +1,25 @@
+type ColorShade = 0 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 50 | 60 | 70 | 80 | 90 | 95 | 98 | 99 | 100;
+export type PaletteKeyVals = "n" | "nv" | "p" | "s" | "t" | "e";
+export declare const shades: ColorShade[];
+type CreatePalette = {
+ [Key in `${Prefix}${ColorShade}`]: string;
+};
+export type PaletteKey = Array>;
+export type PaletteKeys = {
+ neutral: PaletteKey<"n">;
+ neutralVariant: PaletteKey<"nv">;
+ primary: PaletteKey<"p">;
+ secondary: PaletteKey<"s">;
+ tertiary: PaletteKey<"t">;
+ error: PaletteKey<"e">;
+};
+export type ColorPalettes = {
+ neutral: CreatePalette<"n">;
+ neutralVariant: CreatePalette<"nv">;
+ primary: CreatePalette<"p">;
+ secondary: CreatePalette<"s">;
+ tertiary: CreatePalette<"t">;
+ error: CreatePalette<"e">;
+};
+export {};
+//# sourceMappingURL=colors.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.d.ts.map
new file mode 100644
index 0000000000..970eb11f68
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/0.8/types/colors.ts"],"names":[],"mappings":"AAgBA,KAAK,UAAU,GACX,CAAC,GACD,CAAC,GACD,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,EAAE,GACF,GAAG,CAAC;AAER,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAChE,eAAO,MAAM,MAAM,EAAE,UAAU,EAE9B,CAAC;AAEF,KAAK,aAAa,CAAC,MAAM,SAAS,cAAc,IAAI;KACjD,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,EAAE,GAAG,MAAM;CAC1C,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,cAAc,IAAI,KAAK,CAC3D,MAAM,aAAa,CAAC,MAAM,CAAC,CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CAC3B,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.js b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.js
new file mode 100644
index 0000000000..20f8b32a60
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.js
@@ -0,0 +1,19 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export const shades = [
+ 0, 5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 95, 98, 99, 100,
+];
+//# sourceMappingURL=colors.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.js.map
new file mode 100644
index 0000000000..3b9a0d3813
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/colors.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../../src/0.8/types/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAuBH,MAAM,CAAC,MAAM,MAAM,GAAiB;IAClC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;CACtE,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.d.ts
new file mode 100644
index 0000000000..f685533fc6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.d.ts
@@ -0,0 +1,174 @@
+import { StringValue } from "./primitives";
+export interface Action {
+ /**
+ * A unique name identifying the action (e.g., 'submitForm').
+ */
+ name: string;
+ /**
+ * A key-value map of data bindings to be resolved when the action is triggered.
+ */
+ context?: {
+ key: string;
+ /**
+ * The dynamic value. Define EXACTLY ONE of the nested properties.
+ */
+ value: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ literalNumber?: number;
+ literalBoolean?: boolean;
+ };
+ }[];
+}
+export interface Text {
+ text: StringValue;
+ usageHint: "h1" | "h2" | "h3" | "h4" | "h5" | "caption" | "body";
+}
+export interface Image {
+ url: StringValue;
+ usageHint: "icon" | "avatar" | "smallFeature" | "mediumFeature" | "largeFeature" | "header";
+ fit?: "contain" | "cover" | "fill" | "none" | "scale-down";
+}
+export interface Icon {
+ name: StringValue;
+}
+export interface Video {
+ url: StringValue;
+}
+export interface AudioPlayer {
+ url: StringValue;
+ /**
+ * A label, title, or placeholder text.
+ */
+ description?: StringValue;
+}
+export interface Tabs {
+ /**
+ * A list of tabs, each with a title and a child component ID.
+ */
+ tabItems: {
+ /**
+ * The title of the tab.
+ */
+ title: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ };
+ /**
+ * A reference to a component instance by its unique ID.
+ */
+ child: string;
+ }[];
+}
+export interface Divider {
+ /**
+ * The orientation.
+ */
+ axis?: "horizontal" | "vertical";
+ /**
+ * The color of the divider (e.g., hex code or semantic name).
+ */
+ color?: string;
+ /**
+ * The thickness of the divider.
+ */
+ thickness?: number;
+}
+export interface Modal {
+ /**
+ * The ID of the component (e.g., a button) that triggers the modal.
+ */
+ entryPointChild: string;
+ /**
+ * The ID of the component to display as the modal's content.
+ */
+ contentChild: string;
+}
+export interface Button {
+ /**
+ * The ID of the component to display as the button's content.
+ */
+ child: string;
+ /**
+ * Represents a user-initiated action.
+ */
+ action: Action;
+}
+export interface Checkbox {
+ label: StringValue;
+ value: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ literalBoolean?: boolean;
+ };
+}
+export interface TextField {
+ text?: StringValue;
+ /**
+ * A label, title, or placeholder text.
+ */
+ label: StringValue;
+ type?: "shortText" | "number" | "date" | "longText";
+ /**
+ * A regex string to validate the input.
+ */
+ validationRegexp?: string;
+}
+export interface DateTimeInput {
+ value: StringValue;
+ enableDate?: boolean;
+ enableTime?: boolean;
+ /**
+ * The string format for the output (e.g., 'YYYY-MM-DD').
+ */
+ outputFormat?: string;
+}
+export interface MultipleChoice {
+ selections: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ literalArray?: string[];
+ };
+ options?: {
+ label: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ };
+ value: string;
+ }[];
+ maxAllowedSelections?: number;
+}
+export interface Slider {
+ value: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ literalNumber?: number;
+ };
+ minValue?: number;
+ maxValue?: number;
+}
+//# sourceMappingURL=components.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.d.ts.map
new file mode 100644
index 0000000000..1466393f1d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/0.8/types/components.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ;;WAEG;QACH,KAAK,EAAE;YACL;;eAEG;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,cAAc,CAAC,EAAE,OAAO,CAAC;SAC1B,CAAC;KACH,EAAE,CAAC;CACL;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;CAClE;AAED,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,SAAS,EACL,MAAM,GACN,QAAQ,GACR,cAAc,GACd,eAAe,GACf,cAAc,GACd,QAAQ,CAAC;IACb,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;CAC5D;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,WAAW,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,QAAQ,EAAE;QACR;;WAEG;QACH,KAAK,EAAE;YACL;;eAEG;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE;QACL;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACpD;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QACV;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,KAAK,EAAE;YACL;;eAEG;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YACd;;eAEG;YACH,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE;QACL;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.js b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.js
new file mode 100644
index 0000000000..29d0bfcd72
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export {};
+//# sourceMappingURL=components.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.js.map
new file mode 100644
index 0000000000..5f1b6823cf
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/components.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/0.8/types/components.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.d.ts
new file mode 100644
index 0000000000..5b92b5962b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.d.ts
@@ -0,0 +1,43 @@
+export interface StringValue {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literal?: string;
+}
+export interface NumberValue {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded number value.
+ */
+ literalNumber?: number;
+ /**
+ * A fixed, hardcoded number value.
+ */
+ literal?: number;
+}
+export interface BooleanValue {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded boolean value.
+ */
+ literalBoolean?: boolean;
+ /**
+ * A fixed, hardcoded boolean value.
+ */
+ literal?: boolean;
+}
+//# sourceMappingURL=primitives.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.d.ts.map
new file mode 100644
index 0000000000..1a487d4ba1
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../../src/0.8/types/primitives.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.js b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.js
new file mode 100644
index 0000000000..dd2ae9f14b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export {};
+//# sourceMappingURL=primitives.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.js.map
new file mode 100644
index 0000000000..c62c37ba54
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/primitives.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../../../src/0.8/types/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.d.ts
new file mode 100644
index 0000000000..cdc14531b1
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.d.ts
@@ -0,0 +1,390 @@
+export { type ClientToServerMessage as A2UIClientEventMessage, type ClientCapabilitiesDynamic, } from "./client-event.js";
+export { type Action } from "./components.js";
+import { AudioPlayer, Button, Checkbox, DateTimeInput, Divider, Icon, Image, MultipleChoice, Slider, Text, TextField, Video } from "./components";
+import { StringValue } from "./primitives";
+export type MessageProcessor = {
+ getSurfaces(): ReadonlyMap;
+ clearSurfaces(): void;
+ processMessages(messages: ServerToClientMessage[]): void;
+ /**
+ * Retrieves the data for a given component node and a relative path string.
+ * This correctly handles the special `.` path, which refers to the node's
+ * own data context.
+ */
+ getData(node: AnyComponentNode, relativePath: string, surfaceId: string): DataValue | null;
+ setData(node: AnyComponentNode | null, relativePath: string, value: DataValue, surfaceId: string): void;
+ resolvePath(path: string, dataContextPath?: string): string;
+};
+export type Theme = {
+ components: {
+ AudioPlayer: Record;
+ Button: Record;
+ Card: Record;
+ Column: Record;
+ CheckBox: {
+ container: Record;
+ element: Record;
+ label: Record;
+ };
+ DateTimeInput: {
+ container: Record;
+ element: Record;
+ label: Record;
+ };
+ Divider: Record;
+ Image: {
+ all: Record;
+ icon: Record;
+ avatar: Record;
+ smallFeature: Record;
+ mediumFeature: Record;
+ largeFeature: Record;
+ header: Record;
+ };
+ Icon: Record;
+ List: Record;
+ Modal: {
+ backdrop: Record;
+ element: Record;
+ };
+ MultipleChoice: {
+ container: Record;
+ element: Record;
+ label: Record;
+ };
+ Row: Record;
+ Slider: {
+ container: Record;
+ element: Record;
+ label: Record;
+ };
+ Tabs: {
+ container: Record;
+ element: Record;
+ controls: {
+ all: Record;
+ selected: Record;
+ };
+ };
+ Text: {
+ all: Record;
+ h1: Record;
+ h2: Record;
+ h3: Record;
+ h4: Record;
+ h5: Record;
+ caption: Record;
+ body: Record;
+ };
+ TextField: {
+ container: Record;
+ element: Record;
+ label: Record;
+ };
+ Video: Record;
+ };
+ elements: {
+ a: Record;
+ audio: Record;
+ body: Record;
+ button: Record;
+ h1: Record;
+ h2: Record;
+ h3: Record;
+ h4: Record;
+ h5: Record;
+ iframe: Record;
+ input: Record;
+ p: Record;
+ pre: Record;
+ textarea: Record;
+ video: Record;
+ };
+ markdown: {
+ p: string[];
+ h1: string[];
+ h2: string[];
+ h3: string[];
+ h4: string[];
+ h5: string[];
+ ul: string[];
+ ol: string[];
+ li: string[];
+ a: string[];
+ strong: string[];
+ em: string[];
+ };
+ additionalStyles?: {
+ AudioPlayer?: Record;
+ Button?: Record;
+ Card?: Record;
+ Column?: Record;
+ CheckBox?: Record;
+ DateTimeInput?: Record;
+ Divider?: Record;
+ Heading?: Record;
+ Icon?: Record;
+ Image?: Record;
+ List?: Record;
+ Modal?: Record;
+ MultipleChoice?: Record;
+ Row?: Record;
+ Slider?: Record;
+ Tabs?: Record;
+ Text?: Record | {
+ h1: Record;
+ h2: Record;
+ h3: Record;
+ h4: Record;
+ h5: Record;
+ body: Record;
+ caption: Record;
+ };
+ TextField?: Record;
+ Video?: Record;
+ };
+};
+/**
+ * Represents a user-initiated action, sent from the client to the server.
+ */
+export interface UserAction {
+ /**
+ * The name of the action, taken from the component's `action.action`
+ * property.
+ */
+ actionName: string;
+ /**
+ * The `id` of the component that triggered the event.
+ */
+ sourceComponentId: string;
+ /**
+ * An ISO 8601 timestamp of when the event occurred.
+ */
+ timestamp: string;
+ /**
+ * A JSON object containing the key-value pairs from the component's
+ * `action.context`, after resolving all data bindings.
+ */
+ context?: {
+ [k: string]: unknown;
+ };
+}
+/** A recursive type for any valid JSON-like value in the data model. */
+export type DataValue = string | number | boolean | null | DataMap | DataObject | DataArray;
+export type DataObject = {
+ [key: string]: DataValue;
+};
+export type DataMap = Map;
+export type DataArray = DataValue[];
+/** A template for creating components from a list in the data model. */
+export interface ComponentArrayTemplate {
+ componentId: string;
+ dataBinding: string;
+}
+/** Defines a list of child components, either explicitly or via a template. */
+export interface ComponentArrayReference {
+ explicitList?: string[];
+ template?: ComponentArrayTemplate;
+}
+/** Represents the general shape of a component's properties. */
+export type ComponentProperties = {
+ children?: ComponentArrayReference;
+ child?: string;
+ [k: string]: unknown;
+};
+/** A raw component instance from a SurfaceUpdate message. */
+export interface ComponentInstance {
+ id: string;
+ weight?: number;
+ component?: ComponentProperties;
+}
+export interface BeginRenderingMessage {
+ surfaceId: string;
+ root: string;
+ styles?: Record;
+}
+export interface SurfaceUpdateMessage {
+ surfaceId: string;
+ components: ComponentInstance[];
+}
+export interface DataModelUpdate {
+ surfaceId: string;
+ path?: string;
+ contents: ValueMap[];
+}
+export type ValueMap = DataObject & {
+ key: string;
+ /** May be JSON */
+ valueString?: string;
+ valueNumber?: number;
+ valueBoolean?: boolean;
+ valueMap?: ValueMap[];
+};
+export interface DeleteSurfaceMessage {
+ surfaceId: string;
+}
+export interface ServerToClientMessage {
+ beginRendering?: BeginRenderingMessage;
+ surfaceUpdate?: SurfaceUpdateMessage;
+ dataModelUpdate?: DataModelUpdate;
+ deleteSurface?: DeleteSurfaceMessage;
+}
+/**
+ * A recursive type for any value that can appear within a resolved component
+ * tree. This is the main type that makes the recursive resolution possible.
+ */
+export type ResolvedValue = string | number | boolean | null | AnyComponentNode | ResolvedMap | ResolvedArray;
+/** A generic map where each value has been recursively resolved. */
+export type ResolvedMap = {
+ [key: string]: ResolvedValue;
+};
+/** A generic array where each item has been recursively resolved. */
+export type ResolvedArray = ResolvedValue[];
+/**
+ * A base interface that all component nodes share.
+ */
+interface BaseComponentNode {
+ id: string;
+ weight?: number;
+ dataContextPath?: string;
+ slotName?: string;
+}
+export interface TextNode extends BaseComponentNode {
+ type: "Text";
+ properties: ResolvedText;
+}
+export interface ImageNode extends BaseComponentNode {
+ type: "Image";
+ properties: ResolvedImage;
+}
+export interface IconNode extends BaseComponentNode {
+ type: "Icon";
+ properties: ResolvedIcon;
+}
+export interface VideoNode extends BaseComponentNode {
+ type: "Video";
+ properties: ResolvedVideo;
+}
+export interface AudioPlayerNode extends BaseComponentNode {
+ type: "AudioPlayer";
+ properties: ResolvedAudioPlayer;
+}
+export interface RowNode extends BaseComponentNode {
+ type: "Row";
+ properties: ResolvedRow;
+}
+export interface ColumnNode extends BaseComponentNode {
+ type: "Column";
+ properties: ResolvedColumn;
+}
+export interface ListNode extends BaseComponentNode {
+ type: "List";
+ properties: ResolvedList;
+}
+export interface CardNode extends BaseComponentNode {
+ type: "Card";
+ properties: ResolvedCard;
+}
+export interface TabsNode extends BaseComponentNode {
+ type: "Tabs";
+ properties: ResolvedTabs;
+}
+export interface DividerNode extends BaseComponentNode {
+ type: "Divider";
+ properties: ResolvedDivider;
+}
+export interface ModalNode extends BaseComponentNode {
+ type: "Modal";
+ properties: ResolvedModal;
+}
+export interface ButtonNode extends BaseComponentNode {
+ type: "Button";
+ properties: ResolvedButton;
+}
+export interface CheckboxNode extends BaseComponentNode {
+ type: "CheckBox";
+ properties: ResolvedCheckbox;
+}
+export interface TextFieldNode extends BaseComponentNode {
+ type: "TextField";
+ properties: ResolvedTextField;
+}
+export interface DateTimeInputNode extends BaseComponentNode {
+ type: "DateTimeInput";
+ properties: ResolvedDateTimeInput;
+}
+export interface MultipleChoiceNode extends BaseComponentNode {
+ type: "MultipleChoice";
+ properties: ResolvedMultipleChoice;
+}
+export interface SliderNode extends BaseComponentNode {
+ type: "Slider";
+ properties: ResolvedSlider;
+}
+export interface CustomNode extends BaseComponentNode {
+ type: string;
+ properties: CustomNodeProperties;
+}
+/**
+ * The complete discriminated union of all possible resolved component nodes.
+ * A renderer would use this type for any given node in the component tree.
+ */
+export type AnyComponentNode = TextNode | IconNode | ImageNode | VideoNode | AudioPlayerNode | RowNode | ColumnNode | ListNode | CardNode | TabsNode | DividerNode | ModalNode | ButtonNode | CheckboxNode | TextFieldNode | DateTimeInputNode | MultipleChoiceNode | SliderNode | CustomNode;
+export type ResolvedText = Text;
+export type ResolvedIcon = Icon;
+export type ResolvedImage = Image;
+export type ResolvedVideo = Video;
+export type ResolvedAudioPlayer = AudioPlayer;
+export type ResolvedDivider = Divider;
+export type ResolvedCheckbox = Checkbox;
+export type ResolvedTextField = TextField;
+export type ResolvedDateTimeInput = DateTimeInput;
+export type ResolvedMultipleChoice = MultipleChoice;
+export type ResolvedSlider = Slider;
+export interface ResolvedRow {
+ children: AnyComponentNode[];
+ distribution?: "start" | "center" | "end" | "spaceBetween" | "spaceAround" | "spaceEvenly";
+ alignment?: "start" | "center" | "end" | "stretch";
+}
+export interface ResolvedColumn {
+ children: AnyComponentNode[];
+ distribution?: "start" | "center" | "end" | "spaceBetween" | "spaceAround" | "spaceEvenly";
+ alignment?: "start" | "center" | "end" | "stretch";
+}
+export interface ResolvedButton {
+ child: AnyComponentNode;
+ action: Button["action"];
+}
+export interface ResolvedList {
+ children: AnyComponentNode[];
+ direction?: "vertical" | "horizontal";
+ alignment?: "start" | "center" | "end" | "stretch";
+}
+export interface ResolvedCard {
+ child: AnyComponentNode;
+ children: AnyComponentNode[];
+}
+export interface ResolvedTabItem {
+ title: StringValue;
+ child: AnyComponentNode;
+}
+export interface ResolvedTabs {
+ tabItems: ResolvedTabItem[];
+}
+export interface ResolvedModal {
+ entryPointChild: AnyComponentNode;
+ contentChild: AnyComponentNode;
+}
+export interface CustomNodeProperties {
+ [k: string]: ResolvedValue;
+}
+export type SurfaceID = string;
+/** The complete state of a single UI surface. */
+export interface Surface {
+ rootComponentId: string | null;
+ componentTree: AnyComponentNode | null;
+ dataModel: DataMap;
+ components: Map;
+ styles: Record;
+}
+//# sourceMappingURL=types.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.d.ts.map
new file mode 100644
index 0000000000..044debbfe2
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/0.8/types/types.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.js b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.js
new file mode 100644
index 0000000000..1fe93edec9
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export {};
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.js.map
new file mode 100644
index 0000000000..6453fcd7a0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/types/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/0.8/types/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.d.ts
new file mode 100644
index 0000000000..3449e6648d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.d.ts
@@ -0,0 +1,9 @@
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+export declare class Audio extends Root {
+ #private;
+ accessor url: StringValue | null;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=audio.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.d.ts.map
new file mode 100644
index 0000000000..e4aad14851
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/audio.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,qBACa,KAAM,SAAQ,IAAI;;IAE7B,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAQ;IAExC,MAAM,CAAC,MAAM,4BAmBX;IAoCF,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.js
new file mode 100644
index 0000000000..a4da878d71
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.js
@@ -0,0 +1,147 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Audio = (() => {
+ let _classDecorators = [customElement("a2ui-audioplayer")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _url_decorators;
+ let _url_initializers = [];
+ let _url_extraInitializers = [];
+ var Audio = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _url_decorators = [property()];
+ __esDecorate(this, null, _url_decorators, { kind: "accessor", name: "url", static: false, private: false, access: { has: obj => "url" in obj, get: obj => obj.url, set: (obj, value) => { obj.url = value; } }, metadata: _metadata }, _url_initializers, _url_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Audio = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #url_accessor_storage = __runInitializers(this, _url_initializers, null);
+ get url() { return this.#url_accessor_storage; }
+ set url(value) { this.#url_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ audio {
+ display: block;
+ width: 100%;
+ }
+ `,
+ ]; }
+ #renderAudio() {
+ if (!this.url) {
+ return nothing;
+ }
+ if (this.url && typeof this.url === "object") {
+ if ("literalString" in this.url) {
+ return html ``;
+ }
+ else if ("literal" in this.url) {
+ return html ``;
+ }
+ else if (this.url && "path" in this.url && this.url.path) {
+ if (!this.processor || !this.component) {
+ return html `(no processor)`;
+ }
+ const audioUrl = this.processor.getData(this.component, this.url.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (!audioUrl) {
+ return html `Invalid audio URL`;
+ }
+ if (typeof audioUrl !== "string") {
+ return html `Invalid audio URL`;
+ }
+ return html ``;
+ }
+ }
+ return html `(empty)`;
+ }
+ render() {
+ return html `
+ ${this.#renderAudio()}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _url_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Audio = _classThis;
+})();
+export { Audio };
+//# sourceMappingURL=audio.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.js.map
new file mode 100644
index 0000000000..e9b7c5933f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/audio.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../../src/0.8/ui/audio.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.d.ts
new file mode 100644
index 0000000000..4cc3bdafea
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.d.ts
@@ -0,0 +1,8 @@
+import { Root } from "./root.js";
+import { Action } from "../types/components.js";
+export declare class Button extends Root {
+ accessor action: Action | null;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=button.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.d.ts.map
new file mode 100644
index 0000000000..7d5fc6206d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/button.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD,qBACa,MAAO,SAAQ,IAAI;IAE9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,MAAM,CAAC,MAAM,4BASX;IAEF,MAAM;CAuBP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.js
new file mode 100644
index 0000000000..6036967fe0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.js
@@ -0,0 +1,123 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { StateEvent } from "../events/events.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Button = (() => {
+ let _classDecorators = [customElement("a2ui-button")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _action_decorators;
+ let _action_initializers = [];
+ let _action_extraInitializers = [];
+ var Button = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _action_decorators = [property()];
+ __esDecorate(this, null, _action_decorators, { kind: "accessor", name: "action", static: false, private: false, access: { has: obj => "action" in obj, get: obj => obj.action, set: (obj, value) => { obj.action = value; } }, metadata: _metadata }, _action_initializers, _action_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Button = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #action_accessor_storage = __runInitializers(this, _action_initializers, null);
+ get action() { return this.#action_accessor_storage; }
+ set action(value) { this.#action_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ }
+ `,
+ ]; }
+ render() {
+ return html ``;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _action_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Button = _classThis;
+})();
+export { Button };
+//# sourceMappingURL=button.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.js.map
new file mode 100644
index 0000000000..f4eab586bc
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/button.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../src/0.8/ui/button.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;IAGlC,MAAM;4BADlB,aAAa,CAAC,aAAa,CAAC;;;;sBACD,IAAI;;;;sBAAZ,SAAQ,WAAI;;;;kCAC7B,QAAQ,EAAE;YACX,uKAAS,MAAM,6BAAN,MAAM,uFAAuB;YAFxC,6KAsCC;;;;QApCC,yEAAiC,IAAI,EAAC;QAAtC,IAAS,MAAM,4CAAuB;QAAtC,IAAS,MAAM,kDAAuB;iBAE/B,WAAM,GAAG;YACd,gBAAgB;YAChB,GAAG,CAAA;;;;;;KAMF;SACF,AATY,CASX;QAEF,MAAM;YACJ,OAAO,IAAI,CAAA;cACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;cACtC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM;gBACzC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAC/C,CAAC,CAAC,OAAO;eACF,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAgB;oBACxC,SAAS,EAAE,aAAa;oBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,iBAAiB,EAAE,IAAI,CAAC,EAAE;oBAC1B,eAAe,EAAE,IAAI,CAAC,SAAS;iBAChC,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;;;cAGO,CAAC;QACb,CAAC;;;;;;YArCU,uDAAM;;;;;SAAN,MAAM"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.d.ts
new file mode 100644
index 0000000000..40bd39e3b9
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.d.ts
@@ -0,0 +1,6 @@
+import { Root } from "./root.js";
+export declare class Card extends Root {
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=card.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.d.ts.map
new file mode 100644
index 0000000000..86b18e9bf6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/card.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,qBACa,IAAK,SAAQ,IAAI;IAC5B,MAAM,CAAC,MAAM,4BA0BX;IAEF,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.js
new file mode 100644
index 0000000000..51a0773b5f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.js
@@ -0,0 +1,114 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Card = (() => {
+ let _classDecorators = [customElement("a2ui-card")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ var Card = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Card = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ section {
+ height: 100%;
+ width: 100%;
+ min-height: 0;
+ overflow: auto;
+
+ ::slotted(*) {
+ height: 100%;
+ width: 100%;
+ }
+ }
+ `,
+ ]; }
+ render() {
+ return html `
+
+ `;
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Card = _classThis;
+})();
+export { Card };
+//# sourceMappingURL=card.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.js.map
new file mode 100644
index 0000000000..593e37c3b9
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/card.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/0.8/ui/card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;IAGlC,IAAI;4BADhB,aAAa,CAAC,WAAW,CAAC;;;;sBACD,IAAI;oBAAZ,SAAQ,WAAI;;;;YAA9B,6KAuCC;;;;iBAtCQ,WAAM,GAAG;YACd,gBAAgB;YAChB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;KAuBF;SACF,AA1BY,CA0BX;QAEF,MAAM;YACJ,OAAO,IAAI,CAAA;cACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;cACpC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI;gBACvC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC;gBAC7C,CAAC,CAAC,OAAO;;;eAGF,CAAC;QACd,CAAC;;YAtCU,uDAAI;;;;;SAAJ,IAAI"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.d.ts
new file mode 100644
index 0000000000..a1e009fac8
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.d.ts
@@ -0,0 +1,11 @@
+import { nothing } from "lit";
+import { Root } from "./root.js";
+import { StringValue, BooleanValue } from "../types/primitives";
+export declare class Checkbox extends Root {
+ #private;
+ accessor value: BooleanValue | null;
+ accessor label: StringValue | null;
+ static styles: import("lit").CSSResult[];
+ render(): typeof nothing | import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=checkbox.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.d.ts.map
new file mode 100644
index 0000000000..5c2d87dad0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/checkbox.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMhE,qBACa,QAAS,SAAQ,IAAI;;IAEhC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAQ;IAG3C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IAE1C,MAAM,CAAC,MAAM,4BAwBX;IAkDF,MAAM;CA+BP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.js
new file mode 100644
index 0000000000..4d64d80d0e
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.js
@@ -0,0 +1,184 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Checkbox = (() => {
+ let _classDecorators = [customElement("a2ui-checkbox")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _value_decorators;
+ let _value_initializers = [];
+ let _value_extraInitializers = [];
+ let _label_decorators;
+ let _label_initializers = [];
+ let _label_extraInitializers = [];
+ var Checkbox = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _value_decorators = [property()];
+ _label_decorators = [property()];
+ __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
+ __esDecorate(this, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Checkbox = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #value_accessor_storage = __runInitializers(this, _value_initializers, null);
+ get value() { return this.#value_accessor_storage; }
+ set value(value) { this.#value_accessor_storage = value; }
+ #label_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _label_initializers, null));
+ get label() { return this.#label_accessor_storage; }
+ set label(value) { this.#label_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ input {
+ display: block;
+ width: 100%;
+ }
+
+ .description {
+ font-size: 14px;
+ margin-bottom: 4px;
+ }
+ `,
+ ]; }
+ #setBoundValue(value) {
+ if (!this.value || !this.processor) {
+ return;
+ }
+ if (!("path" in this.value)) {
+ return;
+ }
+ if (!this.value.path) {
+ return;
+ }
+ this.processor.setData(this.component, this.value.path, value, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ }
+ #renderField(value) {
+ return html `
+ {
+ if (!(evt.target instanceof HTMLInputElement)) {
+ return;
+ }
+ this.#setBoundValue(evt.target.value);
+ }}
+ id="data"
+ type="checkbox"
+ .value=${value}
+ />
+
+ `;
+ }
+ render() {
+ if (this.value && typeof this.value === "object") {
+ if ("literalBoolean" in this.value && this.value.literalBoolean) {
+ return this.#renderField(this.value.literalBoolean);
+ }
+ else if ("literal" in this.value && this.value.literal !== undefined) {
+ return this.#renderField(this.value.literal);
+ }
+ else if (this.value && "path" in this.value && this.value.path) {
+ if (!this.processor || !this.component) {
+ return html `(no model)`;
+ }
+ const textValue = this.processor.getData(this.component, this.value.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (textValue === null) {
+ return html `Invalid label`;
+ }
+ if (typeof textValue !== "boolean") {
+ return html `Invalid label`;
+ }
+ return this.#renderField(textValue);
+ }
+ }
+ return nothing;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _label_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Checkbox = _classThis;
+})();
+export { Checkbox };
+//# sourceMappingURL=checkbox.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.js.map
new file mode 100644
index 0000000000..8c6a0f61c6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/checkbox.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../../src/0.8/ui/checkbox.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.d.ts
new file mode 100644
index 0000000000..5457497377
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.d.ts
@@ -0,0 +1,9 @@
+import { Root } from "./root.js";
+import { ResolvedColumn } from "../types/types";
+export declare class Column extends Root {
+ accessor alignment: ResolvedColumn["alignment"];
+ accessor distribution: ResolvedColumn["distribution"];
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=column.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.d.ts.map
new file mode 100644
index 0000000000..d73396229d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/column.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD,qBACa,MAAO,SAAQ,IAAI;IAE9B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAa;IAG5D,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,CAAW;IAEhE,MAAM,CAAC,MAAM,4BA2DX;IAEF,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.js
new file mode 100644
index 0000000000..ecc7fac949
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.js
@@ -0,0 +1,167 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Column = (() => {
+ let _classDecorators = [customElement("a2ui-column")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _alignment_decorators;
+ let _alignment_initializers = [];
+ let _alignment_extraInitializers = [];
+ let _distribution_decorators;
+ let _distribution_initializers = [];
+ let _distribution_extraInitializers = [];
+ var Column = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _alignment_decorators = [property({ reflect: true, type: String })];
+ _distribution_decorators = [property({ reflect: true, type: String })];
+ __esDecorate(this, null, _alignment_decorators, { kind: "accessor", name: "alignment", static: false, private: false, access: { has: obj => "alignment" in obj, get: obj => obj.alignment, set: (obj, value) => { obj.alignment = value; } }, metadata: _metadata }, _alignment_initializers, _alignment_extraInitializers);
+ __esDecorate(this, null, _distribution_decorators, { kind: "accessor", name: "distribution", static: false, private: false, access: { has: obj => "distribution" in obj, get: obj => obj.distribution, set: (obj, value) => { obj.distribution = value; } }, metadata: _metadata }, _distribution_initializers, _distribution_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Column = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #alignment_accessor_storage = __runInitializers(this, _alignment_initializers, "stretch");
+ get alignment() { return this.#alignment_accessor_storage; }
+ set alignment(value) { this.#alignment_accessor_storage = value; }
+ #distribution_accessor_storage = (__runInitializers(this, _alignment_extraInitializers), __runInitializers(this, _distribution_initializers, "start"));
+ get distribution() { return this.#distribution_accessor_storage; }
+ set distribution(value) { this.#distribution_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: flex;
+ flex: var(--weight);
+ }
+
+ section {
+ display: flex;
+ flex-direction: column;
+ min-width: 100%;
+ height: 100%;
+ }
+
+ :host([alignment="start"]) section {
+ align-items: start;
+ }
+
+ :host([alignment="center"]) section {
+ align-items: center;
+ }
+
+ :host([alignment="end"]) section {
+ align-items: end;
+ }
+
+ :host([alignment="stretch"]) section {
+ align-items: stretch;
+ }
+
+ :host([distribution="start"]) section {
+ justify-content: start;
+ }
+
+ :host([distribution="center"]) section {
+ justify-content: center;
+ }
+
+ :host([distribution="end"]) section {
+ justify-content: end;
+ }
+
+ :host([distribution="spaceBetween"]) section {
+ justify-content: space-between;
+ }
+
+ :host([distribution="spaceAround"]) section {
+ justify-content: space-around;
+ }
+
+ :host([distribution="spaceEvenly"]) section {
+ justify-content: space-evenly;
+ }
+ `,
+ ]; }
+ render() {
+ return html `
+
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _distribution_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Column = _classThis;
+})();
+export { Column };
+//# sourceMappingURL=column.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.js.map
new file mode 100644
index 0000000000..2555f25f07
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/column.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"column.js","sourceRoot":"","sources":["../../../../src/0.8/ui/column.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;IAGlC,MAAM;4BADlB,aAAa,CAAC,aAAa,CAAC;;;;sBACD,IAAI;;;;;;;sBAAZ,SAAQ,WAAI;;;;qCAC7B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCAGzC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAF1C,gLAAS,SAAS,6BAAT,SAAS,6FAA0C;YAG5D,yLAAS,YAAY,6BAAZ,YAAY,mGAA2C;YALlE,6KA8EC;;;;QA5EC,+EAAkD,SAAS,EAAC;QAA5D,IAAS,SAAS,+CAA0C;QAA5D,IAAS,SAAS,qDAA0C;QAG5D,6IAAwD,OAAO,GAAC;QAAhE,IAAS,YAAY,kDAA2C;QAAhE,IAAS,YAAY,wDAA2C;iBAEzD,WAAM,GAAG;YACd,gBAAgB;YAChB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwDF;SACF,AA3DY,CA2DX;QAEF,MAAM;YACJ,OAAO,IAAI,CAAA;cACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;cACtC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM;gBACzC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAC/C,CAAC,CAAC,OAAO;;;eAGF,CAAC;QACd,CAAC;;;;;;YA7EU,uDAAM;;;;;SAAN,MAAM"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.d.ts
new file mode 100644
index 0000000000..02169072b5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.d.ts
@@ -0,0 +1,8 @@
+import { CustomElementConstructorOf } from "./ui.js";
+export declare class ComponentRegistry {
+ private registry;
+ register(typeName: string, constructor: CustomElementConstructorOf, tagName?: string): void;
+ get(typeName: string): CustomElementConstructorOf | undefined;
+}
+export declare const componentRegistry: ComponentRegistry;
+//# sourceMappingURL=component-registry.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.d.ts.map
new file mode 100644
index 0000000000..ab3f865676
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/component-registry.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CACJ;IAEZ,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,0BAA0B,CAAC,WAAW,CAAC,EACpD,OAAO,CAAC,EAAE,MAAM;IA2BlB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,0BAA0B,CAAC,WAAW,CAAC,GAAG,SAAS;CAG3E;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.js
new file mode 100644
index 0000000000..738d0563da
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.js
@@ -0,0 +1,43 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export class ComponentRegistry {
+ constructor() {
+ this.registry = new Map();
+ }
+ register(typeName, constructor, tagName) {
+ if (!/^[a-zA-Z0-9]+$/.test(typeName)) {
+ throw new Error(`[Registry] Invalid typeName '${typeName}'. Must be alphanumeric.`);
+ }
+ this.registry.set(typeName, constructor);
+ const actualTagName = tagName || `a2ui-custom-${typeName.toLowerCase()}`;
+ const existingName = customElements.getName(constructor);
+ if (existingName) {
+ // Constructor is already registered.
+ if (existingName !== actualTagName) {
+ throw new Error(`Component ${typeName} is already registered as ${existingName}, but requested as ${actualTagName}.`);
+ }
+ return;
+ }
+ if (!customElements.get(actualTagName)) {
+ customElements.define(actualTagName, constructor);
+ }
+ }
+ get(typeName) {
+ return this.registry.get(typeName);
+ }
+}
+export const componentRegistry = new ComponentRegistry();
+//# sourceMappingURL=component-registry.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.js.map
new file mode 100644
index 0000000000..7782542bae
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/component-registry.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"component-registry.js","sourceRoot":"","sources":["../../../../src/0.8/ui/component-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,OAAO,iBAAiB;IAA9B;QACU,aAAQ,GACd,IAAI,GAAG,EAAE,CAAC;IAmCd,CAAC;IAjCC,QAAQ,CACN,QAAgB,EAChB,WAAoD,EACpD,OAAgB;QAEhB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,gCAAgC,QAAQ,0BAA0B,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,OAAO,IAAI,eAAe,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAEzE,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,CAAC;YACjB,qCAAqC;YACrC,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,6BAA6B,YAAY,sBAAsB,aAAa,GAAG,CACrG,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,QAAgB;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.d.ts
new file mode 100644
index 0000000000..aaccaf3ee9
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.d.ts
@@ -0,0 +1,5 @@
+import { type Theme } from "../../types/types.js";
+export declare const themeContext: {
+ __context__: Theme | undefined;
+};
+//# sourceMappingURL=theme.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.d.ts.map
new file mode 100644
index 0000000000..e30ade69a6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../src/0.8/ui/context/theme.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,YAAY;;CAAgD,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.js
new file mode 100644
index 0000000000..0817ce9c22
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.js
@@ -0,0 +1,18 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { createContext } from "@lit/context";
+export const themeContext = createContext("A2UITheme");
+//# sourceMappingURL=theme.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.js.map
new file mode 100644
index 0000000000..1f078fae7d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/context/theme.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../../../src/0.8/ui/context/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAoB,WAAW,CAAC,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.d.ts
new file mode 100644
index 0000000000..13fb35c5a6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.d.ts
@@ -0,0 +1,2 @@
+export declare function registerCustomComponents(): void;
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.d.ts.map
new file mode 100644
index 0000000000..6ad441691d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/0.8/ui/custom-components/index.ts"],"names":[],"mappings":"AAkBA,wBAAgB,wBAAwB,SAGvC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.js
new file mode 100644
index 0000000000..6b3c4c0f8a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.js
@@ -0,0 +1,20 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export function registerCustomComponents() {
+ // No default custom components in the core library.
+ // Applications should register their own components.
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.js.map
new file mode 100644
index 0000000000..9095b5d11c
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/custom-components/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/0.8/ui/custom-components/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,UAAU,wBAAwB;IACtC,oDAAoD;IACpD,qDAAqD;AACvD,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.d.ts
new file mode 100644
index 0000000000..dfa4cc85ac
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.d.ts
@@ -0,0 +1,13 @@
+import { nothing } from "lit";
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+export declare class DateTimeInput extends Root {
+ #private;
+ accessor value: StringValue | null;
+ accessor label: StringValue | null;
+ accessor enableDate: boolean;
+ accessor enableTime: boolean;
+ static styles: import("lit").CSSResult[];
+ render(): typeof nothing | import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=datetime-input.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.d.ts.map
new file mode 100644
index 0000000000..7feea2ec07
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"datetime-input.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/datetime-input.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,qBACa,aAAc,SAAQ,IAAI;;IAErC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IAG1C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IAG1C,QAAQ,CAAC,UAAU,UAAQ;IAG3B,QAAQ,CAAC,UAAU,UAAQ;IAE3B,MAAM,CAAC,MAAM,4BAsBX;IA6GF,MAAM;CA0BP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.js
new file mode 100644
index 0000000000..6d999d51dc
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.js
@@ -0,0 +1,247 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let DateTimeInput = (() => {
+ let _classDecorators = [customElement("a2ui-datetimeinput")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _value_decorators;
+ let _value_initializers = [];
+ let _value_extraInitializers = [];
+ let _label_decorators;
+ let _label_initializers = [];
+ let _label_extraInitializers = [];
+ let _enableDate_decorators;
+ let _enableDate_initializers = [];
+ let _enableDate_extraInitializers = [];
+ let _enableTime_decorators;
+ let _enableTime_initializers = [];
+ let _enableTime_extraInitializers = [];
+ var DateTimeInput = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _value_decorators = [property()];
+ _label_decorators = [property()];
+ _enableDate_decorators = [property({ reflect: false, type: Boolean })];
+ _enableTime_decorators = [property({ reflect: false, type: Boolean })];
+ __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
+ __esDecorate(this, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
+ __esDecorate(this, null, _enableDate_decorators, { kind: "accessor", name: "enableDate", static: false, private: false, access: { has: obj => "enableDate" in obj, get: obj => obj.enableDate, set: (obj, value) => { obj.enableDate = value; } }, metadata: _metadata }, _enableDate_initializers, _enableDate_extraInitializers);
+ __esDecorate(this, null, _enableTime_decorators, { kind: "accessor", name: "enableTime", static: false, private: false, access: { has: obj => "enableTime" in obj, get: obj => obj.enableTime, set: (obj, value) => { obj.enableTime = value; } }, metadata: _metadata }, _enableTime_initializers, _enableTime_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ DateTimeInput = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #value_accessor_storage = __runInitializers(this, _value_initializers, null);
+ get value() { return this.#value_accessor_storage; }
+ set value(value) { this.#value_accessor_storage = value; }
+ #label_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _label_initializers, null));
+ get label() { return this.#label_accessor_storage; }
+ set label(value) { this.#label_accessor_storage = value; }
+ #enableDate_accessor_storage = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _enableDate_initializers, true));
+ get enableDate() { return this.#enableDate_accessor_storage; }
+ set enableDate(value) { this.#enableDate_accessor_storage = value; }
+ #enableTime_accessor_storage = (__runInitializers(this, _enableDate_extraInitializers), __runInitializers(this, _enableTime_initializers, true));
+ get enableTime() { return this.#enableTime_accessor_storage; }
+ set enableTime(value) { this.#enableTime_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ input {
+ display: block;
+ border-radius: 8px;
+ padding: 8px;
+ border: 1px solid #ccc;
+ width: 100%;
+ }
+ `,
+ ]; }
+ #setBoundValue(value) {
+ if (!this.value || !this.processor) {
+ return;
+ }
+ if (!("path" in this.value)) {
+ return;
+ }
+ if (!this.value.path) {
+ return;
+ }
+ this.processor.setData(this.component, this.value.path, value, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ }
+ #renderField(value) {
+ return html `
+
+ {
+ if (!(evt.target instanceof HTMLInputElement)) {
+ return;
+ }
+ this.#setBoundValue(evt.target.value);
+ }}
+ id="data"
+ name="data"
+ .value=${this.#formatInputValue(value)}
+ .placeholder=${this.#getPlaceholderText()}
+ .type=${this.#getInputType()}
+ />
+ `;
+ }
+ #getInputType() {
+ if (this.enableDate && this.enableTime) {
+ return "datetime-local";
+ }
+ else if (this.enableDate) {
+ return "date";
+ }
+ else if (this.enableTime) {
+ return "time";
+ }
+ return "datetime-local";
+ }
+ #formatInputValue(value) {
+ const inputType = this.#getInputType();
+ const date = value ? new Date(value) : null;
+ if (!date || isNaN(date.getTime())) {
+ return "";
+ }
+ const year = this.#padNumber(date.getFullYear());
+ const month = this.#padNumber(date.getMonth());
+ const day = this.#padNumber(date.getDate());
+ const hours = this.#padNumber(date.getHours());
+ const minutes = this.#padNumber(date.getMinutes());
+ // Browsers are picky with what format they allow for the `value` attribute of date/time inputs.
+ // We need to parse it out of the provided value. Note that we don't use `toISOString`,
+ // because the resulting value is relative to UTC.
+ if (inputType === "date") {
+ return `${year}-${month}-${day}`;
+ }
+ else if (inputType === "time") {
+ return `${hours}:${minutes}`;
+ }
+ return `${year}-${month}-${day}T${hours}:${minutes}`;
+ }
+ #padNumber(value) {
+ return value.toString().padStart(2, "0");
+ }
+ #getPlaceholderText() {
+ // TODO: this should likely be passed from the model.
+ const inputType = this.#getInputType();
+ if (inputType === "date") {
+ return "Date";
+ }
+ else if (inputType === "time") {
+ return "Time";
+ }
+ return "Date & Time";
+ }
+ render() {
+ if (this.value && typeof this.value === "object") {
+ if ("literalString" in this.value && this.value.literalString) {
+ return this.#renderField(this.value.literalString);
+ }
+ else if ("literal" in this.value && this.value.literal !== undefined) {
+ return this.#renderField(this.value.literal);
+ }
+ else if (this.value && "path" in this.value && this.value.path) {
+ if (!this.processor || !this.component) {
+ return html `(no model)`;
+ }
+ const textValue = this.processor.getData(this.component, this.value.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (typeof textValue !== "string") {
+ return html `(invalid)`;
+ }
+ return this.#renderField(textValue);
+ }
+ }
+ return nothing;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _enableTime_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return DateTimeInput = _classThis;
+})();
+export { DateTimeInput };
+//# sourceMappingURL=datetime-input.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.js.map
new file mode 100644
index 0000000000..ec5e763b34
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/datetime-input.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"datetime-input.js","sourceRoot":"","sources":["../../../../src/0.8/ui/datetime-input.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.d.ts
new file mode 100644
index 0000000000..761fbbba04
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.d.ts
@@ -0,0 +1,2 @@
+export { markdown } from "./markdown.js";
+//# sourceMappingURL=directives.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.d.ts.map
new file mode 100644
index 0000000000..7f32f40290
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../../../../src/0.8/ui/directives/directives.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.js
new file mode 100644
index 0000000000..00b20a1c16
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export { markdown } from "./markdown.js";
+//# sourceMappingURL=directives.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.js.map
new file mode 100644
index 0000000000..1831840bde
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/directives.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"directives.js","sourceRoot":"","sources":["../../../../../src/0.8/ui/directives/directives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.d.ts
new file mode 100644
index 0000000000..f2d0ceb35a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.d.ts
@@ -0,0 +1,17 @@
+import { Directive, DirectiveParameters, Part } from "lit/directive.js";
+declare class MarkdownDirective extends Directive {
+ #private;
+ update(_part: Part, [value, tagClassMap]: DirectiveParameters): import("lit/directive.js").DirectiveResult;
+ /**
+ * Renders the markdown string to HTML using MarkdownIt.
+ *
+ * Note: MarkdownIt doesn't enable HTML in its output, so we render the
+ * value directly without further sanitization.
+ * @see https://github.com/markdown-it/markdown-it/blob/master/docs/security.md
+ */
+ render(value: string, tagClassMap?: Record): import("lit/directive.js").DirectiveResult;
+}
+export declare const markdown: (value: string, tagClassMap?: Record | undefined) => import("lit/directive.js").DirectiveResult;
+export declare function renderMarkdownToHtmlString(value: string): string;
+export {};
+//# sourceMappingURL=markdown.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.d.ts.map
new file mode 100644
index 0000000000..a13bba17dc
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../../src/0.8/ui/directives/markdown.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,IAAI,EAEL,MAAM,kBAAkB,CAAC;AAM1B,cAAM,iBAAkB,SAAQ,SAAS;;IAoBvC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC;IAgFnE;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAS7D;AAED,eAAO,MAAM,QAAQ,6IAA+B,CAAC;AAGrD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.js
new file mode 100644
index 0000000000..49e329748d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.js
@@ -0,0 +1,124 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { noChange } from "lit";
+import { Directive, directive, } from "lit/directive.js";
+import { unsafeHTML } from "lit/directives/unsafe-html.js";
+import MarkdownIt from "markdown-it";
+import * as Sanitizer from "./sanitizer.js";
+class MarkdownDirective extends Directive {
+ #markdownIt = MarkdownIt({
+ highlight: (str, lang) => {
+ switch (lang) {
+ case "html": {
+ const iframe = document.createElement("iframe");
+ iframe.classList.add("html-view");
+ iframe.srcdoc = str;
+ iframe.sandbox = "";
+ return iframe.innerHTML;
+ }
+ default:
+ return Sanitizer.escapeNodeText(str);
+ }
+ },
+ });
+ #lastValue = null;
+ #lastTagClassMap = null;
+ update(_part, [value, tagClassMap]) {
+ if (this.#lastValue === value &&
+ JSON.stringify(tagClassMap) === this.#lastTagClassMap) {
+ return noChange;
+ }
+ this.#lastValue = value;
+ this.#lastTagClassMap = JSON.stringify(tagClassMap);
+ return this.render(value, tagClassMap);
+ }
+ #originalClassMap = new Map();
+ #applyTagClassMap(tagClassMap) {
+ Object.entries(tagClassMap).forEach(([tag]) => {
+ let tokenName;
+ switch (tag) {
+ case "p":
+ tokenName = "paragraph";
+ break;
+ case "h1":
+ case "h2":
+ case "h3":
+ case "h4":
+ case "h5":
+ case "h6":
+ tokenName = "heading";
+ break;
+ case "ul":
+ tokenName = "bullet_list";
+ break;
+ case "ol":
+ tokenName = "ordered_list";
+ break;
+ case "li":
+ tokenName = "list_item";
+ break;
+ case "a":
+ tokenName = "link";
+ break;
+ case "strong":
+ tokenName = "strong";
+ break;
+ case "em":
+ tokenName = "em";
+ break;
+ }
+ if (!tokenName) {
+ return;
+ }
+ const key = `${tokenName}_open`;
+ this.#markdownIt.renderer.rules[key] = (tokens, idx, options, _env, self) => {
+ const token = tokens[idx];
+ const tokenClasses = tagClassMap[token.tag] ?? [];
+ for (const clazz of tokenClasses) {
+ token.attrJoin("class", clazz);
+ }
+ return self.renderToken(tokens, idx, options);
+ };
+ });
+ }
+ #unapplyTagClassMap() {
+ for (const [key] of this.#originalClassMap) {
+ delete this.#markdownIt.renderer.rules[key];
+ }
+ this.#originalClassMap.clear();
+ }
+ /**
+ * Renders the markdown string to HTML using MarkdownIt.
+ *
+ * Note: MarkdownIt doesn't enable HTML in its output, so we render the
+ * value directly without further sanitization.
+ * @see https://github.com/markdown-it/markdown-it/blob/master/docs/security.md
+ */
+ render(value, tagClassMap) {
+ if (tagClassMap) {
+ this.#applyTagClassMap(tagClassMap);
+ }
+ const htmlString = this.#markdownIt.render(value);
+ this.#unapplyTagClassMap();
+ return unsafeHTML(htmlString);
+ }
+}
+export const markdown = directive(MarkdownDirective);
+const markdownItStandalone = MarkdownIt();
+export function renderMarkdownToHtmlString(value) {
+ return markdownItStandalone.render(value);
+}
+//# sourceMappingURL=markdown.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.js.map
new file mode 100644
index 0000000000..5f9c154ec9
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/markdown.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../../../src/0.8/ui/directives/markdown.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.d.ts
new file mode 100644
index 0000000000..0eb923333d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.d.ts
@@ -0,0 +1,9 @@
+/**
+ * This is only safe for (and intended to be used for) text node positions. If
+ * you are using attribute position, then this is only safe if the attribute
+ * value is surrounded by double-quotes, and is unsafe otherwise (because the
+ * value could break out of the attribute value and e.g. add another attribute).
+ */
+export declare function escapeNodeText(str: string | null | undefined): string;
+export declare function unescapeNodeText(str: string | null | undefined): string;
+//# sourceMappingURL=sanitizer.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.d.ts.map
new file mode 100644
index 0000000000..41caef87aa
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../../../../src/0.8/ui/directives/sanitizer.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,UAK5D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,UAQ9D"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.js
new file mode 100644
index 0000000000..15b42ddea5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.js
@@ -0,0 +1,36 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { html, render } from "lit";
+/**
+ * This is only safe for (and intended to be used for) text node positions. If
+ * you are using attribute position, then this is only safe if the attribute
+ * value is surrounded by double-quotes, and is unsafe otherwise (because the
+ * value could break out of the attribute value and e.g. add another attribute).
+ */
+export function escapeNodeText(str) {
+ const frag = document.createElement("div");
+ render(html `${str}`, frag);
+ return frag.innerHTML.replaceAll(//gim, "");
+}
+export function unescapeNodeText(str) {
+ if (!str) {
+ return "";
+ }
+ const frag = document.createElement("textarea");
+ frag.innerHTML = str;
+ return frag.value;
+}
+//# sourceMappingURL=sanitizer.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.js.map
new file mode 100644
index 0000000000..bc87daeb66
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/directives/sanitizer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../../../src/0.8/ui/directives/sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAA8B;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAA,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAA8B;IAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.d.ts
new file mode 100644
index 0000000000..2f959cd92d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.d.ts
@@ -0,0 +1,6 @@
+import { Root } from "./root.js";
+export declare class Divider extends Root {
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=divider.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.d.ts.map
new file mode 100644
index 0000000000..b1ea68d350
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/divider.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,qBACa,OAAQ,SAAQ,IAAI;IAC/B,MAAM,CAAC,MAAM,4BAeX;IAEF,MAAM;CAQP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.js
new file mode 100644
index 0000000000..d9c1b44659
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.js
@@ -0,0 +1,101 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { classMap } from "lit/directives/class-map.js";
+import { structuralStyles } from "./styles.js";
+let Divider = (() => {
+ let _classDecorators = [customElement("a2ui-divider")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ var Divider = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Divider = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ :host {
+ display: block;
+ min-height: 0;
+ overflow: auto;
+ }
+
+ hr {
+ height: 1px;
+ background: #ccc;
+ border: none;
+ }
+ `,
+ ]; }
+ render() {
+ return html `
`;
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Divider = _classThis;
+})();
+export { Divider };
+//# sourceMappingURL=divider.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.js.map
new file mode 100644
index 0000000000..025a6148ca
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/divider.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"divider.js","sourceRoot":"","sources":["../../../../src/0.8/ui/divider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;IAGlC,OAAO;4BADnB,aAAa,CAAC,cAAc,CAAC;;;;sBACD,IAAI;uBAAZ,SAAQ,WAAI;;;;YAAjC,6KA0BC;;;;iBAzBQ,WAAM,GAAG;YACd,gBAAgB;YAChB,GAAG,CAAA;;;;;;;;;;;;KAYF;SACF,AAfY,CAeX;QAEF,MAAM;YACJ,OAAO,IAAI,CAAA;cACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;cACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO;gBAC1C,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC;gBAChD,CAAC,CAAC,OAAO;OACV,CAAC;QACN,CAAC;;YAzBU,uDAAO;;;;;SAAP,OAAO"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.d.ts
new file mode 100644
index 0000000000..a5e05fce35
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.d.ts
@@ -0,0 +1,9 @@
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+export declare class Icon extends Root {
+ #private;
+ accessor name: StringValue | null;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=icon.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.d.ts.map
new file mode 100644
index 0000000000..4d8dae8595
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/icon.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,qBACa,IAAK,SAAQ,IAAI;;IAE5B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEzC,MAAM,CAAC,MAAM,4BAcX;IA2CF,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.js
new file mode 100644
index 0000000000..54a25d6dc3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.js
@@ -0,0 +1,148 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Icon = (() => {
+ let _classDecorators = [customElement("a2ui-icon")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _name_decorators;
+ let _name_initializers = [];
+ let _name_extraInitializers = [];
+ var Icon = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _name_decorators = [property()];
+ __esDecorate(this, null, _name_decorators, { kind: "accessor", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Icon = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #name_accessor_storage = __runInitializers(this, _name_initializers, null);
+ get name() { return this.#name_accessor_storage; }
+ set name(value) { this.#name_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+ `,
+ ]; }
+ #renderIcon() {
+ if (!this.name) {
+ return nothing;
+ }
+ const render = (url) => {
+ url = url.replace(/([A-Z])/gm, "_$1").toLocaleLowerCase();
+ return html ``;
+ };
+ if (this.name && typeof this.name === "object") {
+ if ("literalString" in this.name) {
+ const iconName = this.name.literalString ?? "";
+ return render(iconName);
+ }
+ else if ("literal" in this.name) {
+ const iconName = this.name.literal ?? "";
+ return render(iconName);
+ }
+ else if (this.name && "path" in this.name && this.name.path) {
+ if (!this.processor || !this.component) {
+ return html `(no model)`;
+ }
+ const iconName = this.processor.getData(this.component, this.name.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (!iconName) {
+ return html `Invalid icon name`;
+ }
+ if (typeof iconName !== "string") {
+ return html `Invalid icon name`;
+ }
+ return render(iconName);
+ }
+ }
+ return html `(empty)`;
+ }
+ render() {
+ return html `
+ ${this.#renderIcon()}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _name_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Icon = _classThis;
+})();
+export { Icon };
+//# sourceMappingURL=icon.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.js.map
new file mode 100644
index 0000000000..995ce7ca0c
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/icon.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../src/0.8/ui/icon.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.d.ts
new file mode 100644
index 0000000000..3f23de499a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.d.ts
@@ -0,0 +1,12 @@
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+import { ResolvedImage } from "../types/types.js";
+export declare class Image extends Root {
+ #private;
+ accessor url: StringValue | null;
+ accessor usageHint: ResolvedImage["usageHint"] | null;
+ accessor fit: "contain" | "cover" | "fill" | "none" | "scale-down" | null;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=image.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.d.ts.map
new file mode 100644
index 0000000000..5e258cc4fd
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/image.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,qBACa,KAAM,SAAQ,IAAI;;IAE7B,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAQ;IAGxC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAAQ;IAG7D,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAQ;IAEjF,MAAM,CAAC,MAAM,4BAqBX;IA0CF,MAAM;CAgBP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.js
new file mode 100644
index 0000000000..ce923b41c5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.js
@@ -0,0 +1,173 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+import { Styles } from "../index.js";
+let Image = (() => {
+ let _classDecorators = [customElement("a2ui-image")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _url_decorators;
+ let _url_initializers = [];
+ let _url_extraInitializers = [];
+ let _usageHint_decorators;
+ let _usageHint_initializers = [];
+ let _usageHint_extraInitializers = [];
+ let _fit_decorators;
+ let _fit_initializers = [];
+ let _fit_extraInitializers = [];
+ var Image = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _url_decorators = [property()];
+ _usageHint_decorators = [property()];
+ _fit_decorators = [property()];
+ __esDecorate(this, null, _url_decorators, { kind: "accessor", name: "url", static: false, private: false, access: { has: obj => "url" in obj, get: obj => obj.url, set: (obj, value) => { obj.url = value; } }, metadata: _metadata }, _url_initializers, _url_extraInitializers);
+ __esDecorate(this, null, _usageHint_decorators, { kind: "accessor", name: "usageHint", static: false, private: false, access: { has: obj => "usageHint" in obj, get: obj => obj.usageHint, set: (obj, value) => { obj.usageHint = value; } }, metadata: _metadata }, _usageHint_initializers, _usageHint_extraInitializers);
+ __esDecorate(this, null, _fit_decorators, { kind: "accessor", name: "fit", static: false, private: false, access: { has: obj => "fit" in obj, get: obj => obj.fit, set: (obj, value) => { obj.fit = value; } }, metadata: _metadata }, _fit_initializers, _fit_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Image = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #url_accessor_storage = __runInitializers(this, _url_initializers, null);
+ get url() { return this.#url_accessor_storage; }
+ set url(value) { this.#url_accessor_storage = value; }
+ #usageHint_accessor_storage = (__runInitializers(this, _url_extraInitializers), __runInitializers(this, _usageHint_initializers, null));
+ get usageHint() { return this.#usageHint_accessor_storage; }
+ set usageHint(value) { this.#usageHint_accessor_storage = value; }
+ #fit_accessor_storage = (__runInitializers(this, _usageHint_extraInitializers), __runInitializers(this, _fit_initializers, null));
+ get fit() { return this.#fit_accessor_storage; }
+ set fit(value) { this.#fit_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ img {
+ display: block;
+ width: 100%;
+ height: 100%;
+ object-fit: var(--object-fit, fill);
+ }
+ `,
+ ]; }
+ #renderImage() {
+ if (!this.url) {
+ return nothing;
+ }
+ const render = (url) => {
+ return html `
`;
+ };
+ if (this.url && typeof this.url === "object") {
+ if ("literalString" in this.url) {
+ const imageUrl = this.url.literalString ?? "";
+ return render(imageUrl);
+ }
+ else if ("literal" in this.url) {
+ const imageUrl = this.url.literal ?? "";
+ return render(imageUrl);
+ }
+ else if (this.url && "path" in this.url && this.url.path) {
+ if (!this.processor || !this.component) {
+ return html `(no model)`;
+ }
+ const imageUrl = this.processor.getData(this.component, this.url.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (!imageUrl) {
+ return html `Invalid image URL`;
+ }
+ if (typeof imageUrl !== "string") {
+ return html `Invalid image URL`;
+ }
+ return render(imageUrl);
+ }
+ }
+ return html `(empty)`;
+ }
+ render() {
+ const classes = Styles.merge(this.theme.components.Image.all, this.usageHint ? this.theme.components.Image[this.usageHint] : {});
+ return html `
+ ${this.#renderImage()}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _fit_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Image = _classThis;
+})();
+export { Image };
+//# sourceMappingURL=image.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.js.map
new file mode 100644
index 0000000000..c1057462d1
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/image.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../../src/0.8/ui/image.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.d.ts
new file mode 100644
index 0000000000..904b4d4beb
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.d.ts
@@ -0,0 +1,7 @@
+import { Root } from "./root.js";
+export declare class List extends Root {
+ accessor direction: "vertical" | "horizontal";
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=list.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.d.ts.map
new file mode 100644
index 0000000000..4127ad8bee
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/list.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,qBACa,IAAK,SAAQ,IAAI;IAE5B,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,CAAc;IAE3D,MAAM,CAAC,MAAM,4BA+BX;IAEF,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.js
new file mode 100644
index 0000000000..5cb04205b5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.js
@@ -0,0 +1,131 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let List = (() => {
+ let _classDecorators = [customElement("a2ui-list")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _direction_decorators;
+ let _direction_initializers = [];
+ let _direction_extraInitializers = [];
+ var List = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _direction_decorators = [property({ reflect: true, type: String })];
+ __esDecorate(this, null, _direction_decorators, { kind: "accessor", name: "direction", static: false, private: false, access: { has: obj => "direction" in obj, get: obj => obj.direction, set: (obj, value) => { obj.direction = value; } }, metadata: _metadata }, _direction_initializers, _direction_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ List = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #direction_accessor_storage = __runInitializers(this, _direction_initializers, "vertical");
+ get direction() { return this.#direction_accessor_storage; }
+ set direction(value) { this.#direction_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ :host([direction="vertical"]) section {
+ display: grid;
+ }
+
+ :host([direction="horizontal"]) section {
+ display: flex;
+ max-width: 100%;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ scrollbar-width: none;
+
+ > ::slotted(*) {
+ flex: 1 0 fit-content;
+ max-width: min(80%, 400px);
+ }
+ }
+ `,
+ ]; }
+ render() {
+ return html `
+
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _direction_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return List = _classThis;
+})();
+export { List };
+//# sourceMappingURL=list.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.js.map
new file mode 100644
index 0000000000..1503aaa29d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/list.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/0.8/ui/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;IAGlC,IAAI;4BADhB,aAAa,CAAC,WAAW,CAAC;;;;sBACD,IAAI;;;;oBAAZ,SAAQ,WAAI;;;;qCAC3B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1C,gLAAS,SAAS,6BAAT,SAAS,6FAAyC;YAF7D,6KA+CC;;;;QA7CC,+EAAgD,UAAU,EAAC;QAA3D,IAAS,SAAS,+CAAyC;QAA3D,IAAS,SAAS,qDAAyC;iBAEpD,WAAM,GAAG;YACd,gBAAgB;YAChB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BF;SACF,AA/BY,CA+BX;QAEF,MAAM;YACJ,OAAO,IAAI,CAAA;cACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;cACpC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI;gBACvC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC;gBAC7C,CAAC,CAAC,OAAO;;;eAGF,CAAC;QACd,CAAC;;;;;;YA9CU,uDAAI;;;;;SAAJ,IAAI"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.d.ts
new file mode 100644
index 0000000000..cf15392f6d
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.d.ts
@@ -0,0 +1,7 @@
+import { Root } from "./root.js";
+export declare class Modal extends Root {
+ #private;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=modal.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.d.ts.map
new file mode 100644
index 0000000000..a566b5f537
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/modal.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAMjC,qBACa,KAAM,SAAQ,IAAI;;IAC7B,MAAM,CAAC,MAAM,4BA+BX;IAoBF,MAAM;CAqDP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.js
new file mode 100644
index 0000000000..6cff8ddeaf
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.js
@@ -0,0 +1,195 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
+};
+import { html, css, nothing } from "lit";
+import { customElement, query, state } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+import { ref } from "lit/directives/ref.js";
+let Modal = (() => {
+ let _classDecorators = [customElement("a2ui-modal")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _private_showModal_decorators;
+ let _private_showModal_initializers = [];
+ let _private_showModal_extraInitializers = [];
+ let _private_showModal_descriptor;
+ let _private_modalRef_decorators;
+ let _private_modalRef_initializers = [];
+ let _private_modalRef_extraInitializers = [];
+ let _private_modalRef_descriptor;
+ var Modal = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _private_showModal_decorators = [state()];
+ _private_modalRef_decorators = [query("dialog")];
+ __esDecorate(this, _private_showModal_descriptor = { get: __setFunctionName(function () { return this.#showModal_accessor_storage; }, "#showModal", "get"), set: __setFunctionName(function (value) { this.#showModal_accessor_storage = value; }, "#showModal", "set") }, _private_showModal_decorators, { kind: "accessor", name: "#showModal", static: false, private: true, access: { has: obj => #showModal in obj, get: obj => obj.#showModal, set: (obj, value) => { obj.#showModal = value; } }, metadata: _metadata }, _private_showModal_initializers, _private_showModal_extraInitializers);
+ __esDecorate(this, _private_modalRef_descriptor = { get: __setFunctionName(function () { return this.#modalRef_accessor_storage; }, "#modalRef", "get"), set: __setFunctionName(function (value) { this.#modalRef_accessor_storage = value; }, "#modalRef", "set") }, _private_modalRef_decorators, { kind: "accessor", name: "#modalRef", static: false, private: true, access: { has: obj => #modalRef in obj, get: obj => obj.#modalRef, set: (obj, value) => { obj.#modalRef = value; } }, metadata: _metadata }, _private_modalRef_initializers, _private_modalRef_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Modal = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ dialog {
+ padding: 0 0 0 0;
+ border: none;
+ background: none;
+
+ & section {
+ & #controls {
+ display: flex;
+ justify-content: end;
+ margin-bottom: 4px;
+
+ & button {
+ padding: 0;
+ background: none;
+ width: 20px;
+ height: 20px;
+ pointer: cursor;
+ border: none;
+ cursor: pointer;
+ }
+ }
+ }
+ }
+ `,
+ ]; }
+ #showModal_accessor_storage = __runInitializers(this, _private_showModal_initializers, false);
+ get #showModal() { return _private_showModal_descriptor.get.call(this); }
+ set #showModal(value) { return _private_showModal_descriptor.set.call(this, value); }
+ #modalRef_accessor_storage = (__runInitializers(this, _private_showModal_extraInitializers), __runInitializers(this, _private_modalRef_initializers, null));
+ get #modalRef() { return _private_modalRef_descriptor.get.call(this); }
+ set #modalRef(value) { return _private_modalRef_descriptor.set.call(this, value); }
+ #closeModal() {
+ if (!this.#modalRef) {
+ return;
+ }
+ if (this.#modalRef.open) {
+ this.#modalRef.close();
+ }
+ this.#showModal = false;
+ }
+ render() {
+ if (!this.#showModal) {
+ return html ` {
+ this.#showModal = true;
+ }}
+ >
+
+ `;
+ }
+ return html ``;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _private_modalRef_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Modal = _classThis;
+})();
+export { Modal };
+//# sourceMappingURL=modal.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.js.map
new file mode 100644
index 0000000000..84fdb55e04
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/modal.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../../src/0.8/ui/modal.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.d.ts
new file mode 100644
index 0000000000..75d696094c
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.d.ts
@@ -0,0 +1,16 @@
+import { PropertyValues } from "lit";
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+export declare class MultipleChoice extends Root {
+ #private;
+ accessor description: string | null;
+ accessor options: {
+ label: StringValue;
+ value: string;
+ }[];
+ accessor selections: StringValue | string[];
+ static styles: import("lit").CSSResult[];
+ protected willUpdate(changedProperties: PropertyValues): void;
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=multiple-choice.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.d.ts.map
new file mode 100644
index 0000000000..2a198fddf5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"multiple-choice.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/multiple-choice.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,cAAc,EAAW,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAOrD,qBACa,cAAe,SAAQ,IAAI;;IAEtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG3C,QAAQ,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAM;IAG/D,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,EAAE,CAAM;IAEjD,MAAM,CAAC,MAAM,4BAqBX;IAsBF,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAyBnE,MAAM;CAoCP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.js
new file mode 100644
index 0000000000..14c3d7381f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.js
@@ -0,0 +1,181 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+import { extractStringValue } from "./utils/utils.js";
+let MultipleChoice = (() => {
+ let _classDecorators = [customElement("a2ui-multiplechoice")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _description_decorators;
+ let _description_initializers = [];
+ let _description_extraInitializers = [];
+ let _options_decorators;
+ let _options_initializers = [];
+ let _options_extraInitializers = [];
+ let _selections_decorators;
+ let _selections_initializers = [];
+ let _selections_extraInitializers = [];
+ var MultipleChoice = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _description_decorators = [property()];
+ _options_decorators = [property()];
+ _selections_decorators = [property()];
+ __esDecorate(this, null, _description_decorators, { kind: "accessor", name: "description", static: false, private: false, access: { has: obj => "description" in obj, get: obj => obj.description, set: (obj, value) => { obj.description = value; } }, metadata: _metadata }, _description_initializers, _description_extraInitializers);
+ __esDecorate(this, null, _options_decorators, { kind: "accessor", name: "options", static: false, private: false, access: { has: obj => "options" in obj, get: obj => obj.options, set: (obj, value) => { obj.options = value; } }, metadata: _metadata }, _options_initializers, _options_extraInitializers);
+ __esDecorate(this, null, _selections_decorators, { kind: "accessor", name: "selections", static: false, private: false, access: { has: obj => "selections" in obj, get: obj => obj.selections, set: (obj, value) => { obj.selections = value; } }, metadata: _metadata }, _selections_initializers, _selections_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ MultipleChoice = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #description_accessor_storage = __runInitializers(this, _description_initializers, null);
+ get description() { return this.#description_accessor_storage; }
+ set description(value) { this.#description_accessor_storage = value; }
+ #options_accessor_storage = (__runInitializers(this, _description_extraInitializers), __runInitializers(this, _options_initializers, []));
+ get options() { return this.#options_accessor_storage; }
+ set options(value) { this.#options_accessor_storage = value; }
+ #selections_accessor_storage = (__runInitializers(this, _options_extraInitializers), __runInitializers(this, _selections_initializers, []));
+ get selections() { return this.#selections_accessor_storage; }
+ set selections(value) { this.#selections_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ select {
+ width: 100%;
+ }
+
+ .description {
+ }
+ `,
+ ]; }
+ #setBoundValue(value) {
+ console.log(value);
+ if (!this.selections || !this.processor) {
+ return;
+ }
+ if (!("path" in this.selections)) {
+ return;
+ }
+ if (!this.selections.path) {
+ return;
+ }
+ this.processor.setData(this.component, this.selections.path, value, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ }
+ willUpdate(changedProperties) {
+ const shouldUpdate = changedProperties.has("options");
+ if (!shouldUpdate) {
+ return;
+ }
+ if (!this.processor || !this.component || Array.isArray(this.selections)) {
+ return;
+ }
+ this.selections;
+ const selectionValue = this.processor.getData(this.component, this.selections.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (!Array.isArray(selectionValue)) {
+ return;
+ }
+ this.#setBoundValue(selectionValue);
+ }
+ render() {
+ return html `
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _selections_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return MultipleChoice = _classThis;
+})();
+export { MultipleChoice };
+//# sourceMappingURL=multiple-choice.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.js.map
new file mode 100644
index 0000000000..9f24565e44
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/multiple-choice.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"multiple-choice.js","sourceRoot":"","sources":["../../../../src/0.8/ui/multiple-choice.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.d.ts
new file mode 100644
index 0000000000..e6af782b49
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.d.ts
@@ -0,0 +1,30 @@
+import { LitElement, nothing, PropertyValues, TemplateResult } from "lit";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { Theme, AnyComponentNode, SurfaceID } from "../types/types.js";
+declare const Root_base: typeof LitElement;
+export declare class Root extends Root_base {
+ #private;
+ accessor surfaceId: SurfaceID | null;
+ accessor component: AnyComponentNode | null;
+ accessor theme: Theme;
+ accessor childComponents: AnyComponentNode[] | null;
+ accessor processor: A2uiMessageProcessor | null;
+ accessor dataContextPath: string;
+ accessor enableCustomElements: boolean;
+ set weight(weight: string | number);
+ get weight(): string | number;
+ static styles: import("lit").CSSResult[];
+ protected willUpdate(changedProperties: PropertyValues): void;
+ /**
+ * Clean up the effect when the component is removed from the DOM.
+ */
+ disconnectedCallback(): void;
+ /**
+ * Turns the SignalMap into a renderable TemplateResult for Lit.
+ */
+ private renderComponentTree;
+ private renderCustomComponent;
+ render(): TemplateResult | typeof nothing;
+}
+export {};
+//# sourceMappingURL=root.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.d.ts.map
new file mode 100644
index 0000000000..ba476bdeee
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/root.ts"],"names":[],"mappings":"AAkBA,OAAO,EAGL,UAAU,EACV,OAAO,EACP,cAAc,EAEd,cAAc,EACf,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;;AAWvE,qBACa,IAAK,SAAQ,SAAyB;;IAEjD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IAG5C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAGnD,QAAQ,CAAC,KAAK,EAAG,KAAK,CAAC;IAGvB,QAAQ,CAAC,eAAe,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAQ;IAG3D,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAGvD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAM;IAGtC,QAAQ,CAAC,oBAAoB,UAAS;IAEtC,IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAGjC;IAED,IAAI,MAAM,IALS,MAAM,GAAG,MAAM,CAOjC;IAID,MAAM,CAAC,MAAM,4BAUX;IAQF,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAoBnE;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAQ5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+W3B,OAAO,CAAC,qBAAqB;IA+B7B,MAAM,IAAI,cAAc,GAAG,OAAO,OAAO;CAG1C"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.js
new file mode 100644
index 0000000000..db60483ccb
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.js
@@ -0,0 +1,558 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+import { SignalWatcher } from "@lit-labs/signals";
+import { consume } from "@lit/context";
+import { css, html, LitElement, nothing, render, } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { map } from "lit/directives/map.js";
+import { effect } from "signal-utils/subtle/microtask-effect";
+import { themeContext } from "./context/theme.js";
+import { structuralStyles } from "./styles.js";
+import { componentRegistry } from "./component-registry.js";
+// This is the base class all the components will inherit
+let Root = (() => {
+ let _classDecorators = [customElement("a2ui-root")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = SignalWatcher(LitElement);
+ let _instanceExtraInitializers = [];
+ let _surfaceId_decorators;
+ let _surfaceId_initializers = [];
+ let _surfaceId_extraInitializers = [];
+ let _component_decorators;
+ let _component_initializers = [];
+ let _component_extraInitializers = [];
+ let _theme_decorators;
+ let _theme_initializers = [];
+ let _theme_extraInitializers = [];
+ let _childComponents_decorators;
+ let _childComponents_initializers = [];
+ let _childComponents_extraInitializers = [];
+ let _processor_decorators;
+ let _processor_initializers = [];
+ let _processor_extraInitializers = [];
+ let _dataContextPath_decorators;
+ let _dataContextPath_initializers = [];
+ let _dataContextPath_extraInitializers = [];
+ let _enableCustomElements_decorators;
+ let _enableCustomElements_initializers = [];
+ let _enableCustomElements_extraInitializers = [];
+ let _set_weight_decorators;
+ var Root = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _surfaceId_decorators = [property()];
+ _component_decorators = [property()];
+ _theme_decorators = [consume({ context: themeContext })];
+ _childComponents_decorators = [property({ attribute: false })];
+ _processor_decorators = [property({ attribute: false })];
+ _dataContextPath_decorators = [property()];
+ _enableCustomElements_decorators = [property()];
+ _set_weight_decorators = [property()];
+ __esDecorate(this, null, _surfaceId_decorators, { kind: "accessor", name: "surfaceId", static: false, private: false, access: { has: obj => "surfaceId" in obj, get: obj => obj.surfaceId, set: (obj, value) => { obj.surfaceId = value; } }, metadata: _metadata }, _surfaceId_initializers, _surfaceId_extraInitializers);
+ __esDecorate(this, null, _component_decorators, { kind: "accessor", name: "component", static: false, private: false, access: { has: obj => "component" in obj, get: obj => obj.component, set: (obj, value) => { obj.component = value; } }, metadata: _metadata }, _component_initializers, _component_extraInitializers);
+ __esDecorate(this, null, _theme_decorators, { kind: "accessor", name: "theme", static: false, private: false, access: { has: obj => "theme" in obj, get: obj => obj.theme, set: (obj, value) => { obj.theme = value; } }, metadata: _metadata }, _theme_initializers, _theme_extraInitializers);
+ __esDecorate(this, null, _childComponents_decorators, { kind: "accessor", name: "childComponents", static: false, private: false, access: { has: obj => "childComponents" in obj, get: obj => obj.childComponents, set: (obj, value) => { obj.childComponents = value; } }, metadata: _metadata }, _childComponents_initializers, _childComponents_extraInitializers);
+ __esDecorate(this, null, _processor_decorators, { kind: "accessor", name: "processor", static: false, private: false, access: { has: obj => "processor" in obj, get: obj => obj.processor, set: (obj, value) => { obj.processor = value; } }, metadata: _metadata }, _processor_initializers, _processor_extraInitializers);
+ __esDecorate(this, null, _dataContextPath_decorators, { kind: "accessor", name: "dataContextPath", static: false, private: false, access: { has: obj => "dataContextPath" in obj, get: obj => obj.dataContextPath, set: (obj, value) => { obj.dataContextPath = value; } }, metadata: _metadata }, _dataContextPath_initializers, _dataContextPath_extraInitializers);
+ __esDecorate(this, null, _enableCustomElements_decorators, { kind: "accessor", name: "enableCustomElements", static: false, private: false, access: { has: obj => "enableCustomElements" in obj, get: obj => obj.enableCustomElements, set: (obj, value) => { obj.enableCustomElements = value; } }, metadata: _metadata }, _enableCustomElements_initializers, _enableCustomElements_extraInitializers);
+ __esDecorate(this, null, _set_weight_decorators, { kind: "setter", name: "weight", static: false, private: false, access: { has: obj => "weight" in obj, set: (obj, value) => { obj.weight = value; } }, metadata: _metadata }, null, _instanceExtraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Root = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #surfaceId_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _surfaceId_initializers, null));
+ get surfaceId() { return this.#surfaceId_accessor_storage; }
+ set surfaceId(value) { this.#surfaceId_accessor_storage = value; }
+ #component_accessor_storage = (__runInitializers(this, _surfaceId_extraInitializers), __runInitializers(this, _component_initializers, null));
+ get component() { return this.#component_accessor_storage; }
+ set component(value) { this.#component_accessor_storage = value; }
+ #theme_accessor_storage = (__runInitializers(this, _component_extraInitializers), __runInitializers(this, _theme_initializers, void 0));
+ get theme() { return this.#theme_accessor_storage; }
+ set theme(value) { this.#theme_accessor_storage = value; }
+ #childComponents_accessor_storage = (__runInitializers(this, _theme_extraInitializers), __runInitializers(this, _childComponents_initializers, null));
+ get childComponents() { return this.#childComponents_accessor_storage; }
+ set childComponents(value) { this.#childComponents_accessor_storage = value; }
+ #processor_accessor_storage = (__runInitializers(this, _childComponents_extraInitializers), __runInitializers(this, _processor_initializers, null));
+ get processor() { return this.#processor_accessor_storage; }
+ set processor(value) { this.#processor_accessor_storage = value; }
+ #dataContextPath_accessor_storage = (__runInitializers(this, _processor_extraInitializers), __runInitializers(this, _dataContextPath_initializers, ""));
+ get dataContextPath() { return this.#dataContextPath_accessor_storage; }
+ set dataContextPath(value) { this.#dataContextPath_accessor_storage = value; }
+ #enableCustomElements_accessor_storage = (__runInitializers(this, _dataContextPath_extraInitializers), __runInitializers(this, _enableCustomElements_initializers, false));
+ get enableCustomElements() { return this.#enableCustomElements_accessor_storage; }
+ set enableCustomElements(value) { this.#enableCustomElements_accessor_storage = value; }
+ set weight(weight) {
+ this.#weight = weight;
+ this.style.setProperty("--weight", `${weight}`);
+ }
+ get weight() {
+ return this.#weight;
+ }
+ #weight = (__runInitializers(this, _enableCustomElements_extraInitializers), 1);
+ static { this.styles = [
+ structuralStyles,
+ css `
+ :host {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ max-height: 80%;
+ }
+ `,
+ ]; }
+ /**
+ * Holds the cleanup function for our effect.
+ * We need this to stop the effect when the component is disconnected.
+ */
+ #lightDomEffectDisposer = null;
+ willUpdate(changedProperties) {
+ if (changedProperties.has("childComponents")) {
+ if (this.#lightDomEffectDisposer) {
+ this.#lightDomEffectDisposer();
+ }
+ // This effect watches the A2UI Children signal and updates the Light DOM.
+ this.#lightDomEffectDisposer = effect(() => {
+ // 1. Read the signal to create the subscription.
+ const allChildren = this.childComponents ?? null;
+ // 2. Generate the template for the children.
+ const lightDomTemplate = this.renderComponentTree(allChildren);
+ // 3. Imperatively render that template into the component itself.
+ render(lightDomTemplate, this, { host: this });
+ });
+ }
+ }
+ /**
+ * Clean up the effect when the component is removed from the DOM.
+ */
+ disconnectedCallback() {
+ super.disconnectedCallback();
+ if (this.#lightDomEffectDisposer) {
+ this.#lightDomEffectDisposer();
+ }
+ }
+ /**
+ * Turns the SignalMap into a renderable TemplateResult for Lit.
+ */
+ renderComponentTree(components) {
+ if (!components) {
+ return nothing;
+ }
+ if (!Array.isArray(components)) {
+ return nothing;
+ }
+ return html ` ${map(components, (component) => {
+ // 1. Check if there is a registered custom component or override.
+ if (this.enableCustomElements) {
+ const registeredCtor = componentRegistry.get(component.type);
+ // We also check customElements.get for non-registered but defined elements
+ const elCtor = registeredCtor || customElements.get(component.type);
+ if (elCtor) {
+ const node = component;
+ const el = new elCtor();
+ el.id = node.id;
+ if (node.slotName) {
+ el.slot = node.slotName;
+ }
+ el.component = node;
+ el.weight = node.weight ?? "initial";
+ el.processor = this.processor;
+ el.surfaceId = this.surfaceId;
+ el.dataContextPath = node.dataContextPath ?? "/";
+ for (const [prop, val] of Object.entries(component.properties)) {
+ // @ts-expect-error We're off the books.
+ el[prop] = val;
+ }
+ return html `${el}`;
+ }
+ }
+ // 2. Fallback to standard components.
+ switch (component.type) {
+ case "List": {
+ const node = component;
+ const childComponents = node.properties.children;
+ return html ` `;
+ }
+ case "Card": {
+ const node = component;
+ let childComponents = node.properties.children;
+ if (!childComponents && node.properties.child) {
+ childComponents = [node.properties.child];
+ }
+ return html ` `;
+ }
+ case "Column": {
+ const node = component;
+ return html ` `;
+ }
+ case "Row": {
+ const node = component;
+ return html ` `;
+ }
+ case "Image": {
+ const node = component;
+ return html ` `;
+ }
+ case "Icon": {
+ const node = component;
+ return html ` `;
+ }
+ case "AudioPlayer": {
+ const node = component;
+ return html ` `;
+ }
+ case "Button": {
+ const node = component;
+ return html ` `;
+ }
+ case "Text": {
+ const node = component;
+ return html ` `;
+ }
+ case "CheckBox": {
+ const node = component;
+ return html ` `;
+ }
+ case "DateTimeInput": {
+ const node = component;
+ return html ` `;
+ }
+ case "Divider": {
+ // TODO: thickness, axis and color.
+ const node = component;
+ return html ` `;
+ }
+ case "MultipleChoice": {
+ // TODO: maxAllowedSelections and selections.
+ const node = component;
+ return html ` `;
+ }
+ case "Slider": {
+ const node = component;
+ return html ` `;
+ }
+ case "TextField": {
+ // TODO: type and validationRegexp.
+ const node = component;
+ return html ` `;
+ }
+ case "Video": {
+ const node = component;
+ return html ` `;
+ }
+ case "Tabs": {
+ const node = component;
+ const titles = [];
+ const childComponents = [];
+ if (node.properties.tabItems) {
+ for (const item of node.properties.tabItems) {
+ titles.push(item.title);
+ childComponents.push(item.child);
+ }
+ }
+ return html ` `;
+ }
+ case "Modal": {
+ const node = component;
+ const childComponents = [
+ node.properties.entryPointChild,
+ node.properties.contentChild,
+ ];
+ node.properties.entryPointChild.slotName = "entry";
+ return html ` `;
+ }
+ default: {
+ return this.renderCustomComponent(component);
+ }
+ }
+ })}`;
+ }
+ renderCustomComponent(component) {
+ if (!this.enableCustomElements) {
+ return;
+ }
+ const node = component;
+ const registeredCtor = componentRegistry.get(component.type);
+ const elCtor = registeredCtor || customElements.get(component.type);
+ if (!elCtor) {
+ return html `Unknown element ${component.type}`;
+ }
+ const el = new elCtor();
+ el.id = node.id;
+ if (node.slotName) {
+ el.slot = node.slotName;
+ }
+ el.component = node;
+ el.weight = node.weight ?? "initial";
+ el.processor = this.processor;
+ el.surfaceId = this.surfaceId;
+ el.dataContextPath = node.dataContextPath ?? "/";
+ for (const [prop, val] of Object.entries(component.properties)) {
+ // @ts-expect-error We're off the books.
+ el[prop] = val;
+ }
+ return html `${el}`;
+ }
+ render() {
+ return html ` `;
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Root = _classThis;
+})();
+export { Root };
+//# sourceMappingURL=root.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.js.map
new file mode 100644
index 0000000000..676a332194
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/root.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"root.js","sourceRoot":"","sources":["../../../../src/0.8/ui/root.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.d.ts
new file mode 100644
index 0000000000..b4ca81826b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.d.ts
@@ -0,0 +1,9 @@
+import { Root } from "./root.js";
+import { ResolvedRow } from "../types/types";
+export declare class Row extends Root {
+ accessor alignment: ResolvedRow["alignment"];
+ accessor distribution: ResolvedRow["distribution"];
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=row.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.d.ts.map
new file mode 100644
index 0000000000..853ee61ca0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"row.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/row.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,qBACa,GAAI,SAAQ,IAAI;IAE3B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAa;IAGzD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,CAAW;IAE7D,MAAM,CAAC,MAAM,4BA2DX;IAEF,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.js
new file mode 100644
index 0000000000..2f68267231
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.js
@@ -0,0 +1,167 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Row = (() => {
+ let _classDecorators = [customElement("a2ui-row")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _alignment_decorators;
+ let _alignment_initializers = [];
+ let _alignment_extraInitializers = [];
+ let _distribution_decorators;
+ let _distribution_initializers = [];
+ let _distribution_extraInitializers = [];
+ var Row = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _alignment_decorators = [property({ reflect: true, type: String })];
+ _distribution_decorators = [property({ reflect: true, type: String })];
+ __esDecorate(this, null, _alignment_decorators, { kind: "accessor", name: "alignment", static: false, private: false, access: { has: obj => "alignment" in obj, get: obj => obj.alignment, set: (obj, value) => { obj.alignment = value; } }, metadata: _metadata }, _alignment_initializers, _alignment_extraInitializers);
+ __esDecorate(this, null, _distribution_decorators, { kind: "accessor", name: "distribution", static: false, private: false, access: { has: obj => "distribution" in obj, get: obj => obj.distribution, set: (obj, value) => { obj.distribution = value; } }, metadata: _metadata }, _distribution_initializers, _distribution_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Row = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #alignment_accessor_storage = __runInitializers(this, _alignment_initializers, "stretch");
+ get alignment() { return this.#alignment_accessor_storage; }
+ set alignment(value) { this.#alignment_accessor_storage = value; }
+ #distribution_accessor_storage = (__runInitializers(this, _alignment_extraInitializers), __runInitializers(this, _distribution_initializers, "start"));
+ get distribution() { return this.#distribution_accessor_storage; }
+ set distribution(value) { this.#distribution_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: flex;
+ flex: var(--weight);
+ }
+
+ section {
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+ min-height: 100%;
+ }
+
+ :host([alignment="start"]) section {
+ align-items: start;
+ }
+
+ :host([alignment="center"]) section {
+ align-items: center;
+ }
+
+ :host([alignment="end"]) section {
+ align-items: end;
+ }
+
+ :host([alignment="stretch"]) section {
+ align-items: stretch;
+ }
+
+ :host([distribution="start"]) section {
+ justify-content: start;
+ }
+
+ :host([distribution="center"]) section {
+ justify-content: center;
+ }
+
+ :host([distribution="end"]) section {
+ justify-content: end;
+ }
+
+ :host([distribution="spaceBetween"]) section {
+ justify-content: space-between;
+ }
+
+ :host([distribution="spaceAround"]) section {
+ justify-content: space-around;
+ }
+
+ :host([distribution="spaceEvenly"]) section {
+ justify-content: space-evenly;
+ }
+ `,
+ ]; }
+ render() {
+ return html `
+
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _distribution_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Row = _classThis;
+})();
+export { Row };
+//# sourceMappingURL=row.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.js.map
new file mode 100644
index 0000000000..5192a80a57
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/row.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"row.js","sourceRoot":"","sources":["../../../../src/0.8/ui/row.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;IAGlC,GAAG;4BADf,aAAa,CAAC,UAAU,CAAC;;;;sBACD,IAAI;;;;;;;mBAAZ,SAAQ,WAAI;;;;qCAC1B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCAGzC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAF1C,gLAAS,SAAS,6BAAT,SAAS,6FAAuC;YAGzD,yLAAS,YAAY,6BAAZ,YAAY,mGAAwC;YAL/D,6KA8EC;;;;QA5EC,+EAA+C,SAAS,EAAC;QAAzD,IAAS,SAAS,+CAAuC;QAAzD,IAAS,SAAS,qDAAuC;QAGzD,6IAAqD,OAAO,GAAC;QAA7D,IAAS,YAAY,kDAAwC;QAA7D,IAAS,YAAY,wDAAwC;iBAEtD,WAAM,GAAG;YACd,gBAAgB;YAChB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwDF;SACF,AA3DY,CA2DX;QAEF,MAAM;YACJ,OAAO,IAAI,CAAA;cACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;cACnC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG;gBACtC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC;gBAC5C,CAAC,CAAC,OAAO;;;eAGF,CAAC;QACd,CAAC;;;;;;YA7EU,uDAAG;;;;;SAAH,GAAG"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.d.ts
new file mode 100644
index 0000000000..9d275d7701
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.d.ts
@@ -0,0 +1,15 @@
+import { nothing } from "lit";
+import { Root } from "./root.js";
+import { NumberValue, StringValue } from "../types/primitives";
+import { ResolvedTextField } from "../types/types.js";
+export declare class Slider extends Root {
+ #private;
+ accessor value: NumberValue | null;
+ accessor minValue: number;
+ accessor maxValue: number;
+ accessor label: StringValue | null;
+ accessor inputType: ResolvedTextField["type"] | null;
+ static styles: import("lit").CSSResult[];
+ render(): typeof nothing | import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=slider.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.d.ts.map
new file mode 100644
index 0000000000..914a378386
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/slider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOtD,qBACa,MAAO,SAAQ,IAAI;;IAE9B,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IAG1C,QAAQ,CAAC,QAAQ,SAAK;IAGtB,QAAQ,CAAC,QAAQ,SAAK;IAGtB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IAG1C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAQ;IAE5D,MAAM,CAAC,MAAM,4BAoBX;IA+DF,MAAM;CA+BP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.js
new file mode 100644
index 0000000000..0cf4aa90d9
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.js
@@ -0,0 +1,213 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+import { extractNumberValue } from "./utils/utils.js";
+let Slider = (() => {
+ let _classDecorators = [customElement("a2ui-slider")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _value_decorators;
+ let _value_initializers = [];
+ let _value_extraInitializers = [];
+ let _minValue_decorators;
+ let _minValue_initializers = [];
+ let _minValue_extraInitializers = [];
+ let _maxValue_decorators;
+ let _maxValue_initializers = [];
+ let _maxValue_extraInitializers = [];
+ let _label_decorators;
+ let _label_initializers = [];
+ let _label_extraInitializers = [];
+ let _inputType_decorators;
+ let _inputType_initializers = [];
+ let _inputType_extraInitializers = [];
+ var Slider = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _value_decorators = [property()];
+ _minValue_decorators = [property()];
+ _maxValue_decorators = [property()];
+ _label_decorators = [property()];
+ _inputType_decorators = [property()];
+ __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
+ __esDecorate(this, null, _minValue_decorators, { kind: "accessor", name: "minValue", static: false, private: false, access: { has: obj => "minValue" in obj, get: obj => obj.minValue, set: (obj, value) => { obj.minValue = value; } }, metadata: _metadata }, _minValue_initializers, _minValue_extraInitializers);
+ __esDecorate(this, null, _maxValue_decorators, { kind: "accessor", name: "maxValue", static: false, private: false, access: { has: obj => "maxValue" in obj, get: obj => obj.maxValue, set: (obj, value) => { obj.maxValue = value; } }, metadata: _metadata }, _maxValue_initializers, _maxValue_extraInitializers);
+ __esDecorate(this, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
+ __esDecorate(this, null, _inputType_decorators, { kind: "accessor", name: "inputType", static: false, private: false, access: { has: obj => "inputType" in obj, get: obj => obj.inputType, set: (obj, value) => { obj.inputType = value; } }, metadata: _metadata }, _inputType_initializers, _inputType_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Slider = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #value_accessor_storage = __runInitializers(this, _value_initializers, null);
+ get value() { return this.#value_accessor_storage; }
+ set value(value) { this.#value_accessor_storage = value; }
+ #minValue_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _minValue_initializers, 0));
+ get minValue() { return this.#minValue_accessor_storage; }
+ set minValue(value) { this.#minValue_accessor_storage = value; }
+ #maxValue_accessor_storage = (__runInitializers(this, _minValue_extraInitializers), __runInitializers(this, _maxValue_initializers, 0));
+ get maxValue() { return this.#maxValue_accessor_storage; }
+ set maxValue(value) { this.#maxValue_accessor_storage = value; }
+ #label_accessor_storage = (__runInitializers(this, _maxValue_extraInitializers), __runInitializers(this, _label_initializers, null));
+ get label() { return this.#label_accessor_storage; }
+ set label(value) { this.#label_accessor_storage = value; }
+ #inputType_accessor_storage = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _inputType_initializers, null));
+ get inputType() { return this.#inputType_accessor_storage; }
+ set inputType(value) { this.#inputType_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ }
+
+ input {
+ display: block;
+ width: 100%;
+ }
+
+ .description {
+ }
+ `,
+ ]; }
+ #setBoundValue(value) {
+ if (!this.value || !this.processor) {
+ return;
+ }
+ if (!("path" in this.value)) {
+ return;
+ }
+ if (!this.value.path) {
+ return;
+ }
+ this.processor.setData(this.component, this.value.path, value, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ }
+ #renderField(value) {
+ return html `
+
+ {
+ if (!(evt.target instanceof HTMLInputElement)) {
+ return;
+ }
+ this.#setBoundValue(evt.target.value);
+ }}
+ id="data"
+ name="data"
+ .value=${value}
+ type="range"
+ min=${this.minValue ?? "0"}
+ max=${this.maxValue ?? "0"}
+ />
+ ${this.value
+ ? extractNumberValue(this.value, this.component, this.processor, this.surfaceId)
+ : "0"}
+ `;
+ }
+ render() {
+ if (this.value && typeof this.value === "object") {
+ if ("literalNumber" in this.value && this.value.literalNumber) {
+ return this.#renderField(this.value.literalNumber);
+ }
+ else if ("literal" in this.value && this.value.literal !== undefined) {
+ return this.#renderField(this.value.literal);
+ }
+ else if (this.value && "path" in this.value && this.value.path) {
+ if (!this.processor || !this.component) {
+ return html `(no processor)`;
+ }
+ const textValue = this.processor.getData(this.component, this.value.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (textValue === null) {
+ return html `Invalid value`;
+ }
+ if (typeof textValue !== "string" && typeof textValue !== "number") {
+ return html `Invalid value`;
+ }
+ return this.#renderField(textValue);
+ }
+ }
+ return nothing;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _inputType_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Slider = _classThis;
+})();
+export { Slider };
+//# sourceMappingURL=slider.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.js.map
new file mode 100644
index 0000000000..fe6bde1dc5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/slider.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../../src/0.8/ui/slider.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.d.ts
new file mode 100644
index 0000000000..e16dd26f62
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.d.ts
@@ -0,0 +1,2 @@
+export declare const structuralStyles: import("lit").CSSResult;
+//# sourceMappingURL=styles.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.d.ts.map
new file mode 100644
index 0000000000..74c67ab2ce
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/styles.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,gBAAgB,yBAAoC,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.js
new file mode 100644
index 0000000000..9ee00ae1cb
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.js
@@ -0,0 +1,19 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { unsafeCSS } from "lit";
+import { structuralStyles as unsafeStructuralStyles } from "../styles/index.js";
+export const structuralStyles = unsafeCSS(unsafeStructuralStyles);
+//# sourceMappingURL=styles.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.js.map
new file mode 100644
index 0000000000..dd26e5c17a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/styles.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/0.8/ui/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.d.ts
new file mode 100644
index 0000000000..0d9f6cb1f3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.d.ts
@@ -0,0 +1,13 @@
+import { nothing } from "lit";
+import { SurfaceID, Surface as SurfaceState } from "../types/types";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { Root } from "./root.js";
+export declare class Surface extends Root {
+ #private;
+ accessor surfaceId: SurfaceID | null;
+ accessor surface: SurfaceState | null;
+ accessor processor: A2uiMessageProcessor | null;
+ static styles: import("lit").CSSResult[];
+ render(): typeof nothing | import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=surface.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.d.ts.map
new file mode 100644
index 0000000000..ac0876bdb2
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/surface.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,qBACa,OAAQ,SAAQ,IAAI;;IAE/B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IAG5C,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAQ;IAG7C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAEvD,MAAM,CAAC,MAAM,4BAwBX;IAoEF,MAAM;CAOP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.js
new file mode 100644
index 0000000000..0853c84814
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.js
@@ -0,0 +1,195 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { styleMap } from "lit/directives/style-map.js";
+let Surface = (() => {
+ let _classDecorators = [customElement("a2ui-surface")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _surfaceId_decorators;
+ let _surfaceId_initializers = [];
+ let _surfaceId_extraInitializers = [];
+ let _surface_decorators;
+ let _surface_initializers = [];
+ let _surface_extraInitializers = [];
+ let _processor_decorators;
+ let _processor_initializers = [];
+ let _processor_extraInitializers = [];
+ var Surface = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _surfaceId_decorators = [property()];
+ _surface_decorators = [property()];
+ _processor_decorators = [property()];
+ __esDecorate(this, null, _surfaceId_decorators, { kind: "accessor", name: "surfaceId", static: false, private: false, access: { has: obj => "surfaceId" in obj, get: obj => obj.surfaceId, set: (obj, value) => { obj.surfaceId = value; } }, metadata: _metadata }, _surfaceId_initializers, _surfaceId_extraInitializers);
+ __esDecorate(this, null, _surface_decorators, { kind: "accessor", name: "surface", static: false, private: false, access: { has: obj => "surface" in obj, get: obj => obj.surface, set: (obj, value) => { obj.surface = value; } }, metadata: _metadata }, _surface_initializers, _surface_extraInitializers);
+ __esDecorate(this, null, _processor_decorators, { kind: "accessor", name: "processor", static: false, private: false, access: { has: obj => "processor" in obj, get: obj => obj.processor, set: (obj, value) => { obj.processor = value; } }, metadata: _metadata }, _processor_initializers, _processor_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Surface = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #surfaceId_accessor_storage = __runInitializers(this, _surfaceId_initializers, null);
+ get surfaceId() { return this.#surfaceId_accessor_storage; }
+ set surfaceId(value) { this.#surfaceId_accessor_storage = value; }
+ #surface_accessor_storage = (__runInitializers(this, _surfaceId_extraInitializers), __runInitializers(this, _surface_initializers, null));
+ get surface() { return this.#surface_accessor_storage; }
+ set surface(value) { this.#surface_accessor_storage = value; }
+ #processor_accessor_storage = (__runInitializers(this, _surface_extraInitializers), __runInitializers(this, _processor_initializers, null));
+ get processor() { return this.#processor_accessor_storage; }
+ set processor(value) { this.#processor_accessor_storage = value; }
+ static { this.styles = [
+ css `
+ :host {
+ display: flex;
+ min-height: 0;
+ max-height: 100%;
+ flex-direction: column;
+ gap: 16px;
+ }
+
+ #surface-logo {
+ display: flex;
+ justify-content: center;
+
+ & img {
+ width: 50%;
+ max-width: 220px;
+ }
+ }
+
+ a2ui-root {
+ flex: 1;
+ }
+ `,
+ ]; }
+ #renderLogo() {
+ if (!this.surface?.styles.logoUrl) {
+ return nothing;
+ }
+ return html `
+
+ `;
+ }
+ #renderSurface() {
+ const styles = {};
+ if (this.surface?.styles) {
+ for (const [key, value] of Object.entries(this.surface.styles)) {
+ switch (key) {
+ // Here we generate a palette from the singular primary color received
+ // from the surface data. We will want the values to range from
+ // 0 <= x <= 100, where 0 = back, 100 = white, and 50 = the primary
+ // color itself. As such we use a color-mix to create the intermediate
+ // values.
+ //
+ // Note: since we use half the range for black to the primary color,
+ // and half the range for primary color to white the mixed values have
+ // to go up double the amount, i.e., a range from black to primary
+ // color needs to fit in 0 -> 50 rather than 0 -> 100.
+ case "primaryColor": {
+ styles["--p-100"] = "#ffffff";
+ styles["--p-99"] = `color-mix(in srgb, ${value} 2%, white 98%)`;
+ styles["--p-98"] = `color-mix(in srgb, ${value} 4%, white 96%)`;
+ styles["--p-95"] = `color-mix(in srgb, ${value} 10%, white 90%)`;
+ styles["--p-90"] = `color-mix(in srgb, ${value} 20%, white 80%)`;
+ styles["--p-80"] = `color-mix(in srgb, ${value} 40%, white 60%)`;
+ styles["--p-70"] = `color-mix(in srgb, ${value} 60%, white 40%)`;
+ styles["--p-60"] = `color-mix(in srgb, ${value} 80%, white 20%)`;
+ styles["--p-50"] = value;
+ styles["--p-40"] = `color-mix(in srgb, ${value} 80%, black 20%)`;
+ styles["--p-35"] = `color-mix(in srgb, ${value} 70%, black 30%)`;
+ styles["--p-30"] = `color-mix(in srgb, ${value} 60%, black 40%)`;
+ styles["--p-25"] = `color-mix(in srgb, ${value} 50%, black 50%)`;
+ styles["--p-20"] = `color-mix(in srgb, ${value} 40%, black 60%)`;
+ styles["--p-15"] = `color-mix(in srgb, ${value} 30%, black 70%)`;
+ styles["--p-10"] = `color-mix(in srgb, ${value} 20%, black 80%)`;
+ styles["--p-5"] = `color-mix(in srgb, ${value} 10%, black 90%)`;
+ styles["--0"] = "#00000";
+ break;
+ }
+ case "font": {
+ styles["--font-family"] = value;
+ styles["--font-family-flex"] = value;
+ break;
+ }
+ }
+ }
+ }
+ return html ` `;
+ }
+ render() {
+ if (!this.surface) {
+ return nothing;
+ }
+ return html `${[this.#renderLogo(), this.#renderSurface()]}`;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _processor_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Surface = _classThis;
+})();
+export { Surface };
+//# sourceMappingURL=surface.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.js.map
new file mode 100644
index 0000000000..fc252ed707
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/surface.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"surface.js","sourceRoot":"","sources":["../../../../src/0.8/ui/surface.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.d.ts
new file mode 100644
index 0000000000..a3b0b337b2
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.d.ts
@@ -0,0 +1,12 @@
+import { PropertyValues } from "lit";
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+export declare class Tabs extends Root {
+ #private;
+ accessor titles: StringValue[] | null;
+ accessor selected: number;
+ static styles: import("lit").CSSResult[];
+ protected willUpdate(changedProperties: PropertyValues): void;
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=tabs.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.d.ts.map
new file mode 100644
index 0000000000..093881e105
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/tabs.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,cAAc,EAAW,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAOrD,qBACa,IAAK,SAAQ,IAAI;;IAE5B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAQ;IAG7C,QAAQ,CAAC,QAAQ,SAAK;IAEtB,MAAM,CAAC,MAAM,4BAQX;IAEF,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IA4EnE,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.js
new file mode 100644
index 0000000000..fefb489842
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.js
@@ -0,0 +1,180 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { repeat } from "lit/directives/repeat.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+import { Styles } from "../index.js";
+let Tabs = (() => {
+ let _classDecorators = [customElement("a2ui-tabs")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _titles_decorators;
+ let _titles_initializers = [];
+ let _titles_extraInitializers = [];
+ let _selected_decorators;
+ let _selected_initializers = [];
+ let _selected_extraInitializers = [];
+ var Tabs = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _titles_decorators = [property()];
+ _selected_decorators = [property()];
+ __esDecorate(this, null, _titles_decorators, { kind: "accessor", name: "titles", static: false, private: false, access: { has: obj => "titles" in obj, get: obj => obj.titles, set: (obj, value) => { obj.titles = value; } }, metadata: _metadata }, _titles_initializers, _titles_extraInitializers);
+ __esDecorate(this, null, _selected_decorators, { kind: "accessor", name: "selected", static: false, private: false, access: { has: obj => "selected" in obj, get: obj => obj.selected, set: (obj, value) => { obj.selected = value; } }, metadata: _metadata }, _selected_initializers, _selected_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Tabs = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #titles_accessor_storage = __runInitializers(this, _titles_initializers, null);
+ get titles() { return this.#titles_accessor_storage; }
+ set titles(value) { this.#titles_accessor_storage = value; }
+ #selected_accessor_storage = (__runInitializers(this, _titles_extraInitializers), __runInitializers(this, _selected_initializers, 0));
+ get selected() { return this.#selected_accessor_storage; }
+ set selected(value) { this.#selected_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ :host {
+ display: block;
+ flex: var(--weight);
+ }
+ `,
+ ]; }
+ willUpdate(changedProperties) {
+ super.willUpdate(changedProperties);
+ if (changedProperties.has("selected")) {
+ for (const child of this.children) {
+ child.removeAttribute("slot");
+ }
+ const selectedChild = this.children[this.selected];
+ if (!selectedChild) {
+ return;
+ }
+ selectedChild.slot = "current";
+ }
+ }
+ #renderTabs() {
+ if (!this.titles) {
+ return nothing;
+ }
+ return html ``;
+ }
+ #renderSlot() {
+ return html ` `;
+ }
+ render() {
+ return html `
+ ${[this.#renderTabs(), this.#renderSlot()]}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _selected_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Tabs = _classThis;
+})();
+export { Tabs };
+//# sourceMappingURL=tabs.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.js.map
new file mode 100644
index 0000000000..e117630468
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/tabs.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../src/0.8/ui/tabs.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.d.ts
new file mode 100644
index 0000000000..48992cfc33
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.d.ts
@@ -0,0 +1,12 @@
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+import { ResolvedTextField } from "../types/types";
+export declare class TextField extends Root {
+ #private;
+ accessor text: StringValue | null;
+ accessor label: StringValue | null;
+ accessor inputType: ResolvedTextField["type"] | null;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=text-field.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.d.ts.map
new file mode 100644
index 0000000000..45ef06fcd7
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/text-field.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnD,qBACa,SAAU,SAAQ,IAAI;;IAEjC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAGzC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAQ;IAG1C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAQ;IAE5D,MAAM,CAAC,MAAM,4BAsBX;IAsDF,MAAM;CAgBP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.js
new file mode 100644
index 0000000000..0c8910ead9
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.js
@@ -0,0 +1,178 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { extractStringValue } from "./utils/utils.js";
+import { structuralStyles } from "./styles.js";
+let TextField = (() => {
+ let _classDecorators = [customElement("a2ui-textfield")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _text_decorators;
+ let _text_initializers = [];
+ let _text_extraInitializers = [];
+ let _label_decorators;
+ let _label_initializers = [];
+ let _label_extraInitializers = [];
+ let _inputType_decorators;
+ let _inputType_initializers = [];
+ let _inputType_extraInitializers = [];
+ var TextField = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _text_decorators = [property()];
+ _label_decorators = [property()];
+ _inputType_decorators = [property()];
+ __esDecorate(this, null, _text_decorators, { kind: "accessor", name: "text", static: false, private: false, access: { has: obj => "text" in obj, get: obj => obj.text, set: (obj, value) => { obj.text = value; } }, metadata: _metadata }, _text_initializers, _text_extraInitializers);
+ __esDecorate(this, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
+ __esDecorate(this, null, _inputType_decorators, { kind: "accessor", name: "inputType", static: false, private: false, access: { has: obj => "inputType" in obj, get: obj => obj.inputType, set: (obj, value) => { obj.inputType = value; } }, metadata: _metadata }, _inputType_initializers, _inputType_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ TextField = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #text_accessor_storage = __runInitializers(this, _text_initializers, null);
+ get text() { return this.#text_accessor_storage; }
+ set text(value) { this.#text_accessor_storage = value; }
+ #label_accessor_storage = (__runInitializers(this, _text_extraInitializers), __runInitializers(this, _label_initializers, null));
+ get label() { return this.#label_accessor_storage; }
+ set label(value) { this.#label_accessor_storage = value; }
+ #inputType_accessor_storage = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _inputType_initializers, null));
+ get inputType() { return this.#inputType_accessor_storage; }
+ set inputType(value) { this.#inputType_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: flex;
+ flex: var(--weight);
+ }
+
+ input {
+ display: block;
+ width: 100%;
+ }
+
+ label {
+ display: block;
+ margin-bottom: 4px;
+ }
+ `,
+ ]; }
+ #setBoundValue(value) {
+ if (!this.text || !this.processor) {
+ return;
+ }
+ if (!("path" in this.text)) {
+ return;
+ }
+ if (!this.text.path) {
+ return;
+ }
+ this.processor.setData(this.component, this.text.path, value, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ }
+ #renderField(value, label) {
+ return html `
+ ${label && label !== ""
+ ? html ``
+ : nothing}
+ {
+ if (!(evt.target instanceof HTMLInputElement)) {
+ return;
+ }
+ this.#setBoundValue(evt.target.value);
+ }}
+ name="data"
+ id="data"
+ .value=${value}
+ .placeholder=${"Please enter a value"}
+ type=${this.inputType === "number" ? "number" : "text"}
+ />
+ `;
+ }
+ render() {
+ const label = extractStringValue(this.label, this.component, this.processor, this.surfaceId);
+ const value = extractStringValue(this.text, this.component, this.processor, this.surfaceId);
+ return this.#renderField(value, label);
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _inputType_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return TextField = _classThis;
+})();
+export { TextField };
+//# sourceMappingURL=text-field.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.js.map
new file mode 100644
index 0000000000..429d6bb5ee
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text-field.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../../../src/0.8/ui/text-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;IAGlC,SAAS;4BADrB,aAAa,CAAC,gBAAgB,CAAC;;;;sBACD,IAAI;;;;;;;;;;yBAAZ,SAAQ,WAAI;;;;gCAChC,QAAQ,EAAE;iCAGV,QAAQ,EAAE;qCAGV,QAAQ,EAAE;YALX,iKAAS,IAAI,6BAAJ,IAAI,mFAA4B;YAGzC,oKAAS,KAAK,6BAAL,KAAK,qFAA4B;YAG1C,gLAAS,SAAS,6BAAT,SAAS,6FAA0C;YAR9D,6KAsGC;;;;QApGC,qEAAoC,IAAI,EAAC;QAAzC,IAAS,IAAI,0CAA4B;QAAzC,IAAS,IAAI,gDAA4B;QAGzC,0HAAqC,IAAI,GAAC;QAA1C,IAAS,KAAK,2CAA4B;QAA1C,IAAS,KAAK,iDAA4B;QAG1C,mIAAuD,IAAI,GAAC;QAA5D,IAAS,SAAS,+CAA0C;QAA5D,IAAS,SAAS,qDAA0C;iBAErD,WAAM,GAAG;YACd,gBAAgB;YAChB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;KAmBF;SACF,AAtBY,CAsBX;QAEF,cAAc,CAAC,KAAa;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,OAAO,CACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,IAAI,CAAC,IAAI,EACd,KAAK,EACL,IAAI,CAAC,SAAS,IAAI,oBAAoB,CAAC,kBAAkB,CAC1D,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,KAAsB,EAAE,KAAa;YAChD,OAAO,IAAI,CAAA;cACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;;QAEzD,KAAK,IAAI,KAAK,KAAK,EAAE;gBACrB,CAAC,CAAC,IAAI,CAAA;oBACM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;eAEpD,KAAK;YACR;gBACJ,CAAC,CAAC,OAAO;;;gBAGD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS;gBAC5C,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC;gBAClD,CAAC,CAAC,OAAO;iBACF,CAAC,GAAU,EAAE,EAAE;gBACtB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE,CAAC;oBAC9C,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;;;iBAGQ,KAAK;uBACC,sBAAsB;eAC9B,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;;eAE/C,CAAC;QACd,CAAC;QAED,MAAM;YACJ,MAAM,KAAK,GAAG,kBAAkB,CAC9B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CACf,CAAC;YACF,MAAM,KAAK,GAAG,kBAAkB,CAC9B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CACf,CAAC;YAEF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;;;;;;YArGU,uDAAS;;;;;SAAT,SAAS"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.d.ts
new file mode 100644
index 0000000000..8cc599bf86
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.d.ts
@@ -0,0 +1,11 @@
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+import { ResolvedText } from "../types/types.js";
+export declare class Text extends Root {
+ #private;
+ accessor text: StringValue | null;
+ accessor usageHint: ResolvedText["usageHint"] | null;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=text.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.d.ts.map
new file mode 100644
index 0000000000..363dac1de0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/text.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,OAAO,EAAE,YAAY,EAAS,MAAM,mBAAmB,CAAC;AAYxD,qBACa,IAAK,SAAQ,IAAI;;IAE5B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAQ;IAGzC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAQ;IAE5D,MAAM,CAAC,MAAM,4BAiBX;IAqFF,MAAM;CAeP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.js
new file mode 100644
index 0000000000..8e990827b8
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.js
@@ -0,0 +1,200 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { markdown } from "./directives/directives.js";
+import { Root } from "./root.js";
+import { classMap } from "lit/directives/class-map.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+import { Styles } from "../index.js";
+let Text = (() => {
+ let _classDecorators = [customElement("a2ui-text")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _text_decorators;
+ let _text_initializers = [];
+ let _text_extraInitializers = [];
+ let _usageHint_decorators;
+ let _usageHint_initializers = [];
+ let _usageHint_extraInitializers = [];
+ var Text = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _text_decorators = [property()];
+ _usageHint_decorators = [property({ reflect: true, attribute: "usage-hint" })];
+ __esDecorate(this, null, _text_decorators, { kind: "accessor", name: "text", static: false, private: false, access: { has: obj => "text" in obj, get: obj => obj.text, set: (obj, value) => { obj.text = value; } }, metadata: _metadata }, _text_initializers, _text_extraInitializers);
+ __esDecorate(this, null, _usageHint_decorators, { kind: "accessor", name: "usageHint", static: false, private: false, access: { has: obj => "usageHint" in obj, get: obj => obj.usageHint, set: (obj, value) => { obj.usageHint = value; } }, metadata: _metadata }, _usageHint_initializers, _usageHint_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Text = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #text_accessor_storage = __runInitializers(this, _text_initializers, null);
+ get text() { return this.#text_accessor_storage; }
+ set text(value) { this.#text_accessor_storage = value; }
+ #usageHint_accessor_storage = (__runInitializers(this, _text_extraInitializers), __runInitializers(this, _usageHint_initializers, null));
+ get usageHint() { return this.#usageHint_accessor_storage; }
+ set usageHint(value) { this.#usageHint_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ :host {
+ display: block;
+ flex: var(--weight);
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5 {
+ line-height: inherit;
+ font: inherit;
+ }
+ `,
+ ]; }
+ #renderText() {
+ let textValue = null;
+ if (this.text && typeof this.text === "object") {
+ if ("literalString" in this.text && this.text.literalString) {
+ textValue = this.text.literalString;
+ }
+ else if ("literal" in this.text && this.text.literal !== undefined) {
+ textValue = this.text.literal;
+ }
+ else if (this.text && "path" in this.text && this.text.path) {
+ if (!this.processor || !this.component) {
+ return html `(no model)`;
+ }
+ const value = this.processor.getData(this.component, this.text.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (value !== null && value !== undefined) {
+ textValue = value.toString();
+ }
+ }
+ }
+ if (textValue === null || textValue === undefined) {
+ return html `(empty)`;
+ }
+ let markdownText = textValue;
+ switch (this.usageHint) {
+ case "h1":
+ markdownText = `# ${markdownText}`;
+ break;
+ case "h2":
+ markdownText = `## ${markdownText}`;
+ break;
+ case "h3":
+ markdownText = `### ${markdownText}`;
+ break;
+ case "h4":
+ markdownText = `#### ${markdownText}`;
+ break;
+ case "h5":
+ markdownText = `##### ${markdownText}`;
+ break;
+ case "caption":
+ markdownText = `*${markdownText}*`;
+ break;
+ default:
+ break; // Body.
+ }
+ return html `${markdown(markdownText, Styles.appendToAll(this.theme.markdown, ["ol", "ul", "li"], {}))}`;
+ }
+ #areHintedStyles(styles) {
+ if (typeof styles !== "object")
+ return false;
+ if (Array.isArray(styles))
+ return false;
+ if (!styles)
+ return false;
+ const expected = ["h1", "h2", "h3", "h4", "h5", "h6", "caption", "body"];
+ return expected.every((v) => v in styles);
+ }
+ #getAdditionalStyles() {
+ let additionalStyles = {};
+ const styles = this.theme.additionalStyles?.Text;
+ if (!styles)
+ return additionalStyles;
+ if (this.#areHintedStyles(styles)) {
+ const hint = this.usageHint ?? "body";
+ additionalStyles = styles[hint];
+ }
+ else {
+ additionalStyles = styles;
+ }
+ return additionalStyles;
+ }
+ render() {
+ const classes = Styles.merge(this.theme.components.Text.all, this.usageHint ? this.theme.components.Text[this.usageHint] : {});
+ return html `
+ ${this.#renderText()}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _usageHint_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Text = _classThis;
+})();
+export { Text };
+//# sourceMappingURL=text.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.js.map
new file mode 100644
index 0000000000..91b282ce80
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/text.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/0.8/ui/text.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.d.ts
new file mode 100644
index 0000000000..88a99c34fd
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.d.ts
@@ -0,0 +1,62 @@
+export type TagName = keyof A2UITagNameMap;
+export type CustomElementConstructorOf = {
+ new (): T;
+} & typeof HTMLElement;
+import { Audio } from "./audio.js";
+import { Button } from "./button.js";
+import { Card } from "./card.js";
+import { Checkbox } from "./checkbox.js";
+import { Column } from "./column.js";
+import { DateTimeInput } from "./datetime-input.js";
+import { Divider } from "./divider.js";
+import { Icon } from "./icon.js";
+import { Image } from "./image.js";
+import { List } from "./list.js";
+import { MultipleChoice } from "./multiple-choice.js";
+import { Modal } from "./modal.js";
+import { Root } from "./root.js";
+import { Row } from "./row.js";
+import { Slider } from "./slider.js";
+import { Surface } from "./surface.js";
+import { Tabs } from "./tabs.js";
+import { TextField } from "./text-field.js";
+import { Text } from "./text.js";
+import { Video } from "./video.js";
+export * as Context from "./context/theme.js";
+export * as Utils from "./utils/utils.js";
+export { ComponentRegistry, componentRegistry } from "./component-registry.js";
+export { registerCustomComponents } from "./custom-components/index.js";
+export { Audio, Button, Card, Column, Checkbox, DateTimeInput, Divider, Icon, Image, List, MultipleChoice, Modal, Row, Slider, Root, Surface, Tabs, Text, TextField, Video, };
+interface A2UITagNameMap {
+ "a2ui-audioplayer": Audio;
+ "a2ui-button": Button;
+ "a2ui-card": Card;
+ "a2ui-checkbox": Checkbox;
+ "a2ui-column": Column;
+ "a2ui-datetimeinput": DateTimeInput;
+ "a2ui-divider": Divider;
+ "a2ui-icon": Icon;
+ "a2ui-image": Image;
+ "a2ui-list": List;
+ "a2ui-modal": Modal;
+ "a2ui-multiplechoice": MultipleChoice;
+ "a2ui-root": Root;
+ "a2ui-row": Row;
+ "a2ui-slider": Slider;
+ "a2ui-surface": Surface;
+ "a2ui-tabs": Tabs;
+ "a2ui-text": Text;
+ "a2ui-textfield": TextField;
+ "a2ui-video": Video;
+}
+declare global {
+ interface HTMLElementTagNameMap extends A2UITagNameMap {
+ }
+}
+/**
+ * Type-safely retrieves a custom element constructor using the tagName map.
+ * @param tagName The tag name to look up (must exist in HTMLElementTagNameMap).
+ * @returns The specific constructor type or undefined.
+ */
+export declare function instanceOf(tagName: T): A2UITagNameMap[T] | undefined;
+//# sourceMappingURL=ui.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.d.ts.map
new file mode 100644
index 0000000000..13fa356dc6
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/ui.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.js
new file mode 100644
index 0000000000..98904cc66f
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.js
@@ -0,0 +1,56 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { Audio } from "./audio.js";
+import { Button } from "./button.js";
+import { Card } from "./card.js";
+import { Checkbox } from "./checkbox.js";
+import { Column } from "./column.js";
+import { DateTimeInput } from "./datetime-input.js";
+import { Divider } from "./divider.js";
+import { Icon } from "./icon.js";
+import { Image } from "./image.js";
+import { List } from "./list.js";
+import { MultipleChoice } from "./multiple-choice.js";
+import { Modal } from "./modal.js";
+import { Root } from "./root.js";
+import { Row } from "./row.js";
+import { Slider } from "./slider.js";
+import { Surface } from "./surface.js";
+import { Tabs } from "./tabs.js";
+import { TextField } from "./text-field.js";
+import { Text } from "./text.js";
+import { Video } from "./video.js";
+export * as Context from "./context/theme.js";
+export * as Utils from "./utils/utils.js";
+export { ComponentRegistry, componentRegistry } from "./component-registry.js";
+export { registerCustomComponents } from "./custom-components/index.js";
+export { Audio, Button, Card, Column, Checkbox, DateTimeInput, Divider, Icon, Image, List, MultipleChoice, Modal, Row, Slider, Root, Surface, Tabs, Text, TextField, Video, };
+/**
+ * Type-safely retrieves a custom element constructor using the tagName map.
+ * @param tagName The tag name to look up (must exist in HTMLElementTagNameMap).
+ * @returns The specific constructor type or undefined.
+ */
+export function instanceOf(tagName) {
+ // Use a type assertion: we tell TypeScript to trust that the value returned
+ // by customElements.get(tagName) matches the type defined in our map.
+ const ctor = customElements.get(tagName);
+ if (!ctor) {
+ console.warn("No element definition for", tagName);
+ return;
+ }
+ return new ctor();
+}
+//# sourceMappingURL=ui.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.js.map
new file mode 100644
index 0000000000..7ca2a7052c
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/ui.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../src/0.8/ui/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EACL,KAAK,EACL,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,aAAa,EACb,OAAO,EACP,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,cAAc,EACd,KAAK,EACL,GAAG,EACH,MAAM,EACN,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,KAAK,GACN,CAAC;AA8BF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAiC,OAAU;IACnE,4EAA4E;IAC5E,sEAAsE;IACtE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAE1B,CAAC;IACd,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.d.ts
new file mode 100644
index 0000000000..15c031ad97
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.d.ts
@@ -0,0 +1,6 @@
+import { A2uiMessageProcessor } from "../../data/model-processor.js";
+import { NumberValue, type StringValue } from "../../types/primitives.js";
+import { type AnyComponentNode } from "../../types/types.js";
+export declare function extractStringValue(val: StringValue | null, component: AnyComponentNode | null, processor: A2uiMessageProcessor | null, surfaceId: string | null): string;
+export declare function extractNumberValue(val: NumberValue | null, component: AnyComponentNode | null, processor: A2uiMessageProcessor | null, surfaceId: string | null): number;
+//# sourceMappingURL=utils.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.d.ts.map
new file mode 100644
index 0000000000..d85ee05d9a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/0.8/ui/utils/utils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,GAAG,IAAI,EACvB,SAAS,EAAE,gBAAgB,GAAG,IAAI,EAClC,SAAS,EAAE,oBAAoB,GAAG,IAAI,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CA0BR;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,GAAG,IAAI,EACvB,SAAS,EAAE,gBAAgB,GAAG,IAAI,EAClC,SAAS,EAAE,oBAAoB,GAAG,IAAI,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAiCR"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.js
new file mode 100644
index 0000000000..291fedf3e2
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.js
@@ -0,0 +1,65 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+import { A2uiMessageProcessor } from "../../data/model-processor.js";
+export function extractStringValue(val, component, processor, surfaceId) {
+ if (val !== null && typeof val === "object") {
+ if ("literalString" in val) {
+ return val.literalString ?? "";
+ }
+ else if ("literal" in val && val.literal !== undefined) {
+ return val.literal ?? "";
+ }
+ else if (val && "path" in val && val.path) {
+ if (!processor || !component) {
+ return "(no model)";
+ }
+ const textValue = processor.getData(component, val.path, surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (textValue === null || typeof textValue !== "string") {
+ return "";
+ }
+ return textValue;
+ }
+ }
+ return "";
+}
+export function extractNumberValue(val, component, processor, surfaceId) {
+ if (val !== null && typeof val === "object") {
+ if ("literalNumber" in val) {
+ return val.literalNumber ?? 0;
+ }
+ else if ("literal" in val && val.literal !== undefined) {
+ return val.literal ?? 0;
+ }
+ else if (val && "path" in val && val.path) {
+ if (!processor || !component) {
+ return -1;
+ }
+ let numberValue = processor.getData(component, val.path, surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (typeof numberValue === "string") {
+ numberValue = Number.parseInt(numberValue, 10);
+ if (Number.isNaN(numberValue)) {
+ numberValue = null;
+ }
+ }
+ if (numberValue === null || typeof numberValue !== "number") {
+ return -1;
+ }
+ return numberValue;
+ }
+ }
+ return 0;
+}
+//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.js.map
new file mode 100644
index 0000000000..9846cf5e2c
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/0.8/ui/utils/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAIrE,MAAM,UAAU,kBAAkB,CAChC,GAAuB,EACvB,SAAkC,EAClC,SAAsC,EACtC,SAAwB;IAExB,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,IAAI,eAAe,IAAI,GAAG,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;QACjC,CAAC;aAAM,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7B,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CACjC,SAAS,EACT,GAAG,CAAC,IAAI,EACR,SAAS,IAAI,oBAAoB,CAAC,kBAAkB,CACrD,CAAC;YAEF,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACxD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAuB,EACvB,SAAkC,EAClC,SAAsC,EACtC,SAAwB;IAExB,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,IAAI,eAAe,IAAI,GAAG,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7B,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YAED,IAAI,WAAW,GAAG,SAAS,CAAC,OAAO,CACjC,SAAS,EACT,GAAG,CAAC,IAAI,EACR,SAAS,IAAI,oBAAoB,CAAC,kBAAkB,CACrD,CAAC;YAEF,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAC/C,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9B,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,CAAC;YAED,IAAI,WAAW,KAAK,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC5D,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.d.ts
new file mode 100644
index 0000000000..cf4f794b36
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.d.ts
@@ -0,0 +1,9 @@
+export declare function isEmbedUri(uri: string | null): boolean;
+export declare function isShareUri(uri: string | null): boolean;
+export declare function isWatchUri(uri: string): boolean;
+export declare function isShortsUri(uri: string): boolean;
+export declare function convertShareUriToEmbedUri(uri: string): string | null;
+export declare function convertWatchOrShortsUriToEmbedUri(uri: string): string | null;
+export declare function videoIdFromWatchOrShortsOrEmbedUri(uri: string): string | null;
+export declare function createWatchUriFromVideoId(id: string): string;
+//# sourceMappingURL=youtube.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.d.ts.map
new file mode 100644
index 0000000000..d4dcd8be18
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"youtube.d.ts","sourceRoot":"","sources":["../../../../../src/0.8/ui/utils/youtube.ts"],"names":[],"mappings":"AAgBA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAMtD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAMtD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,iBASpD;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,MAAM,iBAU5D;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,iBAS7D;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,UAEnD"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.js
new file mode 100644
index 0000000000..3e3afa5984
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.js
@@ -0,0 +1,63 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export function isEmbedUri(uri) {
+ if (!uri) {
+ return false;
+ }
+ return /^https:\/\/www\.youtube\.com\/embed\//.test(uri);
+}
+export function isShareUri(uri) {
+ if (!uri) {
+ return false;
+ }
+ return /^https:\/\/youtu\.be\//.test(uri);
+}
+export function isWatchUri(uri) {
+ return /^https:\/\/www\.youtube\.com\/watch\?v=/.test(uri);
+}
+export function isShortsUri(uri) {
+ return /^https:\/\/www\.youtube\.com\/shorts\//.test(uri);
+}
+export function convertShareUriToEmbedUri(uri) {
+ const regex = /^https:\/\/youtu\.be\/(.*?)(?:[&\\?]|$)/;
+ const matches = regex.exec(uri);
+ if (!matches) {
+ return null;
+ }
+ const embedId = matches[1];
+ return `https://www.youtube.com/embed/${embedId}`;
+}
+export function convertWatchOrShortsUriToEmbedUri(uri) {
+ const regex = /^https:\/\/www\.youtube\.com\/(?:shorts\/|embed\/|watch\?v=)(.*?)(?:[&\\?]|$)/;
+ const matches = regex.exec(uri);
+ if (!matches) {
+ return null;
+ }
+ const embedId = matches[1];
+ return `https://www.youtube.com/embed/${embedId}`;
+}
+export function videoIdFromWatchOrShortsOrEmbedUri(uri) {
+ const regex = /^https:\/\/www\.youtube\.com\/(?:shorts\/|embed\/|watch\?v=)(.*?)(?:[&\\?]|$)/;
+ const matches = regex.exec(uri);
+ if (!matches) {
+ return null;
+ }
+ return matches[1];
+}
+export function createWatchUriFromVideoId(id) {
+ return `https://www.youtube.com/watch?v=${id}`;
+}
+//# sourceMappingURL=youtube.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.js.map
new file mode 100644
index 0000000000..1b3238f360
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/utils/youtube.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../../../../src/0.8/ui/utils/youtube.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,UAAU,UAAU,CAAC,GAAkB;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAkB;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,MAAM,KAAK,GAAG,yCAAyC,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,iCAAiC,OAAO,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,GAAW;IAC3D,MAAM,KAAK,GACT,+EAA+E,CAAC;IAClF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,iCAAiC,OAAO,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,GAAW;IAC5D,MAAM,KAAK,GACT,+EAA+E,CAAC;IAClF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAAU;IAClD,OAAO,mCAAmC,EAAE,EAAE,CAAC;AACjD,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.d.ts b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.d.ts
new file mode 100644
index 0000000000..9d9375bcdc
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.d.ts
@@ -0,0 +1,9 @@
+import { Root } from "./root.js";
+import { StringValue } from "../types/primitives.js";
+export declare class Video extends Root {
+ #private;
+ accessor url: StringValue | null;
+ static styles: import("lit").CSSResult[];
+ render(): import("lit").TemplateResult<1>;
+}
+//# sourceMappingURL=video.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.d.ts.map
new file mode 100644
index 0000000000..a40d5a2859
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../../src/0.8/ui/video.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,qBACa,KAAM,SAAQ,IAAI;;IAE7B,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAQ;IAExC,MAAM,CAAC,MAAM,4BAmBX;IAoCF,MAAM;CAUP"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.js b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.js
new file mode 100644
index 0000000000..78de75e46c
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.js
@@ -0,0 +1,147 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
+ var _, done = false;
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var context = {};
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
+ if (kind === "accessor") {
+ if (result === void 0) continue;
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
+ if (_ = accept(result.get)) descriptor.get = _;
+ if (_ = accept(result.set)) descriptor.set = _;
+ if (_ = accept(result.init)) initializers.unshift(_);
+ }
+ else if (_ = accept(result)) {
+ if (kind === "field") initializers.unshift(_);
+ else descriptor[key] = _;
+ }
+ }
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
+ done = true;
+};
+var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
+ var useValue = arguments.length > 2;
+ for (var i = 0; i < initializers.length; i++) {
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
+ }
+ return useValue ? value : void 0;
+};
+import { html, css, nothing } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { Root } from "./root.js";
+import { A2uiMessageProcessor } from "../data/model-processor.js";
+import { classMap } from "lit/directives/class-map.js";
+import { styleMap } from "lit/directives/style-map.js";
+import { structuralStyles } from "./styles.js";
+let Video = (() => {
+ let _classDecorators = [customElement("a2ui-video")];
+ let _classDescriptor;
+ let _classExtraInitializers = [];
+ let _classThis;
+ let _classSuper = Root;
+ let _url_decorators;
+ let _url_initializers = [];
+ let _url_extraInitializers = [];
+ var Video = class extends _classSuper {
+ static { _classThis = this; }
+ static {
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
+ _url_decorators = [property()];
+ __esDecorate(this, null, _url_decorators, { kind: "accessor", name: "url", static: false, private: false, access: { has: obj => "url" in obj, get: obj => obj.url, set: (obj, value) => { obj.url = value; } }, metadata: _metadata }, _url_initializers, _url_extraInitializers);
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
+ Video = _classThis = _classDescriptor.value;
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
+ }
+ #url_accessor_storage = __runInitializers(this, _url_initializers, null);
+ get url() { return this.#url_accessor_storage; }
+ set url(value) { this.#url_accessor_storage = value; }
+ static { this.styles = [
+ structuralStyles,
+ css `
+ * {
+ box-sizing: border-box;
+ }
+
+ :host {
+ display: block;
+ flex: var(--weight);
+ min-height: 0;
+ overflow: auto;
+ }
+
+ video {
+ display: block;
+ width: 100%;
+ }
+ `,
+ ]; }
+ #renderVideo() {
+ if (!this.url) {
+ return nothing;
+ }
+ if (this.url && typeof this.url === "object") {
+ if ("literalString" in this.url) {
+ return html ``;
+ }
+ else if ("literal" in this.url) {
+ return html ``;
+ }
+ else if (this.url && "path" in this.url && this.url.path) {
+ if (!this.processor || !this.component) {
+ return html `(no processor)`;
+ }
+ const videoUrl = this.processor.getData(this.component, this.url.path, this.surfaceId ?? A2uiMessageProcessor.DEFAULT_SURFACE_ID);
+ if (!videoUrl) {
+ return html `Invalid video URL`;
+ }
+ if (typeof videoUrl !== "string") {
+ return html `Invalid video URL`;
+ }
+ return html ``;
+ }
+ }
+ return html `(empty)`;
+ }
+ render() {
+ return html `
+ ${this.#renderVideo()}
+ `;
+ }
+ constructor() {
+ super(...arguments);
+ __runInitializers(this, _url_extraInitializers);
+ }
+ static {
+ __runInitializers(_classThis, _classExtraInitializers);
+ }
+ };
+ return Video = _classThis;
+})();
+export { Video };
+//# sourceMappingURL=video.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.js.map b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.js.map
new file mode 100644
index 0000000000..8cde102964
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/0.8/ui/video.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"video.js","sourceRoot":"","sources":["../../../../src/0.8/ui/video.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/index.d.ts b/vendor/a2ui/renderers/lit/dist/src/index.d.ts
new file mode 100644
index 0000000000..0ee064700b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/index.d.ts
@@ -0,0 +1,2 @@
+export * as v0_8 from "./0.8/index.js";
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/index.d.ts.map b/vendor/a2ui/renderers/lit/dist/src/index.d.ts.map
new file mode 100644
index 0000000000..a1614d6798
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/index.js b/vendor/a2ui/renderers/lit/dist/src/index.js
new file mode 100644
index 0000000000..5bdea5e037
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/index.js
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+export * as v0_8 from "./0.8/index.js";
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/dist/src/index.js.map b/vendor/a2ui/renderers/lit/dist/src/index.js.map
new file mode 100644
index 0000000000..2d5413c4c2
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/dist/src/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC"}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/package-lock.json b/vendor/a2ui/renderers/lit/package-lock.json
new file mode 100644
index 0000000000..26b270e092
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/package-lock.json
@@ -0,0 +1,1196 @@
+{
+ "name": "@a2ui/lit",
+ "version": "0.8.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@a2ui/lit",
+ "version": "0.8.1",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@lit-labs/signals": "^0.1.3",
+ "@lit/context": "^1.1.4",
+ "lit": "^3.3.1",
+ "markdown-it": "^14.1.0",
+ "signal-utils": "^0.21.1"
+ },
+ "devDependencies": {
+ "@types/markdown-it": "^14.1.2",
+ "@types/node": "^24.10.1",
+ "google-artifactregistry-auth": "^3.5.0",
+ "typescript": "^5.8.3",
+ "wireit": "^0.15.0-pre.2"
+ }
+ },
+ "node_modules/@lit-labs/signals": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@lit-labs/signals/-/signals-0.1.3.tgz",
+ "integrity": "sha512-P0yWgH5blwVyEwBg+WFspLzeu1i0ypJP1QB0l1Omr9qZLIPsUu0p4Fy2jshOg7oQyha5n163K3GJGeUhQQ682Q==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "lit": "^2.0.0 || ^3.0.0",
+ "signal-polyfill": "^0.2.0"
+ }
+ },
+ "node_modules/@lit-labs/ssr-dom-shim": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz",
+ "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@lit/context": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.6.tgz",
+ "integrity": "sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit/reactive-element": "^1.6.2 || ^2.1.0"
+ }
+ },
+ "node_modules/@lit/reactive-element": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.1.tgz",
+ "integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.4.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@types/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "14.1.2",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
+ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/linkify-it": "^5",
+ "@types/mdurl": "^2"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "24.10.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.2.tgz",
+ "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.16.0"
+ }
+ },
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "license": "MIT"
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/balanced-match": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-3.0.1.tgz",
+ "integrity": "sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/bignumber.js": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
+ "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-4.0.1.tgz",
+ "integrity": "sha512-YClrbvTCXGe70pU2JiEiPLYXO9gQkyxYeKpJIQHVS/gOs6EWMQP2RYBwjFLNT322Ji8TOC3IMPfsYCedNpzKfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/gaxios": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
+ "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^7.0.1",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.9",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/gcp-metadata": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz",
+ "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "gaxios": "^6.1.1",
+ "google-logging-utils": "^0.0.2",
+ "json-bigint": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/google-artifactregistry-auth": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/google-artifactregistry-auth/-/google-artifactregistry-auth-3.5.0.tgz",
+ "integrity": "sha512-SIvVBPjVr0KvYFEJEZXKfELt8nvXwTKl6IHyOT7pTHBlS8Ej2UuTOJeKWYFim/JztSjUyna9pKQxa3VhTA12Fg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "google-auth-library": "^9.14.0",
+ "js-yaml": "^4.1.0",
+ "yargs": "^17.1.1"
+ },
+ "bin": {
+ "artifactregistry-auth": "src/main.js"
+ }
+ },
+ "node_modules/google-auth-library": {
+ "version": "9.15.1",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz",
+ "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "gaxios": "^6.1.1",
+ "gcp-metadata": "^6.1.0",
+ "gtoken": "^7.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/google-logging-utils": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz",
+ "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/gtoken": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "gaxios": "^6.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jwa": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-equal-constant-time": "^1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jwa": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "node_modules/lit": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.1.tgz",
+ "integrity": "sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit/reactive-element": "^2.1.0",
+ "lit-element": "^4.2.0",
+ "lit-html": "^3.3.0"
+ }
+ },
+ "node_modules/lit-element": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.1.tgz",
+ "integrity": "sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.4.0",
+ "@lit/reactive-element": "^2.1.0",
+ "lit-html": "^3.3.0"
+ }
+ },
+ "node_modules/lit-html": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz",
+ "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@types/trusted-types": "^2.0.2"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
+ "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.4.0",
+ "linkify-it": "^5.0.0",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.1.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/proper-lockfile": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz",
+ "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "retry": "^0.12.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/signal-polyfill": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/signal-polyfill/-/signal-polyfill-0.2.2.tgz",
+ "integrity": "sha512-p63Y4Er5/eMQ9RHg0M0Y64NlsQKpiu6MDdhBXpyywRuWiPywhJTpKJ1iB5K2hJEbFZ0BnDS7ZkJ+0AfTuL37Rg==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/signal-utils": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/signal-utils/-/signal-utils-0.21.1.tgz",
+ "integrity": "sha512-i9cdLSvVH4j8ql8mz2lyrA93xL499P8wEbIev3ldSriXeUwqh+wM4Q5VPhIZ19gPtIS4BOopJuKB8l1+wH9LCg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "signal-polyfill": "^0.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/wireit": {
+ "version": "0.15.0-pre.2",
+ "resolved": "https://registry.npmjs.org/wireit/-/wireit-0.15.0-pre.2.tgz",
+ "integrity": "sha512-pXOTR56btrL7STFOPQgtq8MjAFWagSqs188E2FflCgcxk5uc0Xbn8CuLIR9FbqK97U3Jw6AK8zDEu/M/9ENqgA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "workspaces": [
+ "vscode-extension",
+ "website"
+ ],
+ "dependencies": {
+ "brace-expansion": "^4.0.0",
+ "chokidar": "^3.5.3",
+ "fast-glob": "^3.2.11",
+ "jsonc-parser": "^3.0.0",
+ "proper-lockfile": "^4.1.2"
+ },
+ "bin": {
+ "wireit": "bin/wireit.js"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ }
+ }
+}
diff --git a/vendor/a2ui/renderers/lit/package.json b/vendor/a2ui/renderers/lit/package.json
new file mode 100644
index 0000000000..6cc360cb5a
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/package.json
@@ -0,0 +1,108 @@
+{
+ "name": "@a2ui/lit",
+ "version": "0.8.1",
+ "description": "A2UI Lit Library",
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist/src/index.d.ts",
+ "default": "./dist/src/index.js"
+ },
+ "./0.8": {
+ "types": "./dist/src/0.8/core.d.ts",
+ "default": "./dist/src/0.8/core.js"
+ },
+ "./ui": {
+ "types": "./dist/src/0.8/ui/ui.d.ts",
+ "default": "./dist/src/0.8/ui/ui.js"
+ }
+ },
+ "type": "module",
+ "scripts": {
+ "prepack": "npm run build",
+ "build": "wireit",
+ "build:tsc": "wireit",
+ "dev": "npm run serve --watch",
+ "test": "wireit",
+ "serve": "wireit",
+ "copy-spec": "wireit"
+ },
+ "wireit": {
+ "copy-spec": {
+ "command": "mkdir -p src/0.8/schemas && cp ../../specification/0.8/json/*.json src/0.8/schemas",
+ "files": [
+ "../../specification/0.8/json/*.json"
+ ],
+ "output": [
+ "src/0.8/schemas/*.json"
+ ]
+ },
+ "serve": {
+ "command": "vite dev",
+ "dependencies": [
+ "build"
+ ],
+ "service": true
+ },
+ "test": {
+ "command": "node --test --enable-source-maps --test-reporter spec dist/src/0.8/*.test.js",
+ "dependencies": [
+ "build"
+ ]
+ },
+ "build": {
+ "dependencies": [
+ "build:tsc"
+ ]
+ },
+ "build:tsc": {
+ "command": "tsc -b --pretty",
+ "env": {
+ "FORCE_COLOR": "1"
+ },
+ "dependencies": [
+ "copy-spec"
+ ],
+ "files": [
+ "src/**/*.ts",
+ "src/**/*.json",
+ "tsconfig.json"
+ ],
+ "output": [
+ "dist/",
+ "!dist/**/*.min.js{,.map}"
+ ],
+ "clean": "if-file-deleted"
+ }
+ },
+ "repository": {
+ "directory": "renderers/lit",
+ "type": "git",
+ "url": "git+https://github.com/google/A2UI.git"
+ },
+ "files": [
+ "dist/src"
+ ],
+ "keywords": [],
+ "author": "Google",
+ "license": "Apache-2.0",
+ "bugs": {
+ "url": "https://github.com/google/A2UI/issues"
+ },
+ "homepage": "https://github.com/google/A2UI/tree/main/web#readme",
+ "devDependencies": {
+ "@types/markdown-it": "^14.1.2",
+ "@types/node": "^24.10.1",
+ "google-artifactregistry-auth": "^3.5.0",
+ "typescript": "^5.8.3",
+ "wireit": "^0.15.0-pre.2"
+ },
+ "dependencies": {
+ "@lit-labs/signals": "^0.1.3",
+ "@lit/context": "^1.1.4",
+ "lit": "^3.3.1",
+ "markdown-it": "^14.1.0",
+ "signal-utils": "^0.21.1"
+ }
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/core.ts b/vendor/a2ui/renderers/lit/src/0.8/core.ts
new file mode 100644
index 0000000000..9c16e747a4
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/core.ts
@@ -0,0 +1,35 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export * as Events from "./events/events.js";
+export * as Types from "./types/types.js";
+export * as Primitives from "./types/primitives.js";
+export * as Styles from "./styles/index.js";
+import * as Guards from "./data/guards.js";
+
+import { create as createSignalA2uiMessageProcessor } from "./data/signal-model-processor.js";
+import { A2uiMessageProcessor } from "./data/model-processor.js";
+import A2UIClientEventMessage from "./schemas/server_to_client_with_standard_catalog.json" with { type: "json" };
+
+export const Data = {
+ createSignalA2uiMessageProcessor,
+ A2uiMessageProcessor,
+ Guards,
+};
+
+export const Schemas = {
+ A2UIClientEventMessage,
+};
diff --git a/vendor/a2ui/renderers/lit/src/0.8/data/guards.ts b/vendor/a2ui/renderers/lit/src/0.8/data/guards.ts
new file mode 100644
index 0000000000..624e8f5ed7
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/data/guards.ts
@@ -0,0 +1,236 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { BooleanValue, NumberValue, StringValue } from "../types/primitives";
+import {
+ AnyComponentNode,
+ ComponentArrayReference,
+ ResolvedAudioPlayer,
+ ResolvedButton,
+ ResolvedCard,
+ ResolvedCheckbox,
+ ResolvedColumn,
+ ResolvedDateTimeInput,
+ ResolvedDivider,
+ ResolvedIcon,
+ ResolvedImage,
+ ResolvedList,
+ ResolvedModal,
+ ResolvedMultipleChoice,
+ ResolvedRow,
+ ResolvedSlider,
+ ResolvedTabItem,
+ ResolvedTabs,
+ ResolvedText,
+ ResolvedTextField,
+ ResolvedVideo,
+ ValueMap,
+} from "../types/types";
+
+export function isValueMap(value: unknown): value is ValueMap {
+ return isObject(value) && "key" in value;
+}
+
+export function isPath(key: string, value: unknown): value is string {
+ return key === "path" && typeof value === "string";
+}
+
+export function isObject(value: unknown): value is Record {
+ return typeof value === "object" && value !== null && !Array.isArray(value);
+}
+
+export function isComponentArrayReference(
+ value: unknown
+): value is ComponentArrayReference {
+ if (!isObject(value)) return false;
+ return "explicitList" in value || "template" in value;
+}
+
+function isStringValue(value: unknown): value is StringValue {
+ return (
+ isObject(value) &&
+ ("path" in value ||
+ ("literal" in value && typeof value.literal === "string") ||
+ "literalString" in value)
+ );
+}
+
+function isNumberValue(value: unknown): value is NumberValue {
+ return (
+ isObject(value) &&
+ ("path" in value ||
+ ("literal" in value && typeof value.literal === "number") ||
+ "literalNumber" in value)
+ );
+}
+
+function isBooleanValue(value: unknown): value is BooleanValue {
+ return (
+ isObject(value) &&
+ ("path" in value ||
+ ("literal" in value && typeof value.literal === "boolean") ||
+ "literalBoolean" in value)
+ );
+}
+
+function isAnyComponentNode(value: unknown): value is AnyComponentNode {
+ if (!isObject(value)) return false;
+ const hasBaseKeys = "id" in value && "type" in value && "properties" in value;
+ if (!hasBaseKeys) return false;
+
+ return true;
+}
+
+export function isResolvedAudioPlayer(
+ props: unknown
+): props is ResolvedAudioPlayer {
+ return isObject(props) && "url" in props && isStringValue(props.url);
+}
+
+export function isResolvedButton(props: unknown): props is ResolvedButton {
+ return (
+ isObject(props) &&
+ "child" in props &&
+ isAnyComponentNode(props.child) &&
+ "action" in props
+ );
+}
+
+export function isResolvedCard(props: unknown): props is ResolvedCard {
+ if (!isObject(props)) return false;
+ if (!("child" in props)) {
+ if (!("children" in props)) {
+ return false;
+ } else {
+ return (
+ Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode)
+ );
+ }
+ }
+
+ return isAnyComponentNode(props.child);
+}
+
+export function isResolvedCheckbox(props: unknown): props is ResolvedCheckbox {
+ return (
+ isObject(props) &&
+ "label" in props &&
+ isStringValue(props.label) &&
+ "value" in props &&
+ isBooleanValue(props.value)
+ );
+}
+
+export function isResolvedColumn(props: unknown): props is ResolvedColumn {
+ return (
+ isObject(props) &&
+ "children" in props &&
+ Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode)
+ );
+}
+
+export function isResolvedDateTimeInput(
+ props: unknown
+): props is ResolvedDateTimeInput {
+ return isObject(props) && "value" in props && isStringValue(props.value);
+}
+
+export function isResolvedDivider(props: unknown): props is ResolvedDivider {
+ // Dividers can have all optional properties, so just checking if
+ // it's an object is enough.
+ return isObject(props);
+}
+
+export function isResolvedImage(props: unknown): props is ResolvedImage {
+ return isObject(props) && "url" in props && isStringValue(props.url);
+}
+
+export function isResolvedIcon(props: unknown): props is ResolvedIcon {
+ return isObject(props) && "name" in props && isStringValue(props.name);
+}
+
+export function isResolvedList(props: unknown): props is ResolvedList {
+ return (
+ isObject(props) &&
+ "children" in props &&
+ Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode)
+ );
+}
+
+export function isResolvedModal(props: unknown): props is ResolvedModal {
+ return (
+ isObject(props) &&
+ "entryPointChild" in props &&
+ isAnyComponentNode(props.entryPointChild) &&
+ "contentChild" in props &&
+ isAnyComponentNode(props.contentChild)
+ );
+}
+
+export function isResolvedMultipleChoice(
+ props: unknown
+): props is ResolvedMultipleChoice {
+ return isObject(props) && "selections" in props;
+}
+
+export function isResolvedRow(props: unknown): props is ResolvedRow {
+ return (
+ isObject(props) &&
+ "children" in props &&
+ Array.isArray(props.children) &&
+ props.children.every(isAnyComponentNode)
+ );
+}
+
+export function isResolvedSlider(props: unknown): props is ResolvedSlider {
+ return isObject(props) && "value" in props && isNumberValue(props.value);
+}
+
+function isResolvedTabItem(item: unknown): item is ResolvedTabItem {
+ return (
+ isObject(item) &&
+ "title" in item &&
+ isStringValue(item.title) &&
+ "child" in item &&
+ isAnyComponentNode(item.child)
+ );
+}
+
+export function isResolvedTabs(props: unknown): props is ResolvedTabs {
+ return (
+ isObject(props) &&
+ "tabItems" in props &&
+ Array.isArray(props.tabItems) &&
+ props.tabItems.every(isResolvedTabItem)
+ );
+}
+
+export function isResolvedText(props: unknown): props is ResolvedText {
+ return isObject(props) && "text" in props && isStringValue(props.text);
+}
+
+export function isResolvedTextField(
+ props: unknown
+): props is ResolvedTextField {
+ return isObject(props) && "label" in props && isStringValue(props.label);
+}
+
+export function isResolvedVideo(props: unknown): props is ResolvedVideo {
+ return isObject(props) && "url" in props && isStringValue(props.url);
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/data/model-processor.ts b/vendor/a2ui/renderers/lit/src/0.8/data/model-processor.ts
new file mode 100644
index 0000000000..0cf0562b71
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/data/model-processor.ts
@@ -0,0 +1,855 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import {
+ ServerToClientMessage,
+ AnyComponentNode,
+ BeginRenderingMessage,
+ DataArray,
+ DataMap,
+ DataModelUpdate,
+ DataValue,
+ DeleteSurfaceMessage,
+ ResolvedMap,
+ ResolvedValue,
+ Surface,
+ SurfaceID,
+ SurfaceUpdateMessage,
+ MessageProcessor,
+ ValueMap,
+ DataObject,
+} from "../types/types";
+import {
+ isComponentArrayReference,
+ isObject,
+ isPath,
+ isResolvedAudioPlayer,
+ isResolvedButton,
+ isResolvedCard,
+ isResolvedCheckbox,
+ isResolvedColumn,
+ isResolvedDateTimeInput,
+ isResolvedDivider,
+ isResolvedIcon,
+ isResolvedImage,
+ isResolvedList,
+ isResolvedModal,
+ isResolvedMultipleChoice,
+ isResolvedRow,
+ isResolvedSlider,
+ isResolvedTabs,
+ isResolvedText,
+ isResolvedTextField,
+ isResolvedVideo,
+ isValueMap,
+} from "./guards.js";
+
+/**
+ * Processes and consolidates A2UIProtocolMessage objects into a structured,
+ * hierarchical model of UI surfaces.
+ */
+export class A2uiMessageProcessor implements MessageProcessor {
+ static readonly DEFAULT_SURFACE_ID = "@default";
+
+ #mapCtor: MapConstructor = Map;
+ #arrayCtor: ArrayConstructor = Array;
+ #setCtor: SetConstructor = Set;
+ #objCtor: ObjectConstructor = Object;
+ #surfaces: Map;
+
+ constructor(
+ readonly opts: {
+ mapCtor: MapConstructor;
+ arrayCtor: ArrayConstructor;
+ setCtor: SetConstructor;
+ objCtor: ObjectConstructor;
+ } = { mapCtor: Map, arrayCtor: Array, setCtor: Set, objCtor: Object }
+ ) {
+ this.#arrayCtor = opts.arrayCtor;
+ this.#mapCtor = opts.mapCtor;
+ this.#setCtor = opts.setCtor;
+ this.#objCtor = opts.objCtor;
+
+ this.#surfaces = new opts.mapCtor();
+ }
+
+ getSurfaces(): ReadonlyMap {
+ return this.#surfaces;
+ }
+
+ clearSurfaces() {
+ this.#surfaces.clear();
+ }
+
+ processMessages(messages: ServerToClientMessage[]): void {
+ for (const message of messages) {
+ if (message.beginRendering) {
+ this.#handleBeginRendering(
+ message.beginRendering,
+ message.beginRendering.surfaceId
+ );
+ }
+
+ if (message.surfaceUpdate) {
+ this.#handleSurfaceUpdate(
+ message.surfaceUpdate,
+ message.surfaceUpdate.surfaceId
+ );
+ }
+
+ if (message.dataModelUpdate) {
+ this.#handleDataModelUpdate(
+ message.dataModelUpdate,
+ message.dataModelUpdate.surfaceId
+ );
+ }
+
+ if (message.deleteSurface) {
+ this.#handleDeleteSurface(message.deleteSurface);
+ }
+ }
+ }
+
+ /**
+ * Retrieves the data for a given component node and a relative path string.
+ * This correctly handles the special `.` path, which refers to the node's
+ * own data context.
+ */
+ getData(
+ node: AnyComponentNode,
+ relativePath: string,
+ surfaceId = A2uiMessageProcessor.DEFAULT_SURFACE_ID
+ ): DataValue | null {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ if (!surface) return null;
+
+ let finalPath: string;
+
+ // The special `.` path means the final path is the node's data context
+ // path and so we return the dataContextPath as-is.
+ if (relativePath === "." || relativePath === "") {
+ finalPath = node.dataContextPath ?? "/";
+ } else {
+ // For all other paths, resolve them against the node's context.
+ finalPath = this.resolvePath(relativePath, node.dataContextPath);
+ }
+
+ return this.#getDataByPath(surface.dataModel, finalPath);
+ }
+
+ setData(
+ node: AnyComponentNode | null,
+ relativePath: string,
+ value: DataValue,
+ surfaceId = A2uiMessageProcessor.DEFAULT_SURFACE_ID
+ ): void {
+ if (!node) {
+ console.warn("No component node set");
+ return;
+ }
+
+ const surface = this.#getOrCreateSurface(surfaceId);
+ if (!surface) return;
+
+ let finalPath: string;
+
+ // The special `.` path means the final path is the node's data context
+ // path and so we return the dataContextPath as-is.
+ if (relativePath === "." || relativePath === "") {
+ finalPath = node.dataContextPath ?? "/";
+ } else {
+ // For all other paths, resolve them against the node's context.
+ finalPath = this.resolvePath(relativePath, node.dataContextPath);
+ }
+
+ this.#setDataByPath(surface.dataModel, finalPath, value);
+ }
+
+ resolvePath(path: string, dataContextPath?: string): string {
+ // If the path is absolute, it overrides any context.
+ if (path.startsWith("/")) {
+ return path;
+ }
+
+ if (dataContextPath && dataContextPath !== "/") {
+ // Ensure there's exactly one slash between the context and the path.
+ return dataContextPath.endsWith("/")
+ ? `${dataContextPath}${path}`
+ : `${dataContextPath}/${path}`;
+ }
+
+ // Fallback for no context or root context: make it an absolute path.
+ return `/${path}`;
+ }
+
+ #parseIfJsonString(value: DataValue): DataValue {
+ if (typeof value !== "string") {
+ return value;
+ }
+
+ const trimmedValue = value.trim();
+ if (
+ (trimmedValue.startsWith("{") && trimmedValue.endsWith("}")) ||
+ (trimmedValue.startsWith("[") && trimmedValue.endsWith("]"))
+ ) {
+ try {
+ // It looks like JSON, attempt to parse it.
+ return JSON.parse(value);
+ } catch (e) {
+ // It looked like JSON but wasn't. Keep the original string.
+ console.warn(
+ `Failed to parse potential JSON string: "${value.substring(
+ 0,
+ 50
+ )}..."`,
+ e
+ );
+ return value; // Return original string
+ }
+ }
+
+ // It's a string, but not JSON-like.
+ return value;
+ }
+
+ /**
+ * Converts a specific array format [{key: "...", value_string: "..."}, ...]
+ * into a standard Map. It also attempts to parse any string values that
+ * appear to be stringified JSON.
+ */
+ #convertKeyValueArrayToMap(arr: DataArray): DataMap {
+ const map = new this.#mapCtor();
+ for (const item of arr) {
+ if (!isObject(item) || !("key" in item)) continue;
+
+ const key = item.key as string;
+
+ // Find the value, which is in a property prefixed with "value".
+ const valueKey = this.#findValueKey(item);
+ if (!valueKey) continue;
+
+ let value: DataValue = item[valueKey];
+ // It's a valueMap. We must recursively convert it.
+ if (valueKey === "valueMap" && Array.isArray(value)) {
+ value = this.#convertKeyValueArrayToMap(value);
+ } else if (typeof value === "string") {
+ value = this.#parseIfJsonString(value);
+ }
+
+ this.#setDataByPath(map, key, value);
+ }
+ return map;
+ }
+
+ #setDataByPath(root: DataMap, path: string, value: DataValue): void {
+ // Check if the incoming value is the special key-value array format.
+ if (
+ Array.isArray(value) &&
+ (value.length === 0 || (isObject(value[0]) && "key" in value[0]))
+ ) {
+ // Check for "set primitive at path" convention:
+ // path: "/messages/123", contents: [{ key: ".", valueString: "hi" }]
+ if (value.length === 1 && isObject(value[0]) && value[0].key === ".") {
+ const item = value[0];
+ const valueKey = this.#findValueKey(item);
+
+ if (valueKey) {
+ // Extract the primitive value
+ value = item[valueKey];
+
+ // We must still process this value in case it's a valueMap or
+ // a JSON string.
+ if (valueKey === "valueMap" && Array.isArray(value)) {
+ value = this.#convertKeyValueArrayToMap(value);
+ } else if (typeof value === "string") {
+ value = this.#parseIfJsonString(value);
+ }
+ // Now, `value` is the primitive (e.g., "hi"), and we continue
+ // the function.
+ } else {
+ // Malformed, but fall back to existing behavior.
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ } else {
+ value = this.#convertKeyValueArrayToMap(value);
+ }
+ }
+
+ const segments = this.#normalizePath(path)
+ .split("/")
+ .filter((s) => s);
+ if (segments.length === 0) {
+ // Root data can either be a Map or an Object. If we receive an Object,
+ // however, we will normalize it to a proper Map.
+ if (value instanceof Map || isObject(value)) {
+ // Normalize an Object to a Map.
+ if (!(value instanceof Map) && isObject(value)) {
+ value = new this.#mapCtor(Object.entries(value));
+ }
+
+ root.clear();
+ for (const [key, v] of value.entries()) {
+ root.set(key, v);
+ }
+ } else {
+ console.error("Cannot set root of DataModel to a non-Map value.");
+ }
+ return;
+ }
+
+ let current: DataMap | DataArray = root;
+ for (let i = 0; i < segments.length - 1; i++) {
+ const segment = segments[i];
+ let target: DataValue | undefined;
+
+ if (current instanceof Map) {
+ target = current.get(segment);
+ } else if (Array.isArray(current) && /^\d+$/.test(segment)) {
+ target = current[parseInt(segment, 10)];
+ }
+
+ if (
+ target === undefined ||
+ typeof target !== "object" ||
+ target === null
+ ) {
+ target = new this.#mapCtor();
+ if (current instanceof this.#mapCtor) {
+ current.set(segment, target);
+ } else if (Array.isArray(current)) {
+ current[parseInt(segment, 10)] = target;
+ }
+ }
+ current = target as DataMap | DataArray;
+ }
+
+ const finalSegment = segments[segments.length - 1];
+ const storedValue = value;
+ if (current instanceof this.#mapCtor) {
+ current.set(finalSegment, storedValue);
+ } else if (Array.isArray(current) && /^\d+$/.test(finalSegment)) {
+ current[parseInt(finalSegment, 10)] = storedValue;
+ }
+ }
+
+ /**
+ * Normalizes a path string into a consistent, slash-delimited format.
+ * Converts bracket notation and dot notation in a two-pass.
+ * e.g., "bookRecommendations[0].title" -> "/bookRecommendations/0/title"
+ * e.g., "book.0.title" -> "/book/0/title"
+ */
+ #normalizePath(path: string): string {
+ // 1. Replace all bracket accessors `[index]` with dot accessors `.index`
+ const dotPath = path.replace(/\[(\d+)\]/g, ".$1");
+
+ // 2. Split by dots
+ const segments = dotPath.split(".");
+
+ // 3. Join with slashes and ensure it starts with a slash
+ return "/" + segments.filter((s) => s.length > 0).join("/");
+ }
+
+ #getDataByPath(root: DataMap, path: string): DataValue | null {
+ const segments = this.#normalizePath(path)
+ .split("/")
+ .filter((s) => s);
+
+ let current: DataValue = root;
+ for (const segment of segments) {
+ if (current === undefined || current === null) return null;
+
+ if (current instanceof Map) {
+ current = current.get(segment) as DataMap;
+ } else if (Array.isArray(current) && /^\d+$/.test(segment)) {
+ current = current[parseInt(segment, 10)];
+ } else if (isObject(current)) {
+ current = current[segment];
+ } else {
+ // If we need to traverse deeper but `current` is a primitive, the path is invalid.
+ return null;
+ }
+ }
+ return current;
+ }
+
+ #getOrCreateSurface(surfaceId: string): Surface {
+ let surface: Surface | undefined = this.#surfaces.get(surfaceId);
+ if (!surface) {
+ surface = new this.#objCtor({
+ rootComponentId: null,
+ componentTree: null,
+ dataModel: new this.#mapCtor(),
+ components: new this.#mapCtor(),
+ styles: new this.#objCtor(),
+ }) as Surface;
+
+ this.#surfaces.set(surfaceId, surface);
+ }
+
+ return surface;
+ }
+
+ #handleBeginRendering(
+ message: BeginRenderingMessage,
+ surfaceId: SurfaceID
+ ): void {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ surface.rootComponentId = message.root;
+ surface.styles = message.styles ?? {};
+ this.#rebuildComponentTree(surface);
+ }
+
+ #handleSurfaceUpdate(
+ message: SurfaceUpdateMessage,
+ surfaceId: SurfaceID
+ ): void {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ for (const component of message.components) {
+ surface.components.set(component.id, component);
+ }
+ this.#rebuildComponentTree(surface);
+ }
+
+ #handleDataModelUpdate(message: DataModelUpdate, surfaceId: SurfaceID): void {
+ const surface = this.#getOrCreateSurface(surfaceId);
+ const path = message.path ?? "/";
+ this.#setDataByPath(
+ surface.dataModel,
+ path,
+ message.contents
+ );
+ this.#rebuildComponentTree(surface);
+ }
+
+ #handleDeleteSurface(message: DeleteSurfaceMessage): void {
+ this.#surfaces.delete(message.surfaceId);
+ }
+
+ /**
+ * Starts at the root component of the surface and builds out the tree
+ * recursively. This process involves resolving all properties of the child
+ * components, and expanding on any explicit children lists or templates
+ * found in the structure.
+ *
+ * @param surface The surface to be built.
+ */
+ #rebuildComponentTree(surface: Surface): void {
+ if (!surface.rootComponentId) {
+ surface.componentTree = null;
+ return;
+ }
+
+ // Track visited nodes to avoid circular references.
+ const visited = new this.#setCtor();
+ surface.componentTree = this.#buildNodeRecursive(
+ surface.rootComponentId,
+ surface,
+ visited,
+ "/",
+ "" // Initial idSuffix.
+ );
+ }
+
+ /** Finds a value key in a map. */
+ #findValueKey(value: Record): string | undefined {
+ return Object.keys(value).find((k) => k.startsWith("value"));
+ }
+
+ /**
+ * Builds out the nodes recursively.
+ */
+ #buildNodeRecursive(
+ baseComponentId: string,
+ surface: Surface,
+ visited: Set,
+ dataContextPath: string,
+ idSuffix = ""
+ ): AnyComponentNode | null {
+ const fullId = `${baseComponentId}${idSuffix}`; // Construct the full ID
+ const { components } = surface;
+
+ if (!components.has(baseComponentId)) {
+ return null;
+ }
+
+ if (visited.has(fullId)) {
+ throw new Error(`Circular dependency for component "${fullId}".`);
+ }
+
+ visited.add(fullId);
+
+ const componentData = components.get(baseComponentId)!;
+ const componentProps = componentData.component ?? {};
+ const componentType = Object.keys(componentProps)[0];
+ const unresolvedProperties =
+ componentProps[componentType as keyof typeof componentProps];
+
+ // Manually build the resolvedProperties object by resolving each value in
+ // the component's properties.
+ const resolvedProperties: ResolvedMap = new this.#objCtor() as ResolvedMap;
+ if (isObject(unresolvedProperties)) {
+ for (const [key, value] of Object.entries(unresolvedProperties)) {
+ resolvedProperties[key] = this.#resolvePropertyValue(
+ value,
+ surface,
+ visited,
+ dataContextPath,
+ idSuffix
+ );
+ }
+ }
+
+ visited.delete(fullId);
+
+ // Now that we have the resolved properties in place we can go ahead and
+ // ensure that they meet expectations in terms of types and so forth,
+ // casting them into the specific shape for usage.
+ const baseNode = {
+ id: fullId,
+ dataContextPath,
+ weight: componentData.weight ?? "initial",
+ };
+ switch (componentType) {
+ case "Text":
+ if (!isResolvedText(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Text",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Image":
+ if (!isResolvedImage(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Image",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Icon":
+ if (!isResolvedIcon(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Icon",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Video":
+ if (!isResolvedVideo(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Video",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "AudioPlayer":
+ if (!isResolvedAudioPlayer(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "AudioPlayer",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Row":
+ if (!isResolvedRow(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Row",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Column":
+ if (!isResolvedColumn(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Column",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "List":
+ if (!isResolvedList(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "List",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Card":
+ if (!isResolvedCard(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Card",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Tabs":
+ if (!isResolvedTabs(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Tabs",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Divider":
+ if (!isResolvedDivider(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Divider",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Modal":
+ if (!isResolvedModal(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Modal",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Button":
+ if (!isResolvedButton(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Button",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "CheckBox":
+ if (!isResolvedCheckbox(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "CheckBox",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "TextField":
+ if (!isResolvedTextField(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "TextField",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "DateTimeInput":
+ if (!isResolvedDateTimeInput(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "DateTimeInput",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "MultipleChoice":
+ if (!isResolvedMultipleChoice(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "MultipleChoice",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ case "Slider":
+ if (!isResolvedSlider(resolvedProperties)) {
+ throw new Error(`Invalid data; expected ${componentType}`);
+ }
+ return new this.#objCtor({
+ ...baseNode,
+ type: "Slider",
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+
+ default:
+ // Catch-all for other custom component types.
+ return new this.#objCtor({
+ ...baseNode,
+ type: componentType,
+ properties: resolvedProperties,
+ }) as AnyComponentNode;
+ }
+ }
+
+ /**
+ * Recursively resolves an individual property value. If a property indicates
+ * a child node (a string that matches a component ID), an explicitList of
+ * children, or a template, these will be built out here.
+ */
+ #resolvePropertyValue(
+ value: unknown,
+ surface: Surface,
+ visited: Set,
+ dataContextPath: string,
+ idSuffix = ""
+ ): ResolvedValue {
+ // 1. If it's a string that matches a component ID, build that node.
+ if (typeof value === "string" && surface.components.has(value)) {
+ return this.#buildNodeRecursive(
+ value,
+ surface,
+ visited,
+ dataContextPath,
+ idSuffix
+ );
+ }
+
+ // 2. If it's a ComponentArrayReference (e.g., a `children` property),
+ // resolve the list and return an array of nodes.
+ if (isComponentArrayReference(value)) {
+ if (value.explicitList) {
+ return value.explicitList.map((id) =>
+ this.#buildNodeRecursive(
+ id,
+ surface,
+ visited,
+ dataContextPath,
+ idSuffix
+ )
+ );
+ }
+
+ if (value.template) {
+ const fullDataPath = this.resolvePath(
+ value.template.dataBinding,
+ dataContextPath
+ );
+ const data = this.#getDataByPath(surface.dataModel, fullDataPath);
+
+ const template = value.template;
+ // Handle Array data.
+ if (Array.isArray(data)) {
+ return data.map((_, index) => {
+ // Create a synthetic ID based on the template ID and the
+ // full index path of the data (e.g., template-id:0:1)
+ const parentIndices = dataContextPath
+ .split("/")
+ .filter((segment) => /^\d+$/.test(segment));
+
+ const newIndices = [...parentIndices, index];
+ const newSuffix = `:${newIndices.join(":")}`;
+ const childDataContextPath = `${fullDataPath}/${index}`;
+
+ return this.#buildNodeRecursive(
+ template.componentId, // baseId
+ surface,
+ visited,
+ childDataContextPath,
+ newSuffix // new suffix
+ );
+ });
+ }
+
+ // Handle Map data.
+ const mapCtor = this.#mapCtor;
+ if (data instanceof mapCtor) {
+ return Array.from(data.keys(), (key) => {
+ const newSuffix = `:${key}`;
+ const childDataContextPath = `${fullDataPath}/${key}`;
+
+ return this.#buildNodeRecursive(
+ template.componentId, // baseId
+ surface,
+ visited,
+ childDataContextPath,
+ newSuffix // new suffix
+ );
+ });
+ }
+
+ // Return empty array if the data is not ready yet.
+ return new this.#arrayCtor();
+ }
+ }
+
+ // 3. If it's a plain array, resolve each of its items.
+ if (Array.isArray(value)) {
+ return value.map((item) =>
+ this.#resolvePropertyValue(
+ item,
+ surface,
+ visited,
+ dataContextPath,
+ idSuffix
+ )
+ );
+ }
+
+ // 4. If it's a plain object, resolve each of its properties.
+ if (isObject(value)) {
+ const newObj: ResolvedMap = new this.#objCtor() as ResolvedMap;
+ for (const [key, propValue] of Object.entries(value)) {
+ // Special case for paths. Here we might get /item/ or ./ on the front
+ // of the path which isn't what we want. In this case we check the
+ // dataContextPath and if 1) it's not the default and 2) we also see the
+ // path beginning with /item/ or ./we trim it.
+ let propertyValue = propValue;
+ if (isPath(key, propValue) && dataContextPath !== "/") {
+ propertyValue = propValue
+ .replace(/^\.?\/item/, "")
+ .replace(/^\.?\/text/, "")
+ .replace(/^\.?\/label/, "")
+ .replace(/^\.?\//, "");
+ newObj[key] = propertyValue as ResolvedValue;
+ continue;
+ }
+
+ newObj[key] = this.#resolvePropertyValue(
+ propertyValue,
+ surface,
+ visited,
+ dataContextPath,
+ idSuffix
+ );
+ }
+ return newObj;
+ }
+
+ // 5. Otherwise, it's a primitive value.
+ return value as ResolvedValue;
+ }
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/data/signal-model-processor.ts b/vendor/a2ui/renderers/lit/src/0.8/data/signal-model-processor.ts
new file mode 100644
index 0000000000..e821c15211
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/data/signal-model-processor.ts
@@ -0,0 +1,31 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { A2uiMessageProcessor } from "./model-processor.js";
+
+import { SignalArray } from "signal-utils/array";
+import { SignalMap } from "signal-utils/map";
+import { SignalObject } from "signal-utils/object";
+import { SignalSet } from "signal-utils/set";
+
+export function create() {
+ return new A2uiMessageProcessor({
+ arrayCtor: SignalArray as unknown as ArrayConstructor,
+ mapCtor: SignalMap as unknown as MapConstructor,
+ objCtor: SignalObject as unknown as ObjectConstructor,
+ setCtor: SignalSet as unknown as SetConstructor,
+ });
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/events/a2ui.ts b/vendor/a2ui/renderers/lit/src/0.8/events/a2ui.ts
new file mode 100644
index 0000000000..88a41ea7de
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/events/a2ui.ts
@@ -0,0 +1,28 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { Action } from "../types/components.js";
+import { AnyComponentNode } from "../types/types.js";
+import { BaseEventDetail } from "./base.js";
+
+type Namespace = "a2ui";
+
+export interface A2UIAction extends BaseEventDetail<`${Namespace}.action`> {
+ readonly action: Action;
+ readonly dataContextPath: string;
+ readonly sourceComponentId: string;
+ readonly sourceComponent: AnyComponentNode | null;
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/events/base.ts b/vendor/a2ui/renderers/lit/src/0.8/events/base.ts
new file mode 100644
index 0000000000..5aeb474483
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/events/base.ts
@@ -0,0 +1,19 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export interface BaseEventDetail {
+ readonly eventType: EventType;
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/events/events.ts b/vendor/a2ui/renderers/lit/src/0.8/events/events.ts
new file mode 100644
index 0000000000..d1c412e28b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/events/events.ts
@@ -0,0 +1,53 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import type * as A2UI from "./a2ui.js";
+import { BaseEventDetail } from "./base.js";
+
+const eventInit = {
+ bubbles: true,
+ cancelable: true,
+ composed: true,
+};
+
+type EnforceEventTypeMatch>> =
+ {
+ [K in keyof T]: T[K] extends BaseEventDetail
+ ? EventType extends K
+ ? T[K]
+ : never
+ : never;
+ };
+
+export type StateEventDetailMap = EnforceEventTypeMatch<{
+ "a2ui.action": A2UI.A2UIAction;
+}>;
+
+export class StateEvent<
+ T extends keyof StateEventDetailMap
+> extends CustomEvent {
+ static eventName = "a2uiaction";
+
+ constructor(readonly payload: StateEventDetailMap[T]) {
+ super(StateEvent.eventName, { detail: payload, ...eventInit });
+ }
+}
+
+declare global {
+ interface HTMLElementEventMap {
+ a2uiaction: StateEvent<"a2ui.action">;
+ }
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/index.ts b/vendor/a2ui/renderers/lit/src/0.8/index.ts
new file mode 100644
index 0000000000..ab41af4b71
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/index.ts
@@ -0,0 +1,18 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export * from "./core.js";
+export * as UI from "./ui/ui.js";
diff --git a/vendor/a2ui/renderers/lit/src/0.8/model.test.ts b/vendor/a2ui/renderers/lit/src/0.8/model.test.ts
new file mode 100644
index 0000000000..892964e924
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/model.test.ts
@@ -0,0 +1,1337 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import assert from "node:assert";
+import { describe, it, beforeEach } from "node:test";
+import { v0_8 } from "@a2ui/lit";
+import { DataMap, DataValue } from "./types/types";
+
+// Helper function to strip reactivity for clean comparisons.
+const toPlainObject = (value: unknown): ReturnType => {
+ if (value instanceof Map) {
+ return Object.fromEntries(
+ Array.from(value.entries(), ([k, v]) => [k, toPlainObject(v)])
+ );
+ }
+ if (Array.isArray(value)) {
+ return value.map(toPlainObject);
+ }
+ if (
+ v0_8.Data.Guards.isObject(value) &&
+ value.constructor.name === "SignalObject"
+ ) {
+ const obj: Record = {};
+ for (const key in value) {
+ if (Object.prototype.hasOwnProperty.call(value, key)) {
+ obj[key] = toPlainObject(value[key]);
+ }
+ }
+ return obj;
+ }
+
+ return value;
+};
+
+describe("A2uiMessageProcessor", () => {
+ let processor = new v0_8.Data.A2uiMessageProcessor();
+
+ beforeEach(() => {
+ processor = new v0_8.Data.A2uiMessageProcessor();
+ });
+
+ describe("Basic Initialization and State", () => {
+ it("should start with no surfaces", () => {
+ assert.strictEqual(processor.getSurfaces().size, 0);
+ });
+
+ it("should clear surfaces when clearSurfaces is called", () => {
+ processor.processMessages([
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ assert.strictEqual(processor.getSurfaces().size, 1);
+ processor.clearSurfaces();
+ assert.strictEqual(processor.getSurfaces().size, 0);
+ });
+ });
+
+ describe("Message Processing", () => {
+ it("should handle `beginRendering` by creating a default surface", () => {
+ processor.processMessages([
+ {
+ beginRendering: {
+ root: "comp-a",
+ styles: { color: "blue" },
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ const surfaces = processor.getSurfaces();
+ assert.strictEqual(surfaces.size, 1);
+
+ const defaultSurface = surfaces.get("@default");
+ assert.ok(defaultSurface, "Default surface should exist");
+ assert.strictEqual(defaultSurface!.rootComponentId, "comp-a");
+ assert.deepStrictEqual(defaultSurface!.styles, { color: "blue" });
+ });
+
+ it("should handle `surfaceUpdate` by adding components", () => {
+ const messages = [
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "comp-a",
+ component: {
+ Text: { text: { literalString: "Hi" } },
+ },
+ },
+ ],
+ },
+ },
+ ];
+ processor.processMessages(messages);
+ const surface = processor.getSurfaces().get("@default");
+ if (!surface) {
+ assert.fail("No default surface");
+ }
+ assert.strictEqual(surface!.components.size, 1);
+ assert.ok(surface!.components.has("comp-a"));
+ });
+
+ it("should handle `deleteSurface`", () => {
+ processor.processMessages([
+ {
+ beginRendering: { root: "root", surfaceId: "to-delete" },
+ },
+ { deleteSurface: { surfaceId: "to-delete" } },
+ ]);
+ assert.strictEqual(processor.getSurfaces().has("to-delete"), false);
+ });
+ });
+
+ describe("Data Model Updates", () => {
+ it("should update data at a specified path", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/user",
+ contents: [{ key: "name", valueString: "Alice" }],
+ },
+ },
+ ]);
+ const name = processor.getData(
+ { dataContextPath: "/" } as v0_8.Types.AnyComponentNode,
+ "/user/name"
+ );
+ assert.strictEqual(name, "Alice");
+ });
+
+ it("should replace the entire data model when path is not provided", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ { key: "user", valueString: JSON.stringify({ name: "Bob" }) },
+ ],
+ },
+ },
+ ]);
+ const user = processor.getData(
+ { dataContextPath: "/" } as v0_8.Types.AnyComponentNode,
+ "/user"
+ );
+ assert.deepStrictEqual(toPlainObject(user), { name: "Bob" });
+ });
+
+ it("should create nested structures when setting data", () => {
+ const component = { dataContextPath: "/" } as v0_8.Types.AnyComponentNode;
+ // Note: setData is a public method that does not use the key-value format
+ processor.setData(component, "/a/b/c", "value");
+ const data = processor.getData(component, "/a/b/c");
+ assert.strictEqual(data, "value");
+ });
+
+ it("should handle paths correctly", () => {
+ const path1 = processor.resolvePath("/a/b/c", "/value");
+ const path2 = processor.resolvePath("a/b/c", "/value/");
+ const path3 = processor.resolvePath("a/b/c", "/value");
+
+ assert.strictEqual(path1, "/a/b/c");
+ assert.strictEqual(path2, "/value/a/b/c");
+ assert.strictEqual(path3, "/value/a/b/c");
+ });
+
+ it("should correctly parse nested valueMap structures", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/data",
+ contents: [
+ {
+ key: "users", // /data/users
+ valueMap: [
+ {
+ key: "user1", // /data/users/user1
+ valueMap: [
+ {
+ key: "firstName",
+ valueString: "Alice",
+ },
+ {
+ key: "lastName",
+ valueString: "Doe",
+ },
+ ],
+ },
+ {
+ key: "user2", // /data/users/user2
+ valueMap: [
+ {
+ key: "firstName",
+ valueString: "John",
+ },
+ {
+ key: "lastName",
+ valueString: "Doe",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ]);
+
+ const info = processor.getData(
+ { dataContextPath: "/" } as v0_8.Types.AnyComponentNode,
+ "/data/users"
+ );
+
+ // The expected result is a Map of Maps.
+ const expected = new Map([
+ [
+ "user1",
+ new Map([
+ ["firstName", "Alice"],
+ ["lastName", "Doe"],
+ ]),
+ ],
+ [
+ "user2",
+ new Map([
+ ["firstName", "John"],
+ ["lastName", "Doe"],
+ ]),
+ ],
+ ]);
+
+ assert.deepEqual(info, expected);
+ });
+
+ it("should additively update a Map using numeric-string keys (like timestamps)", () => {
+ // 1. First, establish the /messages path as a Map.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/messages",
+ contents: [
+ // Sending an empty key-value array creates an empty Map at the path.
+ ],
+ },
+ },
+ ]);
+
+ const key1 = "1700000000001";
+ const message1 = "Hello";
+
+ // 2. Add the first message.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: `/messages/${key1}`,
+ contents: [
+ {
+ key: ".",
+ valueString: message1,
+ },
+ ],
+ },
+ },
+ ]);
+
+ let messagesData = processor.getData(
+ { dataContextPath: "/" } as v0_8.Types.AnyComponentNode,
+ "/messages"
+ );
+
+ // Check that it's a Map and has the first item.
+ assertIsDataMap(messagesData);
+ assert.strictEqual(messagesData.size, 1);
+ assert.strictEqual(messagesData.get(key1), message1);
+
+ const key2 = "1700000000002";
+ const message2 = "World";
+
+ // 3. Add the second message. This is where the old logic would fail.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: `/messages/${key2}`,
+ contents: [
+ {
+ key: ".",
+ valueString: message2,
+ },
+ ],
+ },
+ },
+ ]);
+
+ messagesData = processor.getData(
+ { dataContextPath: "/" } as v0_8.Types.AnyComponentNode,
+ "/messages"
+ );
+
+ // 4. Check that the Map was additively updated and now has both items.
+ assertIsDataMap(messagesData);
+ assert.strictEqual(messagesData.size, 2, "Map should have 2 items total");
+ assert.strictEqual(
+ (messagesData as DataMap).get(key1),
+ message1,
+ "First item correct"
+ );
+ assert.strictEqual(
+ messagesData.get(key2),
+ message2,
+ "Second item correct"
+ );
+ });
+ });
+
+ describe("Component Tree Building", () => {
+ it("should build a simple parent-child tree", () => {
+ processor.processMessages([
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ Column: { children: { explicitList: ["child"] } },
+ },
+ },
+ {
+ id: "child",
+ component: {
+ Text: { text: { literalString: "Hello" } },
+ },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+
+ assert.strictEqual(plainTree.id, "root");
+ assert.strictEqual(plainTree.type, "Column");
+ assert.strictEqual(plainTree.properties.children.length, 1);
+ assert.strictEqual(plainTree.properties.children[0].id, "child");
+ assert.strictEqual(plainTree.properties.children[0].type, "Text");
+ });
+
+ it("should throw an error on circular dependencies", () => {
+ // First, load the components
+ processor.processMessages([
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ { id: "a", component: { Card: { child: "b" } } },
+ { id: "b", component: { Card: { child: "a" } } },
+ ],
+ },
+ },
+ ]);
+
+ // Now, try to render, which triggers the tree build
+ assert.throws(() => {
+ processor.processMessages([
+ {
+ beginRendering: {
+ root: "a",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+ }, new Error(`Circular dependency for component "a".`));
+
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ assert.strictEqual(
+ tree,
+ null,
+ "Tree should be null due to circular dependency"
+ );
+ });
+
+ it("should correctly expand a template with `dataBinding`", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+
+ assert.strictEqual(plainTree.properties.children.length, 2);
+
+ // Check first generated child.
+ const child1 = plainTree.properties.children[0];
+ assert.strictEqual(child1.id, "item-template:0");
+ assert.strictEqual(child1.type, "Text");
+ assert.strictEqual(child1.dataContextPath, "/items/0");
+ assert.deepStrictEqual(child1.properties.text, { path: "name" });
+
+ // Check second generated child.
+ const child2 = plainTree.properties.children[1];
+ assert.strictEqual(child2.id, "item-template:1");
+ assert.strictEqual(child2.type, "Text");
+ assert.strictEqual(child2.dataContextPath, "/items/1");
+ assert.deepStrictEqual(child2.properties.text, { path: "name" });
+ });
+
+ it("should rebuild the tree when data for a template arrives later", () => {
+ processor.processMessages([
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+
+ let tree = processor.getSurfaces().get("@default")?.componentTree;
+ assert.strictEqual(
+ toPlainObject(tree).properties.children.length,
+ 0,
+ "Children should be empty before data arrives"
+ );
+
+ // Now, the data arrives.
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ ]);
+
+ tree = processor.getSurfaces().get("@default")?.componentTree;
+ assert.strictEqual(
+ toPlainObject(tree).properties.children.length,
+ 2,
+ "Children should be populated after data arrives"
+ );
+ });
+
+ it("should trim relative paths within a data context (./item)", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ // These paths would are typical when a databinding is used.
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "./item/name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ const child1 = plainTree.properties.children[0];
+ const child2 = plainTree.properties.children[1];
+
+ // The processor should have trimmed `/item` and `./` from the path
+ // because we are inside a data context.
+ assert.deepEqual(child1.properties.text, { path: "name" });
+ assert.deepEqual(child2.properties.text, { path: "name" });
+ });
+
+ it("should trim relative paths within a data context (./name)", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueString: JSON.stringify([{ name: "A" }, { name: "B" }]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "item-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ // These paths would are typical when a databinding is used.
+ {
+ id: "item-template",
+ component: { Text: { text: { path: "./name" } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ const child1 = plainTree.properties.children[0];
+ const child2 = plainTree.properties.children[1];
+
+ // The processor should have trimmed `./` from the path
+ // because we are inside a data context.
+ assert.deepEqual(child1.properties.text, { path: "name" });
+ assert.deepEqual(child2.properties.text, { path: "name" });
+ });
+ });
+
+ describe("Data Normalization and Parsing", () => {
+ it("should correctly handle and parse the key-value array data format at the root", () => {
+ const messages = [
+ {
+ dataModelUpdate: {
+ surfaceId: "test-surface",
+ path: "/",
+ contents: [
+ { key: "title", valueString: "My Title" },
+ {
+ key: "items",
+ valueString: '[{"id": 1}, {"id": 2}]',
+ },
+ ],
+ },
+ },
+ ];
+
+ processor.processMessages(messages);
+
+ const component = { dataContextPath: "/" } as v0_8.Types.AnyComponentNode;
+ const title = processor.getData(component, "/title", "test-surface");
+ const items = processor.getData(component, "/items", "test-surface");
+
+ assert.strictEqual(title, "My Title");
+ assert.deepStrictEqual(toPlainObject(items), [{ id: 1 }, { id: 2 }]);
+ });
+
+ it("should fallback to a string if stringified JSON is invalid", () => {
+ const invalidJSON = '[{"id": 1}, {"id": 2}'; // Missing closing bracket
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [{ key: "badData", valueString: invalidJSON }],
+ },
+ },
+ ]);
+
+ const component = { dataContextPath: "/" } as v0_8.Types.AnyComponentNode;
+ const badData = processor.getData(component, "/badData");
+ assert.strictEqual(badData, invalidJSON);
+ });
+ });
+
+ describe("Complex Template Scenarios", () => {
+ it("should correctly expand a template with dataBinding to a Map (from valueMap)", () => {
+ const messages = [
+ {
+ beginRendering: {
+ surfaceId: "default",
+ root: "root-column",
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "default",
+ components: [
+ {
+ id: "root-column",
+ component: {
+ Column: {
+ children: {
+ explicitList: ["title-heading", "item-list"],
+ },
+ },
+ },
+ },
+ {
+ id: "title-heading",
+ component: {
+ Text: {
+ text: {
+ literalString: "Top Restaurants",
+ },
+ },
+ usageHint: "h1",
+ },
+ },
+ {
+ id: "item-list",
+ component: {
+ List: {
+ direction: "vertical",
+ children: {
+ template: {
+ componentId: "item-card-template",
+ dataBinding: "/items",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "item-card-template",
+ component: {
+ Card: {
+ child: "card-layout",
+ },
+ },
+ },
+ {
+ id: "card-layout",
+ component: {
+ Row: {
+ children: {
+ explicitList: ["template-image", "card-details"],
+ },
+ },
+ },
+ },
+ {
+ id: "template-image",
+ weight: 1,
+ component: {
+ Image: {
+ url: {
+ path: "imageUrl",
+ },
+ },
+ },
+ },
+ {
+ id: "card-details",
+ weight: 2,
+ component: {
+ Column: {
+ children: {
+ explicitList: [
+ "template-name",
+ "template-rating",
+ "template-detail",
+ "template-link",
+ "template-book-button",
+ ],
+ },
+ },
+ },
+ },
+ {
+ id: "template-name",
+ component: {
+ Text: {
+ text: {
+ path: "name",
+ },
+ },
+ usageHint: "h3",
+ },
+ },
+ {
+ id: "template-rating",
+ component: {
+ Text: {
+ text: {
+ path: "rating",
+ },
+ },
+ },
+ },
+ {
+ id: "template-detail",
+ component: {
+ Text: {
+ text: {
+ path: "detail",
+ },
+ },
+ },
+ },
+ {
+ id: "template-link",
+ component: {
+ Text: {
+ text: {
+ path: "infoLink",
+ },
+ },
+ },
+ },
+ {
+ id: "template-book-button",
+ component: {
+ Button: {
+ child: "book-now-text",
+ action: {
+ name: "book_restaurant",
+ context: [
+ {
+ key: "restaurantName",
+ value: {
+ path: "name",
+ },
+ },
+ {
+ key: "imageUrl",
+ value: {
+ path: "imageUrl",
+ },
+ },
+ {
+ key: "address",
+ value: {
+ path: "address",
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ id: "book-now-text",
+ component: {
+ Text: {
+ text: {
+ literalString: "Book Now",
+ },
+ },
+ },
+ },
+ ],
+ },
+ },
+ {
+ dataModelUpdate: {
+ surfaceId: "default",
+ path: "/",
+ contents: [
+ {
+ key: "items",
+ valueMap: [
+ {
+ key: "item1",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 1",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString: "Spicy and savory hand-pulled noodles.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString:
+ "http://www.example.com/static/shrimpchowmein.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 1",
+ },
+ ],
+ },
+ {
+ key: "item2",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 2",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString: "Authentic and real.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString:
+ "http://www.example.com/static/mapotofu.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 2",
+ },
+ ],
+ },
+ {
+ key: "item3",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 3",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString:
+ "Modern food with a farm-to-table approach.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString:
+ "http://www.example.com/static/beefbroccoli.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 3",
+ },
+ ],
+ },
+ {
+ key: "item4",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 4",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★★",
+ },
+ {
+ key: "detail",
+ valueString: "Upscale dining.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString:
+ "http://www.example.com/static/springrolls.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 4",
+ },
+ ],
+ },
+ {
+ key: "item5",
+ valueMap: [
+ {
+ key: "name",
+ valueString: "Business 5",
+ },
+ {
+ key: "rating",
+ valueString: "★★★★☆",
+ },
+ {
+ key: "detail",
+ valueString: "Famous for its noodles.",
+ },
+ {
+ key: "infoLink",
+ valueString: "[More Info](https://www.example.com/)",
+ },
+ {
+ key: "imageUrl",
+ valueString:
+ "http://www.example.com/static/kungpao.jpeg",
+ },
+ {
+ key: "address",
+ valueString: "Address 5",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ];
+
+ processor.processMessages(messages);
+ const tree = processor.getSurfaces().get("default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+
+ // 1. Find the "item-list" component (the List)
+ const itemList = plainTree.properties.children[1];
+ assert.strictEqual(itemList.id, "item-list");
+
+ // 2. Check that it expanded 5 children from the Map
+ const templateChildren = itemList.properties.children;
+ assert.strictEqual(templateChildren.length, 5);
+
+ // 3. Check the first generated child for correct key-based ID and data context
+ const child1 = templateChildren[0];
+ assert.strictEqual(child1.id, "item-card-template:item1");
+ assert.strictEqual(child1.dataContextPath, "/items/item1");
+
+ // 4. Go deeper to check the data binding on a nested component
+ // Path: Card -> Row -> Column -> Heading
+ const child1NameHeading =
+ child1.properties.child.properties.children[1].properties.children[0];
+ assert.strictEqual(child1NameHeading.id, "template-name:item1");
+ assert.strictEqual(child1NameHeading.dataContextPath, "/items/item1");
+ assert.deepStrictEqual(child1NameHeading.properties.text, {
+ path: "name",
+ });
+
+ // 5. Check the second generated child
+ const child2 = templateChildren[1];
+ assert.strictEqual(child2.id, "item-card-template:item2");
+ assert.strictEqual(child2.dataContextPath, "/items/item2");
+ });
+
+ it("should correctly expand nested templates with layered data contexts", () => {
+ const messages = [
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "days",
+ // The correct way to send an array of objects is as a stringified JSON.
+ valueString: JSON.stringify([
+ {
+ title: "Day 1",
+ activities: ["Morning Walk", "Museum Visit"],
+ },
+ {
+ title: "Day 2",
+ activities: ["Market Trip"],
+ },
+ ]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "day-list",
+ dataBinding: "/days",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "day-list",
+ component: {
+ Column: {
+ children: { explicitList: ["day-title", "activity-list"] },
+ },
+ },
+ },
+ {
+ id: "day-title",
+ component: {
+ Text: { text: { path: "title" }, usageHint: "h1" },
+ },
+ },
+ {
+ id: "activity-list",
+ component: {
+ List: {
+ children: {
+ template: {
+ componentId: "activity-text",
+ dataBinding: "activities",
+ },
+ },
+ },
+ },
+ },
+ {
+ id: "activity-text",
+ component: { Text: { text: { path: "." } } },
+ },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ];
+
+ processor.processMessages(messages);
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+
+ // Assert Day 1 structure
+ const day1 = plainTree.properties.children[0];
+ assert.strictEqual(day1.dataContextPath, "/days/0");
+ const day1Activities = day1.properties.children[1].properties.children;
+
+ assert.strictEqual(day1Activities.length, 2);
+ assert.strictEqual(day1Activities[0].id, "activity-text:0:0");
+ assert.strictEqual(
+ day1Activities[0].dataContextPath,
+ "/days/0/activities/0"
+ );
+ assert.deepStrictEqual(day1.properties.children[0].properties.text, {
+ path: "title",
+ });
+ assert.deepStrictEqual(day1Activities[0].properties.text, { path: "." });
+
+ // Assert Day 2 structure
+ const day2 = plainTree.properties.children[1];
+ assert.strictEqual(day2.dataContextPath, "/days/1");
+ const day2Activities = day2.properties.children[1].properties.children;
+ assert.strictEqual(day2Activities.length, 1);
+ assert.strictEqual(day2Activities[0].id, "activity-text:1:0");
+ assert.strictEqual(
+ day2Activities[0].dataContextPath,
+ "/days/1/activities/0"
+ );
+ assert.deepStrictEqual(day2.properties.children[0].properties.text, {
+ path: "title",
+ });
+ assert.deepStrictEqual(day2Activities[0].properties.text, { path: "." });
+ });
+
+ it("should correctly bind to primitive values in an array using path: '.'", () => {
+ processor.processMessages([
+ {
+ dataModelUpdate: {
+ surfaceId: "@default",
+ path: "/",
+ contents: [
+ {
+ key: "tags",
+ valueString: JSON.stringify(["travel", "paris", "guide"]),
+ },
+ ],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "@default",
+ components: [
+ {
+ id: "root",
+ component: {
+ Row: {
+ children: {
+ template: { componentId: "tag", dataBinding: "/tags" },
+ },
+ },
+ },
+ },
+ { id: "tag", component: { Text: { text: { path: "." } } } },
+ ],
+ },
+ },
+ {
+ beginRendering: {
+ root: "root",
+ surfaceId: "@default",
+ },
+ },
+ ]);
+
+ const tree = processor.getSurfaces().get("@default")?.componentTree;
+ const plainTree = toPlainObject(tree);
+ const children = plainTree.properties.children;
+
+ assert.strictEqual(children.length, 3);
+ assert.strictEqual(children[0].dataContextPath, "/tags/0");
+ assert.deepEqual(children[0].properties.text, { path: "." });
+ assert.strictEqual(children[1].dataContextPath, "/tags/1");
+ assert.deepEqual(children[1].properties.text, { path: "." });
+ });
+ });
+
+ describe("Multi-Surface Interaction", () => {
+ it("should keep data and components for different surfaces separate", () => {
+ processor.processMessages([
+ // Surface A
+ {
+ dataModelUpdate: {
+ surfaceId: "A",
+ path: "/",
+ contents: [{ key: "name", valueString: "Surface A Data" }],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "A",
+ components: [
+ {
+ id: "comp-a",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ { beginRendering: { root: "comp-a", surfaceId: "A" } },
+ // Surface B
+ {
+ dataModelUpdate: {
+ surfaceId: "B",
+ path: "/",
+ contents: [{ key: "name", valueString: "Surface B Data" }],
+ },
+ },
+ {
+ surfaceUpdate: {
+ surfaceId: "B",
+ components: [
+ {
+ id: "comp-b",
+ component: { Text: { text: { path: "/name" } } },
+ },
+ ],
+ },
+ },
+ { beginRendering: { root: "comp-b", surfaceId: "B" } },
+ ]);
+
+ const surfaces = processor.getSurfaces();
+ assert.strictEqual(surfaces.size, 2);
+
+ const surfaceA = surfaces.get("A");
+ const surfaceB = surfaces.get("B");
+
+ assert.ok(surfaceA && surfaceB, "Both surfaces should exist");
+
+ // Check Surface A
+ assert.ok(surfaceA, "Surface A exists.");
+ assert.strictEqual(surfaceA!.components.size, 1);
+ assert.ok(surfaceA!.components.has("comp-a"));
+ assert.deepStrictEqual(toPlainObject(surfaceA!.dataModel), {
+ name: "Surface A Data",
+ });
+ assert.deepStrictEqual(
+ toPlainObject(surfaceA!.componentTree).properties.text,
+ { path: "/name" }
+ );
+
+ // Check Surface B
+ assert.ok(surfaceB, "Surface B exists.");
+ assert.strictEqual(surfaceB!.components.size, 1);
+ assert.ok(surfaceB!.components.has("comp-b"));
+ assert.deepStrictEqual(toPlainObject(surfaceB!.dataModel), {
+ name: "Surface B Data",
+ });
+ assert.deepStrictEqual(
+ toPlainObject(surfaceB!.componentTree).properties.text,
+ { path: "/name" }
+ );
+ });
+ });
+});
+
+function assertIsDataMap(obj: DataValue): asserts obj is DataMap {
+ assert.ok(obj instanceof Map, `Data should be a DataMap`);
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/schemas/.gitignore b/vendor/a2ui/renderers/lit/src/0.8/schemas/.gitignore
new file mode 100644
index 0000000000..496d370a34
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/schemas/.gitignore
@@ -0,0 +1,4 @@
+# Copied schema files
+# (needed for the build but otherwise redundant)
+*.json
+!server_to_client_with_standard_catalog.json
diff --git a/vendor/a2ui/renderers/lit/src/0.8/schemas/server_to_client_with_standard_catalog.json b/vendor/a2ui/renderers/lit/src/0.8/schemas/server_to_client_with_standard_catalog.json
new file mode 100644
index 0000000000..d3e71f5f92
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/schemas/server_to_client_with_standard_catalog.json
@@ -0,0 +1,827 @@
+{
+ "title": "A2UI Message Schema",
+ "description": "Describes a JSON payload for an A2UI (Agent to UI) message, which is used to dynamically construct and update user interfaces. A message MUST contain exactly ONE of the action properties: 'beginRendering', 'surfaceUpdate', 'dataModelUpdate', or 'deleteSurface'.",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "beginRendering": {
+ "type": "object",
+ "description": "Signals the client to begin rendering a surface with a root component and specific styles.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be rendered."
+ },
+ "root": {
+ "type": "string",
+ "description": "The ID of the root component to render."
+ },
+ "styles": {
+ "type": "object",
+ "description": "Styling information for the UI.",
+ "additionalProperties": false,
+ "properties": {
+ "font": {
+ "type": "string",
+ "description": "The primary font for the UI."
+ },
+ "primaryColor": {
+ "type": "string",
+ "description": "The primary UI color as a hexadecimal code (e.g., '#00BFFF').",
+ "pattern": "^#[0-9a-fA-F]{6}$"
+ }
+ }
+ }
+ },
+ "required": ["root", "surfaceId"]
+ },
+ "surfaceUpdate": {
+ "type": "object",
+ "description": "Updates a surface with a new set of components.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be updated. If you are adding a new surface this *must* be a new, unique identified that has never been used for any existing surfaces shown."
+ },
+ "components": {
+ "type": "array",
+ "description": "A list containing all UI components for the surface.",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "description": "Represents a *single* component in a UI widget tree. This component could be one of many supported types.",
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The unique identifier for this component."
+ },
+ "weight": {
+ "type": "number",
+ "description": "The relative weight of this component within a Row or Column. This corresponds to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column."
+ },
+ "component": {
+ "type": "object",
+ "description": "A wrapper object that MUST contain exactly one key, which is the name of the component type (e.g., 'Heading'). The value is an object containing the properties for that specific component.",
+ "additionalProperties": false,
+ "properties": {
+ "Text": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "text": {
+ "type": "object",
+ "description": "The text content to display. This can be a literal string or a reference to a value in the data model ('path', e.g., '/doc/title'). While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "usageHint": {
+ "type": "string",
+ "description": "A hint for the base text style. One of:\n- `h1`: Largest heading.\n- `h2`: Second largest heading.\n- `h3`: Third largest heading.\n- `h4`: Fourth largest heading.\n- `h5`: Fifth largest heading.\n- `caption`: Small text for captions.\n- `body`: Standard body text.",
+ "enum": [
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "caption",
+ "body"
+ ]
+ }
+ },
+ "required": ["text"]
+ },
+ "Image": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the image to display. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/thumbnail/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "fit": {
+ "type": "string",
+ "description": "Specifies how the image should be resized to fit its container. This corresponds to the CSS 'object-fit' property.",
+ "enum": [
+ "contain",
+ "cover",
+ "fill",
+ "none",
+ "scale-down"
+ ]
+ },
+ "usageHint": {
+ "type": "string",
+ "description": "A hint for the image size and style. One of:\n- `icon`: Small square icon.\n- `avatar`: Circular avatar image.\n- `smallFeature`: Small feature image.\n- `mediumFeature`: Medium feature image.\n- `largeFeature`: Large feature image.\n- `header`: Full-width, full bleed, header image.",
+ "enum": [
+ "icon",
+ "avatar",
+ "smallFeature",
+ "mediumFeature",
+ "largeFeature",
+ "header"
+ ]
+ }
+ },
+ "required": ["url"]
+ },
+ "Icon": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "object",
+ "description": "The name of the icon to display. This can be a literal string or a reference to a value in the data model ('path', e.g. '/form/submit').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string",
+ "enum": [
+ "accountCircle",
+ "add",
+ "arrowBack",
+ "arrowForward",
+ "attachFile",
+ "calendarToday",
+ "call",
+ "camera",
+ "check",
+ "close",
+ "delete",
+ "download",
+ "edit",
+ "event",
+ "error",
+ "favorite",
+ "favoriteOff",
+ "folder",
+ "help",
+ "home",
+ "info",
+ "locationOn",
+ "lock",
+ "lockOpen",
+ "mail",
+ "menu",
+ "moreVert",
+ "moreHoriz",
+ "notificationsOff",
+ "notifications",
+ "payment",
+ "person",
+ "phone",
+ "photo",
+ "print",
+ "refresh",
+ "search",
+ "send",
+ "settings",
+ "share",
+ "shoppingCart",
+ "star",
+ "starHalf",
+ "starOff",
+ "upload",
+ "visibility",
+ "visibilityOff",
+ "warning"
+ ]
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["name"]
+ },
+ "Video": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the video to display. This can be a literal string or a reference to a value in the data model ('path', e.g. '/video/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["url"]
+ },
+ "AudioPlayer": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "type": "object",
+ "description": "The URL of the audio to be played. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/song/url').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "description": {
+ "type": "object",
+ "description": "A description of the audio, such as a title or summary. This can be a literal string or a reference to a value in the data model ('path', e.g. '/song/title').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["url"]
+ },
+ "Row": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "type": "string"
+ },
+ "dataBinding": {
+ "type": "string"
+ }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "distribution": {
+ "type": "string",
+ "description": "Defines the arrangement of children along the main axis (horizontally). This corresponds to the CSS 'justify-content' property.",
+ "enum": [
+ "center",
+ "end",
+ "spaceAround",
+ "spaceBetween",
+ "spaceEvenly",
+ "start"
+ ]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis (vertically). This corresponds to the CSS 'align-items' property.",
+ "enum": ["start", "center", "end", "stretch"]
+ }
+ },
+ "required": ["children"]
+ },
+ "Column": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "type": "string"
+ },
+ "dataBinding": {
+ "type": "string"
+ }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "distribution": {
+ "type": "string",
+ "description": "Defines the arrangement of children along the main axis (vertically). This corresponds to the CSS 'justify-content' property.",
+ "enum": [
+ "start",
+ "center",
+ "end",
+ "spaceBetween",
+ "spaceAround",
+ "spaceEvenly"
+ ]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis (horizontally). This corresponds to the CSS 'align-items' property.",
+ "enum": ["center", "end", "start", "stretch"]
+ }
+ },
+ "required": ["children"]
+ },
+ "List": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "type": "object",
+ "description": "Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.",
+ "additionalProperties": false,
+ "properties": {
+ "explicitList": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "template": {
+ "type": "object",
+ "description": "A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.",
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "type": "string"
+ },
+ "dataBinding": {
+ "type": "string"
+ }
+ },
+ "required": ["componentId", "dataBinding"]
+ }
+ }
+ },
+ "direction": {
+ "type": "string",
+ "description": "The direction in which the list items are laid out.",
+ "enum": ["vertical", "horizontal"]
+ },
+ "alignment": {
+ "type": "string",
+ "description": "Defines the alignment of children along the cross axis.",
+ "enum": ["start", "center", "end", "stretch"]
+ }
+ },
+ "required": ["children"]
+ },
+ "Card": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "child": {
+ "type": "string",
+ "description": "The ID of the component to be rendered inside the card."
+ }
+ },
+ "required": ["child"]
+ },
+ "Tabs": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "tabItems": {
+ "type": "array",
+ "description": "An array of objects, where each object defines a tab with a title and a child component.",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "title": {
+ "type": "object",
+ "description": "The tab title. Defines the value as either a literal value or a path to data model value (e.g. '/options/title').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "child": {
+ "type": "string"
+ }
+ },
+ "required": ["title", "child"]
+ }
+ }
+ },
+ "required": ["tabItems"]
+ },
+ "Divider": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "axis": {
+ "type": "string",
+ "description": "The orientation of the divider.",
+ "enum": ["horizontal", "vertical"]
+ }
+ }
+ },
+ "Modal": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "entryPointChild": {
+ "type": "string",
+ "description": "The ID of the component that opens the modal when interacted with (e.g., a button)."
+ },
+ "contentChild": {
+ "type": "string",
+ "description": "The ID of the component to be displayed inside the modal."
+ }
+ },
+ "required": ["entryPointChild", "contentChild"]
+ },
+ "Button": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "child": {
+ "type": "string",
+ "description": "The ID of the component to display in the button, typically a Text component."
+ },
+ "primary": {
+ "type": "boolean",
+ "description": "Indicates if this button should be styled as the primary action."
+ },
+ "action": {
+ "type": "object",
+ "description": "The client-side action to be dispatched when the button is clicked. It includes the action's name and an optional context payload.",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "context": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "object",
+ "description": "Defines the value to be included in the context as either a literal value or a path to a data model value (e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "literalString": {
+ "type": "string"
+ },
+ "literalNumber": {
+ "type": "number"
+ },
+ "literalBoolean": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "required": ["key", "value"]
+ }
+ }
+ },
+ "required": ["name"]
+ }
+ },
+ "required": ["child", "action"]
+ },
+ "CheckBox": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text to display next to the checkbox. Defines the value as either a literal value or a path to data model ('path', e.g. '/option/label').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "value": {
+ "type": "object",
+ "description": "The current state of the checkbox (true for checked, false for unchecked). This can be a literal boolean ('literalBoolean') or a reference to a value in the data model ('path', e.g. '/filter/open').",
+ "additionalProperties": false,
+ "properties": {
+ "literalBoolean": {
+ "type": "boolean"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": ["label", "value"]
+ },
+ "TextField": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text label for the input field. This can be a literal string or a reference to a value in the data model ('path, e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "object",
+ "description": "The value of the text field. This can be a literal string or a reference to a value in the data model ('path', e.g. '/user/name').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "textFieldType": {
+ "type": "string",
+ "description": "The type of input field to display.",
+ "enum": [
+ "date",
+ "longText",
+ "number",
+ "shortText",
+ "obscured"
+ ]
+ },
+ "validationRegexp": {
+ "type": "string",
+ "description": "A regular expression used for client-side validation of the input."
+ }
+ },
+ "required": ["label"]
+ },
+ "DateTimeInput": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "object",
+ "description": "The selected date and/or time value. This can be a literal string ('literalString') or a reference to a value in the data model ('path', e.g. '/user/dob').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "enableDate": {
+ "type": "boolean",
+ "description": "If true, allows the user to select a date."
+ },
+ "enableTime": {
+ "type": "boolean",
+ "description": "If true, allows the user to select a time."
+ },
+ "outputFormat": {
+ "type": "string",
+ "description": "The desired format for the output string after a date or time is selected."
+ }
+ },
+ "required": ["value"]
+ },
+ "MultipleChoice": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "selections": {
+ "type": "object",
+ "description": "The currently selected values for the component. This can be a literal array of strings or a path to an array in the data model('path', e.g. '/hotel/options').",
+ "additionalProperties": false,
+ "properties": {
+ "literalArray": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of available options for the user to choose from.",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "type": "object",
+ "description": "The text to display for this option. This can be a literal string or a reference to a value in the data model (e.g. '/option/label').",
+ "additionalProperties": false,
+ "properties": {
+ "literalString": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "value": {
+ "type": "string",
+ "description": "The value to be associated with this option when selected."
+ }
+ },
+ "required": ["label", "value"]
+ }
+ },
+ "maxAllowedSelections": {
+ "type": "integer",
+ "description": "The maximum number of options that the user is allowed to select."
+ }
+ },
+ "required": ["selections", "options"]
+ },
+ "Slider": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "object",
+ "description": "The current value of the slider. This can be a literal number ('literalNumber') or a reference to a value in the data model ('path', e.g. '/restaurant/cost').",
+ "additionalProperties": false,
+ "properties": {
+ "literalNumber": {
+ "type": "number"
+ },
+ "path": {
+ "type": "string"
+ }
+ }
+ },
+ "minValue": {
+ "type": "number",
+ "description": "The minimum value of the slider."
+ },
+ "maxValue": {
+ "type": "number",
+ "description": "The maximum value of the slider."
+ }
+ },
+ "required": ["value"]
+ }
+ }
+ }
+ },
+ "required": ["id", "component"]
+ }
+ }
+ },
+ "required": ["surfaceId", "components"]
+ },
+ "dataModelUpdate": {
+ "type": "object",
+ "description": "Updates the data model for a surface.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface this data model update applies to."
+ },
+ "path": {
+ "type": "string",
+ "description": "An optional path to a location within the data model (e.g., '/user/name'). If omitted, or set to '/', the entire data model will be replaced."
+ },
+ "contents": {
+ "type": "array",
+ "description": "An array of data entries. Each entry must contain a 'key' and exactly one corresponding typed 'value*' property.",
+ "items": {
+ "type": "object",
+ "description": "A single data entry. Exactly one 'value*' property should be provided alongside the key.",
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "type": "string",
+ "description": "The key for this data entry."
+ },
+ "valueString": {
+ "type": "string"
+ },
+ "valueNumber": {
+ "type": "number"
+ },
+ "valueBoolean": {
+ "type": "boolean"
+ },
+ "valueMap": {
+ "description": "Represents a map as an adjacency list.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "description": "One entry in the map. Exactly one 'value*' property should be provided alongside the key.",
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "valueString": {
+ "type": "string"
+ },
+ "valueNumber": {
+ "type": "number"
+ },
+ "valueBoolean": {
+ "type": "boolean"
+ }
+ },
+ "required": ["key"]
+ }
+ }
+ },
+ "required": ["key"]
+ }
+ }
+ },
+ "required": ["contents", "surfaceId"]
+ },
+ "deleteSurface": {
+ "type": "object",
+ "description": "Signals the client to delete the surface identified by 'surfaceId'.",
+ "additionalProperties": false,
+ "properties": {
+ "surfaceId": {
+ "type": "string",
+ "description": "The unique identifier for the UI surface to be deleted."
+ }
+ },
+ "required": ["surfaceId"]
+ }
+ }
+}
\ No newline at end of file
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/behavior.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/behavior.ts
new file mode 100644
index 0000000000..a9cd0e669b
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/behavior.ts
@@ -0,0 +1,55 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+const opacityBehavior = `
+ &:not([disabled]) {
+ cursor: pointer;
+ opacity: var(--opacity, 0);
+ transition: opacity var(--speed, 0.2s) cubic-bezier(0, 0, 0.3, 1);
+
+ &:hover,
+ &:focus {
+ opacity: 1;
+ }
+ }`;
+
+export const behavior = `
+ ${new Array(21)
+ .fill(0)
+ .map((_, idx) => {
+ return `.behavior-ho-${idx * 5} {
+ --opacity: ${idx / 20};
+ ${opacityBehavior}
+ }`;
+ })
+ .join("\n")}
+
+ .behavior-o-s {
+ overflow: scroll;
+ }
+
+ .behavior-o-a {
+ overflow: auto;
+ }
+
+ .behavior-o-h {
+ overflow: hidden;
+ }
+
+ .behavior-sw-n {
+ scrollbar-width: none;
+ }
+`;
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/border.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/border.ts
new file mode 100644
index 0000000000..c4e74100da
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/border.ts
@@ -0,0 +1,42 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { grid } from "./shared.js";
+
+export const border = `
+ ${new Array(25)
+ .fill(0)
+ .map((_, idx) => {
+ return `
+ .border-bw-${idx} { border-width: ${idx}px; }
+ .border-btw-${idx} { border-top-width: ${idx}px; }
+ .border-bbw-${idx} { border-bottom-width: ${idx}px; }
+ .border-blw-${idx} { border-left-width: ${idx}px; }
+ .border-brw-${idx} { border-right-width: ${idx}px; }
+
+ .border-ow-${idx} { outline-width: ${idx}px; }
+ .border-br-${idx} { border-radius: ${idx * grid}px; overflow: hidden;}`;
+ })
+ .join("\n")}
+
+ .border-br-50pc {
+ border-radius: 50%;
+ }
+
+ .border-bs-s {
+ border-style: solid;
+ }
+`;
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/colors.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/colors.ts
new file mode 100644
index 0000000000..74334fdd18
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/colors.ts
@@ -0,0 +1,100 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { PaletteKey, PaletteKeyVals, shades } from "../types/colors.js";
+import { toProp } from "./utils.js";
+
+const color = (src: PaletteKey) =>
+ `
+ ${src
+ .map((key: string) => {
+ const inverseKey = getInverseKey(key);
+ return `.color-bc-${key} { border-color: light-dark(var(${toProp(
+ key
+ )}), var(${toProp(inverseKey)})); }`;
+ })
+ .join("\n")}
+
+ ${src
+ .map((key: string) => {
+ const inverseKey = getInverseKey(key);
+ const vals = [
+ `.color-bgc-${key} { background-color: light-dark(var(${toProp(
+ key
+ )}), var(${toProp(inverseKey)})); }`,
+ `.color-bbgc-${key}::backdrop { background-color: light-dark(var(${toProp(
+ key
+ )}), var(${toProp(inverseKey)})); }`,
+ ];
+
+ for (let o = 0.1; o < 1; o += 0.1) {
+ vals.push(`.color-bbgc-${key}_${(o * 100).toFixed(0)}::backdrop {
+ background-color: light-dark(oklch(from var(${toProp(
+ key
+ )}) l c h / calc(alpha * ${o.toFixed(1)})), oklch(from var(${toProp(
+ inverseKey
+ )}) l c h / calc(alpha * ${o.toFixed(1)})) );
+ }
+ `);
+ }
+
+ return vals.join("\n");
+ })
+ .join("\n")}
+
+ ${src
+ .map((key: string) => {
+ const inverseKey = getInverseKey(key);
+ return `.color-c-${key} { color: light-dark(var(${toProp(
+ key
+ )}), var(${toProp(inverseKey)})); }`;
+ })
+ .join("\n")}
+ `;
+
+const getInverseKey = (key: string): string => {
+ const match = key.match(/^([a-z]+)(\d+)$/);
+ if (!match) return key;
+ const [, prefix, shadeStr] = match;
+ const shade = parseInt(shadeStr, 10);
+ const target = 100 - shade;
+ const inverseShade = shades.reduce((prev, curr) =>
+ Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev
+ );
+ return `${prefix}${inverseShade}`;
+};
+
+const keyFactory = (prefix: K) => {
+ return shades.map((v) => `${prefix}${v}`) as PaletteKey;
+};
+
+export const colors = [
+ color(keyFactory("p")),
+ color(keyFactory("s")),
+ color(keyFactory("t")),
+ color(keyFactory("n")),
+ color(keyFactory("nv")),
+ color(keyFactory("e")),
+ `
+ .color-bgc-transparent {
+ background-color: transparent;
+ }
+
+ :host {
+ color-scheme: var(--color-scheme);
+ }
+ `,
+];
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/icons.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/icons.ts
new file mode 100644
index 0000000000..28f88c28aa
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/icons.ts
@@ -0,0 +1,60 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+/**
+ * CSS classes for Google Symbols.
+ *
+ * Usage:
+ *
+ * ```html
+ *
+ * ```
+ */
+export const icons = `
+ .g-icon {
+ font-family: "Material Symbols Outlined", "Google Symbols";
+ font-weight: normal;
+ font-style: normal;
+ font-display: optional;
+ font-size: 20px;
+ width: 1em;
+ height: 1em;
+ user-select: none;
+ line-height: 1;
+ letter-spacing: normal;
+ text-transform: none;
+ display: inline-block;
+ white-space: nowrap;
+ word-wrap: normal;
+ direction: ltr;
+ -webkit-font-feature-settings: "liga";
+ -webkit-font-smoothing: antialiased;
+ overflow: hidden;
+
+ font-variation-settings: "FILL" 0, "wght" 300, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+
+ &.filled {
+ font-variation-settings: "FILL" 1, "wght" 300, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+ }
+
+ &.filled-heavy {
+ font-variation-settings: "FILL" 1, "wght" 700, "GRAD" 0, "opsz" 48,
+ "ROND" 100;
+ }
+ }
+`;
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/index.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/index.ts
new file mode 100644
index 0000000000..b0f4c51ef3
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/index.ts
@@ -0,0 +1,37 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { behavior } from "./behavior.js";
+import { border } from "./border.js";
+import { colors } from "./colors.js";
+import { icons } from "./icons.js";
+import { layout } from "./layout.js";
+import { opacity } from "./opacity.js";
+import { type } from "./type.js";
+
+export * from "./utils.js";
+
+export const structuralStyles: string = [
+ behavior,
+ border,
+ colors,
+ icons,
+ layout,
+ opacity,
+ type,
+]
+ .flat(Infinity)
+ .join("\n");
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/layout.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/layout.ts
new file mode 100644
index 0000000000..dda674a5e0
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/layout.ts
@@ -0,0 +1,235 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { grid } from "./shared.js";
+
+export const layout = `
+ :host {
+ ${new Array(16)
+ .fill(0)
+ .map((_, idx) => {
+ return `--g-${idx + 1}: ${(idx + 1) * grid}px;`;
+ })
+ .join("\n")}
+ }
+
+ ${new Array(49)
+ .fill(0)
+ .map((_, index) => {
+ const idx = index - 24;
+ const lbl = idx < 0 ? `n${Math.abs(idx)}` : idx.toString();
+ return `
+ .layout-p-${lbl} { --padding: ${
+ idx * grid
+ }px; padding: var(--padding); }
+ .layout-pt-${lbl} { padding-top: ${idx * grid}px; }
+ .layout-pr-${lbl} { padding-right: ${idx * grid}px; }
+ .layout-pb-${lbl} { padding-bottom: ${idx * grid}px; }
+ .layout-pl-${lbl} { padding-left: ${idx * grid}px; }
+
+ .layout-m-${lbl} { --margin: ${idx * grid}px; margin: var(--margin); }
+ .layout-mt-${lbl} { margin-top: ${idx * grid}px; }
+ .layout-mr-${lbl} { margin-right: ${idx * grid}px; }
+ .layout-mb-${lbl} { margin-bottom: ${idx * grid}px; }
+ .layout-ml-${lbl} { margin-left: ${idx * grid}px; }
+
+ .layout-t-${lbl} { top: ${idx * grid}px; }
+ .layout-r-${lbl} { right: ${idx * grid}px; }
+ .layout-b-${lbl} { bottom: ${idx * grid}px; }
+ .layout-l-${lbl} { left: ${idx * grid}px; }`;
+ })
+ .join("\n")}
+
+ ${new Array(25)
+ .fill(0)
+ .map((_, idx) => {
+ return `
+ .layout-g-${idx} { gap: ${idx * grid}px; }`;
+ })
+ .join("\n")}
+
+ ${new Array(8)
+ .fill(0)
+ .map((_, idx) => {
+ return `
+ .layout-grd-col${idx + 1} { grid-template-columns: ${"1fr "
+ .repeat(idx + 1)
+ .trim()}; }`;
+ })
+ .join("\n")}
+
+ .layout-pos-a {
+ position: absolute;
+ }
+
+ .layout-pos-rel {
+ position: relative;
+ }
+
+ .layout-dsp-none {
+ display: none;
+ }
+
+ .layout-dsp-block {
+ display: block;
+ }
+
+ .layout-dsp-grid {
+ display: grid;
+ }
+
+ .layout-dsp-iflex {
+ display: inline-flex;
+ }
+
+ .layout-dsp-flexvert {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .layout-dsp-flexhor {
+ display: flex;
+ flex-direction: row;
+ }
+
+ .layout-fw-w {
+ flex-wrap: wrap;
+ }
+
+ .layout-al-fs {
+ align-items: start;
+ }
+
+ .layout-al-fe {
+ align-items: end;
+ }
+
+ .layout-al-c {
+ align-items: center;
+ }
+
+ .layout-as-n {
+ align-self: normal;
+ }
+
+ .layout-js-c {
+ justify-self: center;
+ }
+
+ .layout-sp-c {
+ justify-content: center;
+ }
+
+ .layout-sp-ev {
+ justify-content: space-evenly;
+ }
+
+ .layout-sp-bt {
+ justify-content: space-between;
+ }
+
+ .layout-sp-s {
+ justify-content: start;
+ }
+
+ .layout-sp-e {
+ justify-content: end;
+ }
+
+ .layout-ji-e {
+ justify-items: end;
+ }
+
+ .layout-r-none {
+ resize: none;
+ }
+
+ .layout-fs-c {
+ field-sizing: content;
+ }
+
+ .layout-fs-n {
+ field-sizing: none;
+ }
+
+ .layout-flx-0 {
+ flex: 0 0 auto;
+ }
+
+ .layout-flx-1 {
+ flex: 1 0 auto;
+ }
+
+ .layout-c-s {
+ contain: strict;
+ }
+
+ /** Widths **/
+
+ ${new Array(10)
+ .fill(0)
+ .map((_, idx) => {
+ const weight = (idx + 1) * 10;
+ return `.layout-w-${weight} { width: ${weight}%; max-width: ${weight}%; }`;
+ })
+ .join("\n")}
+
+ ${new Array(16)
+ .fill(0)
+ .map((_, idx) => {
+ const weight = idx * grid;
+ return `.layout-wp-${idx} { width: ${weight}px; }`;
+ })
+ .join("\n")}
+
+ /** Heights **/
+
+ ${new Array(10)
+ .fill(0)
+ .map((_, idx) => {
+ const height = (idx + 1) * 10;
+ return `.layout-h-${height} { height: ${height}%; }`;
+ })
+ .join("\n")}
+
+ ${new Array(16)
+ .fill(0)
+ .map((_, idx) => {
+ const height = idx * grid;
+ return `.layout-hp-${idx} { height: ${height}px; }`;
+ })
+ .join("\n")}
+
+ .layout-el-cv {
+ & img,
+ & video {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ margin: 0;
+ }
+ }
+
+ .layout-ar-sq {
+ aspect-ratio: 1 / 1;
+ }
+
+ .layout-ex-fb {
+ margin: calc(var(--padding) * -1) 0 0 calc(var(--padding) * -1);
+ width: calc(100% + var(--padding) * 2);
+ height: calc(100% + var(--padding) * 2);
+ }
+`;
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/opacity.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/opacity.ts
new file mode 100644
index 0000000000..319fd605d5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/opacity.ts
@@ -0,0 +1,24 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export const opacity = `
+ ${new Array(21)
+ .fill(0)
+ .map((_, idx) => {
+ return `.opacity-el-${idx * 5} { opacity: ${idx / 20}; }`;
+ })
+ .join("\n")}
+`;
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/shared.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/shared.ts
new file mode 100644
index 0000000000..47af007ebc
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/shared.ts
@@ -0,0 +1,17 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export const grid = 4;
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/type.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/type.ts
new file mode 100644
index 0000000000..f755256860
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/type.ts
@@ -0,0 +1,156 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export const type = `
+ :host {
+ --default-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ --default-font-family-mono: "Courier New", Courier, monospace;
+ }
+
+ .typography-f-s {
+ font-family: var(--font-family, var(--default-font-family));
+ font-optical-sizing: auto;
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0;
+ }
+
+ .typography-f-sf {
+ font-family: var(--font-family-flex, var(--default-font-family));
+ font-optical-sizing: auto;
+ }
+
+ .typography-f-c {
+ font-family: var(--font-family-mono, var(--default-font-family));
+ font-optical-sizing: auto;
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0;
+ }
+
+ .typography-v-r {
+ font-variation-settings: "slnt" 0, "wdth" 100, "GRAD" 0, "ROND" 100;
+ }
+
+ .typography-ta-s {
+ text-align: start;
+ }
+
+ .typography-ta-c {
+ text-align: center;
+ }
+
+ .typography-fs-n {
+ font-style: normal;
+ }
+
+ .typography-fs-i {
+ font-style: italic;
+ }
+
+ .typography-sz-ls {
+ font-size: 11px;
+ line-height: 16px;
+ }
+
+ .typography-sz-lm {
+ font-size: 12px;
+ line-height: 16px;
+ }
+
+ .typography-sz-ll {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-bs {
+ font-size: 12px;
+ line-height: 16px;
+ }
+
+ .typography-sz-bm {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-bl {
+ font-size: 16px;
+ line-height: 24px;
+ }
+
+ .typography-sz-ts {
+ font-size: 14px;
+ line-height: 20px;
+ }
+
+ .typography-sz-tm {
+ font-size: 16px;
+ line-height: 24px;
+ }
+
+ .typography-sz-tl {
+ font-size: 22px;
+ line-height: 28px;
+ }
+
+ .typography-sz-hs {
+ font-size: 24px;
+ line-height: 32px;
+ }
+
+ .typography-sz-hm {
+ font-size: 28px;
+ line-height: 36px;
+ }
+
+ .typography-sz-hl {
+ font-size: 32px;
+ line-height: 40px;
+ }
+
+ .typography-sz-ds {
+ font-size: 36px;
+ line-height: 44px;
+ }
+
+ .typography-sz-dm {
+ font-size: 45px;
+ line-height: 52px;
+ }
+
+ .typography-sz-dl {
+ font-size: 57px;
+ line-height: 64px;
+ }
+
+ .typography-ws-p {
+ white-space: pre-line;
+ }
+
+ .typography-ws-nw {
+ white-space: nowrap;
+ }
+
+ .typography-td-none {
+ text-decoration: none;
+ }
+
+ /** Weights **/
+
+ ${new Array(9)
+ .fill(0)
+ .map((_, idx) => {
+ const weight = (idx + 1) * 100;
+ return `.typography-w-${weight} { font-weight: ${weight}; }`;
+ })
+ .join("\n")}
+`;
diff --git a/vendor/a2ui/renderers/lit/src/0.8/styles/utils.ts b/vendor/a2ui/renderers/lit/src/0.8/styles/utils.ts
new file mode 100644
index 0000000000..05003f83b1
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/styles/utils.ts
@@ -0,0 +1,104 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { ColorPalettes } from "../types/colors.js";
+
+export function merge(...classes: Array>) {
+ const styles: Record = {};
+ for (const clazz of classes) {
+ for (const [key, val] of Object.entries(clazz)) {
+ const prefix = key.split("-").with(-1, "").join("-");
+ const existingKeys = Object.keys(styles).filter((key) =>
+ key.startsWith(prefix)
+ );
+
+ for (const existingKey of existingKeys) {
+ delete styles[existingKey];
+ }
+
+ styles[key] = val;
+ }
+ }
+
+ return styles;
+}
+
+export function appendToAll(
+ target: Record,
+ exclusions: string[],
+ ...classes: Array>
+) {
+ const updatedTarget: Record = structuredClone(target);
+ // Step through each of the new blocks we've been handed.
+ for (const clazz of classes) {
+ // For each of the items in the list, create the prefix value, e.g., for
+ // typography-f-s reduce to typography-f-. This will allow us to find any
+ // and all matches across the target that have the same prefix and swap them
+ // out for the updated item.
+ for (const key of Object.keys(clazz)) {
+ const prefix = key.split("-").with(-1, "").join("-");
+
+ // Now we have the prefix step through all iteme in the target, and
+ // replace the value in the array when we find it.
+ for (const [tagName, classesToAdd] of Object.entries(updatedTarget)) {
+ if (exclusions.includes(tagName)) {
+ continue;
+ }
+
+ let found = false;
+ for (let t = 0; t < classesToAdd.length; t++) {
+ if (classesToAdd[t].startsWith(prefix)) {
+ found = true;
+
+ // In theory we should be able to break after finding a single
+ // entry here because we shouldn't have items with the same prefix
+ // in the array, but for safety we'll run to the end of the array
+ // and ensure we've captured all possible items with the prefix.
+ classesToAdd[t] = key;
+ }
+ }
+
+ if (!found) {
+ classesToAdd.push(key);
+ }
+ }
+ }
+ }
+
+ return updatedTarget;
+}
+
+export function createThemeStyles(
+ palettes: ColorPalettes
+): Record {
+ const styles: Record = {};
+ for (const palette of Object.values(palettes)) {
+ for (const [key, val] of Object.entries(palette)) {
+ const prop = toProp(key);
+ styles[prop] = val;
+ }
+ }
+
+ return styles;
+}
+
+export function toProp(key: string) {
+ if (key.startsWith("nv")) {
+ return `--nv-${key.slice(2)}`;
+ }
+
+ return `--${key[0]}-${key.slice(1)}`;
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/types/client-event.ts b/vendor/a2ui/renderers/lit/src/0.8/types/client-event.ts
new file mode 100644
index 0000000000..740ca71f34
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/types/client-event.ts
@@ -0,0 +1,80 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+/**
+ * A message from the client describing its capabilities, such as the component
+ * catalog it supports. Exactly ONE of the properties in this object must be
+ * set.
+ */
+
+export type ClientCapabilitiesUri = string;
+export type ClientCapabilitiesDynamic = {
+ components: { [key: string]: unknown };
+ styles: { [key: string]: unknown };
+};
+
+export type ClientCapabilities =
+ | { catalogUri: ClientCapabilitiesUri }
+ | { dynamicCatalog: ClientCapabilitiesDynamic };
+
+/**
+ * A message sent from the client to the server. Exactly ONE of the properties
+ * in this object must be set.
+ */
+export interface ClientToServerMessage {
+ userAction?: UserAction;
+ clientUiCapabilities?: ClientCapabilities;
+ error?: ClientError;
+ /** Demo content */
+ request?: unknown;
+}
+
+/**
+ * Represents a user-initiated action, sent from the client to the server.
+ */
+export interface UserAction {
+ /**
+ * The name of the action.
+ */
+ name: string;
+ /**
+ * The ID of the surface.
+ */
+ surfaceId: string;
+ /**
+ * The ID of the component that triggered the event.
+ */
+ sourceComponentId: string;
+ /**
+ * An ISO timestamp of when the event occurred.
+ */
+ timestamp: string;
+ /**
+ * A JSON object containing the key-value pairs from the component's
+ * `action.context`, after resolving all data bindings.
+ */
+ context?: {
+ [k: string]: unknown;
+ };
+}
+
+/**
+ * A message from the client indicating an error occurred, for example,
+ * during UI rendering.
+ */
+export interface ClientError {
+ [k: string]: unknown;
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/types/colors.ts b/vendor/a2ui/renderers/lit/src/0.8/types/colors.ts
new file mode 100644
index 0000000000..77726a62eb
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/types/colors.ts
@@ -0,0 +1,66 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+type ColorShade =
+ | 0
+ | 5
+ | 10
+ | 15
+ | 20
+ | 25
+ | 30
+ | 35
+ | 40
+ | 50
+ | 60
+ | 70
+ | 80
+ | 90
+ | 95
+ | 98
+ | 99
+ | 100;
+
+export type PaletteKeyVals = "n" | "nv" | "p" | "s" | "t" | "e";
+export const shades: ColorShade[] = [
+ 0, 5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 95, 98, 99, 100,
+];
+
+type CreatePalette = {
+ [Key in `${Prefix}${ColorShade}`]: string;
+};
+
+export type PaletteKey = Array<
+ keyof CreatePalette
+>;
+
+export type PaletteKeys = {
+ neutral: PaletteKey<"n">;
+ neutralVariant: PaletteKey<"nv">;
+ primary: PaletteKey<"p">;
+ secondary: PaletteKey<"s">;
+ tertiary: PaletteKey<"t">;
+ error: PaletteKey<"e">;
+};
+
+export type ColorPalettes = {
+ neutral: CreatePalette<"n">;
+ neutralVariant: CreatePalette<"nv">;
+ primary: CreatePalette<"p">;
+ secondary: CreatePalette<"s">;
+ tertiary: CreatePalette<"t">;
+ error: CreatePalette<"e">;
+};
diff --git a/vendor/a2ui/renderers/lit/src/0.8/types/components.ts b/vendor/a2ui/renderers/lit/src/0.8/types/components.ts
new file mode 100644
index 0000000000..0e1765f5f5
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/types/components.ts
@@ -0,0 +1,211 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+import { StringValue } from "./primitives";
+
+export interface Action {
+ /**
+ * A unique name identifying the action (e.g., 'submitForm').
+ */
+ name: string;
+ /**
+ * A key-value map of data bindings to be resolved when the action is triggered.
+ */
+ context?: {
+ key: string;
+ /**
+ * The dynamic value. Define EXACTLY ONE of the nested properties.
+ */
+ value: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ literalNumber?: number;
+ literalBoolean?: boolean;
+ };
+ }[];
+}
+
+export interface Text {
+ text: StringValue;
+ usageHint: "h1" | "h2" | "h3" | "h4" | "h5" | "caption" | "body";
+}
+
+export interface Image {
+ url: StringValue;
+ usageHint:
+ | "icon"
+ | "avatar"
+ | "smallFeature"
+ | "mediumFeature"
+ | "largeFeature"
+ | "header";
+ fit?: "contain" | "cover" | "fill" | "none" | "scale-down";
+}
+
+export interface Icon {
+ name: StringValue;
+}
+
+export interface Video {
+ url: StringValue;
+}
+
+export interface AudioPlayer {
+ url: StringValue;
+ /**
+ * A label, title, or placeholder text.
+ */
+ description?: StringValue;
+}
+
+export interface Tabs {
+ /**
+ * A list of tabs, each with a title and a child component ID.
+ */
+ tabItems: {
+ /**
+ * The title of the tab.
+ */
+ title: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ };
+ /**
+ * A reference to a component instance by its unique ID.
+ */
+ child: string;
+ }[];
+}
+
+export interface Divider {
+ /**
+ * The orientation.
+ */
+ axis?: "horizontal" | "vertical";
+ /**
+ * The color of the divider (e.g., hex code or semantic name).
+ */
+ color?: string;
+ /**
+ * The thickness of the divider.
+ */
+ thickness?: number;
+}
+
+export interface Modal {
+ /**
+ * The ID of the component (e.g., a button) that triggers the modal.
+ */
+ entryPointChild: string;
+ /**
+ * The ID of the component to display as the modal's content.
+ */
+ contentChild: string;
+}
+
+export interface Button {
+ /**
+ * The ID of the component to display as the button's content.
+ */
+ child: string;
+
+ /**
+ * Represents a user-initiated action.
+ */
+ action: Action;
+}
+
+export interface Checkbox {
+ label: StringValue;
+ value: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ literalBoolean?: boolean;
+ };
+}
+
+export interface TextField {
+ text?: StringValue;
+ /**
+ * A label, title, or placeholder text.
+ */
+ label: StringValue;
+ type?: "shortText" | "number" | "date" | "longText";
+ /**
+ * A regex string to validate the input.
+ */
+ validationRegexp?: string;
+}
+
+export interface DateTimeInput {
+ value: StringValue;
+ enableDate?: boolean;
+ enableTime?: boolean;
+ /**
+ * The string format for the output (e.g., 'YYYY-MM-DD').
+ */
+ outputFormat?: string;
+}
+
+export interface MultipleChoice {
+ selections: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ literalArray?: string[];
+ };
+ options?: {
+ label: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ };
+ value: string;
+ }[];
+ maxAllowedSelections?: number;
+}
+
+export interface Slider {
+ value: {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ literalNumber?: number;
+ };
+ minValue?: number;
+ maxValue?: number;
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/types/primitives.ts b/vendor/a2ui/renderers/lit/src/0.8/types/primitives.ts
new file mode 100644
index 0000000000..cf7ca35523
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/types/primitives.ts
@@ -0,0 +1,60 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export interface StringValue {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literalString?: string;
+ /**
+ * A fixed, hardcoded string value.
+ */
+ literal?: string;
+}
+
+export interface NumberValue {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded number value.
+ */
+ literalNumber?: number;
+ /**
+ * A fixed, hardcoded number value.
+ */
+ literal?: number;
+}
+
+export interface BooleanValue {
+ /**
+ * A data binding reference to a location in the data model (e.g., '/user/name').
+ */
+ path?: string;
+ /**
+ * A fixed, hardcoded boolean value.
+ */
+ literalBoolean?: boolean;
+ /**
+ * A fixed, hardcoded boolean value.
+ */
+ literal?: boolean;
+}
diff --git a/vendor/a2ui/renderers/lit/src/0.8/types/types.ts b/vendor/a2ui/renderers/lit/src/0.8/types/types.ts
new file mode 100644
index 0000000000..1e1f6686cd
--- /dev/null
+++ b/vendor/a2ui/renderers/lit/src/0.8/types/types.ts
@@ -0,0 +1,532 @@
+/*
+ Copyright 2025 Google LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+export {
+ type ClientToServerMessage as A2UIClientEventMessage,
+ type ClientCapabilitiesDynamic,
+} from "./client-event.js";
+export { type Action } from "./components.js";
+
+import {
+ AudioPlayer,
+ Button,
+ Checkbox,
+ DateTimeInput,
+ Divider,
+ Icon,
+ Image,
+ MultipleChoice,
+ Slider,
+ Text,
+ TextField,
+ Video,
+} from "./components";
+import { StringValue } from "./primitives";
+
+export type MessageProcessor = {
+ getSurfaces(): ReadonlyMap;
+ clearSurfaces(): void;
+ processMessages(messages: ServerToClientMessage[]): void;
+
+ /**
+ * Retrieves the data for a given component node and a relative path string.
+ * This correctly handles the special `.` path, which refers to the node's
+ * own data context.
+ */
+ getData(
+ node: AnyComponentNode,
+ relativePath: string,
+ surfaceId: string
+ ): DataValue | null;
+
+ setData(
+ node: AnyComponentNode | null,
+ relativePath: string,
+ value: DataValue,
+ surfaceId: string
+ ): void;
+
+ resolvePath(path: string, dataContextPath?: string): string;
+};
+
+export type Theme = {
+ components: {
+ AudioPlayer: Record;
+ Button: Record;
+ Card: Record;
+ Column: Record;
+ CheckBox: {
+ container: Record;
+ element: Record;
+ label: Record;
+ };
+ DateTimeInput: {
+ container: Record