bps-mcp-server 0.16.4 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +13 -5
  2. package/dist/client/bps-client.d.ts +10 -1
  3. package/dist/client/bps-client.d.ts.map +1 -1
  4. package/dist/client/bps-client.js +66 -13
  5. package/dist/client/bps-client.js.map +1 -1
  6. package/dist/client/request-scheduler.d.ts +29 -0
  7. package/dist/client/request-scheduler.d.ts.map +1 -0
  8. package/dist/client/request-scheduler.js +75 -0
  9. package/dist/client/request-scheduler.js.map +1 -0
  10. package/dist/config/kabkota-indicators.d.ts +30 -0
  11. package/dist/config/kabkota-indicators.d.ts.map +1 -0
  12. package/dist/config/kabkota-indicators.js +49 -0
  13. package/dist/config/kabkota-indicators.js.map +1 -0
  14. package/dist/server.d.ts.map +1 -1
  15. package/dist/server.js +34 -0
  16. package/dist/server.js.map +1 -1
  17. package/dist/services/data-formatter.d.ts +28 -0
  18. package/dist/services/data-formatter.d.ts.map +1 -1
  19. package/dist/services/data-formatter.js +74 -0
  20. package/dist/services/data-formatter.js.map +1 -1
  21. package/dist/services/intent-detector.d.ts.map +1 -1
  22. package/dist/services/intent-detector.js +1 -0
  23. package/dist/services/intent-detector.js.map +1 -1
  24. package/dist/services/kabkota-ranking.d.ts +61 -0
  25. package/dist/services/kabkota-ranking.d.ts.map +1 -0
  26. package/dist/services/kabkota-ranking.js +378 -0
  27. package/dist/services/kabkota-ranking.js.map +1 -0
  28. package/dist/services/period-resolver.d.ts +29 -0
  29. package/dist/services/period-resolver.d.ts.map +1 -0
  30. package/dist/services/period-resolver.js +132 -0
  31. package/dist/services/period-resolver.js.map +1 -0
  32. package/dist/services/region-series.d.ts +65 -0
  33. package/dist/services/region-series.d.ts.map +1 -0
  34. package/dist/services/region-series.js +396 -0
  35. package/dist/services/region-series.js.map +1 -0
  36. package/dist/services/variable-search.d.ts.map +1 -1
  37. package/dist/services/variable-search.js +2 -1
  38. package/dist/services/variable-search.js.map +1 -1
  39. package/dist/tools/analysis.tools.d.ts.map +1 -1
  40. package/dist/tools/analysis.tools.js +370 -285
  41. package/dist/tools/analysis.tools.js.map +1 -1
  42. package/dist/tools/dynamic-data.tools.d.ts.map +1 -1
  43. package/dist/tools/dynamic-data.tools.js +145 -32
  44. package/dist/tools/dynamic-data.tools.js.map +1 -1
  45. package/dist/tools/search.tools.d.ts.map +1 -1
  46. package/dist/tools/search.tools.js +14 -2
  47. package/dist/tools/search.tools.js.map +1 -1
  48. package/dist/tools/smart.tools.d.ts.map +1 -1
  49. package/dist/tools/smart.tools.js +49 -11
  50. package/dist/tools/smart.tools.js.map +1 -1
  51. package/dist/utils/error.d.ts +11 -1
  52. package/dist/utils/error.d.ts.map +1 -1
  53. package/dist/utils/error.js +50 -2
  54. package/dist/utils/error.js.map +1 -1
  55. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -20,10 +20,44 @@ import { registerNewsTools } from "./tools/news.tools.js";
20
20
  import { registerGlossaryTools } from "./tools/glossary.tools.js";
21
21
  import { registerResources } from "./resources/domain.resources.js";
22
22
  import { registerPrompts } from "./prompts/analysis.prompts.js";
23
+ /**
24
+ * Routing rules sent to the client at initialize time.
25
+ *
26
+ * BPS has no national kabupaten/kota table, so a model that "just searches"
27
+ * ends up sweeping 30+ provincial domains and burning ~150 tool calls. The
28
+ * dedicated tools already do that sweep internally — these instructions exist
29
+ * so the model picks them instead of rebuilding the sweep by hand.
30
+ */
31
+ const SERVER_INSTRUCTIONS = `Server ini menyediakan data BPS (WebAPI + AllStats).
32
+
33
+ ATURAN ROUTING (penting, hemat panggilan):
34
+ 1. Peringkat/top-N wilayah ("10 kabupaten/kota ... tertinggi", "5 provinsi termiskin")
35
+ -> get_ranking. Parameter 'level' WAJIB diisi:
36
+ - level="kabkota" bila jawaban perlu kabupaten/kota. Satu panggilan sudah
37
+ menyapu tabel tiap provinsi dan menyeragamkan tahun (period_mode="common").
38
+ - level="provinsi" untuk peringkat provinsi.
39
+ JANGAN menyusun peringkat kabupaten/kota manual dengan list_variables /
40
+ get_dynamic_data per provinsi: hasilnya 100+ panggilan dan tahunnya campur.
41
+ 2. Angka satu wilayah ("pengangguran Jawa Timur") -> find_data; tren satu wilayah -> get_trend.
42
+ 3. Bandingkan 2+ wilayah -> compare_data. Perbandingan multi-tahun
43
+ ("5 tahun terakhir") juga compare_data: isi years="2021-2025" atau
44
+ start_year/end_year — satu panggilan menghasilkan tabel wilayah x tahun.
45
+ JANGAN memanggil get_trend per wilayah untuk perbandingan.
46
+ 4. Butuh angka mentah dari var_id yang sudah diketahui -> get_dynamic_data.
47
+ Parameter th menerima TAHUN langsung ('2021-2025'), tidak perlu list_periods.
48
+ Pakai format="json" bila hasilnya akan diolah lagi.
49
+ 5. Mencari variabel/tabel/publikasi -> find_variable, search, allstats_search.
50
+
51
+ CATATAN DATA: periode antar provinsi tidak seragam (2024-2026). Selalu sebutkan
52
+ tahun data saat menyajikan angka, dan jangan menyebut data lama sebagai "terkini".
53
+ Bila suatu wilayah tidak punya rincian kabupaten/kota, get_ranking(level="kabkota")
54
+ sudah melaporkannya di bagian cakupan — jangan mengulanginya manual.`;
23
55
  export function createServer(config, auth, cache, store, version) {
24
56
  const server = new McpServer({
25
57
  name: "bps-statistics",
26
58
  version: version || "0.0.0",
59
+ }, {
60
+ instructions: SERVER_INSTRUCTIONS,
27
61
  });
28
62
  const client = new BpsClient(auth, cache, config);
29
63
  const allStatsClient = new AllStatsClient(cache, config.allStatsBaseUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,19 @@
1
1
  import type { BpsDynamicDataResponse } from "../client/types.js";
2
+ /** One row of dynamic data, with every dimension named (JSON output). */
3
+ export interface StructuredRow {
4
+ /** Indicator name, e.g. "Tingkat Pengangguran Terbuka (TPT) menurut Kabupaten/Kota". */
5
+ indicator: string;
6
+ /** Vertical variable label (region, sex, ...). */
7
+ category?: string;
8
+ /** Derived variable label (the series inside the table, e.g. "TPT"). */
9
+ series?: string;
10
+ /** Period label as published, e.g. "2026". */
11
+ period: string;
12
+ /** Derived period label, e.g. "Agustus" or "Semester 1". */
13
+ subperiod?: string;
14
+ value: number | string;
15
+ unit?: string;
16
+ }
2
17
  /**
3
18
  * Format BPS dynamic data response into human/LLM-readable text.
4
19
  *
@@ -10,6 +25,19 @@ export interface FormatDynamicDataOptions {
10
25
  includeAttribution?: boolean;
11
26
  }
12
27
  export declare function formatDynamicData(response: BpsDynamicDataResponse, domain: string, lang?: "ind" | "eng", options?: FormatDynamicDataOptions): string;
28
+ /**
29
+ * Flatten a dynamic-data response into named rows so consumers do not have to
30
+ * parse markdown. Dimensions (category/series/subperiod) are resolved with the
31
+ * same logic used by the markdown renderer.
32
+ */
33
+ export declare function toStructuredRows(response: BpsDynamicDataResponse, _domain?: string): StructuredRow[];
34
+ /** Attach the domain to structured rows for JSON responses. */
35
+ export declare function buildStructuredPayload(response: BpsDynamicDataResponse, domain: string): {
36
+ domain: string;
37
+ rows: StructuredRow[];
38
+ units: string[];
39
+ note?: string;
40
+ };
13
41
  /**
14
42
  * Format a simple list of items into readable text.
15
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"data-formatter.d.ts","sourceRoot":"","sources":["../../src/services/data-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAqF,MAAM,oBAAoB,CAAC;AA2BpJ;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,KAAK,GAAG,KAAa,EAC3B,OAAO,GAAE,wBAA6B,GACrC,MAAM,CA4HR;AAgJD;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,KAAK,GAAG,KAAa,GAC1B,MAAM,CAYR"}
1
+ {"version":3,"file":"data-formatter.d.ts","sourceRoot":"","sources":["../../src/services/data-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAqF,MAAM,oBAAoB,CAAC;AA2BpJ,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,KAAK,GAAG,KAAa,EAC3B,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAmIR;AAiBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,sBAAsB,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,EAAE,CA6CjB;AAED,+DAA+D;AAC/D,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,MAAM,GACb;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAiBA;AAgJD;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,KAAK,GAAG,KAAa,GAC1B,MAAM,CAYR"}
@@ -105,8 +105,82 @@ export function formatDynamicData(response, domain, lang = "ind", options = {})
105
105
  if (units.length > 0) {
106
106
  lines.push(`**Satuan:** ${units.join(", ")}`);
107
107
  }
108
+ // Freshness: agents otherwise present 4-year-old data as if it were current.
109
+ const freshness = describeFreshness(rows);
110
+ if (freshness) {
111
+ lines.push("");
112
+ lines.push(freshness);
113
+ }
108
114
  return finalize(lines.join("\n"));
109
115
  }
116
+ /** Latest period in the payload, with a warning when it is stale. */
117
+ function describeFreshness(rows) {
118
+ const years = rows
119
+ .map((row) => Number(row.period.match(/\d{4}/)?.[0] ?? 0))
120
+ .filter((year) => year > 1900);
121
+ if (years.length === 0)
122
+ return null;
123
+ const latest = Math.max(...years);
124
+ const currentYear = new Date().getFullYear();
125
+ const age = currentYear - latest;
126
+ if (age <= 2)
127
+ return null;
128
+ return `_⚠️ Data terbaru untuk tabel ini adalah ${latest} (${age} tahun lalu); jangan disajikan sebagai data terkini._`;
129
+ }
130
+ /**
131
+ * Flatten a dynamic-data response into named rows so consumers do not have to
132
+ * parse markdown. Dimensions (category/series/subperiod) are resolved with the
133
+ * same logic used by the markdown renderer.
134
+ */
135
+ export function toStructuredRows(response, _domain) {
136
+ const varMap = buildMap(response.var, (v) => [getVariableId(v), v]);
137
+ const vervarMap = buildMap(response.vervar, (v) => [getVervarId(v), v]);
138
+ const turvarMap = buildMap(response.turvar, (v) => [getTurvarId(v), v]);
139
+ const periodMap = buildMap(response.tahun, (v) => [getPeriodId(v), v]);
140
+ const turthMap = buildMap(response.turtahun, (v) => [getTurthId(v), v]);
141
+ const varKeys = sortedKeys(varMap);
142
+ const vervarKeys = sortedKeys(vervarMap);
143
+ const turvarKeys = sortedKeys(turvarMap);
144
+ const periodKeys = sortedKeys(periodMap);
145
+ const turthKeys = sortedKeys(turthMap);
146
+ const rows = [];
147
+ for (const [key, value] of Object.entries(response.datacontent ?? {})) {
148
+ const row = resolveDatacontentKey(key, value, varMap, varKeys, vervarMap, vervarKeys, turvarMap, turvarKeys, periodMap, periodKeys, turthMap, turthKeys);
149
+ if (!row)
150
+ continue;
151
+ const series = row.derivedVariable && !/^tidak ada$/i.test(row.derivedVariable.trim())
152
+ ? row.derivedVariable
153
+ : undefined;
154
+ const subperiod = isNeutralPeriodLabel(row.derivedPeriod) ? undefined : row.derivedPeriod;
155
+ rows.push({
156
+ indicator: row.variable,
157
+ category: row.verticalVariable,
158
+ series,
159
+ period: row.period,
160
+ subperiod,
161
+ value: row.value,
162
+ unit: row.unit,
163
+ });
164
+ }
165
+ return rows;
166
+ }
167
+ /** Attach the domain to structured rows for JSON responses. */
168
+ export function buildStructuredPayload(response, domain) {
169
+ const rows = toStructuredRows(response, domain);
170
+ const units = [...new Set(rows.map((row) => row.unit).filter((unit) => !!unit))];
171
+ const freshness = describeFreshness(rows.map((row) => ({
172
+ variable: row.indicator,
173
+ period: row.period,
174
+ value: row.value,
175
+ unit: row.unit,
176
+ })));
177
+ return {
178
+ domain,
179
+ rows,
180
+ units,
181
+ note: freshness ? freshness.replace(/^_|_$/g, "") : undefined,
182
+ };
183
+ }
110
184
  /**
111
185
  * Try to resolve a datacontent key into labeled row.
112
186
  * BPS key format: {vervar}{var_id}{turvar}{period}{trailing}
@@ -1 +1 @@
1
- {"version":3,"file":"data-formatter.js","sourceRoot":"","sources":["../../src/services/data-formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-formatter.js","sourceRoot":"","sources":["../../src/services/data-formatter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"intent-detector.d.ts","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,YAAY,GACZ,OAAO,GACP,SAAS,GACT,OAAO,GACP,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA4CD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAyGd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,EAAE,CAiCV"}
1
+ {"version":3,"file":"intent-detector.d.ts","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,YAAY,GACZ,OAAO,GACP,SAAS,GACT,OAAO,GACP,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA4CD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAyGd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,EAAE,CAkCV"}
@@ -159,6 +159,7 @@ export function generateResultHints(query, domain, domainName, _varId, _varTitle
159
159
  }
160
160
  // If query is about unemployment, suggest related indicators
161
161
  if (kw.includes("pengangguran") || kw.includes("nganggur")) {
162
+ hints.push(`💡 Peringkat kabupaten/kota: get_ranking(query="pengangguran", level="kabkota", order="highest")`);
162
163
  hints.push(`💡 TPak: find_variable(keyword="tpak", domain="${domain}")`);
163
164
  hints.push(`💡 Angkatan kerja: find_variable(keyword="angkatan kerja", domain="${domain}")`);
164
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"intent-detector.js","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intent-detector.js","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { BpsClient } from "../client/bps-client.js";
2
+ import type { DomainResolver } from "./domain-resolver.js";
3
+ /**
4
+ * National ranking across kabupaten/kota.
5
+ *
6
+ * BPS has no national kab/kota table for most indicators: the numbers live in
7
+ * each provincial domain under a different var_id. This service fans out over
8
+ * the provinces (the client's scheduler keeps the request rate safe), extracts
9
+ * one value per kabupaten/kota, and merges the result into a single ranking —
10
+ * so the agent needs one tool call instead of ~170.
11
+ */
12
+ export interface KabkotaRankOptions {
13
+ query: string;
14
+ year?: string;
15
+ topN: number;
16
+ order: "highest" | "lowest";
17
+ /** Optional province names/codes to restrict the sweep. */
18
+ provinces?: string[];
19
+ /** How many provinces to query in parallel (client throttles the rest). */
20
+ concurrency?: number;
21
+ /**
22
+ * "common" (default): use the newest year that enough provinces publish, so
23
+ * every row in the ranking is comparable.
24
+ * "latest": use each province's own newest period (mixed years).
25
+ */
26
+ periodMode?: "common" | "latest";
27
+ }
28
+ export interface KabkotaRankRow {
29
+ region: string;
30
+ province: string;
31
+ domain: string;
32
+ value: number;
33
+ period: string;
34
+ series?: string;
35
+ unit?: string;
36
+ indicator: string;
37
+ }
38
+ export interface KabkotaRankingResult {
39
+ rows: KabkotaRankRow[];
40
+ /** Regions with a usable value (before top-N slicing). */
41
+ totalRegions: number;
42
+ provincesCovered: number;
43
+ provincesConsidered: number;
44
+ periods: string[];
45
+ series: string[];
46
+ indicatorLabel: string;
47
+ missing: Array<{
48
+ province: string;
49
+ reason: string;
50
+ }>;
51
+ /** Year actually used for every row (undefined when periodMode="latest"). */
52
+ targetYear?: string;
53
+ /** Set when the caller asked for a specific year. */
54
+ yearRequested?: string;
55
+ }
56
+ export declare function rankKabkota(client: BpsClient, resolver: DomainResolver, options: KabkotaRankOptions): Promise<KabkotaRankingResult>;
57
+ export declare function formatKabkotaRanking(result: KabkotaRankingResult, options: {
58
+ order: "highest" | "lowest";
59
+ query: string;
60
+ }): string;
61
+ //# sourceMappingURL=kabkota-ranking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kabkota-ranking.d.ts","sourceRoot":"","sources":["../../src/services/kabkota-ranking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D;;;;;;;;GAQG;AAEH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAoBD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CA8F/B;AAmTD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE;IAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtD,MAAM,CA2DR"}