react-semaphor 0.1.537 → 0.1.539

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/dist/analytics-protocol/index.js +352 -341
  2. package/dist/assistant-context/index.js +10 -0
  3. package/dist/assistant-protocol/index.js +104 -0
  4. package/dist/brand-studio/index.js +35 -31
  5. package/dist/briefings/index.js +46 -45
  6. package/dist/chunks/_commonjsHelpers-BkfeUUK-.js +28 -0
  7. package/dist/chunks/add-to-dashboard-CxtTfISD.js +56 -0
  8. package/dist/chunks/aggregate-table-row-presentation-BjK9YfMI.js +979 -0
  9. package/dist/chunks/analytics-base-schemas-BFAoRlkU.js +472 -0
  10. package/dist/chunks/apply-dashboard-operations-C-iahGka.js +402 -0
  11. package/dist/chunks/assistant-chat-DgiSuFT4.js +8083 -0
  12. package/dist/chunks/availability-Bp5Gfu1I.js +44 -0
  13. package/dist/chunks/{bookmark-state-B-I9BDD0.js → bookmark-state-k7y5SNGf.js} +9 -9
  14. package/dist/chunks/{braces-8TRlDwDw.js → braces-o9UiRQes.js} +1 -1
  15. package/dist/chunks/calculated-field-identity-DcBS2NPP.js +2161 -0
  16. package/dist/chunks/calendar-day-equality-Bpl15IBo.js +487 -0
  17. package/dist/chunks/class-utils-Df1OVOT1.js +2315 -0
  18. package/dist/chunks/{field-dependencies-CpRUwr9J.js → common-types-CUf03Htv.js} +65 -58
  19. package/dist/chunks/context-HD9usB1P.js +349 -0
  20. package/dist/chunks/conversation-sQiWYUOb.js +16 -0
  21. package/dist/chunks/csv-utils-GUfKyT1J.js +56 -0
  22. package/dist/chunks/custom-visual-inputs-BrUOIwln.js +3288 -0
  23. package/dist/chunks/{dashboard-briefing-launcher-A2uVpHCp.js → dashboard-briefing-launcher-Bl3gCeBR.js} +580 -556
  24. package/dist/chunks/{dashboard-controls-DxTuVis_.js → dashboard-controls-0EX0HiJt.js} +683 -686
  25. package/dist/chunks/{common-types-g7yS12Cg.js → dashboard-filter-value-compatibility-D95O4nd7.js} +18 -24
  26. package/dist/chunks/dashboard-json-6X_2BDiL.js +69 -0
  27. package/dist/chunks/{dashboard-BPJo-Fnd.js → dashboard-y5BwcvzT.js} +1 -1
  28. package/dist/chunks/document-dashboard-inputs-BrYYlRVo.js +10678 -0
  29. package/dist/chunks/document-sheet-utils-C1eEldxs.js +1076 -0
  30. package/dist/chunks/{edit-dashboard-visual-ByV0OwSp.js → edit-dashboard-visual-Bzchfgga.js} +4744 -4746
  31. package/dist/chunks/editor-draft-sync-BN5qYHPF.js +15 -0
  32. package/dist/chunks/filter-value-text-BhWugPWE.js +163 -0
  33. package/dist/chunks/index-CqMiAkay.js +3164 -0
  34. package/dist/chunks/index-CuHybtft.js +51 -0
  35. package/dist/chunks/layout-grid-Bgzth8vd.js +16 -0
  36. package/dist/chunks/{matrix-analytical-definition-CgBTD6H8.js → matrix-analytical-definition-bcprSe4u.js} +1 -1
  37. package/dist/chunks/{matrix-card-CAdizkUl.js → matrix-card-CJn1hB5V.js} +13 -12
  38. package/dist/chunks/matrix-definition-DQDI2okF.js +206 -0
  39. package/dist/chunks/{matrix-formatter-DJCk8Znf.js → matrix-formatter-DQ8avoIQ.js} +648 -457
  40. package/dist/chunks/matrix-member-presentation-BNPSDKBG.js +105 -0
  41. package/dist/chunks/{matrix-operation-contract-BKupLHXL.js → matrix-operation-contract-B8PBF1Gd.js} +134 -133
  42. package/dist/chunks/{metric-comparison-BKHyvnAy.js → metric-comparison-CojWeLqx.js} +1 -1
  43. package/dist/chunks/{palette-Cp1hqZtm.js → palette-D10o_yYX.js} +1 -1
  44. package/dist/chunks/pivot-header-presentation-MkcKnjn3.js +42 -0
  45. package/dist/chunks/{pivot-result-identity-Bs4tLtLo.js → pivot-result-identity-D6hhcRXi.js} +1 -1
  46. package/dist/chunks/pivot-result-lifecycle-8qCDmpKc.js +804 -0
  47. package/dist/chunks/raw-temporal-D61lr48Y.js +1464 -0
  48. package/dist/chunks/{raw-temporal-contract-mLFS-9wk.js → raw-temporal-contract-C51YG48G.js} +1 -1
  49. package/dist/chunks/report-preferences-dialog-CWhSbc5_.js +1808 -0
  50. package/dist/chunks/{report-runtime-context-CG_I0PPW.js → report-runtime-context-B984Nq1E.js} +8 -7
  51. package/dist/chunks/save-CfJpQQ68.js +21 -0
  52. package/dist/chunks/saved-dashboard-context-Dqve2jlB.js +566 -0
  53. package/dist/chunks/{selection-reducer-CiDEtmAq.js → selection-reducer-vKIb_jS6.js} +2 -2
  54. package/dist/chunks/{semaphor-ready-indicator-CHu1L-lo.js → semaphor-ready-indicator-ldcwmLoY.js} +65803 -62954
  55. package/dist/chunks/{shelf-drop-preview-context-i-H6DFyU.js → shelf-drop-preview-context-BWxunXTq.js} +199 -196
  56. package/dist/chunks/{source-entity-resolution-C-oNyYMp.js → source-entity-resolution-CVA1a85c.js} +8 -8
  57. package/dist/chunks/switch-CvItuC1Q.js +8199 -0
  58. package/dist/chunks/{temporal-bucket-DlFuhCnT.js → temporal-bucket-D8JF7zKz.js} +86 -71
  59. package/dist/chunks/{temporal-bucket-contract-D2OuaVZ7.js → temporal-bucket-contract-DaOajRC7.js} +1 -1
  60. package/dist/chunks/{token-types-DtSJOUjh.js → token-types-bxUxXDX2.js} +1 -1
  61. package/dist/chunks/{upload-CAIpsti1.js → upload-BFX7apKV.js} +1 -1
  62. package/dist/chunks/{use-create-flow-overlay-state-Bj63WwHc.js → use-create-flow-overlay-state-RHgzVfcz.js} +331 -339
  63. package/dist/chunks/{validators-DMSH81OM.js → validators-Ej1DdCXa.js} +1050 -1510
  64. package/dist/chunks/visual-choice-JiJ-_3bi.js +204 -0
  65. package/dist/chunks/x-4f5U2XwU.js +100 -0
  66. package/dist/chunks/{zoned-wall-clock-1qlWCE20.js → zoned-wall-clock-MulfA26h.js} +2 -2
  67. package/dist/dashboard/index.js +2 -2
  68. package/dist/dashboard-authoring/index.js +823 -661
  69. package/dist/data-app-sdk/index.js +32 -30
  70. package/dist/data-app-sdk-adapters/index.js +23 -22
  71. package/dist/data-app-sdk-validation/index.js +23 -22
  72. package/dist/format-utils/index.js +173 -168
  73. package/dist/index.js +267 -258
  74. package/dist/layouts/index.js +236 -24
  75. package/dist/report-runtime-context/index.js +2 -2
  76. package/dist/style.css +1 -1
  77. package/dist/surfboard/index.js +2 -2
  78. package/dist/types/assistant-context.d.ts +2 -0
  79. package/dist/types/assistant-protocol.d.ts +2 -0
  80. package/dist/types/components/assistant/assistant-entry-points.d.ts +18 -0
  81. package/dist/types/components/assistant/assistant-provider.d.ts +19 -0
  82. package/dist/types/components/assistant/assistant-store.d.ts +52 -0
  83. package/dist/types/components/assistant/use-assistant.d.ts +38 -0
  84. package/dist/types/components/index.d.ts +5 -1
  85. package/dist/types/components/surfboard/filter/types.d.ts +5 -2
  86. package/dist/types/index.js +50 -51
  87. package/dist/types/lib/api/invalidate-token.d.ts +7 -0
  88. package/dist/types/lib/charts/cartesian-fields.d.ts +64 -0
  89. package/dist/types/lib/charts/types.d.ts +7 -0
  90. package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-storage-transition.d.ts +14 -2
  91. package/dist/types/lib/dashboard-inputs/dashboard-input-target-context.d.ts +5 -6
  92. package/dist/types/lib/dashboard-inputs/dashboard-input-values.d.ts +8 -3
  93. package/dist/types/lib/dashboard-inputs/resolve-dashboard-input-context.d.ts +11 -6
  94. package/dist/types/lib/dashboard-pagination/dashboard-card-pagination.d.ts +7 -0
  95. package/dist/types/lib/dashboard-viewer/compatibility-input-storage.d.ts +79 -0
  96. package/dist/types/lib/dashboard-viewer/viewer-state.d.ts +3 -2
  97. package/dist/types/lib/document/document-table-data-policy.d.ts +15 -0
  98. package/dist/types/lib/filter-values/filter-mode.d.ts +22 -0
  99. package/dist/types/lib/hooks/use-calendar-context.d.ts +5 -0
  100. package/dist/types/lib/hooks/use-filter-option-browse.d.ts +5 -0
  101. package/dist/types/lib/hooks/use-text-filter.d.ts +9 -0
  102. package/dist/types/lib/print/print-inputs.d.ts +4 -2
  103. package/dist/types/lib/query-context/build-card-query-context.d.ts +12 -4
  104. package/dist/types/lib/query-context/build-dashboard-execution-snapshot.d.ts +93 -0
  105. package/dist/types/lib/query-context/card-server-request.d.ts +72 -0
  106. package/dist/types/lib/query-context/compile-dashboard-card-filters.d.ts +7 -0
  107. package/dist/types/lib/query-context/describe-card-execution-snapshot.d.ts +56 -0
  108. package/dist/types/lib/query-context/document-section-card-query.d.ts +45 -0
  109. package/dist/types/lib/query-context/resolve-runtime-card-filters.d.ts +17 -2
  110. package/dist/types/lib/stores/dashboard-store.d.ts +34 -11
  111. package/dist/types/lib/stores/editor-store.d.ts +4 -2
  112. package/dist/types/lib/types/token-types.d.ts +11 -0
  113. package/dist/types/lib/utils/card-type-change.d.ts +30 -0
  114. package/dist/types/lib/utils/comparison-window-caption.d.ts +12 -0
  115. package/dist/types/lib/utils/filter-default-value-utils.d.ts +13 -2
  116. package/dist/types/shared/analytics-protocol/applied-constraints.d.ts +74 -0
  117. package/dist/types/shared/analytics-protocol/contracts.d.ts +3 -0
  118. package/dist/types/shared/analytics-protocol/filter-field-ownership.d.ts +43 -0
  119. package/dist/types/shared/analytics-protocol/index.d.ts +3 -0
  120. package/dist/types/shared/analytics-protocol/matrix-window-contract.d.ts +1 -1
  121. package/dist/types/shared/analytics-protocol/visual-choice.d.ts +75 -0
  122. package/dist/types/shared/assistant-context/index.d.ts +9 -0
  123. package/dist/types/shared/assistant-context/project-context.d.ts +55 -0
  124. package/dist/types/shared/assistant-context/saved-dashboard-context.d.ts +130 -0
  125. package/dist/types/shared/assistant-protocol/add-to-dashboard.d.ts +17 -0
  126. package/dist/types/shared/assistant-protocol/artifact.d.ts +63 -0
  127. package/dist/types/shared/assistant-protocol/availability.d.ts +39 -0
  128. package/dist/types/shared/assistant-protocol/context.d.ts +952 -0
  129. package/dist/types/shared/assistant-protocol/conversation.d.ts +38 -0
  130. package/dist/types/shared/assistant-protocol/index.d.ts +16 -0
  131. package/dist/types/shared/assistant-protocol/limits.d.ts +53 -0
  132. package/dist/types/shared/assistant-protocol/parts.d.ts +140 -0
  133. package/dist/types/shared/assistant-protocol/request.d.ts +77 -0
  134. package/dist/types/shared/assistant-protocol/sources.d.ts +27 -0
  135. package/dist/types/shared/assistant-protocol/token-config.d.ts +32 -0
  136. package/dist/types/shared/assistant-protocol/transcript.d.ts +40 -0
  137. package/dist/types/shared/dashboard-authoring/card-query-request.d.ts +112 -0
  138. package/dist/types/shared/dashboard-authoring/control-execution-contract.d.ts +1794 -0
  139. package/dist/types/shared/dashboard-authoring/index.d.ts +5 -0
  140. package/dist/types/shared/dashboard-authoring/new-card.d.ts +10 -0
  141. package/dist/types/shared/dashboard-authoring/operations/apply-dashboard-operations.d.ts +40 -0
  142. package/dist/types/shared/dashboard-authoring/resolved-primary-date-field-validation.d.ts +16 -0
  143. package/dist/types/shared/format-utils/filter-detail.d.ts +70 -0
  144. package/dist/types/shared/format-utils/filter-value-text.d.ts +15 -0
  145. package/dist/types/shared/format-utils/index.d.ts +3 -0
  146. package/dist/types/shared/format-utils/raw-temporal.d.ts +7 -0
  147. package/dist/types/shared/format-utils/temporal-bucket.d.ts +7 -0
  148. package/dist/types/shared/layouts/frame-layouts.d.ts +23 -0
  149. package/dist/types/shared/layouts/index.d.ts +1 -0
  150. package/package.json +12 -2
  151. package/dist/chunks/calculated-field-identity-BptYhyOP.js +0 -1326
  152. package/dist/chunks/calendar-day-equality-BRjN1S9h.js +0 -383
  153. package/dist/chunks/card-config-utils-BOM1dxCk.js +0 -1150
  154. package/dist/chunks/constants-DNWVy8Y3.js +0 -9
  155. package/dist/chunks/dashboard-json-B1dEQu98.js +0 -65
  156. package/dist/chunks/field-aggregations-CoLzYHeL.js +0 -1229
  157. package/dist/chunks/index-DTcTAGGM.js +0 -4101
  158. package/dist/chunks/matrix-continuation-C4sRcjZU.js +0 -72
  159. package/dist/chunks/matrix-control-sources-DTqcA2_L.js +0 -636
  160. package/dist/chunks/matrix-definition-D9iShKZI.js +0 -87
  161. package/dist/chunks/matrix-member-presentation-Ct8GuxHt.js +0 -209
  162. package/dist/chunks/numeric-presentation-CWu3gunq.js +0 -537
  163. package/dist/chunks/pivot-header-presentation-CHs2GFrM.js +0 -753
  164. package/dist/chunks/pivot-result-lifecycle-DQz_gjGu.js +0 -789
  165. package/dist/chunks/raw-temporal-iMXRK-Qz.js +0 -930
  166. package/dist/chunks/report-preferences-dialog-DXPjteCU.js +0 -1623
  167. package/dist/chunks/save-kO6cIaob.js +0 -34
  168. package/dist/chunks/semantic-format-DiqYeKwU.js +0 -192
  169. package/dist/chunks/switch-DO8a0EfJ.js +0 -25004
  170. package/dist/chunks/temporal-input-presentation-BD7YNUzu.js +0 -195
  171. package/dist/chunks/x-CXDkqdur.js +0 -149
  172. package/dist/types/lib/class-utils.d.ts +0 -2
  173. package/dist/types/lib/document/document-input-runtime.d.ts +0 -26
  174. package/dist/types/lib/utils.d.ts +0 -51
@@ -0,0 +1,804 @@
1
+ var M = Object.defineProperty;
2
+ var F = (e, o, t) => o in e ? M(e, o, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[o] = t;
3
+ var u = (e, o, t) => F(e, typeof o != "symbol" ? o + "" : o, t);
4
+ import { z as l } from "zod";
5
+ import { m as T, o as P, i as O } from "./raw-temporal-D61lr48Y.js";
6
+ import { b as U } from "./report-runtime-context-B984Nq1E.js";
7
+ import { g as p, b as q } from "./temporal-bucket-D8JF7zKz.js";
8
+ import { S as N } from "./analytics-base-schemas-BFAoRlkU.js";
9
+ import "./validators-Ej1DdCXa.js";
10
+ import "./matrix-operation-contract-B8PBF1Gd.js";
11
+ import { r as B } from "./metric-comparison-CojWeLqx.js";
12
+ import { a as z } from "./temporal-bucket-contract-DaOajRC7.js";
13
+ import { d as D, P as J } from "./pivot-result-identity-D6hhcRXi.js";
14
+ const X = 5 * 1024 * 1024, x = l.number().int().positive().max(Number.MAX_SAFE_INTEGER), g = l.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER), I = g.refine((e) => e > 0), G = (e) => !!e && e !== "." && e !== ".." && !e.includes("/") && !e.includes("\\");
15
+ function v(e, o) {
16
+ const t = o.split("/");
17
+ if (t.length !== 5 || t[0] !== "exports" || t[1] !== e || t[2] !== "attempts" || !t.every(G))
18
+ throw new Error("Invalid Matrix export artifact namespace.");
19
+ return { attemptId: t[3], filename: t[4] };
20
+ }
21
+ function Ee(e, o, t) {
22
+ const r = `exports/${e}/attempts/${o}/${t}`;
23
+ return v(e, r), r;
24
+ }
25
+ const $e = l.object({
26
+ acquisition: l.literal("continuation"),
27
+ jobId: l.string().min(1),
28
+ sequence: I,
29
+ deadlineAt: x
30
+ }), L = l.object({
31
+ key: l.string(),
32
+ content: l.string(),
33
+ contentType: l.enum(["text/csv", "application/json"]),
34
+ encoding: l.literal("gzip-base64").optional()
35
+ }).refine((e) => !e.encoding || e.contentType === "application/json", "Unsupported Matrix artifact encoding."), V = l.discriminatedUnion("kind", [
36
+ l.object({ kind: l.literal("work"), sequence: I, checkpointKey: l.string(), objects: l.array(L).min(2).max(3), deadlineAt: x }),
37
+ l.object({ kind: l.literal("committed"), sequence: I, done: l.boolean(), deadlineAt: x })
38
+ ]);
39
+ function Y(e) {
40
+ const o = JSON.stringify(e);
41
+ if (o === void 0 || new TextEncoder().encode(o).byteLength > X)
42
+ throw new RangeError("Matrix export batch exceeds its transport byte limit.");
43
+ }
44
+ function Se(e, o) {
45
+ const t = V.parse(e);
46
+ if (Y(e), t.deadlineAt !== o.deadlineAt) throw new Error("Matrix deadline does not match the job.");
47
+ if (t.sequence !== o.sequence + (t.kind === "committed" ? 1 : 0))
48
+ throw new Error("Invalid Matrix batch sequence.");
49
+ if (t.kind === "work") {
50
+ v(o.jobId, t.checkpointKey);
51
+ for (const r of t.objects)
52
+ v(o.jobId, r.key);
53
+ }
54
+ return t;
55
+ }
56
+ const H = l.object({
57
+ acquisition: l.literal("continuation"),
58
+ deadlineAt: x,
59
+ chunks: l.array(l.object({ chunkNumber: I, dataKey: l.string() })).min(1),
60
+ totalRows: g,
61
+ totalBytes: g,
62
+ fileKey: l.string().min(1).optional(),
63
+ fileSize: g.optional()
64
+ }).refine((e) => e.fileKey === void 0 == (e.fileSize === void 0), "Incomplete published Matrix artifact.");
65
+ function _e(e, o, t) {
66
+ const r = H.parse(e);
67
+ if (r.deadlineAt !== t) throw new Error("Matrix deadline does not match the job.");
68
+ return r.chunks.forEach((n, i) => {
69
+ if (n.chunkNumber !== i + 1) throw new Error("Invalid committed Matrix chunk order.");
70
+ v(o, n.dataKey);
71
+ }), r.fileKey !== void 0 && v(o, r.fileKey), r;
72
+ }
73
+ class $ extends Error {
74
+ constructor(t) {
75
+ super(
76
+ `invalid_presentation_execution_snapshot: ${t} Resave this report before running it again.`
77
+ );
78
+ u(this, "code", "invalid_presentation_execution_snapshot");
79
+ u(this, "deliveryBlocking", !0);
80
+ this.name = "PresentationExecutionSnapshotError";
81
+ }
82
+ }
83
+ class Ce extends Error {
84
+ constructor(t) {
85
+ super(
86
+ `missing_resolved_raw_temporal_format: Column "${t}" has no captured presentation. Resave this report before running it again.`
87
+ );
88
+ u(this, "code", "missing_resolved_raw_temporal_format");
89
+ u(this, "deliveryBlocking", !0);
90
+ this.name = "MissingResolvedRawTemporalFormatError";
91
+ }
92
+ }
93
+ function w(e, o, t) {
94
+ const r = new Set(o), n = Object.keys(e).find((i) => !r.has(i));
95
+ if (n)
96
+ throw new Error(`${t} contains unknown property "${n}"`);
97
+ }
98
+ function Q(e, o = "scope") {
99
+ if (!p(e))
100
+ throw new Error(`${o} must be an object`);
101
+ w(
102
+ e,
103
+ ["dashboardId", "cardId", "attachmentIndex"],
104
+ o
105
+ );
106
+ const t = typeof e.dashboardId == "string" ? e.dashboardId.trim() : "";
107
+ if (!t)
108
+ throw new Error(`${o}.dashboardId is required`);
109
+ const r = typeof e.cardId == "string" ? e.cardId.trim() : void 0;
110
+ if (e.cardId !== void 0 && !r)
111
+ throw new Error(`${o}.cardId must be a non-empty string`);
112
+ const n = e.attachmentIndex;
113
+ if (n !== void 0 && (typeof n != "number" || !Number.isInteger(n) || n < 0))
114
+ throw new Error(
115
+ `${o}.attachmentIndex must be a non-negative integer`
116
+ );
117
+ return {
118
+ dashboardId: t,
119
+ ...r ? { cardId: r } : {},
120
+ ...typeof n == "number" ? { attachmentIndex: n } : {}
121
+ };
122
+ }
123
+ function h(e, o, t, r) {
124
+ if (e.kind !== o) return;
125
+ w(e, ["kind", t], r);
126
+ const n = typeof e[t] == "string" ? e[t].trim() : "";
127
+ if (!n)
128
+ throw new Error(`${r}.${t} is required`);
129
+ return n;
130
+ }
131
+ function S(e, o) {
132
+ if (!p(e))
133
+ throw new Error(`${o} must be an object`);
134
+ const t = h(e, "metric", "metricId", o);
135
+ if (t) return { kind: "metric", metricId: t };
136
+ const r = h(e, "column", "columnKey", o);
137
+ if (r) return { kind: "column", columnKey: r };
138
+ const n = h(
139
+ e,
140
+ "matrix_measure",
141
+ "measureId",
142
+ o
143
+ );
144
+ if (n) return { kind: "matrix_measure", measureId: n };
145
+ throw new Error(`${o} is not a valid numeric presentation target`);
146
+ }
147
+ const W = [
148
+ "type",
149
+ "inputUnit",
150
+ "outputStyle",
151
+ "largestUnit",
152
+ "smallestUnit",
153
+ "maxUnits",
154
+ "prefix",
155
+ "suffix",
156
+ "negativeStyle"
157
+ ];
158
+ function Z(e) {
159
+ return e === "millisecond" || e === "second" || e === "minute" || e === "hour" || e === "day";
160
+ }
161
+ function ee(e, o) {
162
+ w(e, W, o);
163
+ for (const i of ["inputUnit", "largestUnit", "smallestUnit"])
164
+ if (e[i] !== void 0 && !Z(e[i]))
165
+ throw new Error(`${o}.${i} must be a duration unit`);
166
+ const t = e.outputStyle;
167
+ if (t !== void 0 && t !== "compact" && t !== "digital" && t !== "long")
168
+ throw new Error(`${o}.outputStyle must be compact, digital, or long`);
169
+ const r = e.maxUnits;
170
+ if (r !== void 0 && (typeof r != "number" || !Number.isInteger(r) || r < 0 || r > 10))
171
+ throw new Error(`${o}.maxUnits must be an integer from 0 to 10`);
172
+ for (const i of ["prefix", "suffix"])
173
+ if (e[i] !== void 0 && typeof e[i] != "string")
174
+ throw new Error(`${o}.${i} must be a string`);
175
+ const n = e.negativeStyle;
176
+ if (n !== void 0 && n !== "minus" && n !== "parentheses")
177
+ throw new Error(`${o}.negativeStyle must be minus or parentheses`);
178
+ return {
179
+ type: "duration",
180
+ ...e.inputUnit !== void 0 ? { inputUnit: e.inputUnit } : {},
181
+ ...t !== void 0 ? { outputStyle: t } : {},
182
+ ...e.largestUnit !== void 0 ? { largestUnit: e.largestUnit } : {},
183
+ ...e.smallestUnit !== void 0 ? { smallestUnit: e.smallestUnit } : {},
184
+ ...r !== void 0 ? { maxUnits: r } : {},
185
+ ...e.prefix !== void 0 ? { prefix: e.prefix } : {},
186
+ ...e.suffix !== void 0 ? { suffix: e.suffix } : {},
187
+ ...n !== void 0 ? { negativeStyle: n } : {}
188
+ };
189
+ }
190
+ function te(e, o) {
191
+ if (!p(e))
192
+ throw new Error(`${o} must be an object`);
193
+ if (e.kind === "field") {
194
+ w(e, ["kind", "fieldId", "role"], o);
195
+ const n = typeof e.fieldId == "string" ? e.fieldId.trim() : "";
196
+ if (!n)
197
+ throw new Error(`${o}.fieldId is required`);
198
+ const i = e.role;
199
+ if (i !== void 0 && i !== "groupby" && i !== "pivotby")
200
+ throw new Error(`${o}.role must be groupby or pivotby`);
201
+ return {
202
+ kind: "field",
203
+ fieldId: n,
204
+ ...i ? { role: i } : {}
205
+ };
206
+ }
207
+ const t = h(e, "column", "columnKey", o);
208
+ if (t) return { kind: "column", columnKey: t };
209
+ const r = h(
210
+ e,
211
+ "matrix_axis",
212
+ "axisInstanceId",
213
+ o
214
+ );
215
+ if (r) return { kind: "matrix_axis", axisInstanceId: r };
216
+ throw new Error(`${o} is not a valid temporal bucket presentation target`);
217
+ }
218
+ function oe(e, o) {
219
+ if (!p(e))
220
+ throw new Error(`${o} must be an object`);
221
+ const t = h(e, "column", "columnKey", o);
222
+ if (!t)
223
+ throw new Error(`${o} must identify a column`);
224
+ return { kind: "column", columnKey: t };
225
+ }
226
+ function re(e) {
227
+ return [
228
+ e.dashboardId,
229
+ e.cardId ?? null,
230
+ e.attachmentIndex ?? null
231
+ ];
232
+ }
233
+ function k(e) {
234
+ switch (e.kind) {
235
+ case "metric":
236
+ return [e.kind, e.metricId];
237
+ case "column":
238
+ return [e.kind, e.columnKey];
239
+ case "matrix_measure":
240
+ return [e.kind, e.measureId];
241
+ case "field":
242
+ return [e.kind, e.fieldId, e.role ?? ""];
243
+ case "matrix_axis":
244
+ return [e.kind, e.axisInstanceId];
245
+ }
246
+ }
247
+ function A(e, o) {
248
+ return e.dashboardId === o.dashboardId && e.cardId === o.cardId && e.attachmentIndex === o.attachmentIndex;
249
+ }
250
+ function R(e, o) {
251
+ const t = k(e), r = k(o);
252
+ return t.length === r.length && t.every((n, i) => n === r[i]);
253
+ }
254
+ function ne(e) {
255
+ if (!Array.isArray(e))
256
+ throw new Error("resolvedFormats must be an array");
257
+ const o = /* @__PURE__ */ new Set();
258
+ return e.map((t, r) => {
259
+ var f, y;
260
+ const n = `resolvedFormats.${r}`;
261
+ if (!p(t))
262
+ throw new Error(`${n} must be an object`);
263
+ w(t, ["scope", "target", "format"], n);
264
+ const i = Q(t.scope, `${n}.scope`);
265
+ if (!p(t.format))
266
+ throw new Error(`${n}.format must be an object`);
267
+ let s;
268
+ switch (t.format.type) {
269
+ case "temporal_bucket": {
270
+ const d = q(t.format);
271
+ if (!d.ok)
272
+ throw new Error(
273
+ `${n}.format is invalid: ${((f = d.issues[0]) == null ? void 0 : f.message) ?? "invalid value"}`
274
+ );
275
+ s = {
276
+ scope: i,
277
+ target: te(t.target, `${n}.target`),
278
+ format: d.value
279
+ };
280
+ break;
281
+ }
282
+ case "raw_temporal":
283
+ s = {
284
+ scope: i,
285
+ target: oe(t.target, `${n}.target`),
286
+ format: P(t.format)
287
+ };
288
+ break;
289
+ case "number":
290
+ case "currency":
291
+ case "percent":
292
+ case "scientific": {
293
+ const d = T(t.format);
294
+ if (!d.ok)
295
+ throw new Error(
296
+ `${n}.format is invalid: ${((y = d.issues[0]) == null ? void 0 : y.message) ?? "invalid value"}`
297
+ );
298
+ s = {
299
+ scope: i,
300
+ target: S(t.target, `${n}.target`),
301
+ format: d.value
302
+ };
303
+ break;
304
+ }
305
+ case "duration":
306
+ s = {
307
+ scope: i,
308
+ target: S(t.target, `${n}.target`),
309
+ format: ee(
310
+ t.format,
311
+ `${n}.format`
312
+ )
313
+ };
314
+ break;
315
+ default:
316
+ throw new Error(`${n}.format.type is unsupported`);
317
+ }
318
+ const c = JSON.stringify([
319
+ ...re(s.scope),
320
+ ...k(s.target)
321
+ ]);
322
+ if (o.has(c))
323
+ throw new Error(
324
+ `${n} duplicates a scoped presentation target`
325
+ );
326
+ return o.add(c), s;
327
+ });
328
+ }
329
+ function ie(e) {
330
+ try {
331
+ if (!p(e))
332
+ throw new Error("presentation execution snapshot must be an object");
333
+ if (w(
334
+ e,
335
+ ["version", "reportContext", "resolvedFormats"],
336
+ "presentation execution snapshot"
337
+ ), e.version !== 1)
338
+ throw new Error("presentation execution snapshot version must be 1");
339
+ const o = U(e.reportContext);
340
+ if (!o.ok) {
341
+ const t = o.issues[0];
342
+ throw new Error(
343
+ `presentation execution snapshot reportContext is invalid: ${t != null && t.path && t.path !== "$" ? `${t.path}: ` : ""}${(t == null ? void 0 : t.message) ?? "invalid value"}`
344
+ );
345
+ }
346
+ return {
347
+ version: 1,
348
+ reportContext: o.value,
349
+ resolvedFormats: ne(e.resolvedFormats)
350
+ };
351
+ } catch (o) {
352
+ throw o instanceof $ ? o : new $(
353
+ o instanceof Error ? o.message : "Snapshot is invalid."
354
+ );
355
+ }
356
+ }
357
+ function Ke(e) {
358
+ return ie({
359
+ version: 1,
360
+ reportContext: e.reportContext,
361
+ resolvedFormats: [...e.resolvedFormats]
362
+ });
363
+ }
364
+ function je(e) {
365
+ const o = se(e);
366
+ return O(o) ? o : void 0;
367
+ }
368
+ function se(e) {
369
+ const o = e.snapshot.resolvedFormats.find(
370
+ (t) => t.format.type !== "temporal_bucket" && t.format.type !== "raw_temporal" && A(t.scope, e.scope) && R(t.target, e.target)
371
+ );
372
+ return o == null ? void 0 : o.format;
373
+ }
374
+ function Me(e) {
375
+ const o = e.snapshot.resolvedFormats.find(
376
+ (t) => t.format.type === "raw_temporal" && A(t.scope, e.scope) && R(t.target, e.target)
377
+ );
378
+ return o == null ? void 0 : o.format;
379
+ }
380
+ function Fe(e) {
381
+ const o = e.snapshot.resolvedFormats.find(
382
+ (t) => t.format.type === "temporal_bucket" && A(t.scope, e.scope) && R(t.target, e.target)
383
+ );
384
+ return o == null ? void 0 : o.format;
385
+ }
386
+ function Te(e) {
387
+ var n;
388
+ const o = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set();
389
+ if (e.snapshot.resolvedFormats.forEach((i, s) => {
390
+ if (i.scope.attachmentIndex !== void 0)
391
+ throw new Error(
392
+ `resolvedFormats.${s}.scope.attachmentIndex is not valid for a card export`
393
+ );
394
+ if (i.scope.dashboardId !== e.expectedScope.dashboardId || i.scope.cardId !== e.expectedScope.cardId)
395
+ throw new Error(
396
+ `resolvedFormats.${s}.scope must match the executing dashboard/card`
397
+ );
398
+ if (i.target.kind === "field" && i.format.type === "temporal_bucket") {
399
+ const c = JSON.stringify(k(i.target));
400
+ if (t.has(c))
401
+ throw new Error(
402
+ `resolvedFormats.${s} duplicates export field "${i.target.fieldId}"`
403
+ );
404
+ t.add(c);
405
+ return;
406
+ }
407
+ if (i.target.kind !== "column")
408
+ throw new Error(
409
+ `resolvedFormats.${s}.target must identify an export column or temporal pivot field`
410
+ );
411
+ if (o.has(i.target.columnKey))
412
+ throw new Error(
413
+ `resolvedFormats.${s} duplicates export column "${i.target.columnKey}"`
414
+ );
415
+ o.add(i.target.columnKey);
416
+ }), !e.useFormattedValues) return;
417
+ if (!((n = e.visibleColumns) != null && n.length))
418
+ throw new Error("visibleColumns must identify every formatted export column");
419
+ const r = e.visibleColumns.find(
420
+ (i) => !o.has(i)
421
+ );
422
+ if (r)
423
+ throw new Error(
424
+ `resolvedFormats is missing visible export column "${r}"`
425
+ );
426
+ }
427
+ function b(e) {
428
+ return Array.from(
429
+ new Set(
430
+ (e ?? []).flatMap(
431
+ (o) => typeof o.id == "string" && o.id ? [o.id] : []
432
+ )
433
+ )
434
+ );
435
+ }
436
+ function ae(e) {
437
+ const o = /* @__PURE__ */ new Map();
438
+ return e.forEach((t) => {
439
+ t.id && o.set(t.id, (o.get(t.id) ?? 0) + 1);
440
+ }), e.flatMap(
441
+ (t) => t.id && (o.get(t.id) ?? 0) > 1 ? [B(t)] : []
442
+ );
443
+ }
444
+ function Pe(e) {
445
+ const o = e.metricFields ?? [], t = b(o);
446
+ return {
447
+ expectedRoleFieldIds: {
448
+ groupby: b(e.groupByFields),
449
+ metric: t.length > 0 ? t : [N],
450
+ pivotby: b(e.pivotByFields),
451
+ detail: b(e.detailFields)
452
+ },
453
+ expectedMetricAliases: ae(o)
454
+ };
455
+ }
456
+ class a extends Error {
457
+ constructor(t, r) {
458
+ super(`invalid_pivot_result_lifecycle: ${t}`);
459
+ u(this, "code", "invalid_pivot_result_lifecycle");
460
+ u(this, "deliveryBlocking", !0);
461
+ this.cause = r, this.name = "PivotResultLifecycleError";
462
+ }
463
+ }
464
+ function ce(e) {
465
+ if (!Array.isArray(e) || e.some(
466
+ (t) => !t || typeof t != "object" || Array.isArray(t) || typeof t.key != "string" || !t.key || typeof t.name != "string" || typeof t.label != "string"
467
+ ))
468
+ throw new a(
469
+ "Canonical pivot columns must be an array of keyed, named result descriptors."
470
+ );
471
+ const o = e;
472
+ if (new Set(o.map((t) => t.key)).size !== o.length)
473
+ throw new a(
474
+ "Canonical pivot column keys must be unique."
475
+ );
476
+ for (const t of o) {
477
+ const r = z(t, {
478
+ metadataRequired: !1
479
+ });
480
+ if (!r.ok)
481
+ throw new a(
482
+ `Canonical pivot column "${t.key}" has invalid temporal metadata: ${r.error.message}`
483
+ );
484
+ }
485
+ return o;
486
+ }
487
+ function _(e) {
488
+ if (!e || typeof e != "object" || Array.isArray(e) || e.version !== 1 || e.source !== "explorer" || !e.byRole || typeof e.byRole != "object" || Array.isArray(e.byRole))
489
+ throw new a(
490
+ "A loaded canonical pivot result requires its role-scoped column key map."
491
+ );
492
+ const o = e, t = /* @__PURE__ */ new Set(["groupby", "metric", "pivotby", "detail"]);
493
+ for (const [r, n] of Object.entries(o.byRole)) {
494
+ if (!t.has(r) || !n || typeof n != "object" || Array.isArray(n))
495
+ throw new a(
496
+ `Canonical pivot role map contains invalid "${r}" bindings.`
497
+ );
498
+ for (const [i, s] of Object.entries(n))
499
+ if (!i || !s || typeof s != "object" || Array.isArray(s) || s.role !== r || typeof s.rawKey != "string" || !s.rawKey || s.outputKey !== void 0 && (typeof s.outputKey != "string" || !s.outputKey))
500
+ throw new a(
501
+ `Canonical pivot role map contains an invalid "${r}:${i}" binding.`
502
+ );
503
+ }
504
+ if (o.byMetricAlias !== void 0) {
505
+ if (!o.byMetricAlias || typeof o.byMetricAlias != "object" || Array.isArray(o.byMetricAlias))
506
+ throw new a(
507
+ "Canonical pivot metric-alias bindings must be an object."
508
+ );
509
+ for (const [r, n] of Object.entries(
510
+ o.byMetricAlias
511
+ ))
512
+ if (!r || !n || typeof n != "object" || Array.isArray(n) || n.role !== "metric" || typeof n.rawKey != "string" || !n.rawKey || n.outputKey !== void 0 && (typeof n.outputKey != "string" || !n.outputKey))
513
+ throw new a(
514
+ `Canonical pivot metric-alias map contains an invalid "${r}" binding.`
515
+ );
516
+ }
517
+ return o;
518
+ }
519
+ function le(e) {
520
+ if (e === void 0) return {};
521
+ if (!e || typeof e != "object" || Array.isArray(e))
522
+ throw new a(
523
+ "Canonical pivot column metadata must be an object."
524
+ );
525
+ for (const [o, t] of Object.entries(e)) {
526
+ if (!o || !t || typeof t != "object" || Array.isArray(t))
527
+ throw new a(
528
+ `Canonical pivot column metadata contains an invalid "${o}" classification.`
529
+ );
530
+ const { isSubtotal: r, subtotalScope: n } = t;
531
+ if (r !== void 0 && typeof r != "boolean" || n !== void 0 && n !== "base" && n !== "pivot-value" && n !== "grand-total" || r === !0 && n !== "pivot-value" && n !== "grand-total" || (n === "pivot-value" || n === "grand-total") && r !== !0 || n === "base" && r === !0)
532
+ throw new a(
533
+ `Canonical pivot column metadata contains an incoherent "${o}" subtotal classification.`
534
+ );
535
+ }
536
+ return e;
537
+ }
538
+ function C(e, o) {
539
+ if (!Array.isArray(e) || e.some((t) => typeof t != "string" || !t) || new Set(e).size !== e.length)
540
+ throw new a(
541
+ `Canonical pivot contract ${o} must be an array of unique field identities.`
542
+ );
543
+ return e;
544
+ }
545
+ function de(e, o) {
546
+ if (!e || typeof e != "object" || Array.isArray(e) || e.version !== 1)
547
+ throw new a(
548
+ "A canonical pivot result requires its versioned result contract."
549
+ );
550
+ const t = e, r = t.expectedRoleFieldIds;
551
+ if (!r || typeof r != "object" || Array.isArray(r))
552
+ throw new a(
553
+ "Canonical pivot contract role identities must be an object."
554
+ );
555
+ const i = Object.fromEntries(
556
+ [
557
+ "groupby",
558
+ "metric",
559
+ "pivotby",
560
+ "detail"
561
+ ].map((m) => [
562
+ m,
563
+ C(
564
+ r[m],
565
+ `expectedRoleFieldIds.${m}`
566
+ )
567
+ ])
568
+ ), s = C(
569
+ t.expectedMetricAliases,
570
+ "expectedMetricAliases"
571
+ ), c = t.columnKinds;
572
+ if (!c || typeof c != "object" || Array.isArray(c))
573
+ throw new a(
574
+ "Canonical pivot contract column kinds must be an object."
575
+ );
576
+ const f = /* @__PURE__ */ new Set([
577
+ "row",
578
+ "pivot_metric",
579
+ "value"
580
+ ]), y = o.map((m) => m.key), d = Object.keys(c);
581
+ if (d.length !== y.length || d.some(
582
+ (m) => !y.includes(m) || !f.has(
583
+ c[m]
584
+ )
585
+ ))
586
+ throw new a(
587
+ "Canonical pivot contract must classify every authoritative result column exactly once."
588
+ );
589
+ const E = le(
590
+ t.columnClassifications
591
+ );
592
+ if (Object.keys(E).some(
593
+ (m) => !y.includes(m)
594
+ ))
595
+ throw new a(
596
+ "Canonical pivot contract contains a classification for an unknown result column."
597
+ );
598
+ return {
599
+ version: 1,
600
+ expectedRoleFieldIds: i,
601
+ expectedMetricAliases: s,
602
+ columnKinds: c,
603
+ columnClassifications: E
604
+ };
605
+ }
606
+ function K(e, o) {
607
+ const t = [
608
+ "groupby",
609
+ "metric",
610
+ "pivotby",
611
+ "detail"
612
+ ];
613
+ for (const i of t) {
614
+ const s = new Set(o.expectedRoleFieldIds[i] ?? []), c = Object.keys(e.byRole[i] ?? {});
615
+ if (c.length !== s.size || c.some((f) => !s.has(f)))
616
+ throw new a(
617
+ `The role-scoped ${i} bindings do not match the authored result fields.`
618
+ );
619
+ }
620
+ const r = new Set(o.expectedMetricAliases), n = Object.keys(e.byMetricAlias ?? {});
621
+ if (n.length !== r.size || n.some((i) => !r.has(i)))
622
+ throw new a(
623
+ "The metric-alias bindings do not match the authored metric instances."
624
+ );
625
+ }
626
+ function me(e) {
627
+ if (!Array.isArray(e) || e.some(
628
+ (o) => !o || typeof o != "object" || Array.isArray(o)
629
+ ))
630
+ throw new a(
631
+ "Canonical pivot records must be an array of row objects."
632
+ );
633
+ return e;
634
+ }
635
+ function fe(e, o) {
636
+ e.forEach((t, r) => {
637
+ o.forEach((n) => {
638
+ if (!Object.prototype.hasOwnProperty.call(t, n.key) || t[n.key] === void 0)
639
+ throw new a(
640
+ `Canonical pivot column "${n.key}" is absent from row ${r}.`
641
+ );
642
+ });
643
+ });
644
+ }
645
+ function ue(e, o, t) {
646
+ const r = new Set(o.map((n) => n.key));
647
+ ["groupby", "detail"].forEach((n) => {
648
+ Object.entries(e.byRole[n] ?? {}).forEach(
649
+ ([i, s]) => {
650
+ const c = s.outputKey || s.rawKey;
651
+ if (!r.has(c) || t.columnKinds[c] !== "row")
652
+ throw new a(
653
+ `The role-scoped ${n} binding for "${i}" does not name an authoritative result column.`
654
+ );
655
+ }
656
+ );
657
+ });
658
+ }
659
+ function j(e, o) {
660
+ o.forEach((t) => {
661
+ const r = e.columnKinds[t.key];
662
+ if (r === "pivot_metric" && t.pivotIdentity === void 0)
663
+ throw new a(
664
+ `Physical pivot result column "${t.key}" is missing its identity.`
665
+ );
666
+ if (r !== "pivot_metric" && t.pivotIdentity !== void 0)
667
+ throw new a(
668
+ `Canonical pivot result column "${t.key}" carries pivot identity outside the physical pivot projection.`
669
+ );
670
+ });
671
+ }
672
+ function pe(e) {
673
+ const o = me(e.records), t = ce(e.columns), r = de(
674
+ e.pivotResultContract,
675
+ t
676
+ ), n = r.expectedRoleFieldIds.pivotby ?? [];
677
+ if (e.pivotResultState === "loaded_empty") {
678
+ if (o.length !== 0)
679
+ throw new a(
680
+ "A loaded_empty pivot result cannot carry records."
681
+ );
682
+ if (t.some(
683
+ (f) => r.columnKinds[f.key] === "pivot_metric"
684
+ ))
685
+ throw new a(
686
+ "A loaded_empty pivot result cannot carry physical pivot columns."
687
+ );
688
+ j(r, t);
689
+ const c = _(e.columnKeyMap);
690
+ return K(c, r), {
691
+ pivotResultState: "loaded_empty",
692
+ records: [],
693
+ columns: t,
694
+ columnKeyMap: c,
695
+ pivotResultContract: r
696
+ };
697
+ }
698
+ if (e.pivotResultState !== "loaded_valid")
699
+ throw new a(
700
+ "A canonical pivot result must declare loaded_empty or loaded_valid."
701
+ );
702
+ if (o.length === 0)
703
+ throw new a(
704
+ "A loaded_valid pivot result must carry at least one record."
705
+ );
706
+ const i = _(e.columnKeyMap);
707
+ K(i, r), ue(i, t, r), j(r, t);
708
+ const s = t.filter(
709
+ (c) => r.columnKinds[c.key] === "pivot_metric"
710
+ );
711
+ if (n.length > 0 && s.length === 0)
712
+ throw new a(
713
+ "A loaded_valid pivot result is missing its physical pivot columns."
714
+ );
715
+ try {
716
+ D(s, {
717
+ expectedPivotFieldIds: n,
718
+ columnClassifications: r.columnClassifications
719
+ });
720
+ } catch (c) {
721
+ throw c instanceof J ? new a(c.message, c) : c;
722
+ }
723
+ return fe(o, t), {
724
+ pivotResultState: "loaded_valid",
725
+ records: o,
726
+ columns: t,
727
+ columnKeyMap: i,
728
+ pivotResultContract: r
729
+ };
730
+ }
731
+ function Oe(e) {
732
+ const o = /* @__PURE__ */ new Set();
733
+ ["groupby", "detail"].forEach((i) => {
734
+ Object.values(e.columnKeyMap.byRole[i] ?? {}).forEach((s) => {
735
+ o.add(s.outputKey || s.rawKey);
736
+ });
737
+ });
738
+ const t = new Set(e.physicalPivotColumnKeys), r = new Set(
739
+ e.columns.map((i) => i.key)
740
+ ), n = {
741
+ version: 1,
742
+ expectedRoleFieldIds: {
743
+ groupby: Array.from(
744
+ new Set(e.expectedRoleFieldIds.groupby ?? [])
745
+ ),
746
+ metric: Array.from(
747
+ new Set(e.expectedRoleFieldIds.metric ?? [])
748
+ ),
749
+ pivotby: Array.from(
750
+ new Set(e.expectedRoleFieldIds.pivotby ?? [])
751
+ ),
752
+ detail: Array.from(
753
+ new Set(e.expectedRoleFieldIds.detail ?? [])
754
+ )
755
+ },
756
+ expectedMetricAliases: [...e.expectedMetricAliases ?? []],
757
+ columnKinds: Object.fromEntries(
758
+ e.columns.map((i) => [
759
+ i.key,
760
+ o.has(i.key) ? "row" : t.has(i.key) ? "pivot_metric" : "value"
761
+ ])
762
+ ),
763
+ columnClassifications: Object.fromEntries(
764
+ Object.entries(e.columnMetadata ?? {}).filter(
765
+ ([i]) => r.has(i)
766
+ )
767
+ )
768
+ };
769
+ return pe({
770
+ pivotResultState: e.records.length === 0 ? "loaded_empty" : "loaded_valid",
771
+ pivotResultContract: n,
772
+ records: e.records,
773
+ columns: e.columns,
774
+ columnKeyMap: e.columnKeyMap
775
+ });
776
+ }
777
+ export {
778
+ X as M,
779
+ $ as P,
780
+ Ee as a,
781
+ $e as b,
782
+ V as c,
783
+ Y as d,
784
+ Se as e,
785
+ se as f,
786
+ H as g,
787
+ _e as h,
788
+ Ce as i,
789
+ Q as j,
790
+ ne as k,
791
+ ie as l,
792
+ x as m,
793
+ Ke as n,
794
+ je as o,
795
+ v as p,
796
+ Me as q,
797
+ Fe as r,
798
+ ae as s,
799
+ Pe as t,
800
+ a as u,
801
+ Te as v,
802
+ pe as w,
803
+ Oe as x
804
+ };