@diegoaltoworks/talker 0.10.0 → 0.12.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 (48) hide show
  1. package/dist/adapters/twilio.d.ts +13 -1
  2. package/dist/adapters/twilio.d.ts.map +1 -1
  3. package/dist/adapters/twilio.test.d.ts +7 -0
  4. package/dist/adapters/twilio.test.d.ts.map +1 -0
  5. package/dist/core/phrases.d.ts +5 -0
  6. package/dist/core/phrases.d.ts.map +1 -1
  7. package/dist/core/processing/prompts.d.ts +1 -1
  8. package/dist/core/processing/prompts.d.ts.map +1 -1
  9. package/dist/db/migrate.d.ts +1 -1
  10. package/dist/db/migrate.d.ts.map +1 -1
  11. package/dist/index.d.ts +4 -3
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +381 -97
  14. package/dist/index.mjs +368 -88
  15. package/dist/plugin.d.ts.map +1 -1
  16. package/dist/routes/call/handle-answer.test.d.ts +7 -0
  17. package/dist/routes/call/handle-answer.test.d.ts.map +1 -0
  18. package/dist/routes/call/handle-initial.test.d.ts +7 -0
  19. package/dist/routes/call/handle-initial.test.d.ts.map +1 -0
  20. package/dist/routes/call/handle-nospeech.test.d.ts +7 -0
  21. package/dist/routes/call/handle-nospeech.test.d.ts.map +1 -0
  22. package/dist/routes/call/handle-respond.test.d.ts +7 -0
  23. package/dist/routes/call/handle-respond.test.d.ts.map +1 -0
  24. package/dist/routes/call/handle-status.test.d.ts +7 -0
  25. package/dist/routes/call/handle-status.test.d.ts.map +1 -0
  26. package/dist/routes/call/pending.test.d.ts +7 -0
  27. package/dist/routes/call/pending.test.d.ts.map +1 -0
  28. package/dist/routes/sms/handle-incoming.test.d.ts +7 -0
  29. package/dist/routes/sms/handle-incoming.test.d.ts.map +1 -0
  30. package/dist/routes/whatsapp/handle-incoming.d.ts +12 -0
  31. package/dist/routes/whatsapp/handle-incoming.d.ts.map +1 -0
  32. package/dist/routes/whatsapp/handle-incoming.test.d.ts +7 -0
  33. package/dist/routes/whatsapp/handle-incoming.test.d.ts.map +1 -0
  34. package/dist/routes/whatsapp/index.d.ts +14 -0
  35. package/dist/routes/whatsapp/index.d.ts.map +1 -0
  36. package/dist/routes/whatsapp/processor.d.ts +14 -0
  37. package/dist/routes/whatsapp/processor.d.ts.map +1 -0
  38. package/dist/standalone.d.ts.map +1 -1
  39. package/dist/types.d.ts +11 -2
  40. package/dist/types.d.ts.map +1 -1
  41. package/language/de.json +7 -0
  42. package/language/en.json +7 -0
  43. package/language/es.json +7 -0
  44. package/language/fr.json +7 -0
  45. package/language/nl.json +7 -0
  46. package/language/pt.json +7 -0
  47. package/package.json +1 -1
  48. package/prompts/outgoing.md +16 -1
@@ -1,12 +1,24 @@
1
1
  /**
2
2
  * Twilio Adapter
3
3
  *
4
- * Handles outbound SMS sending via Twilio's REST API.
4
+ * Handles outbound SMS and WhatsApp sending via Twilio's REST API.
5
5
  * TwiML generation is handled by src/core/twiml.ts.
6
6
  */
7
7
  import type { TwilioConfig } from "../types";
8
+ /**
9
+ * Strip the `whatsapp:` prefix from a phone number if present.
10
+ * Returns the bare phone number (e.g., "+1234567890").
11
+ */
12
+ export declare function stripWhatsAppPrefix(phoneNumber: string): string;
8
13
  /**
9
14
  * Send an SMS via Twilio REST API
10
15
  */
11
16
  export declare function sendSMS(config: TwilioConfig, to: string, message: string): Promise<boolean>;
17
+ /**
18
+ * Send a WhatsApp message via Twilio REST API.
19
+ *
20
+ * Twilio's WhatsApp API uses the same Messages endpoint as SMS but
21
+ * requires `whatsapp:` prefixed From/To numbers.
22
+ */
23
+ export declare function sendWhatsApp(config: TwilioConfig, to: string, message: string): Promise<boolean>;
12
24
  //# sourceMappingURL=twilio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"twilio.d.ts","sourceRoot":"","sources":["../../src/adapters/twilio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyCjG"}
1
+ {"version":3,"file":"twilio.d.ts","sourceRoot":"","sources":["../../src/adapters/twilio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyCjG;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CA6ClB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Twilio Adapter Tests
3
+ *
4
+ * Tests for sendSMS, sendWhatsApp, and stripWhatsAppPrefix.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=twilio.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twilio.test.d.ts","sourceRoot":"","sources":["../../src/adapters/twilio.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -26,5 +26,10 @@ export declare function getFlowPhrase(language: string, key: keyof Phrases["flow
26
26
  * Get an SMS-specific phrase
27
27
  */
28
28
  export declare function getSmsPhrase(language: string, key: keyof Phrases["sms"], languageDir?: string): string;
29
+ /**
30
+ * Get a WhatsApp-specific phrase.
31
+ * Falls back to SMS phrases if whatsapp phrases are not defined.
32
+ */
33
+ export declare function getWhatsAppPhrase(language: string, key: keyof Phrases["whatsapp"], languageDir?: string): string;
29
34
  export {};
30
35
  //# sourceMappingURL=phrases.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phrases.d.ts","sourceRoot":"","sources":["../../src/core/phrases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAIxC;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CA4B3E;AAED,KAAK,eAAe,GAChB,UAAU,GACV,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,UAAU,GACV,gBAAgB,GAChB,OAAO,GACP,SAAS,GACT,cAAc,CAAC;AAEnB;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAWhF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAGR"}
1
+ {"version":3,"file":"phrases.d.ts","sourceRoot":"","sources":["../../src/core/phrases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AA8DxC;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CA+B3E;AAED,KAAK,eAAe,GAChB,UAAU,GACV,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,UAAU,GACV,gBAAgB,GAChB,OAAO,GACP,SAAS,GACT,cAAc,CAAC;AAEnB;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAWhF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAMR"}
@@ -2,7 +2,7 @@
2
2
  * Prompt Loader
3
3
  *
4
4
  * Loads and caches system prompts for the incoming/outgoing processing pipeline.
5
- * Looks in custom paths first, then falls back to built-in prompts.
5
+ * Looks in custom paths first, then falls back to built-in prompts (inlined).
6
6
  */
7
7
  import type { TalkerDependencies } from "../../types";
8
8
  export declare function getIncomingPrompt(deps: TalkerDependencies): string;
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/processing/prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAoBtD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAYlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAWlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/processing/prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAmGtD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAYlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAYlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Database Migrations
3
3
  *
4
- * Runs the schema.sql against the configured database.
4
+ * Creates talker_sessions and talker_messages tables.
5
5
  * Safe to run multiple times (uses IF NOT EXISTS).
6
6
  */
7
7
  export declare function runMigrations(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAiCnD"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmCH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBnD"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Talker — Telephony Plugin for Chatter
3
3
  *
4
- * Adds voice call and SMS support to Chatter chatbots via Twilio.
4
+ * Adds voice call, SMS, and WhatsApp support to Chatter chatbots via Twilio.
5
5
  * Can also run as a standalone telephony server with a custom chatFn.
6
6
  *
7
7
  * ## Usage as Chatter Plugin
@@ -44,20 +44,21 @@ export type { FlowDefinition, FlowSchema, FlowSchemaProperty, FlowState, FlowHan
44
44
  export { processIncoming, processOutgoing } from "./core/processing";
45
45
  export { getVoiceConfig, getDefaultVoices } from "./core/voice";
46
46
  export { escapeXml } from "./core/xml";
47
- export { getPhrase, getFarewellPhrase, getFlowPhrase, getSmsPhrase, loadPhrases, } from "./core/phrases";
47
+ export { getPhrase, getFarewellPhrase, getFlowPhrase, getSmsPhrase, getWhatsAppPhrase, loadPhrases, } from "./core/phrases";
48
48
  export { getOrCreateContext, getContext, clearContext, clearAllContexts, setDetectedLanguage, getDetectedLanguage, addMessage, getMessageHistory, setActiveFlow, getActiveFlow, updateFlowParams, clearActiveFlow, incrementNoSpeechRetries, resetNoSpeechRetries, getLastPrompt, setLastPrompt, startCleanup, stopCleanup, } from "./core/context";
49
49
  export { gatherTwiml, sayTwiml, transferTwiml, acknowledgmentTwiml, farewellTwiml, messageTwiml, } from "./core/twiml";
50
50
  export { FlowRegistry } from "./flows/registry";
51
51
  export { processFlow, shouldExitFlow } from "./flows/manager";
52
52
  export { loadFlowsFromDirectory } from "./flows/loader";
53
53
  export { getExitMessage } from "./flows/utils";
54
- export { sendSMS } from "./adapters/twilio";
54
+ export { sendSMS, sendWhatsApp, stripWhatsAppPrefix } from "./adapters/twilio";
55
55
  export { initDbClient, getDbClient, closeDbClient } from "./db/client";
56
56
  export { runMigrations } from "./db/migrate";
57
57
  export { persistFinalSession, persistSession } from "./db/persist";
58
58
  export type { SessionRecord, MessageRecord } from "./db/sessions";
59
59
  export { callRoutes } from "./routes/call";
60
60
  export { smsRoutes } from "./routes/sms";
61
+ export { whatsappRoutes } from "./routes/whatsapp";
61
62
  export { logger, redactPhone } from "./core/logger";
62
63
  export { twilioSignatureMiddleware, validateTwilioSignature } from "./middleware/twilio-signature";
63
64
  export { rateLimitMiddleware } from "./middleware/rate-limit";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,OAAO,GACR,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,OAAO,GACR,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC"}