@leemour/cli-messaging 0.146.0 → 0.148.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 (354) hide show
  1. package/dist/background/index.d.ts +1 -1
  2. package/dist/background/index.d.ts.map +1 -1
  3. package/dist/background/index.js +1 -1
  4. package/dist/background/index.js.map +1 -1
  5. package/dist/background/lock.d.ts +6 -0
  6. package/dist/background/lock.d.ts.map +1 -1
  7. package/dist/background/lock.js +31 -1
  8. package/dist/background/lock.js.map +1 -1
  9. package/dist/background/units.d.ts +1 -0
  10. package/dist/background/units.d.ts.map +1 -1
  11. package/dist/background/units.js +9 -0
  12. package/dist/background/units.js.map +1 -1
  13. package/dist/cli/bot/people.js +1 -1
  14. package/dist/cli/bot/people.js.map +1 -1
  15. package/dist/cli/config-command.d.ts.map +1 -1
  16. package/dist/cli/config-command.js +17 -3
  17. package/dist/cli/config-command.js.map +1 -1
  18. package/dist/cli/index.d.ts +6 -1
  19. package/dist/cli/index.d.ts.map +1 -1
  20. package/dist/cli/index.js +5 -0
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/messenger/backfill-command.d.ts.map +1 -1
  23. package/dist/cli/messenger/backfill-command.js +4 -0
  24. package/dist/cli/messenger/backfill-command.js.map +1 -1
  25. package/dist/cli/messenger/chats-command.d.ts.map +1 -1
  26. package/dist/cli/messenger/chats-command.js +2 -2
  27. package/dist/cli/messenger/chats-command.js.map +1 -1
  28. package/dist/cli/messenger/chats-members-command.d.ts.map +1 -1
  29. package/dist/cli/messenger/chats-members-command.js +35 -1
  30. package/dist/cli/messenger/chats-members-command.js.map +1 -1
  31. package/dist/cli/messenger/chats-stats-command.js +1 -1
  32. package/dist/cli/messenger/chats-stats-command.js.map +1 -1
  33. package/dist/cli/messenger/contacts-command.d.ts.map +1 -1
  34. package/dist/cli/messenger/contacts-command.js +45 -1
  35. package/dist/cli/messenger/contacts-command.js.map +1 -1
  36. package/dist/cli/messenger/context.d.ts +10 -1
  37. package/dist/cli/messenger/context.d.ts.map +1 -1
  38. package/dist/cli/messenger/context.js +21 -2
  39. package/dist/cli/messenger/context.js.map +1 -1
  40. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  41. package/dist/cli/messenger/conversations-command.js +6 -20
  42. package/dist/cli/messenger/conversations-command.js.map +1 -1
  43. package/dist/cli/messenger/doctor-command.d.ts +14 -0
  44. package/dist/cli/messenger/doctor-command.d.ts.map +1 -1
  45. package/dist/cli/messenger/doctor-command.js +117 -6
  46. package/dist/cli/messenger/doctor-command.js.map +1 -1
  47. package/dist/cli/messenger/flood-command.d.ts +8 -0
  48. package/dist/cli/messenger/flood-command.d.ts.map +1 -0
  49. package/dist/cli/messenger/flood-command.js +31 -0
  50. package/dist/cli/messenger/flood-command.js.map +1 -0
  51. package/dist/cli/messenger/flooded.d.ts +12 -0
  52. package/dist/cli/messenger/flooded.d.ts.map +1 -0
  53. package/dist/cli/messenger/flooded.js +77 -0
  54. package/dist/cli/messenger/flooded.js.map +1 -0
  55. package/dist/cli/messenger/inbox.d.ts +1 -0
  56. package/dist/cli/messenger/inbox.d.ts.map +1 -1
  57. package/dist/cli/messenger/inbox.js +4 -3
  58. package/dist/cli/messenger/inbox.js.map +1 -1
  59. package/dist/cli/messenger/mcp-command.d.ts +12 -0
  60. package/dist/cli/messenger/mcp-command.d.ts.map +1 -1
  61. package/dist/cli/messenger/mcp-command.js +49 -3
  62. package/dist/cli/messenger/mcp-command.js.map +1 -1
  63. package/dist/cli/messenger/messages-search-command.d.ts +2 -0
  64. package/dist/cli/messenger/messages-search-command.d.ts.map +1 -1
  65. package/dist/cli/messenger/messages-search-command.js +49 -16
  66. package/dist/cli/messenger/messages-search-command.js.map +1 -1
  67. package/dist/cli/messenger/messages-stats-command.d.ts +2 -0
  68. package/dist/cli/messenger/messages-stats-command.d.ts.map +1 -1
  69. package/dist/cli/messenger/messages-stats-command.js +35 -11
  70. package/dist/cli/messenger/messages-stats-command.js.map +1 -1
  71. package/dist/cli/messenger/points.d.ts +2 -1
  72. package/dist/cli/messenger/points.d.ts.map +1 -1
  73. package/dist/cli/messenger/points.js +1 -0
  74. package/dist/cli/messenger/points.js.map +1 -1
  75. package/dist/cli/messenger/port.d.ts +25 -1
  76. package/dist/cli/messenger/port.d.ts.map +1 -1
  77. package/dist/cli/messenger/port.js.map +1 -1
  78. package/dist/cli/messenger/private-files.d.ts +25 -0
  79. package/dist/cli/messenger/private-files.d.ts.map +1 -0
  80. package/dist/cli/messenger/private-files.js +28 -0
  81. package/dist/cli/messenger/private-files.js.map +1 -0
  82. package/dist/cli/messenger/replies-command.d.ts +5 -0
  83. package/dist/cli/messenger/replies-command.d.ts.map +1 -0
  84. package/dist/cli/messenger/replies-command.js +78 -0
  85. package/dist/cli/messenger/replies-command.js.map +1 -0
  86. package/dist/cli/messenger/report.d.ts +5 -0
  87. package/dist/cli/messenger/report.d.ts.map +1 -1
  88. package/dist/cli/messenger/report.js +25 -7
  89. package/dist/cli/messenger/report.js.map +1 -1
  90. package/dist/cli/messenger/review.d.ts.map +1 -1
  91. package/dist/cli/messenger/review.js +5 -3
  92. package/dist/cli/messenger/review.js.map +1 -1
  93. package/dist/cli/messenger/searches-command.d.ts +5 -0
  94. package/dist/cli/messenger/searches-command.d.ts.map +1 -0
  95. package/dist/cli/messenger/searches-command.js +117 -0
  96. package/dist/cli/messenger/searches-command.js.map +1 -0
  97. package/dist/cli/messenger/serve-command.d.ts.map +1 -1
  98. package/dist/cli/messenger/serve-command.js +87 -8
  99. package/dist/cli/messenger/serve-command.js.map +1 -1
  100. package/dist/cli/messenger/server-command.d.ts.map +1 -1
  101. package/dist/cli/messenger/server-command.js +25 -2
  102. package/dist/cli/messenger/server-command.js.map +1 -1
  103. package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
  104. package/dist/cli/messenger/store-maintenance-command.js +105 -4
  105. package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
  106. package/dist/cli/messenger/tags-command.d.ts +5 -0
  107. package/dist/cli/messenger/tags-command.d.ts.map +1 -0
  108. package/dist/cli/messenger/tags-command.js +76 -0
  109. package/dist/cli/messenger/tags-command.js.map +1 -0
  110. package/dist/cli/messenger/watch-command.d.ts +4 -1
  111. package/dist/cli/messenger/watch-command.d.ts.map +1 -1
  112. package/dist/cli/messenger/watch-command.js +2 -1
  113. package/dist/cli/messenger/watch-command.js.map +1 -1
  114. package/dist/cli/store-settings.d.ts +26 -0
  115. package/dist/cli/store-settings.d.ts.map +1 -0
  116. package/dist/cli/store-settings.js +59 -0
  117. package/dist/cli/store-settings.js.map +1 -0
  118. package/dist/domain/models.d.ts +11 -1
  119. package/dist/domain/models.d.ts.map +1 -1
  120. package/dist/domain/tags.d.ts +6 -0
  121. package/dist/domain/tags.d.ts.map +1 -0
  122. package/dist/domain/tags.js +15 -0
  123. package/dist/domain/tags.js.map +1 -0
  124. package/dist/index.d.ts +1 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +1 -0
  127. package/dist/index.js.map +1 -1
  128. package/dist/kit/contract.d.ts.map +1 -1
  129. package/dist/kit/contract.js +6 -2
  130. package/dist/kit/contract.js.map +1 -1
  131. package/dist/mcp/personal.d.ts.map +1 -1
  132. package/dist/mcp/personal.js +2 -1
  133. package/dist/mcp/personal.js.map +1 -1
  134. package/dist/mcp/prompts.d.ts.map +1 -1
  135. package/dist/mcp/prompts.js +27 -8
  136. package/dist/mcp/prompts.js.map +1 -1
  137. package/dist/mcp/tool.d.ts +5 -0
  138. package/dist/mcp/tool.d.ts.map +1 -1
  139. package/dist/mcp/tool.js +12 -1
  140. package/dist/mcp/tool.js.map +1 -1
  141. package/dist/mcp/tools/chats.d.ts.map +1 -1
  142. package/dist/mcp/tools/chats.js +22 -4
  143. package/dist/mcp/tools/chats.js.map +1 -1
  144. package/dist/mcp/tools/contacts.d.ts.map +1 -1
  145. package/dist/mcp/tools/contacts.js +21 -1
  146. package/dist/mcp/tools/contacts.js.map +1 -1
  147. package/dist/mcp/tools/conversations.d.ts.map +1 -1
  148. package/dist/mcp/tools/conversations.js +2 -7
  149. package/dist/mcp/tools/conversations.js.map +1 -1
  150. package/dist/mcp/tools/inbox.d.ts +2 -0
  151. package/dist/mcp/tools/inbox.d.ts.map +1 -1
  152. package/dist/mcp/tools/inbox.js +27 -4
  153. package/dist/mcp/tools/inbox.js.map +1 -1
  154. package/dist/mcp/tools/messages.d.ts.map +1 -1
  155. package/dist/mcp/tools/messages.js +8 -2
  156. package/dist/mcp/tools/messages.js.map +1 -1
  157. package/dist/mcp/tools/review.d.ts.map +1 -1
  158. package/dist/mcp/tools/review.js +23 -2
  159. package/dist/mcp/tools/review.js.map +1 -1
  160. package/dist/mcp/tools/search.d.ts +6 -3
  161. package/dist/mcp/tools/search.d.ts.map +1 -1
  162. package/dist/mcp/tools/search.js +48 -11
  163. package/dist/mcp/tools/search.js.map +1 -1
  164. package/dist/mcp/tools/searches.d.ts +4 -0
  165. package/dist/mcp/tools/searches.d.ts.map +1 -0
  166. package/dist/mcp/tools/searches.js +77 -0
  167. package/dist/mcp/tools/searches.js.map +1 -0
  168. package/dist/mcp/tools/tags.d.ts +4 -0
  169. package/dist/mcp/tools/tags.d.ts.map +1 -0
  170. package/dist/mcp/tools/tags.js +57 -0
  171. package/dist/mcp/tools/tags.js.map +1 -0
  172. package/dist/mcp/tools.d.ts +2 -0
  173. package/dist/mcp/tools.d.ts.map +1 -1
  174. package/dist/mcp/tools.js +7 -0
  175. package/dist/mcp/tools.js.map +1 -1
  176. package/dist/replies/decide.d.ts +37 -0
  177. package/dist/replies/decide.d.ts.map +1 -0
  178. package/dist/replies/decide.js +112 -0
  179. package/dist/replies/decide.js.map +1 -0
  180. package/dist/replies/dry-run.d.ts +51 -0
  181. package/dist/replies/dry-run.d.ts.map +1 -0
  182. package/dist/replies/dry-run.js +116 -0
  183. package/dist/replies/dry-run.js.map +1 -0
  184. package/dist/replies/rules.d.ts +139 -0
  185. package/dist/replies/rules.d.ts.map +1 -0
  186. package/dist/replies/rules.js +128 -0
  187. package/dist/replies/rules.js.map +1 -0
  188. package/dist/replies/serve.d.ts +44 -0
  189. package/dist/replies/serve.d.ts.map +1 -0
  190. package/dist/replies/serve.js +70 -0
  191. package/dist/replies/serve.js.map +1 -0
  192. package/dist/replies/state.d.ts +36 -0
  193. package/dist/replies/state.d.ts.map +1 -0
  194. package/dist/replies/state.js +67 -0
  195. package/dist/replies/state.js.map +1 -0
  196. package/dist/search/lucene/automaton.d.ts +5 -0
  197. package/dist/search/lucene/automaton.d.ts.map +1 -1
  198. package/dist/search/lucene/automaton.js +116 -0
  199. package/dist/search/lucene/automaton.js.map +1 -1
  200. package/dist/search/lucene/parser.d.ts.map +1 -1
  201. package/dist/search/lucene/parser.js +6 -2
  202. package/dist/search/lucene/parser.js.map +1 -1
  203. package/dist/search/lucene/registry.d.ts +5 -5
  204. package/dist/search/lucene/registry.d.ts.map +1 -1
  205. package/dist/search/lucene/registry.js +12 -7
  206. package/dist/search/lucene/registry.js.map +1 -1
  207. package/dist/search/search.d.ts.map +1 -1
  208. package/dist/search/search.js +4 -3
  209. package/dist/search/search.js.map +1 -1
  210. package/dist/sends/flood.d.ts +57 -0
  211. package/dist/sends/flood.d.ts.map +1 -0
  212. package/dist/sends/flood.js +90 -0
  213. package/dist/sends/flood.js.map +1 -0
  214. package/dist/sends/guard.d.ts +4 -1
  215. package/dist/sends/guard.d.ts.map +1 -1
  216. package/dist/sends/guard.js +9 -1
  217. package/dist/sends/guard.js.map +1 -1
  218. package/dist/sends/index.d.ts +1 -0
  219. package/dist/sends/index.d.ts.map +1 -1
  220. package/dist/sends/index.js +1 -0
  221. package/dist/sends/index.js.map +1 -1
  222. package/dist/sends/journal.d.ts +2 -0
  223. package/dist/sends/journal.d.ts.map +1 -1
  224. package/dist/sends/journal.js.map +1 -1
  225. package/dist/sends/permissions.d.ts +1 -1
  226. package/dist/sends/permissions.d.ts.map +1 -1
  227. package/dist/sends/permissions.js +13 -1
  228. package/dist/sends/permissions.js.map +1 -1
  229. package/dist/services/archive.d.ts.map +1 -1
  230. package/dist/services/archive.js +4 -2
  231. package/dist/services/archive.js.map +1 -1
  232. package/dist/services/chat-stats.d.ts +3 -0
  233. package/dist/services/chat-stats.d.ts.map +1 -1
  234. package/dist/services/chat-stats.js +3 -0
  235. package/dist/services/chat-stats.js.map +1 -1
  236. package/dist/services/chats.d.ts +13 -3
  237. package/dist/services/chats.d.ts.map +1 -1
  238. package/dist/services/chats.js +63 -2
  239. package/dist/services/chats.js.map +1 -1
  240. package/dist/services/deps.d.ts +2 -0
  241. package/dist/services/deps.d.ts.map +1 -1
  242. package/dist/services/deps.js.map +1 -1
  243. package/dist/services/inbox.d.ts +0 -2
  244. package/dist/services/inbox.d.ts.map +1 -1
  245. package/dist/services/inbox.js +13 -8
  246. package/dist/services/inbox.js.map +1 -1
  247. package/dist/services/index.d.ts +8 -0
  248. package/dist/services/index.d.ts.map +1 -1
  249. package/dist/services/index.js +6 -0
  250. package/dist/services/index.js.map +1 -1
  251. package/dist/services/members-audit.d.ts +44 -0
  252. package/dist/services/members-audit.d.ts.map +1 -0
  253. package/dist/services/members-audit.js +111 -0
  254. package/dist/services/members-audit.js.map +1 -0
  255. package/dist/services/messages-search.d.ts +6 -4
  256. package/dist/services/messages-search.d.ts.map +1 -1
  257. package/dist/services/messages-search.js +24 -8
  258. package/dist/services/messages-search.js.map +1 -1
  259. package/dist/services/messages.d.ts +10 -3
  260. package/dist/services/messages.d.ts.map +1 -1
  261. package/dist/services/messages.js +48 -5
  262. package/dist/services/messages.js.map +1 -1
  263. package/dist/services/people.d.ts +7 -0
  264. package/dist/services/people.d.ts.map +1 -1
  265. package/dist/services/people.js +18 -0
  266. package/dist/services/people.js.map +1 -1
  267. package/dist/services/person-context.d.ts +69 -0
  268. package/dist/services/person-context.d.ts.map +1 -0
  269. package/dist/services/person-context.js +130 -0
  270. package/dist/services/person-context.js.map +1 -0
  271. package/dist/services/searches.d.ts +50 -0
  272. package/dist/services/searches.d.ts.map +1 -0
  273. package/dist/services/searches.js +127 -0
  274. package/dist/services/searches.js.map +1 -0
  275. package/dist/services/tags.d.ts +40 -0
  276. package/dist/services/tags.d.ts.map +1 -0
  277. package/dist/services/tags.js +56 -0
  278. package/dist/services/tags.js.map +1 -0
  279. package/dist/store/index.d.ts +1 -1
  280. package/dist/store/index.d.ts.map +1 -1
  281. package/dist/store/index.js.map +1 -1
  282. package/dist/store/normalize.d.ts +2 -0
  283. package/dist/store/normalize.d.ts.map +1 -1
  284. package/dist/store/normalize.js +7 -5
  285. package/dist/store/normalize.js.map +1 -1
  286. package/dist/store/repair.d.ts +55 -0
  287. package/dist/store/repair.d.ts.map +1 -0
  288. package/dist/store/repair.js +313 -0
  289. package/dist/store/repair.js.map +1 -0
  290. package/dist/store/sqlite/accounts.d.ts.map +1 -1
  291. package/dist/store/sqlite/accounts.js +3 -1
  292. package/dist/store/sqlite/accounts.js.map +1 -1
  293. package/dist/store/sqlite/chats.d.ts.map +1 -1
  294. package/dist/store/sqlite/chats.js +3 -1
  295. package/dist/store/sqlite/chats.js.map +1 -1
  296. package/dist/store/sqlite/completeness.d.ts +10 -1
  297. package/dist/store/sqlite/completeness.d.ts.map +1 -1
  298. package/dist/store/sqlite/completeness.js +15 -3
  299. package/dist/store/sqlite/completeness.js.map +1 -1
  300. package/dist/store/sqlite/drizzle/bun.js +1 -1
  301. package/dist/store/sqlite/drizzle/core.d.ts +1 -1
  302. package/dist/store/sqlite/drizzle/core.d.ts.map +1 -1
  303. package/dist/store/sqlite/drizzle/core.js +3 -1
  304. package/dist/store/sqlite/drizzle/core.js.map +1 -1
  305. package/dist/store/sqlite/drizzle/node.js +1 -1
  306. package/dist/store/sqlite/drizzle/{shared-WZFJ4TMA.js → shared-IZ6QGA7N.js} +2 -1
  307. package/dist/store/sqlite/lucene.d.ts.map +1 -1
  308. package/dist/store/sqlite/lucene.js +17 -3
  309. package/dist/store/sqlite/lucene.js.map +1 -1
  310. package/dist/store/sqlite/manifest.d.ts.map +1 -1
  311. package/dist/store/sqlite/manifest.js +6 -0
  312. package/dist/store/sqlite/manifest.js.map +1 -1
  313. package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
  314. package/dist/store/sqlite/migrations.generated.js +53 -0
  315. package/dist/store/sqlite/migrations.generated.js.map +1 -1
  316. package/dist/store/sqlite/person-links.d.ts +18 -0
  317. package/dist/store/sqlite/person-links.d.ts.map +1 -0
  318. package/dist/store/sqlite/person-links.js +122 -0
  319. package/dist/store/sqlite/person-links.js.map +1 -0
  320. package/dist/store/sqlite/roster.d.ts +57 -0
  321. package/dist/store/sqlite/roster.d.ts.map +1 -0
  322. package/dist/store/sqlite/roster.js +179 -0
  323. package/dist/store/sqlite/roster.js.map +1 -0
  324. package/dist/store/sqlite/schema.d.ts +753 -0
  325. package/dist/store/sqlite/schema.d.ts.map +1 -1
  326. package/dist/store/sqlite/schema.js +99 -0
  327. package/dist/store/sqlite/schema.js.map +1 -1
  328. package/dist/store/sqlite/search-index.d.ts +3 -0
  329. package/dist/store/sqlite/search-index.d.ts.map +1 -1
  330. package/dist/store/sqlite/search-index.js +8 -6
  331. package/dist/store/sqlite/search-index.js.map +1 -1
  332. package/dist/store/sqlite/search.d.ts +2 -0
  333. package/dist/store/sqlite/search.d.ts.map +1 -1
  334. package/dist/store/sqlite/search.js +5 -0
  335. package/dist/store/sqlite/search.js.map +1 -1
  336. package/dist/store/sqlite/searches.d.ts +35 -0
  337. package/dist/store/sqlite/searches.d.ts.map +1 -0
  338. package/dist/store/sqlite/searches.js +77 -0
  339. package/dist/store/sqlite/searches.js.map +1 -0
  340. package/dist/store/sqlite/stems.d.ts +61 -0
  341. package/dist/store/sqlite/stems.d.ts.map +1 -0
  342. package/dist/store/sqlite/stems.js +215 -0
  343. package/dist/store/sqlite/stems.js.map +1 -0
  344. package/dist/store/sqlite/tags.d.ts +38 -0
  345. package/dist/store/sqlite/tags.d.ts.map +1 -0
  346. package/dist/store/sqlite/tags.js +85 -0
  347. package/dist/store/sqlite/tags.js.map +1 -0
  348. package/dist/store/store.d.ts +99 -1
  349. package/dist/store/store.d.ts.map +1 -1
  350. package/dist/store/store.js +115 -2
  351. package/dist/store/store.js.map +1 -1
  352. package/package.json +1 -1
  353. package/parity.json +254 -30
  354. /package/dist/store/sqlite/drizzle/{shared-WZFJ4TMA.js.map → shared-IZ6QGA7N.js.map} +0 -0
@@ -0,0 +1,215 @@
1
+ import { CliError } from "@leemour/cli-core";
2
+ import { analyzerIdentity, createStemmer, DEFAULT_STEMMERS, parseStemmers, SNOWBALL_VERSION, } from "../../search/stem.js";
3
+ import { inBatch, indexRow } from "./search-index.js";
4
+ const INDEX = "message_stems";
5
+ const SETTING = "searchStemmers";
6
+ /** Stems a store write leaves for the next fill: an older binary may have left thousands queued. */
7
+ export const DRAIN_ON_WRITE = 500;
8
+ /**
9
+ * The choices `config set searchStemmers.*` saved; `undefined` while the defaults apply, `null` when a
10
+ * newer tool saved one this build does not know. Never throws: every open and write reads it.
11
+ */
12
+ export const savedStemmers = (database) => {
13
+ const row = database.prepare("SELECT value FROM store_settings WHERE key = ?").get(SETTING);
14
+ if (!row)
15
+ return undefined;
16
+ try {
17
+ return parseStemmers(JSON.parse(String(row.value)));
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ };
23
+ /** The store-wide choices every fill, drain and readiness check uses; `null` stems nothing. */
24
+ const storeStemmers = (database) => {
25
+ const saved = savedStemmers(database);
26
+ return saved === undefined ? DEFAULT_STEMMERS : saved;
27
+ };
28
+ const UNKNOWN = "unknown to this build";
29
+ export const saveStoreStemmers = (database, stemmers, now) => {
30
+ database
31
+ .prepare("INSERT OR REPLACE INTO store_settings (key, value, at) VALUES (?, ?, ?)")
32
+ .run(SETTING, JSON.stringify(parseStemmers(stemmers)), now);
33
+ };
34
+ /** `undefined` on a file before version 15. */
35
+ export const stemsState = (database) => {
36
+ const row = indexRow(database, INDEX);
37
+ if (!row)
38
+ return undefined;
39
+ const watermark = Number(row.watermark);
40
+ const filledThrough = Number(row.filled_through);
41
+ const pending = Number(database.prepare("SELECT count(*) AS n FROM message_stems_pending").get()?.n);
42
+ const built = row.analyzer === null ? null : String(row.analyzer);
43
+ const stemmers = storeStemmers(database);
44
+ const wanted = stemmers ? analyzerIdentity(stemmers) : UNKNOWN;
45
+ // An unclaimed row with nothing to stem is complete: claiming it now would make a first `config set` need a reindex.
46
+ const ready = stemmers !== null && (built === wanted || built === null) && filledThrough >= watermark && pending === 0;
47
+ const cause = !stemmers ? "stemmer_unknown" : built !== null && built !== wanted ? "stemmer_changed" : "building";
48
+ return {
49
+ watermark,
50
+ filledThrough,
51
+ pending,
52
+ built,
53
+ wanted,
54
+ ready,
55
+ ...(ready ? {} : { cause }),
56
+ builtAt: row.built_at === null ? null : new Date(Number(row.built_at)).toISOString(),
57
+ };
58
+ };
59
+ /**
60
+ * Whether this binary may write stems, decided inside the write transaction: an unbuilt row is claimed
61
+ * with its analyzer, a row built by other choices is left alone — so the index never mixes two stemmers.
62
+ */
63
+ const claim = (database, identity) => {
64
+ const built = indexRow(database, INDEX)?.analyzer;
65
+ if (built === undefined)
66
+ return false;
67
+ if (built === null) {
68
+ database.prepare("UPDATE search_index_state SET analyzer = ? WHERE name = ?").run(identity, INDEX);
69
+ return true;
70
+ }
71
+ return built === identity;
72
+ };
73
+ const stemWriter = (database, stemmer) => {
74
+ const read = database.prepare(`SELECT pk, text, 'c' || chat_pk || coalesce(' s' || sender_identity_pk, '') AS scope
75
+ FROM messages WHERE pk > ? AND pk <= ?`);
76
+ const one = database.prepare("SELECT text, 'c' || chat_pk || coalesce(' s' || sender_identity_pk, '') AS scope FROM messages WHERE pk = ?");
77
+ const write = database.prepare("INSERT OR REPLACE INTO message_stems (rowid, stems, scope) VALUES (?, ?, ?)");
78
+ const remove = database.prepare("DELETE FROM message_stems WHERE rowid = ?");
79
+ const dequeue = database.prepare("DELETE FROM message_stems_pending WHERE pk = ?");
80
+ const restem = (pk, row) => {
81
+ const stems = row ? stemmer.stemTokens(String(row.text)).join(" ") : "";
82
+ if (stems === "")
83
+ remove.run(pk);
84
+ else
85
+ write.run(pk, stems, String(row?.scope));
86
+ };
87
+ return {
88
+ range: (from, to) => {
89
+ const rows = read.all(from, to);
90
+ for (const row of rows)
91
+ restem(Number(row.pk), row);
92
+ return rows.length;
93
+ },
94
+ queued: (pks) => {
95
+ for (const pk of pks) {
96
+ restem(pk, one.get(pk));
97
+ dequeue.run(pk);
98
+ }
99
+ return pks.length;
100
+ },
101
+ };
102
+ };
103
+ const nextQueued = (database, limit) => database
104
+ .prepare("SELECT pk FROM message_stems_pending ORDER BY pk LIMIT ?")
105
+ .all(limit)
106
+ .map((row) => Number(row.pk));
107
+ /**
108
+ * Stems the messages a store write queued, inside that write's transaction. `stemmerFor` is the store's,
109
+ * so one cache serves every write while the setting stays the same.
110
+ */
111
+ export const drainStems = (database, stemmerFor, limit = DRAIN_ON_WRITE) => {
112
+ const pks = nextQueued(database, limit);
113
+ if (pks.length === 0)
114
+ return 0;
115
+ const stemmers = storeStemmers(database);
116
+ if (!stemmers)
117
+ return 0;
118
+ const stemmer = stemmerFor(stemmers);
119
+ return claim(database, stemmer.identity) ? stemWriter(database, stemmer).queued(pks) : 0;
120
+ };
121
+ /** Keeps one stemmer while the setting stays the same, and starts a fresh cache when it changes. */
122
+ export const stemmerCache = () => {
123
+ let stemmer;
124
+ return (stemmers) => {
125
+ if (stemmer?.identity !== analyzerIdentity(stemmers))
126
+ stemmer = createStemmer(stemmers);
127
+ return stemmer;
128
+ };
129
+ };
130
+ /**
131
+ * Brings the stems towards "ready" in short write transactions: the messages up to the watermark, then
132
+ * the queue. One stemmer per run, so its cache serves every batch. Never rebuilds: a row built by other
133
+ * choices is left for `store migrate` or `store reindex`.
134
+ */
135
+ export const fillStems = (database, { batch = 5_000, until = () => false, onBatch, now = Date.now, } = {}) => {
136
+ const filled = { stemmed: 0, drained: 0 };
137
+ const before = stemsState(database);
138
+ // Every search asks; when all is built, or the row waits for a rebuild, it must not take the write lock.
139
+ const stemmers = storeStemmers(database);
140
+ if (!before || before.ready || before.cause !== "building" || !stemmers)
141
+ return filled;
142
+ const identity = analyzerIdentity(stemmers);
143
+ const stemmer = createStemmer(stemmers);
144
+ const writer = stemWriter(database, stemmer);
145
+ const advance = database.prepare("UPDATE search_index_state SET filled_through = ? WHERE name = ?");
146
+ for (;;) {
147
+ const state = stemsState(database);
148
+ if (!state || state.filledThrough >= state.watermark || until())
149
+ break;
150
+ const to = Math.min(state.filledThrough + batch, state.watermark);
151
+ const done = inBatch(database, () => {
152
+ if (!claim(database, identity))
153
+ return undefined;
154
+ const count = writer.range(state.filledThrough, to);
155
+ advance.run(to, INDEX);
156
+ return count;
157
+ });
158
+ if (done === undefined)
159
+ return filled;
160
+ filled.stemmed += done;
161
+ onBatch?.("stemmed", filled.stemmed);
162
+ }
163
+ for (;;) {
164
+ if (until())
165
+ break;
166
+ const done = inBatch(database, () => {
167
+ const pks = nextQueued(database, batch);
168
+ return pks.length === 0 || !claim(database, identity) ? 0 : writer.queued(pks);
169
+ });
170
+ if (done === 0)
171
+ break;
172
+ filled.drained += done;
173
+ onBatch?.("drained", filled.drained);
174
+ }
175
+ const state = stemsState(database);
176
+ if (state && state.filledThrough >= state.watermark && state.builtAt === null && state.built === identity) {
177
+ database.prepare("UPDATE search_index_state SET built_at = ? WHERE name = ?").run(now(), INDEX);
178
+ }
179
+ return filled;
180
+ };
181
+ const snowballOf = (identity) => (/^snowball-(\d+)\.(\d+)\.(\d+)/.exec(identity)?.slice(1) ?? []).map(Number);
182
+ const newer = (a, b) => {
183
+ for (let i = 0; i < 3; i++)
184
+ if ((a[i] ?? 0) !== (b[i] ?? 0))
185
+ return (a[i] ?? 0) > (b[i] ?? 0);
186
+ return false;
187
+ };
188
+ /**
189
+ * Empties the stems and starts them again from the newest message, claimed by the store's setting —
190
+ * for `store reindex`, and for `store migrate` when the stems were built by other choices. A row built
191
+ * by a newer Snowball than this binary has is refused: rebuilding it would downgrade every newer tool.
192
+ */
193
+ export const resetStems = (database, { force = false } = {}) => {
194
+ const state = stemsState(database);
195
+ if (!state)
196
+ return false;
197
+ if (!force && state.cause !== "stemmer_changed" && state.cause !== "stemmer_unknown")
198
+ return false;
199
+ if (state.cause === "stemmer_unknown") {
200
+ throw new CliError("validation_error", "the store asks for stemmers this tool does not know — upgrade this tool, or choose again with config set searchStemmers.*", { reason: "stemmer_unknown" });
201
+ }
202
+ if (state.built !== null && newer(snowballOf(state.built), snowballOf(`snowball-${SNOWBALL_VERSION}`))) {
203
+ throw new CliError("validation_error", `the stems were built by Snowball ${snowballOf(state.built).join(".")}, newer than this tool's ${SNOWBALL_VERSION} — upgrade this tool`, { reason: "stemmer_newer", built: state.built, wanted: state.wanted });
204
+ }
205
+ inBatch(database, () => {
206
+ database.exec(`INSERT INTO ${INDEX} (${INDEX}) VALUES ('delete-all')`);
207
+ database.exec("DELETE FROM message_stems_pending");
208
+ database
209
+ .prepare(`UPDATE search_index_state SET watermark = (SELECT coalesce(max(pk), 0) FROM messages),
210
+ filled_through = 0, built_at = NULL, analyzer = ? WHERE name = ?`)
211
+ .run(state.wanted, INDEX);
212
+ });
213
+ return true;
214
+ };
215
+ //# sourceMappingURL=stems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stems.js","sourceRoot":"","sources":["../../../src/store/sqlite/stems.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Id } from "../../domain/models.js";
2
+ import type { TagType } from "../../domain/tags.js";
3
+ import type { AccountKey } from "../store.js";
4
+ import type { StoreContext } from "./open.js";
5
+ /** What a tag labels: a chat or a message of the account, or a person of its messenger. */
6
+ export type TagTarget = {
7
+ type: "chat";
8
+ chatId: Id;
9
+ } | {
10
+ type: "contact";
11
+ personId: Id;
12
+ } | {
13
+ type: "message";
14
+ chatId: Id;
15
+ messageId: Id;
16
+ };
17
+ export interface StoredTag {
18
+ tag: string;
19
+ type: TagType;
20
+ chatId?: Id;
21
+ chatTitle?: string | null;
22
+ personId?: Id;
23
+ name?: string | null;
24
+ messageId?: Id;
25
+ locator?: string;
26
+ createdAt: string;
27
+ }
28
+ export interface TagFilter {
29
+ tag?: string;
30
+ type?: TagType;
31
+ }
32
+ export declare const targetPk: ({ database }: StoreContext, key: AccountKey, target: TagTarget) => number;
33
+ /** The tags it did not have before, in the order given. */
34
+ export declare const addTags: (context: StoreContext, pk: number, type: TagType, tags: string[]) => string[];
35
+ /** The tags it had, in the order given. */
36
+ export declare const removeTags: ({ database }: StoreContext, pk: number, type: TagType, tags: string[]) => string[];
37
+ export declare const tagsOf: ({ database }: StoreContext, key: AccountKey, filter: TagFilter) => StoredTag[];
38
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/tags.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C,2FAA2F;AAC3F,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,EAAE,CAAC;IAAC,SAAS,EAAE,EAAE,CAAA;CAAE,CAAA;AAElD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,EAAE,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,EAAE,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,QAAQ,iBAAkB,YAAY,OAAO,UAAU,UAAU,SAAS,KAAG,MA4BzF,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,OAAO,YAAa,YAAY,MAAM,MAAM,QAAQ,OAAO,QAAQ,MAAM,EAAE,KAAG,MAAM,EAMhG,CAAA;AAED,2CAA2C;AAC3C,eAAO,MAAM,UAAU,iBAAkB,YAAY,MAAM,MAAM,QAAQ,OAAO,QAAQ,MAAM,EAAE,KAAG,MAAM,EAGxG,CAAA;AAED,eAAO,MAAM,MAAM,iBAAkB,YAAY,OAAO,UAAU,UAAU,SAAS,KAAG,SAAS,EAiDhG,CAAA"}
@@ -0,0 +1,85 @@
1
+ import { CliError } from "@leemour/cli-core";
2
+ import { formatLocator } from "../../domain/locator.js";
3
+ import { toIso } from "./values.js";
4
+ export const targetPk = ({ database }, key, target) => {
5
+ const found = target.type === "contact"
6
+ ? database
7
+ .prepare("SELECT pk FROM identities WHERE provider=? AND native_id=?")
8
+ .get(key.provider, target.personId)
9
+ : target.type === "chat"
10
+ ? database
11
+ .prepare("SELECT c.pk FROM chats c JOIN accounts a ON a.pk=c.account_pk WHERE a.provider=? AND a.native_id=? AND c.native_id=?")
12
+ .get(key.provider, key.account, target.chatId)
13
+ : database
14
+ .prepare("SELECT m.pk FROM messages m JOIN chats c ON c.pk=m.chat_pk JOIN accounts a ON a.pk=c.account_pk " +
15
+ "WHERE a.provider=? AND a.native_id=? AND c.native_id=? AND m.native_id=? AND m.deleted_at IS NULL")
16
+ .get(key.provider, key.account, target.chatId, target.messageId);
17
+ if (found === undefined) {
18
+ const what = target.type === "contact"
19
+ ? `person ${target.personId}`
20
+ : target.type === "chat"
21
+ ? `chat ${target.chatId}`
22
+ : `message ${target.messageId} in chat ${target.chatId}`;
23
+ throw new CliError("not_found", `the local store holds no ${what}`);
24
+ }
25
+ return Number(found.pk);
26
+ };
27
+ /** The tags it did not have before, in the order given. */
28
+ export const addTags = (context, pk, type, tags) => {
29
+ const insert = context.database.prepare("INSERT INTO tags (taggable_type, taggable_pk, tag, created_at) VALUES (?, ?, ?, ?) ON CONFLICT DO NOTHING");
30
+ const at = context.now();
31
+ return tags.filter((tag) => insert.run(type, pk, tag, at).changes > 0);
32
+ };
33
+ /** The tags it had, in the order given. */
34
+ export const removeTags = ({ database }, pk, type, tags) => {
35
+ const remove = database.prepare("DELETE FROM tags WHERE taggable_type=? AND taggable_pk=? AND tag=?");
36
+ return tags.filter((tag) => remove.run(type, pk, tag).changes > 0);
37
+ };
38
+ export const tagsOf = ({ database }, key, filter) => {
39
+ const tagged = filter.tag === undefined ? "" : " AND t.tag=?";
40
+ const parts = [
41
+ {
42
+ type: "chat",
43
+ sql: "SELECT t.tag, t.taggable_type AS type, t.created_at, c.native_id AS chat_id, c.title AS chat_title, " +
44
+ "NULL AS person_id, NULL AS name, NULL AS message_id FROM tags t JOIN chats c ON c.pk=t.taggable_pk " +
45
+ "JOIN accounts a ON a.pk=c.account_pk WHERE t.taggable_type='chat' AND a.provider=? AND a.native_id=?",
46
+ params: [key.provider, key.account],
47
+ },
48
+ {
49
+ type: "contact",
50
+ sql: "SELECT t.tag, t.taggable_type AS type, t.created_at, NULL AS chat_id, NULL AS chat_title, " +
51
+ "i.native_id AS person_id, i.name AS name, NULL AS message_id " +
52
+ "FROM tags t JOIN identities i ON i.pk=t.taggable_pk WHERE t.taggable_type='contact' AND i.provider=?",
53
+ params: [key.provider],
54
+ },
55
+ {
56
+ type: "message",
57
+ sql: "SELECT t.tag, t.taggable_type AS type, t.created_at, c.native_id AS chat_id, c.title AS chat_title, " +
58
+ "NULL AS person_id, NULL AS name, m.native_id AS message_id " +
59
+ "FROM tags t JOIN messages m ON m.pk=t.taggable_pk JOIN chats c ON c.pk=m.chat_pk " +
60
+ "JOIN accounts a ON a.pk=c.account_pk WHERE t.taggable_type='message' AND a.provider=? AND a.native_id=?",
61
+ params: [key.provider, key.account],
62
+ },
63
+ ];
64
+ const chosen = parts.filter(({ type }) => filter.type === undefined || filter.type === type);
65
+ const rows = database
66
+ .prepare(`${chosen.map(({ sql }) => sql + tagged).join(" UNION ALL ")} ORDER BY 1, 2, 3, 4, 6, 8`)
67
+ .all(...chosen.flatMap(({ params }) => (filter.tag === undefined ? params : [...params, filter.tag])));
68
+ return rows.map((row) => {
69
+ const type = String(row.type);
70
+ const chatId = row.chat_id == null ? undefined : String(row.chat_id);
71
+ const messageId = row.message_id == null ? undefined : String(row.message_id);
72
+ return {
73
+ tag: String(row.tag),
74
+ type,
75
+ ...(type === "contact"
76
+ ? { personId: String(row.person_id), name: row.name == null ? null : String(row.name) }
77
+ : { chatId, chatTitle: row.chat_title == null ? null : String(row.chat_title) }),
78
+ ...(type === "message" && chatId !== undefined && messageId !== undefined
79
+ ? { messageId, locator: formatLocator({ ...key, chat: chatId, message: messageId }) }
80
+ : {}),
81
+ createdAt: toIso(Number(row.created_at)),
82
+ };
83
+ });
84
+ };
85
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/store/sqlite/tags.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,14 @@ import type { Link, LinkInput } from "../conversations/link.js";
2
2
  import type { Chat, Contact, Id, Member, Message, MessageHit, Page, Provider, Reactions, WindowedMessage } from "../domain/models.js";
3
3
  import type { PeopleLookup } from "../resolve.js";
4
4
  import type { QueryExecution } from "../search/lucene/resolved.js";
5
+ import type { Stemmers } from "../search/stem.js";
5
6
  import type { ChatCompleteness } from "./sqlite/completeness.js";
6
7
  import type { QueryGroup, QueryGrouping } from "./sqlite/lucene.js";
8
+ import type { MemberCount, MemberStay, ProfileRevision, RosterChange, RosterRead, TrackedChat } from "./sqlite/roster.js";
7
9
  import type { SearchIndexFill, SearchIndexState } from "./sqlite/search-index.js";
10
+ import type { SearchRecord, StoredSearch } from "./sqlite/searches.js";
11
+ import type { StemsFill, StemsState } from "./sqlite/stems.js";
12
+ import type { StoredTag, TagFilter, TagTarget } from "./sqlite/tags.js";
8
13
  import type { ChunkToEmbed } from "./sqlite/vectors.js";
9
14
  import type { ScoredHit, SearchScope, WordOptions, WordQuery } from "./sqlite/words.js";
10
15
  /** Which account of which messenger a call is about. */
@@ -33,6 +38,32 @@ export interface PersonFacts {
33
38
  * `together` keeps only the chats where **every** sender has a message in this store — written
34
39
  * there, as far as this copy knows, which is not the same as being a member.
35
40
  */
41
+ /** One identity in one messenger, by the messenger's own id. `provider` is any string: `email` is one. */
42
+ export interface IdentityRef {
43
+ provider: Provider;
44
+ id: Id;
45
+ }
46
+ /** How a link was decided (`manual`, `same-email`) and who decided it (`owner`, a program's name). */
47
+ export interface LinkOptions {
48
+ method: string;
49
+ by: string;
50
+ }
51
+ export interface LinkedIdentity extends IdentityRef {
52
+ name: string | null;
53
+ username: string | null;
54
+ isBot: boolean | null;
55
+ /** The accounts in this store that have seen it. */
56
+ accounts: Id[];
57
+ method: string;
58
+ linkedBy: string;
59
+ linkedAt: string;
60
+ }
61
+ /** A person across messengers: `uid` stays the same however their names change. */
62
+ export interface PersonRecord {
63
+ uid: string;
64
+ name: string | null;
65
+ identities: LinkedIdentity[];
66
+ }
36
67
  export interface MessageFilter {
37
68
  provider?: Provider;
38
69
  account?: AccountKey;
@@ -88,6 +119,26 @@ export interface MessageStore {
88
119
  saveMembers(key: AccountKey, chatId: Id, memberIds: Id[]): Promise<void>;
89
120
  /** Who is in a chat, by name, as the last list said; empty when no list was ever saved. */
90
121
  members(key: AccountKey, chatId: Id): Promise<Member[]>;
122
+ /**
123
+ * One read of a group's member list: stays opened and kept, a stay closed only when the read was whole,
124
+ * profiles revised when they differ, today's count. The chat's present members become the list read whole.
125
+ */
126
+ saveRoster(key: AccountKey, chatId: Id, read: RosterRead): Promise<RosterChange>;
127
+ /** Stays open at `since` (ISO) or begun after it, oldest first; every stay without it. */
128
+ memberStays(key: AccountKey, chatId: Id, options?: {
129
+ since?: string;
130
+ }): Promise<MemberStay[]>;
131
+ /** One row a day, oldest first; from `since` (`YYYY-MM-DD`) when given. */
132
+ memberCounts(key: AccountKey, chatId: Id, options?: {
133
+ since?: string;
134
+ }): Promise<MemberCount[]>;
135
+ /** Every profile the chat's members were seen with, oldest first. */
136
+ profileRevisions(key: AccountKey, chatId: Id, options?: {
137
+ since?: string;
138
+ }): Promise<ProfileRevision[]>;
139
+ /** Starts or stops `serve`'s daily fetch of the chat's members; history already kept stays. */
140
+ trackMembers(key: AccountKey, chatId: Id, tracked: boolean): Promise<void>;
141
+ trackedChats(key: AccountKey): Promise<TrackedChat[]>;
91
142
  /** The chats a person is in, newest first — as far as the saved member lists go. */
92
143
  chatsWith(key: AccountKey, memberId: Id): Promise<Chat[]>;
93
144
  /** What a sync remembered under `name` for this account, and when; a caller encodes a number itself. */
@@ -271,6 +322,7 @@ export interface MessageStore {
271
322
  /**
272
323
  * Given every chat the account is in, marks the rest `left` and says how many it marked. Only
273
324
  * ever from a complete list: a page or a cut list says nothing about the chats it leaves out.
325
+ * Remembers when, so a search can say the store knows the account's whole chat list.
274
326
  */
275
327
  markChatsLeft(key: AccountKey, present: Id[]): Promise<number>;
276
328
  /** The chats marked left and the messages they hold; with `clear`, deletes them and all under them. */
@@ -340,6 +392,19 @@ export interface MessageStore {
340
392
  fillSearchIndex(options?: {
341
393
  until?: () => boolean;
342
394
  }): Promise<SearchIndexFill>;
395
+ /** How far the stems are built, and by which stemmer choices; `undefined` on a file before they existed. */
396
+ stemsState(): Promise<StemsState | undefined>;
397
+ /** Builds the stems towards "ready" in short batches until done or `until` says stop; never rebuilds. */
398
+ fillStems(options?: {
399
+ until?: () => boolean;
400
+ }): Promise<StemsFill>;
401
+ /**
402
+ * The stemmer choices saved in the store for every profile, tg and MAX; `undefined` while the defaults
403
+ * apply, `null` when a newer tool saved one this build does not know.
404
+ */
405
+ stemmers(): Promise<Stemmers | null | undefined>;
406
+ /** Saves them; stems built by other choices wait for `store reindex` or `store migrate`. */
407
+ saveStemmers(stemmers: Stemmers): Promise<void>;
343
408
  savePeople(key: AccountKey, people: PersonFacts[]): Promise<void>;
344
409
  /**
345
410
  * The people this account has a one-to-one chat with — as far as the saved member lists go —
@@ -364,6 +429,15 @@ export interface MessageStore {
364
429
  account?: Id;
365
430
  accounts?: Id[];
366
431
  }): Promise<PeopleLookup>;
432
+ personOf(identity: IdentityRef): Promise<PersonRecord | undefined>;
433
+ /** Records the decision in `identity_link_events`; `unlinkIdentity` undoes it. */
434
+ linkIdentities(person: IdentityRef, other: IdentityRef, options: LinkOptions): Promise<PersonRecord>;
435
+ unlinkIdentity(identity: IdentityRef, options: LinkOptions): Promise<PersonRecord>;
436
+ /** Messages of the account that name this person, newest first. */
437
+ mentioning(key: AccountKey, person: {
438
+ id: Id;
439
+ username: string | null;
440
+ }, limit: number): Promise<Page<StoredHit>>;
367
441
  /** A message's reactions as they are now; answers whether the message is held at all. */
368
442
  saveReactions(key: AccountKey, chatId: Id, messageId: Id, reactions: Reactions): Promise<boolean>;
369
443
  /**
@@ -375,6 +449,28 @@ export interface MessageStore {
375
449
  chatStats(key: AccountKey, chatId?: Id): Promise<ChatStats[]>;
376
450
  /** The stretches held completely, oldest first. */
377
451
  ranges(key: AccountKey, chatId: Id): Promise<Range[]>;
452
+ /** Labels one stored chat, person or message; answers the tags it did not have. `not_found` for one not held. */
453
+ addTags(key: AccountKey, target: TagTarget, tags: string[]): Promise<string[]>;
454
+ /** Answers the tags it had. */
455
+ removeTags(key: AccountKey, target: TagTarget, tags: string[]): Promise<string[]>;
456
+ /** The account's tagged chats and messages, and its messenger's tagged people. */
457
+ tags(key: AccountKey, filter?: TagFilter): Promise<StoredTag[]>;
458
+ /** One run of a search or stats; the same unnamed run again counts on its row. `saved` is the saved search it ran. */
459
+ recordSearch(run: SearchRecord, options?: {
460
+ saved?: string;
461
+ }): Promise<void>;
462
+ /** A saved search by name; a name already taken is refused unless `replace`. */
463
+ saveSearch(name: string, search: SearchRecord, options?: {
464
+ replace?: boolean;
465
+ }): Promise<StoredSearch>;
466
+ /** A saved search by name, or any row by id. */
467
+ storedSearch(reference: string): Promise<StoredSearch | undefined>;
468
+ savedSearches(): Promise<StoredSearch[]>;
469
+ /** Runs, newest first, one more than `limit` when there are more. */
470
+ searchHistory(limit: number): Promise<StoredSearch[]>;
471
+ deleteSearch(reference: string): Promise<StoredSearch>;
472
+ /** Drops the unnamed runs; answers how many. */
473
+ clearSearchHistory(): Promise<number>;
378
474
  close(): Promise<void>;
379
475
  }
380
476
  export interface ChatStats {
@@ -515,6 +611,8 @@ export interface StoreOptions {
515
611
  /** About 40 ms of the first open (129k rows/s measured at 1M, 2026-09-30); Tab opens the store too. */
516
612
  export declare const BACKFILL_ON_OPEN = 5000;
517
613
  export declare const openStore: ({ path, env, now }?: StoreOptions) => Promise<MessageStore>;
518
- export { type ChatCompleteness, historyStartKey } from "./sqlite/completeness.js";
614
+ export { CHAT_LIST_KEY, type ChatCompleteness, fetchedKey, historyStartKey } from "./sqlite/completeness.js";
615
+ export type { SearchCommand, SearchRecord, StoredSearch } from "./sqlite/searches.js";
616
+ export type { StoredTag, TagFilter, TagTarget } from "./sqlite/tags.js";
519
617
  export type { ScoredHit, SearchScope, WordOptions, WordQuery } from "./sqlite/words.js";
520
618
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EACV,IAAI,EACJ,OAAO,EACP,EAAE,EACF,MAAM,EACN,OAAO,EACP,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAQjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAKhE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOnE,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACZ,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGvF,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,EAAE,CAAA;CACZ;AAED,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,kBAAkB,CAAC,KAAK,OAAO,CAAA;AAE7F,6FAA6F;AAC7F,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,EAAE,CAAA;IACN,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;;;GAKG;AACH,0GAA0G;AAC1G,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAA;IAClB,EAAE,EAAE,EAAE,CAAA;CACP;AAED,sGAAsG;AACtG,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACrB,oDAAoD;IACpD,QAAQ,EAAE,EAAE,EAAE,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,wGAAwG;IACxG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,EAAE,EAAE,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,sDAAsD;IACtD,MAAM,CAAC,EAAE,EAAE,CAAA;IACX,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IACd,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,8DAA8D;IAC9D;;;OAGG;IACH,YAAY,CACV,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE;QAAE,GAAG,EAAE,WAAW,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,iHAAiH;IACjH,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3G,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvE,mFAAmF;IACnF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,2FAA2F;IAC3F,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACvD;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAChF,0FAA0F;IAC1F,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IAC7F,2EAA2E;IAC3E,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/F,qEAAqE;IACrE,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IACvG,+FAA+F;IAC/F,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1E,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,oFAAoF;IACpF,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACzD,wGAAwG;IACxG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IAC5F,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACnG,wDAAwD;IACxD,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnF,wEAAwE;IACxE,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IAC7G,4FAA4F;IAC5F,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvG,oGAAoG;IACpG,UAAU,CACR,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IACvD,+EAA+E;IAC/E,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;IACpE;;;OAGG;IACH,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1F,4EAA4E;IAC5E,aAAa,CACX,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACrC,wFAAwF;IACxF,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACrH,kEAAkE;IAClE,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACvF,2GAA2G;IAC3G,uBAAuB,CACrB,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;QAAE,MAAM,EAAE,EAAE,CAAC;QAAC,SAAS,EAAE,EAAE,CAAA;KAAE,EAAE,GACpC,OAAO,CAAC,CAAC,mBAAmB,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;IAC/C,uDAAuD;IACvD,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACxE,wGAAwG;IACxG,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IACtE,oGAAoG;IACpG,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvG,0GAA0G;IAC1G,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,qFAAqF;IACrF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3F,uGAAuG;IACvG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAA;IACjG,qGAAqG;IACrG,aAAa,CACX,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACzC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAC1B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1G,kFAAkF;IAClF,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvG,4FAA4F;IAC5F,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,4GAA4G;IAC5G,oBAAoB,CAClB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5G,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IAC7B;;;OAGG;IACH,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAA;IACrH;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IAC/F,uGAAuG;IACvG,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;IAC7C,0GAA0G;IAC1G,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9F,qFAAqF;IACrF,iBAAiB,CACf,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,GACT,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACtG,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACrH,wFAAwF;IACxF,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzF,0GAA0G;IAC1G,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,OAAO,EAAE,EAAE,EAAE,CAAA;KAAE,CAAC,CAAA;IACjG;;;OAGG;IACH,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACtH;;;;OAIG;IACH,MAAM,CACJ,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,EAAE,EACb,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IAC7B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAChG;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9D,uGAAuG;IACvG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvG;;;;;;;;;OASG;IACH,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjH,qGAAqG;IACrG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACjG,wDAAwD;IACxD,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACrD;;;OAGG;IACH,UAAU,CAAC,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAChE,oGAAoG;IACpG,UAAU,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IAChF,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAChG,0FAA0F;IAC1F,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAC1G,6EAA6E;IAC7E,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,0FAA0F;IAC1F,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACtF,yFAAyF;IACzF,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC7E,2EAA2E;IAC3E,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACjD,iFAAiF;IACjF,cAAc,CACZ,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAA;IAC5C,gFAAgF;IAChF,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IACzD;;;OAGG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9E,4GAA4G;IAC5G,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;IAC7C,yGAAyG;IACzG,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAClE;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;IAChD,4FAA4F;IAC5F,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE;;;;OAIG;IACH,QAAQ,CACN,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;QAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACzB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7E,0FAA0F;IAC1F,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,6EAA6E;IAC7E,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACjC,mGAAmG;IACnG,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9F,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IAClE,kFAAkF;IAClF,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACpG,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAClF,mEAAmE;IACnE,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE;QAAE,EAAE,EAAE,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IACjH,yFAAyF;IACzF,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjG;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAChF,qGAAqG;IACrG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC7D,mDAAmD;IACnD,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IACrD,iHAAiH;IACjH,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9E,+BAA+B;IAC/B,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACjF,kFAAkF;IAClF,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC/D,sHAAsH;IACtH,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,gFAAgF;IAChF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACtG,gDAAgD;IAChD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IAClE,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACxC,qEAAqE;IACrE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACrD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACtD,gDAAgD;IAChD,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,EAAE,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,mDAAmD;IACnD,aAAa,EAAE,EAAE,EAAE,EAAE,CAAA;IACrB,kFAAkF;IAClF,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,CAAC;QAAC,MAAM,EAAE,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,CAAA;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,mBAAmB,CAAA;IAC5B,KAAK,EAAE;QAAE,cAAc,EAAE,EAAE,CAAC;QAAC,aAAa,EAAE,EAAE,CAAA;KAAE,CAAA;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,EAAE,CAAA;IACV,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,+CAA+C;IAC/C,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,6GAA6G;IAC7G,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/F;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,EAAE,CAAA;IACV,cAAc,EAAE,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,EAAE,CAAA;IACN,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE;QAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,OAAO,CAAC,EAAE,EAAE,CAAA;IACZ,MAAM,CAAC,EAAE,EAAE,CAAA;IACX,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;IACf,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAA;IACf,8FAA8F;IAC9F,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACvF;AAED,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,OAAO,EAAE,EAAE,CAAC;QAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAClE;AAED,8FAA8F;AAC9F,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,EAAE,CAAA;IACR,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,+EAA+E;IAC/E,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,OAAQ,CAAA;AAErC,eAAO,MAAM,SAAS,wBAAyC,YAAY,KAAQ,OAAO,CAAC,YAAY,CAwBtG,CAAA;AAkoBD,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC5G,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACrF,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACvE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA"}