@logickernel/logger 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +21 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -38,9 +38,21 @@ ${arg.stack}` : "");
|
|
|
38
38
|
}
|
|
39
39
|
}).join(" ");
|
|
40
40
|
}
|
|
41
|
-
var
|
|
41
|
+
var LOGGER_TARGET = process.env.LOGGER_TARGET?.toLowerCase();
|
|
42
|
+
var FORCE_GCP = LOGGER_TARGET === "gcp";
|
|
43
|
+
var FORCE_CONSOLE = LOGGER_TARGET === "console";
|
|
44
|
+
var USE_GCP = !FORCE_CONSOLE && (FORCE_GCP || !!process.env.GCP_PROJECT);
|
|
42
45
|
var noop = () => {
|
|
43
46
|
};
|
|
47
|
+
function consoleLine(emoji, args) {
|
|
48
|
+
const d = /* @__PURE__ */ new Date();
|
|
49
|
+
const ts = d.toLocaleString("sv-SE") + "." + String(d.getMilliseconds()).padStart(3, "0");
|
|
50
|
+
const last = args[args.length - 1];
|
|
51
|
+
const hasPayload = args.length >= 2 && last !== null && typeof last === "object" && !Array.isArray(last) && !(last instanceof Error);
|
|
52
|
+
const msg = formatMessage(hasPayload ? args.slice(0, -1) : args);
|
|
53
|
+
const suffix = hasPayload ? " " + JSON.stringify(last, null, 2).replace(/\n\s*/g, " ") : "";
|
|
54
|
+
return `${emoji} ${ts} ${msg}${suffix}`;
|
|
55
|
+
}
|
|
44
56
|
function gcpPayload(args) {
|
|
45
57
|
const last = args[args.length - 1];
|
|
46
58
|
if (args.length >= 2 && last !== null && typeof last === "object" && !Array.isArray(last) && !(last instanceof Error)) {
|
|
@@ -87,28 +99,28 @@ var logger = gcpLog ? /* @__PURE__ */ (() => {
|
|
|
87
99
|
};
|
|
88
100
|
})() : {
|
|
89
101
|
debug: (...args) => {
|
|
90
|
-
console.log("
|
|
102
|
+
console.log(consoleLine("\u{1F41E}", args.map((a) => typeof a === "string" ? a.replace(/\n/g, " ") : a)));
|
|
91
103
|
},
|
|
92
104
|
info: (...args) => {
|
|
93
|
-
console.log("
|
|
105
|
+
console.log(consoleLine("\u2139\uFE0F", args));
|
|
94
106
|
},
|
|
95
107
|
notice: (...args) => {
|
|
96
|
-
console.log("
|
|
108
|
+
console.log(consoleLine("*\uFE0F\u20E3", args));
|
|
97
109
|
},
|
|
98
110
|
warning: (...args) => {
|
|
99
|
-
console.log("
|
|
111
|
+
console.log(consoleLine("\u26A0\uFE0F", args));
|
|
100
112
|
},
|
|
101
113
|
error: (...args) => {
|
|
102
|
-
console.log("
|
|
114
|
+
console.log(consoleLine("\u26D4\uFE0F", args));
|
|
103
115
|
},
|
|
104
116
|
critical: (...args) => {
|
|
105
|
-
console.log("
|
|
117
|
+
console.log(consoleLine("\u2757\uFE0F", args));
|
|
106
118
|
},
|
|
107
119
|
alert: (...args) => {
|
|
108
|
-
console.log("
|
|
120
|
+
console.log(consoleLine("\u203C\uFE0F", args));
|
|
109
121
|
},
|
|
110
122
|
emergency: (...args) => {
|
|
111
|
-
console.log("
|
|
123
|
+
console.log(consoleLine("\u{1F6A8}", args));
|
|
112
124
|
}
|
|
113
125
|
};
|
|
114
126
|
var index_default = logger;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Logging } from \"@google-cloud/logging\";\n\nexport interface Logger {\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n notice: (...args: unknown[]) => void;\n warning: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n critical: (...args: unknown[]) => void;\n alert: (...args: unknown[]) => void;\n emergency: (...args: unknown[]) => void;\n}\n\nexport function formatMessage(args: unknown[]): string {\n return args.map(arg => {\n if (typeof arg === \"string\") return arg;\n if (arg instanceof Error) return arg.message + (arg.stack ? `\\n${arg.stack}` : \"\");\n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n }).join(\" \");\n}\n\n// Resolved once at module load — no per-call branching.\nconst
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Logging } from \"@google-cloud/logging\";\n\nexport interface Logger {\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n notice: (...args: unknown[]) => void;\n warning: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n critical: (...args: unknown[]) => void;\n alert: (...args: unknown[]) => void;\n emergency: (...args: unknown[]) => void;\n}\n\nexport function formatMessage(args: unknown[]): string {\n return args.map(arg => {\n if (typeof arg === \"string\") return arg;\n if (arg instanceof Error) return arg.message + (arg.stack ? `\\n${arg.stack}` : \"\");\n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n }).join(\" \");\n}\n\n// Resolved once at module load — no per-call branching.\nconst LOGGER_TARGET = process.env.LOGGER_TARGET?.toLowerCase();\nconst FORCE_GCP = LOGGER_TARGET === \"gcp\";\nconst FORCE_CONSOLE = LOGGER_TARGET === \"console\";\nconst USE_GCP = !FORCE_CONSOLE && (FORCE_GCP || !!process.env.GCP_PROJECT);\nconst noop = (): void => {};\n\n// Formats a single console log line: \"{emoji} {local timestamp} {message} [{payload}]\"\nfunction consoleLine(emoji: string, args: unknown[]): string {\n const d = new Date();\n const ts = d.toLocaleString(\"sv-SE\") + \".\" + String(d.getMilliseconds()).padStart(3, \"0\");\n const last = args[args.length - 1];\n const hasPayload = args.length >= 2 && last !== null && typeof last === \"object\" && !Array.isArray(last) && !(last instanceof Error);\n const msg = formatMessage(hasPayload ? args.slice(0, -1) : args);\n const suffix = hasPayload ? \" \" + JSON.stringify(last, null, 2).replace(/\\n\\s*/g, \" \") : \"\";\n return `${emoji} ${ts} ${msg}${suffix}`;\n}\n\n// If the last arg is a plain object, return a jsonPayload so Cloud Logging\n// indexes its fields. Otherwise return a plain string (textPayload).\nfunction gcpPayload(args: unknown[]): string | Record<string, unknown> {\n const last = args[args.length - 1];\n if (\n args.length >= 2 &&\n last !== null &&\n typeof last === \"object\" &&\n !Array.isArray(last) &&\n !(last instanceof Error)\n ) {\n return { message: formatMessage(args.slice(0, -1)), ...(last as Record<string, unknown>) };\n }\n return formatMessage(args);\n}\n\nlet gcpLog: ReturnType<Logging[\"log\"]> | null = null;\nif (USE_GCP) {\n try {\n const logName = process.env.K_SERVICE ?? \"app\";\n gcpLog = new Logging({ projectId: process.env.GCP_PROJECT }).log(logName);\n } catch {\n // GCP init failed; fall back to console\n }\n}\n\nexport const logger: Logger = gcpLog\n ? (() => {\n const g = gcpLog!;\n return {\n debug: (...args: unknown[]): void => {\n const mapped = args.map(a => typeof a === \"string\" ? a.replace(/\\n/g, \" \") : a);\n g.write(g.entry({ severity: \"DEBUG\" }, gcpPayload(mapped))).catch(noop);\n },\n info: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"INFO\" }, gcpPayload(args))).catch(noop);\n },\n notice: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"NOTICE\" }, gcpPayload(args))).catch(noop);\n },\n warning: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"WARNING\" }, gcpPayload(args))).catch(noop);\n },\n error: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"ERROR\" }, gcpPayload(args))).catch(noop);\n },\n critical: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"CRITICAL\" }, gcpPayload(args))).catch(noop);\n },\n alert: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"ALERT\" }, gcpPayload(args))).catch(noop);\n },\n emergency: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"EMERGENCY\" }, gcpPayload(args))).catch(noop);\n },\n };\n })()\n : {\n debug: (...args: unknown[]): void => {\n console.log(consoleLine(\"🐞\", args.map(a => typeof a === \"string\" ? a.replace(/\\n/g, \" \") : a)));\n },\n info: (...args: unknown[]): void => { console.log(consoleLine(\"ℹ️\", args)); },\n notice: (...args: unknown[]): void => { console.log(consoleLine(\"*️⃣\", args)); },\n warning: (...args: unknown[]): void => { console.log(consoleLine(\"⚠️\", args)); },\n error: (...args: unknown[]): void => { console.log(consoleLine(\"⛔️\", args)); },\n critical: (...args: unknown[]): void => { console.log(consoleLine(\"❗️\", args)); },\n alert: (...args: unknown[]): void => { console.log(consoleLine(\"‼️\", args)); },\n emergency: (...args: unknown[]): void => { console.log(consoleLine(\"🚨\", args)); },\n };\n\nexport default logger;\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -12,9 +12,21 @@ ${arg.stack}` : "");
|
|
|
12
12
|
}
|
|
13
13
|
}).join(" ");
|
|
14
14
|
}
|
|
15
|
-
var
|
|
15
|
+
var LOGGER_TARGET = process.env.LOGGER_TARGET?.toLowerCase();
|
|
16
|
+
var FORCE_GCP = LOGGER_TARGET === "gcp";
|
|
17
|
+
var FORCE_CONSOLE = LOGGER_TARGET === "console";
|
|
18
|
+
var USE_GCP = !FORCE_CONSOLE && (FORCE_GCP || !!process.env.GCP_PROJECT);
|
|
16
19
|
var noop = () => {
|
|
17
20
|
};
|
|
21
|
+
function consoleLine(emoji, args) {
|
|
22
|
+
const d = /* @__PURE__ */ new Date();
|
|
23
|
+
const ts = d.toLocaleString("sv-SE") + "." + String(d.getMilliseconds()).padStart(3, "0");
|
|
24
|
+
const last = args[args.length - 1];
|
|
25
|
+
const hasPayload = args.length >= 2 && last !== null && typeof last === "object" && !Array.isArray(last) && !(last instanceof Error);
|
|
26
|
+
const msg = formatMessage(hasPayload ? args.slice(0, -1) : args);
|
|
27
|
+
const suffix = hasPayload ? " " + JSON.stringify(last, null, 2).replace(/\n\s*/g, " ") : "";
|
|
28
|
+
return `${emoji} ${ts} ${msg}${suffix}`;
|
|
29
|
+
}
|
|
18
30
|
function gcpPayload(args) {
|
|
19
31
|
const last = args[args.length - 1];
|
|
20
32
|
if (args.length >= 2 && last !== null && typeof last === "object" && !Array.isArray(last) && !(last instanceof Error)) {
|
|
@@ -61,28 +73,28 @@ var logger = gcpLog ? /* @__PURE__ */ (() => {
|
|
|
61
73
|
};
|
|
62
74
|
})() : {
|
|
63
75
|
debug: (...args) => {
|
|
64
|
-
console.log("
|
|
76
|
+
console.log(consoleLine("\u{1F41E}", args.map((a) => typeof a === "string" ? a.replace(/\n/g, " ") : a)));
|
|
65
77
|
},
|
|
66
78
|
info: (...args) => {
|
|
67
|
-
console.log("
|
|
79
|
+
console.log(consoleLine("\u2139\uFE0F", args));
|
|
68
80
|
},
|
|
69
81
|
notice: (...args) => {
|
|
70
|
-
console.log("
|
|
82
|
+
console.log(consoleLine("*\uFE0F\u20E3", args));
|
|
71
83
|
},
|
|
72
84
|
warning: (...args) => {
|
|
73
|
-
console.log("
|
|
85
|
+
console.log(consoleLine("\u26A0\uFE0F", args));
|
|
74
86
|
},
|
|
75
87
|
error: (...args) => {
|
|
76
|
-
console.log("
|
|
88
|
+
console.log(consoleLine("\u26D4\uFE0F", args));
|
|
77
89
|
},
|
|
78
90
|
critical: (...args) => {
|
|
79
|
-
console.log("
|
|
91
|
+
console.log(consoleLine("\u2757\uFE0F", args));
|
|
80
92
|
},
|
|
81
93
|
alert: (...args) => {
|
|
82
|
-
console.log("
|
|
94
|
+
console.log(consoleLine("\u203C\uFE0F", args));
|
|
83
95
|
},
|
|
84
96
|
emergency: (...args) => {
|
|
85
|
-
console.log("
|
|
97
|
+
console.log(consoleLine("\u{1F6A8}", args));
|
|
86
98
|
}
|
|
87
99
|
};
|
|
88
100
|
var index_default = logger;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Logging } from \"@google-cloud/logging\";\n\nexport interface Logger {\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n notice: (...args: unknown[]) => void;\n warning: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n critical: (...args: unknown[]) => void;\n alert: (...args: unknown[]) => void;\n emergency: (...args: unknown[]) => void;\n}\n\nexport function formatMessage(args: unknown[]): string {\n return args.map(arg => {\n if (typeof arg === \"string\") return arg;\n if (arg instanceof Error) return arg.message + (arg.stack ? `\\n${arg.stack}` : \"\");\n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n }).join(\" \");\n}\n\n// Resolved once at module load — no per-call branching.\nconst
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Logging } from \"@google-cloud/logging\";\n\nexport interface Logger {\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n notice: (...args: unknown[]) => void;\n warning: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n critical: (...args: unknown[]) => void;\n alert: (...args: unknown[]) => void;\n emergency: (...args: unknown[]) => void;\n}\n\nexport function formatMessage(args: unknown[]): string {\n return args.map(arg => {\n if (typeof arg === \"string\") return arg;\n if (arg instanceof Error) return arg.message + (arg.stack ? `\\n${arg.stack}` : \"\");\n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n }).join(\" \");\n}\n\n// Resolved once at module load — no per-call branching.\nconst LOGGER_TARGET = process.env.LOGGER_TARGET?.toLowerCase();\nconst FORCE_GCP = LOGGER_TARGET === \"gcp\";\nconst FORCE_CONSOLE = LOGGER_TARGET === \"console\";\nconst USE_GCP = !FORCE_CONSOLE && (FORCE_GCP || !!process.env.GCP_PROJECT);\nconst noop = (): void => {};\n\n// Formats a single console log line: \"{emoji} {local timestamp} {message} [{payload}]\"\nfunction consoleLine(emoji: string, args: unknown[]): string {\n const d = new Date();\n const ts = d.toLocaleString(\"sv-SE\") + \".\" + String(d.getMilliseconds()).padStart(3, \"0\");\n const last = args[args.length - 1];\n const hasPayload = args.length >= 2 && last !== null && typeof last === \"object\" && !Array.isArray(last) && !(last instanceof Error);\n const msg = formatMessage(hasPayload ? args.slice(0, -1) : args);\n const suffix = hasPayload ? \" \" + JSON.stringify(last, null, 2).replace(/\\n\\s*/g, \" \") : \"\";\n return `${emoji} ${ts} ${msg}${suffix}`;\n}\n\n// If the last arg is a plain object, return a jsonPayload so Cloud Logging\n// indexes its fields. Otherwise return a plain string (textPayload).\nfunction gcpPayload(args: unknown[]): string | Record<string, unknown> {\n const last = args[args.length - 1];\n if (\n args.length >= 2 &&\n last !== null &&\n typeof last === \"object\" &&\n !Array.isArray(last) &&\n !(last instanceof Error)\n ) {\n return { message: formatMessage(args.slice(0, -1)), ...(last as Record<string, unknown>) };\n }\n return formatMessage(args);\n}\n\nlet gcpLog: ReturnType<Logging[\"log\"]> | null = null;\nif (USE_GCP) {\n try {\n const logName = process.env.K_SERVICE ?? \"app\";\n gcpLog = new Logging({ projectId: process.env.GCP_PROJECT }).log(logName);\n } catch {\n // GCP init failed; fall back to console\n }\n}\n\nexport const logger: Logger = gcpLog\n ? (() => {\n const g = gcpLog!;\n return {\n debug: (...args: unknown[]): void => {\n const mapped = args.map(a => typeof a === \"string\" ? a.replace(/\\n/g, \" \") : a);\n g.write(g.entry({ severity: \"DEBUG\" }, gcpPayload(mapped))).catch(noop);\n },\n info: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"INFO\" }, gcpPayload(args))).catch(noop);\n },\n notice: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"NOTICE\" }, gcpPayload(args))).catch(noop);\n },\n warning: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"WARNING\" }, gcpPayload(args))).catch(noop);\n },\n error: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"ERROR\" }, gcpPayload(args))).catch(noop);\n },\n critical: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"CRITICAL\" }, gcpPayload(args))).catch(noop);\n },\n alert: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"ALERT\" }, gcpPayload(args))).catch(noop);\n },\n emergency: (...args: unknown[]): void => {\n g.write(g.entry({ severity: \"EMERGENCY\" }, gcpPayload(args))).catch(noop);\n },\n };\n })()\n : {\n debug: (...args: unknown[]): void => {\n console.log(consoleLine(\"🐞\", args.map(a => typeof a === \"string\" ? a.replace(/\\n/g, \" \") : a)));\n },\n info: (...args: unknown[]): void => { console.log(consoleLine(\"ℹ️\", args)); },\n notice: (...args: unknown[]): void => { console.log(consoleLine(\"*️⃣\", args)); },\n warning: (...args: unknown[]): void => { console.log(consoleLine(\"⚠️\", args)); },\n error: (...args: unknown[]): void => { console.log(consoleLine(\"⛔️\", args)); },\n critical: (...args: unknown[]): void => { console.log(consoleLine(\"❗️\", args)); },\n alert: (...args: unknown[]): void => { console.log(consoleLine(\"‼️\", args)); },\n emergency: (...args: unknown[]): void => { console.log(consoleLine(\"🚨\", args)); },\n };\n\nexport default logger;\n"],"mappings":";AAAA,SAAS,eAAe;AAajB,SAAS,cAAc,MAAyB;AACrD,SAAO,KAAK,IAAI,SAAO;AACrB,QAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,QAAI,eAAe,MAAO,QAAO,IAAI,WAAW,IAAI,QAAQ;AAAA,EAAK,IAAI,KAAK,KAAK;AAC/E,QAAI;AACF,aAAO,KAAK,UAAU,GAAG;AAAA,IAC3B,QAAQ;AACN,aAAO,OAAO,GAAG;AAAA,IACnB;AAAA,EACF,CAAC,EAAE,KAAK,GAAG;AACb;AAGA,IAAM,gBAAgB,QAAQ,IAAI,eAAe,YAAY;AAC7D,IAAM,YAAY,kBAAkB;AACpC,IAAM,gBAAgB,kBAAkB;AACxC,IAAM,UAAU,CAAC,kBAAkB,aAAa,CAAC,CAAC,QAAQ,IAAI;AAC9D,IAAM,OAAO,MAAY;AAAC;AAG1B,SAAS,YAAY,OAAe,MAAyB;AAC3D,QAAM,IAAI,oBAAI,KAAK;AACnB,QAAM,KAAK,EAAE,eAAe,OAAO,IAAI,MAAM,OAAO,EAAE,gBAAgB,CAAC,EAAE,SAAS,GAAG,GAAG;AACxF,QAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AACjC,QAAM,aAAa,KAAK,UAAU,KAAK,SAAS,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI,KAAK,EAAE,gBAAgB;AAC9H,QAAM,MAAM,cAAc,aAAa,KAAK,MAAM,GAAG,EAAE,IAAI,IAAI;AAC/D,QAAM,SAAS,aAAa,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE,QAAQ,UAAU,GAAG,IAAI;AACzF,SAAO,GAAG,KAAK,IAAI,EAAE,IAAI,GAAG,GAAG,MAAM;AACvC;AAIA,SAAS,WAAW,MAAmD;AACrE,QAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AACjC,MACE,KAAK,UAAU,KACf,SAAS,QACT,OAAO,SAAS,YAChB,CAAC,MAAM,QAAQ,IAAI,KACnB,EAAE,gBAAgB,QAClB;AACA,WAAO,EAAE,SAAS,cAAc,KAAK,MAAM,GAAG,EAAE,CAAC,GAAG,GAAI,KAAiC;AAAA,EAC3F;AACA,SAAO,cAAc,IAAI;AAC3B;AAEA,IAAI,SAA4C;AAChD,IAAI,SAAS;AACX,MAAI;AACF,UAAM,UAAU,QAAQ,IAAI,aAAa;AACzC,aAAS,IAAI,QAAQ,EAAE,WAAW,QAAQ,IAAI,YAAY,CAAC,EAAE,IAAI,OAAO;AAAA,EAC1E,QAAQ;AAAA,EAER;AACF;AAEO,IAAM,SAAiB,SACzB,uBAAM;AACL,QAAM,IAAI;AACV,SAAO;AAAA,IACL,OAAO,IAAI,SAA0B;AACnC,YAAM,SAAS,KAAK,IAAI,OAAK,OAAO,MAAM,WAAW,EAAE,QAAQ,OAAO,GAAG,IAAI,CAAC;AAC9E,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,QAAQ,GAAG,WAAW,MAAM,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IACxE;AAAA,IACA,MAAM,IAAI,SAA0B;AAClC,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,OAAO,GAAG,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IACrE;AAAA,IACA,QAAQ,IAAI,SAA0B;AACpC,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAS,GAAG,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IACvE;AAAA,IACA,SAAS,IAAI,SAA0B;AACrC,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,UAAU,GAAG,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IACxE;AAAA,IACA,OAAO,IAAI,SAA0B;AACnC,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,QAAQ,GAAG,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IACtE;AAAA,IACA,UAAU,IAAI,SAA0B;AACtC,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IACzE;AAAA,IACA,OAAO,IAAI,SAA0B;AACnC,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,QAAQ,GAAG,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IACtE;AAAA,IACA,WAAW,IAAI,SAA0B;AACvC,QAAE,MAAM,EAAE,MAAM,EAAE,UAAU,YAAY,GAAG,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI;AAAA,IAC1E;AAAA,EACF;AACF,GAAG,IACH;AAAA,EACE,OAAO,IAAI,SAA0B;AACnC,YAAQ,IAAI,YAAY,aAAM,KAAK,IAAI,OAAK,OAAO,MAAM,WAAW,EAAE,QAAQ,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AAAA,EACjG;AAAA,EACA,MAAW,IAAI,SAA0B;AAAE,YAAQ,IAAI,YAAY,gBAAO,IAAI,CAAC;AAAA,EAAG;AAAA,EAClF,QAAW,IAAI,SAA0B;AAAE,YAAQ,IAAI,YAAY,iBAAQ,IAAI,CAAC;AAAA,EAAG;AAAA,EACnF,SAAW,IAAI,SAA0B;AAAE,YAAQ,IAAI,YAAY,gBAAO,IAAI,CAAC;AAAA,EAAG;AAAA,EAClF,OAAW,IAAI,SAA0B;AAAE,YAAQ,IAAI,YAAY,gBAAO,IAAI,CAAC;AAAA,EAAG;AAAA,EAClF,UAAW,IAAI,SAA0B;AAAE,YAAQ,IAAI,YAAY,gBAAO,IAAI,CAAC;AAAA,EAAG;AAAA,EAClF,OAAW,IAAI,SAA0B;AAAE,YAAQ,IAAI,YAAY,gBAAO,IAAI,CAAC;AAAA,EAAG;AAAA,EAClF,WAAW,IAAI,SAA0B;AAAE,YAAQ,IAAI,YAAY,aAAO,IAAI,CAAC;AAAA,EAAG;AACpF;AAEJ,IAAO,gBAAQ;","names":[]}
|